aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/@babel
diff options
context:
space:
mode:
authorAdam Mathes <adam@adammathes.com>2026-02-13 21:34:48 -0800
committerAdam Mathes <adam@adammathes.com>2026-02-13 21:34:48 -0800
commit76cb9c2a39d477a64824a985ade40507e3bbade1 (patch)
tree41e997aa9c6f538d3a136af61dae9424db2005a9 /vanilla/node_modules/@babel
parent819a39a21ac992b1393244a4c283bbb125208c69 (diff)
downloadneko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.gz
neko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.bz2
neko-76cb9c2a39d477a64824a985ade40507e3bbade1.zip
feat(vanilla): add testing infrastructure and tests (NK-wjnczv)
Diffstat (limited to 'vanilla/node_modules/@babel')
-rw-r--r--vanilla/node_modules/@babel/helper-string-parser/LICENSE22
-rw-r--r--vanilla/node_modules/@babel/helper-string-parser/README.md19
-rw-r--r--vanilla/node_modules/@babel/helper-string-parser/lib/index.js295
-rw-r--r--vanilla/node_modules/@babel/helper-string-parser/lib/index.js.map1
-rw-r--r--vanilla/node_modules/@babel/helper-string-parser/package.json31
-rw-r--r--vanilla/node_modules/@babel/helper-validator-identifier/LICENSE22
-rw-r--r--vanilla/node_modules/@babel/helper-validator-identifier/README.md19
-rw-r--r--vanilla/node_modules/@babel/helper-validator-identifier/lib/identifier.js70
-rw-r--r--vanilla/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map1
-rw-r--r--vanilla/node_modules/@babel/helper-validator-identifier/lib/index.js57
-rw-r--r--vanilla/node_modules/@babel/helper-validator-identifier/lib/index.js.map1
-rw-r--r--vanilla/node_modules/@babel/helper-validator-identifier/lib/keyword.js35
-rw-r--r--vanilla/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map1
-rw-r--r--vanilla/node_modules/@babel/helper-validator-identifier/package.json31
-rw-r--r--vanilla/node_modules/@babel/parser/CHANGELOG.md1073
-rw-r--r--vanilla/node_modules/@babel/parser/LICENSE19
-rw-r--r--vanilla/node_modules/@babel/parser/README.md19
-rwxr-xr-xvanilla/node_modules/@babel/parser/bin/babel-parser.js15
-rw-r--r--vanilla/node_modules/@babel/parser/lib/index.js14582
-rw-r--r--vanilla/node_modules/@babel/parser/lib/index.js.map1
-rw-r--r--vanilla/node_modules/@babel/parser/package.json50
-rw-r--r--vanilla/node_modules/@babel/parser/typings/babel-parser.d.ts262
-rw-r--r--vanilla/node_modules/@babel/types/LICENSE22
-rw-r--r--vanilla/node_modules/@babel/types/README.md19
-rw-r--r--vanilla/node_modules/@babel/types/lib/asserts/assertNode.js16
-rw-r--r--vanilla/node_modules/@babel/types/lib/asserts/assertNode.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/asserts/generated/index.js1251
-rw-r--r--vanilla/node_modules/@babel/types/lib/asserts/generated/index.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/ast-types/generated/index.js3
-rw-r--r--vanilla/node_modules/@babel/types/lib/ast-types/generated/index.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js18
-rw-r--r--vanilla/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js31
-rw-r--r--vanilla/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/builders/generated/index.js29
-rw-r--r--vanilla/node_modules/@babel/types/lib/builders/generated/index.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/builders/generated/lowercase.js2902
-rw-r--r--vanilla/node_modules/@babel/types/lib/builders/generated/lowercase.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/builders/generated/uppercase.js272
-rw-r--r--vanilla/node_modules/@babel/types/lib/builders/generated/uppercase.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/builders/productions.js12
-rw-r--r--vanilla/node_modules/@babel/types/lib/builders/productions.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/builders/react/buildChildren.js24
-rw-r--r--vanilla/node_modules/@babel/types/lib/builders/react/buildChildren.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js22
-rw-r--r--vanilla/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/builders/validateNode.js21
-rw-r--r--vanilla/node_modules/@babel/types/lib/builders/validateNode.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/clone/clone.js12
-rw-r--r--vanilla/node_modules/@babel/types/lib/clone/clone.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/clone/cloneDeep.js12
-rw-r--r--vanilla/node_modules/@babel/types/lib/clone/cloneDeep.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js12
-rw-r--r--vanilla/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/clone/cloneNode.js107
-rw-r--r--vanilla/node_modules/@babel/types/lib/clone/cloneNode.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js12
-rw-r--r--vanilla/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/comments/addComment.js15
-rw-r--r--vanilla/node_modules/@babel/types/lib/comments/addComment.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/comments/addComments.js22
-rw-r--r--vanilla/node_modules/@babel/types/lib/comments/addComments.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/comments/inheritInnerComments.js12
-rw-r--r--vanilla/node_modules/@babel/types/lib/comments/inheritInnerComments.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/comments/inheritLeadingComments.js12
-rw-r--r--vanilla/node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/comments/inheritTrailingComments.js12
-rw-r--r--vanilla/node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/comments/inheritsComments.js17
-rw-r--r--vanilla/node_modules/@babel/types/lib/comments/inheritsComments.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/comments/removeComments.js15
-rw-r--r--vanilla/node_modules/@babel/types/lib/comments/removeComments.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/constants/generated/index.js60
-rw-r--r--vanilla/node_modules/@babel/types/lib/constants/generated/index.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/constants/index.js31
-rw-r--r--vanilla/node_modules/@babel/types/lib/constants/index.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/ensureBlock.js14
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/ensureBlock.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js65
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js14
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/toBlock.js29
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/toBlock.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/toComputedKey.js14
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/toComputedKey.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/toExpression.js28
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/toExpression.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/toIdentifier.js25
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/toIdentifier.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/toKeyAlias.js38
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/toKeyAlias.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/toSequenceExpression.js19
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/toSequenceExpression.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/toStatement.js39
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/toStatement.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/valueToNode.js89
-rw-r--r--vanilla/node_modules/@babel/types/lib/converters/valueToNode.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/definitions/core.js1725
-rw-r--r--vanilla/node_modules/@babel/types/lib/definitions/core.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/definitions/deprecated-aliases.js11
-rw-r--r--vanilla/node_modules/@babel/types/lib/definitions/deprecated-aliases.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/definitions/experimental.js124
-rw-r--r--vanilla/node_modules/@babel/types/lib/definitions/experimental.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/definitions/flow.js495
-rw-r--r--vanilla/node_modules/@babel/types/lib/definitions/flow.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/definitions/index.js106
-rw-r--r--vanilla/node_modules/@babel/types/lib/definitions/index.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/definitions/jsx.js157
-rw-r--r--vanilla/node_modules/@babel/types/lib/definitions/jsx.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/definitions/misc.js31
-rw-r--r--vanilla/node_modules/@babel/types/lib/definitions/misc.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/definitions/placeholders.js27
-rw-r--r--vanilla/node_modules/@babel/types/lib/definitions/placeholders.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/definitions/typescript.js528
-rw-r--r--vanilla/node_modules/@babel/types/lib/definitions/typescript.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/definitions/utils.js296
-rw-r--r--vanilla/node_modules/@babel/types/lib/definitions/utils.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/index-legacy.d.ts2797
-rw-r--r--vanilla/node_modules/@babel/types/lib/index.d.ts3617
-rw-r--r--vanilla/node_modules/@babel/types/lib/index.js582
-rw-r--r--vanilla/node_modules/@babel/types/lib/index.js.flow2650
-rw-r--r--vanilla/node_modules/@babel/types/lib/index.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js15
-rw-r--r--vanilla/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js65
-rw-r--r--vanilla/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/modifications/inherits.js28
-rw-r--r--vanilla/node_modules/@babel/types/lib/modifications/inherits.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js17
-rw-r--r--vanilla/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/modifications/removeProperties.js24
-rw-r--r--vanilla/node_modules/@babel/types/lib/modifications/removeProperties.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js14
-rw-r--r--vanilla/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js66
-rw-r--r--vanilla/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js48
-rw-r--r--vanilla/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js102
-rw-r--r--vanilla/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/retrievers/getFunctionName.js63
-rw-r--r--vanilla/node_modules/@babel/types/lib/retrievers/getFunctionName.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js13
-rw-r--r--vanilla/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/traverse/traverse.js50
-rw-r--r--vanilla/node_modules/@babel/types/lib/traverse/traverse.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/traverse/traverseFast.js40
-rw-r--r--vanilla/node_modules/@babel/types/lib/traverse/traverseFast.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/utils/deprecationWarning.js44
-rw-r--r--vanilla/node_modules/@babel/types/lib/utils/deprecationWarning.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/utils/inherit.js13
-rw-r--r--vanilla/node_modules/@babel/types/lib/utils/inherit.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js40
-rw-r--r--vanilla/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/utils/shallowEqual.js17
-rw-r--r--vanilla/node_modules/@babel/types/lib/utils/shallowEqual.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js13
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/generated/index.js2797
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/generated/index.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/is.js27
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/is.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isBinding.js27
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isBinding.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isBlockScoped.js13
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isBlockScoped.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isImmutable.js21
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isImmutable.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isLet.js13
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isLet.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isNode.js12
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isNode.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isNodesEquivalent.js57
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isPlaceholderType.js15
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isPlaceholderType.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isReferenced.js96
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isReferenced.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isScope.js18
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isScope.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isSpecifierDefault.js14
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isType.js17
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isType.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isValidES3Identifier.js13
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isValidIdentifier.js18
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isValidIdentifier.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isVar.js15
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/isVar.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/matchesPattern.js44
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/matchesPattern.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/react/isCompatTag.js11
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/react/isCompatTag.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/react/isReactComponent.js11
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/react/isReactComponent.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/validate.js42
-rw-r--r--vanilla/node_modules/@babel/types/lib/validators/validate.js.map1
-rw-r--r--vanilla/node_modules/@babel/types/package.json39
200 files changed, 39217 insertions, 0 deletions
diff --git a/vanilla/node_modules/@babel/helper-string-parser/LICENSE b/vanilla/node_modules/@babel/helper-string-parser/LICENSE
new file mode 100644
index 0000000..f31575e
--- /dev/null
+++ b/vanilla/node_modules/@babel/helper-string-parser/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vanilla/node_modules/@babel/helper-string-parser/README.md b/vanilla/node_modules/@babel/helper-string-parser/README.md
new file mode 100644
index 0000000..771b470
--- /dev/null
+++ b/vanilla/node_modules/@babel/helper-string-parser/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-string-parser
+
+> A utility package to parse strings
+
+See our website [@babel/helper-string-parser](https://babeljs.io/docs/babel-helper-string-parser) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-string-parser
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-string-parser
+```
diff --git a/vanilla/node_modules/@babel/helper-string-parser/lib/index.js b/vanilla/node_modules/@babel/helper-string-parser/lib/index.js
new file mode 100644
index 0000000..2d94115
--- /dev/null
+++ b/vanilla/node_modules/@babel/helper-string-parser/lib/index.js
@@ -0,0 +1,295 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.readCodePoint = readCodePoint;
+exports.readInt = readInt;
+exports.readStringContents = readStringContents;
+var _isDigit = function isDigit(code) {
+ return code >= 48 && code <= 57;
+};
+const forbiddenNumericSeparatorSiblings = {
+ decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]),
+ hex: new Set([46, 88, 95, 120])
+};
+const isAllowedNumericSeparatorSibling = {
+ bin: ch => ch === 48 || ch === 49,
+ oct: ch => ch >= 48 && ch <= 55,
+ dec: ch => ch >= 48 && ch <= 57,
+ hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102
+};
+function readStringContents(type, input, pos, lineStart, curLine, errors) {
+ const initialPos = pos;
+ const initialLineStart = lineStart;
+ const initialCurLine = curLine;
+ let out = "";
+ let firstInvalidLoc = null;
+ let chunkStart = pos;
+ const {
+ length
+ } = input;
+ for (;;) {
+ if (pos >= length) {
+ errors.unterminated(initialPos, initialLineStart, initialCurLine);
+ out += input.slice(chunkStart, pos);
+ break;
+ }
+ const ch = input.charCodeAt(pos);
+ if (isStringEnd(type, ch, input, pos)) {
+ out += input.slice(chunkStart, pos);
+ break;
+ }
+ if (ch === 92) {
+ out += input.slice(chunkStart, pos);
+ const res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors);
+ if (res.ch === null && !firstInvalidLoc) {
+ firstInvalidLoc = {
+ pos,
+ lineStart,
+ curLine
+ };
+ } else {
+ out += res.ch;
+ }
+ ({
+ pos,
+ lineStart,
+ curLine
+ } = res);
+ chunkStart = pos;
+ } else if (ch === 8232 || ch === 8233) {
+ ++pos;
+ ++curLine;
+ lineStart = pos;
+ } else if (ch === 10 || ch === 13) {
+ if (type === "template") {
+ out += input.slice(chunkStart, pos) + "\n";
+ ++pos;
+ if (ch === 13 && input.charCodeAt(pos) === 10) {
+ ++pos;
+ }
+ ++curLine;
+ chunkStart = lineStart = pos;
+ } else {
+ errors.unterminated(initialPos, initialLineStart, initialCurLine);
+ }
+ } else {
+ ++pos;
+ }
+ }
+ return {
+ pos,
+ str: out,
+ firstInvalidLoc,
+ lineStart,
+ curLine,
+ containsInvalid: !!firstInvalidLoc
+ };
+}
+function isStringEnd(type, ch, input, pos) {
+ if (type === "template") {
+ return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123;
+ }
+ return ch === (type === "double" ? 34 : 39);
+}
+function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) {
+ const throwOnInvalid = !inTemplate;
+ pos++;
+ const res = ch => ({
+ pos,
+ ch,
+ lineStart,
+ curLine
+ });
+ const ch = input.charCodeAt(pos++);
+ switch (ch) {
+ case 110:
+ return res("\n");
+ case 114:
+ return res("\r");
+ case 120:
+ {
+ let code;
+ ({
+ code,
+ pos
+ } = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors));
+ return res(code === null ? null : String.fromCharCode(code));
+ }
+ case 117:
+ {
+ let code;
+ ({
+ code,
+ pos
+ } = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors));
+ return res(code === null ? null : String.fromCodePoint(code));
+ }
+ case 116:
+ return res("\t");
+ case 98:
+ return res("\b");
+ case 118:
+ return res("\u000b");
+ case 102:
+ return res("\f");
+ case 13:
+ if (input.charCodeAt(pos) === 10) {
+ ++pos;
+ }
+ case 10:
+ lineStart = pos;
+ ++curLine;
+ case 8232:
+ case 8233:
+ return res("");
+ case 56:
+ case 57:
+ if (inTemplate) {
+ return res(null);
+ } else {
+ errors.strictNumericEscape(pos - 1, lineStart, curLine);
+ }
+ default:
+ if (ch >= 48 && ch <= 55) {
+ const startPos = pos - 1;
+ const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));
+ let octalStr = match[0];
+ let octal = parseInt(octalStr, 8);
+ if (octal > 255) {
+ octalStr = octalStr.slice(0, -1);
+ octal = parseInt(octalStr, 8);
+ }
+ pos += octalStr.length - 1;
+ const next = input.charCodeAt(pos);
+ if (octalStr !== "0" || next === 56 || next === 57) {
+ if (inTemplate) {
+ return res(null);
+ } else {
+ errors.strictNumericEscape(startPos, lineStart, curLine);
+ }
+ }
+ return res(String.fromCharCode(octal));
+ }
+ return res(String.fromCharCode(ch));
+ }
+}
+function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) {
+ const initialPos = pos;
+ let n;
+ ({
+ n,
+ pos
+ } = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid));
+ if (n === null) {
+ if (throwOnInvalid) {
+ errors.invalidEscapeSequence(initialPos, lineStart, curLine);
+ } else {
+ pos = initialPos - 1;
+ }
+ }
+ return {
+ code: n,
+ pos
+ };
+}
+function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) {
+ const start = pos;
+ const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct;
+ const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin;
+ let invalid = false;
+ let total = 0;
+ for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {
+ const code = input.charCodeAt(pos);
+ let val;
+ if (code === 95 && allowNumSeparator !== "bail") {
+ const prev = input.charCodeAt(pos - 1);
+ const next = input.charCodeAt(pos + 1);
+ if (!allowNumSeparator) {
+ if (bailOnError) return {
+ n: null,
+ pos
+ };
+ errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);
+ } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) {
+ if (bailOnError) return {
+ n: null,
+ pos
+ };
+ errors.unexpectedNumericSeparator(pos, lineStart, curLine);
+ }
+ ++pos;
+ continue;
+ }
+ if (code >= 97) {
+ val = code - 97 + 10;
+ } else if (code >= 65) {
+ val = code - 65 + 10;
+ } else if (_isDigit(code)) {
+ val = code - 48;
+ } else {
+ val = Infinity;
+ }
+ if (val >= radix) {
+ if (val <= 9 && bailOnError) {
+ return {
+ n: null,
+ pos
+ };
+ } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) {
+ val = 0;
+ } else if (forceLen) {
+ val = 0;
+ invalid = true;
+ } else {
+ break;
+ }
+ }
+ ++pos;
+ total = total * radix + val;
+ }
+ if (pos === start || len != null && pos - start !== len || invalid) {
+ return {
+ n: null,
+ pos
+ };
+ }
+ return {
+ n: total,
+ pos
+ };
+}
+function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) {
+ const ch = input.charCodeAt(pos);
+ let code;
+ if (ch === 123) {
+ ++pos;
+ ({
+ code,
+ pos
+ } = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors));
+ ++pos;
+ if (code !== null && code > 0x10ffff) {
+ if (throwOnInvalid) {
+ errors.invalidCodePoint(pos, lineStart, curLine);
+ } else {
+ return {
+ code: null,
+ pos
+ };
+ }
+ }
+ } else {
+ ({
+ code,
+ pos
+ } = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors));
+ }
+ return {
+ code,
+ pos
+ };
+}
+
+//# sourceMappingURL=index.js.map
diff --git a/vanilla/node_modules/@babel/helper-string-parser/lib/index.js.map b/vanilla/node_modules/@babel/helper-string-parser/lib/index.js.map
new file mode 100644
index 0000000..cd50797
--- /dev/null
+++ b/vanilla/node_modules/@babel/helper-string-parser/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["isDigit","code","forbiddenNumericSeparatorSiblings","decBinOct","Set","hex","isAllowedNumericSeparatorSibling","bin","ch","oct","dec","readStringContents","type","input","pos","lineStart","curLine","errors","initialPos","initialLineStart","initialCurLine","out","firstInvalidLoc","chunkStart","length","unterminated","slice","charCodeAt","isStringEnd","res","readEscapedChar","str","containsInvalid","inTemplate","throwOnInvalid","readHexChar","String","fromCharCode","readCodePoint","fromCodePoint","strictNumericEscape","startPos","match","exec","octalStr","octal","parseInt","next","len","forceLen","n","readInt","invalidEscapeSequence","radix","allowNumSeparator","bailOnError","start","forbiddenSiblings","isAllowedSibling","invalid","total","i","e","Infinity","val","prev","numericSeparatorInEscapeSequence","Number","isNaN","has","unexpectedNumericSeparator","_isDigit","invalidDigit","indexOf","invalidCodePoint"],"sources":["../src/index.ts"],"sourcesContent":["// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// The following character codes are forbidden from being\n// an immediate sibling of NumericLiteralSeparator _\nconst forbiddenNumericSeparatorSiblings = {\n decBinOct: new Set<number>([\n charCodes.dot,\n charCodes.uppercaseB,\n charCodes.uppercaseE,\n charCodes.uppercaseO,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseB,\n charCodes.lowercaseE,\n charCodes.lowercaseO,\n ]),\n hex: new Set<number>([\n charCodes.dot,\n charCodes.uppercaseX,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseX,\n ]),\n};\n\nconst isAllowedNumericSeparatorSibling = {\n // 0 - 1\n bin: (ch: number) => ch === charCodes.digit0 || ch === charCodes.digit1,\n\n // 0 - 7\n oct: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit7,\n\n // 0 - 9\n dec: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit9,\n\n // 0 - 9, A - F, a - f,\n hex: (ch: number) =>\n (ch >= charCodes.digit0 && ch <= charCodes.digit9) ||\n (ch >= charCodes.uppercaseA && ch <= charCodes.uppercaseF) ||\n (ch >= charCodes.lowercaseA && ch <= charCodes.lowercaseF),\n};\n\nexport type StringContentsErrorHandlers = EscapedCharErrorHandlers & {\n unterminated(\n initialPos: number,\n initialLineStart: number,\n initialCurLine: number,\n ): void;\n};\n\nexport function readStringContents(\n type: \"single\" | \"double\" | \"template\",\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n errors: StringContentsErrorHandlers,\n) {\n const initialPos = pos;\n const initialLineStart = lineStart;\n const initialCurLine = curLine;\n\n let out = \"\";\n let firstInvalidLoc = null;\n let chunkStart = pos;\n const { length } = input;\n for (;;) {\n if (pos >= length) {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n out += input.slice(chunkStart, pos);\n break;\n }\n const ch = input.charCodeAt(pos);\n if (isStringEnd(type, ch, input, pos)) {\n out += input.slice(chunkStart, pos);\n break;\n }\n if (ch === charCodes.backslash) {\n out += input.slice(chunkStart, pos);\n const res = readEscapedChar(\n input,\n pos,\n lineStart,\n curLine,\n type === \"template\",\n errors,\n );\n if (res.ch === null && !firstInvalidLoc) {\n firstInvalidLoc = { pos, lineStart, curLine };\n } else {\n out += res.ch;\n }\n ({ pos, lineStart, curLine } = res);\n chunkStart = pos;\n } else if (\n ch === charCodes.lineSeparator ||\n ch === charCodes.paragraphSeparator\n ) {\n ++pos;\n ++curLine;\n lineStart = pos;\n } else if (ch === charCodes.lineFeed || ch === charCodes.carriageReturn) {\n if (type === \"template\") {\n out += input.slice(chunkStart, pos) + \"\\n\";\n ++pos;\n if (\n ch === charCodes.carriageReturn &&\n input.charCodeAt(pos) === charCodes.lineFeed\n ) {\n ++pos;\n }\n ++curLine;\n chunkStart = lineStart = pos;\n } else {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n }\n } else {\n ++pos;\n }\n }\n return process.env.BABEL_8_BREAKING\n ? { pos, str: out, firstInvalidLoc, lineStart, curLine }\n : {\n pos,\n str: out,\n firstInvalidLoc,\n lineStart,\n curLine,\n containsInvalid: !!firstInvalidLoc,\n };\n}\n\nfunction isStringEnd(\n type: \"single\" | \"double\" | \"template\",\n ch: number,\n input: string,\n pos: number,\n) {\n if (type === \"template\") {\n return (\n ch === charCodes.graveAccent ||\n (ch === charCodes.dollarSign &&\n input.charCodeAt(pos + 1) === charCodes.leftCurlyBrace)\n );\n }\n return (\n ch === (type === \"double\" ? charCodes.quotationMark : charCodes.apostrophe)\n );\n}\n\ntype EscapedCharErrorHandlers = HexCharErrorHandlers &\n CodePointErrorHandlers & {\n strictNumericEscape(pos: number, lineStart: number, curLine: number): void;\n };\n\nfunction readEscapedChar(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n inTemplate: boolean,\n errors: EscapedCharErrorHandlers,\n) {\n const throwOnInvalid = !inTemplate;\n pos++; // skip '\\'\n\n const res = (ch: string | null) => ({ pos, ch, lineStart, curLine });\n\n const ch = input.charCodeAt(pos++);\n switch (ch) {\n case charCodes.lowercaseN:\n return res(\"\\n\");\n case charCodes.lowercaseR:\n return res(\"\\r\");\n case charCodes.lowercaseX: {\n let code;\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n 2,\n false,\n throwOnInvalid,\n errors,\n ));\n return res(code === null ? null : String.fromCharCode(code));\n }\n case charCodes.lowercaseU: {\n let code;\n ({ code, pos } = readCodePoint(\n input,\n pos,\n lineStart,\n curLine,\n throwOnInvalid,\n errors,\n ));\n return res(code === null ? null : String.fromCodePoint(code));\n }\n case charCodes.lowercaseT:\n return res(\"\\t\");\n case charCodes.lowercaseB:\n return res(\"\\b\");\n case charCodes.lowercaseV:\n return res(\"\\u000b\");\n case charCodes.lowercaseF:\n return res(\"\\f\");\n case charCodes.carriageReturn:\n if (input.charCodeAt(pos) === charCodes.lineFeed) {\n ++pos;\n }\n // fall through\n case charCodes.lineFeed:\n lineStart = pos;\n ++curLine;\n // fall through\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n return res(\"\");\n case charCodes.digit8:\n case charCodes.digit9:\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(pos - 1, lineStart, curLine);\n }\n // fall through\n default:\n if (ch >= charCodes.digit0 && ch <= charCodes.digit7) {\n const startPos = pos - 1;\n const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));\n\n let octalStr = match[0];\n\n let octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n pos += octalStr.length - 1;\n const next = input.charCodeAt(pos);\n if (\n octalStr !== \"0\" ||\n next === charCodes.digit8 ||\n next === charCodes.digit9\n ) {\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(startPos, lineStart, curLine);\n }\n }\n\n return res(String.fromCharCode(octal));\n }\n\n return res(String.fromCharCode(ch));\n }\n}\n\ntype HexCharErrorHandlers = IntErrorHandlers & {\n invalidEscapeSequence(pos: number, lineStart: number, curLine: number): void;\n};\n\n// Used to read character escape sequences ('\\x', '\\u').\nfunction readHexChar(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n len: number,\n forceLen: boolean,\n throwOnInvalid: boolean,\n errors: HexCharErrorHandlers,\n) {\n const initialPos = pos;\n let n;\n ({ n, pos } = readInt(\n input,\n pos,\n lineStart,\n curLine,\n 16,\n len,\n forceLen,\n false,\n errors,\n /* bailOnError */ !throwOnInvalid,\n ));\n if (n === null) {\n if (throwOnInvalid) {\n errors.invalidEscapeSequence(initialPos, lineStart, curLine);\n } else {\n pos = initialPos - 1;\n }\n }\n return { code: n, pos };\n}\n\nexport type IntErrorHandlers = {\n numericSeparatorInEscapeSequence(\n pos: number,\n lineStart: number,\n curLine: number,\n ): void;\n unexpectedNumericSeparator(\n pos: number,\n lineStart: number,\n curLine: number,\n ): void;\n // It can return \"true\" to indicate that the error was handled\n // and the int parsing should continue.\n invalidDigit(\n pos: number,\n lineStart: number,\n curLine: number,\n radix: number,\n ): boolean;\n};\n\nexport function readInt(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n radix: number,\n len: number | undefined,\n forceLen: boolean,\n allowNumSeparator: boolean | \"bail\",\n errors: IntErrorHandlers,\n bailOnError: boolean,\n) {\n const start = pos;\n const forbiddenSiblings =\n radix === 16\n ? forbiddenNumericSeparatorSiblings.hex\n : forbiddenNumericSeparatorSiblings.decBinOct;\n const isAllowedSibling =\n radix === 16\n ? isAllowedNumericSeparatorSibling.hex\n : radix === 10\n ? isAllowedNumericSeparatorSibling.dec\n : radix === 8\n ? isAllowedNumericSeparatorSibling.oct\n : isAllowedNumericSeparatorSibling.bin;\n\n let invalid = false;\n let total = 0;\n\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n const code = input.charCodeAt(pos);\n let val;\n\n if (code === charCodes.underscore && allowNumSeparator !== \"bail\") {\n const prev = input.charCodeAt(pos - 1);\n const next = input.charCodeAt(pos + 1);\n\n if (!allowNumSeparator) {\n if (bailOnError) return { n: null, pos };\n errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);\n } else if (\n Number.isNaN(next) ||\n !isAllowedSibling(next) ||\n forbiddenSiblings.has(prev) ||\n forbiddenSiblings.has(next)\n ) {\n if (bailOnError) return { n: null, pos };\n errors.unexpectedNumericSeparator(pos, lineStart, curLine);\n }\n\n // Ignore this _ character\n ++pos;\n continue;\n }\n\n if (code >= charCodes.lowercaseA) {\n val = code - charCodes.lowercaseA + charCodes.lineFeed;\n } else if (code >= charCodes.uppercaseA) {\n val = code - charCodes.uppercaseA + charCodes.lineFeed;\n } else if (charCodes.isDigit(code)) {\n val = code - charCodes.digit0; // 0-9\n } else {\n val = Infinity;\n }\n if (val >= radix) {\n // If we found a digit which is too big, errors.invalidDigit can return true to avoid\n // breaking the loop (this is used for error recovery).\n if (val <= 9 && bailOnError) {\n return { n: null, pos };\n } else if (\n val <= 9 &&\n errors.invalidDigit(pos, lineStart, curLine, radix)\n ) {\n val = 0;\n } else if (forceLen) {\n val = 0;\n invalid = true;\n } else {\n break;\n }\n }\n ++pos;\n total = total * radix + val;\n }\n if (pos === start || (len != null && pos - start !== len) || invalid) {\n return { n: null, pos };\n }\n\n return { n: total, pos };\n}\n\nexport type CodePointErrorHandlers = HexCharErrorHandlers & {\n invalidCodePoint(pos: number, lineStart: number, curLine: number): void;\n};\n\nexport function readCodePoint(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n throwOnInvalid: boolean,\n errors: CodePointErrorHandlers,\n) {\n const ch = input.charCodeAt(pos);\n let code;\n\n if (ch === charCodes.leftCurlyBrace) {\n ++pos;\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n input.indexOf(\"}\", pos) - pos,\n true,\n throwOnInvalid,\n errors,\n ));\n ++pos;\n if (code !== null && code > 0x10ffff) {\n if (throwOnInvalid) {\n errors.invalidCodePoint(pos, lineStart, curLine);\n } else {\n return { code: null, pos };\n }\n }\n } else {\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n 4,\n false,\n throwOnInvalid,\n errors,\n ));\n }\n return { code, pos };\n}\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/helper-string-parser/package.json b/vanilla/node_modules/@babel/helper-string-parser/package.json
new file mode 100644
index 0000000..c4c86e4
--- /dev/null
+++ b/vanilla/node_modules/@babel/helper-string-parser/package.json
@@ -0,0 +1,31 @@
+{
+ "name": "@babel/helper-string-parser",
+ "version": "7.27.1",
+ "description": "A utility package to parse strings",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-string-parser"
+ },
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-string-parser",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "main": "./lib/index.js",
+ "devDependencies": {
+ "charcodes": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "author": "The Babel Team (https://babel.dev/team)",
+ "exports": {
+ ".": {
+ "types": "./lib/index.d.ts",
+ "default": "./lib/index.js"
+ },
+ "./package.json": "./package.json"
+ },
+ "type": "commonjs"
+} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/helper-validator-identifier/LICENSE b/vanilla/node_modules/@babel/helper-validator-identifier/LICENSE
new file mode 100644
index 0000000..f31575e
--- /dev/null
+++ b/vanilla/node_modules/@babel/helper-validator-identifier/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vanilla/node_modules/@babel/helper-validator-identifier/README.md b/vanilla/node_modules/@babel/helper-validator-identifier/README.md
new file mode 100644
index 0000000..05c19e6
--- /dev/null
+++ b/vanilla/node_modules/@babel/helper-validator-identifier/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-validator-identifier
+
+> Validate identifier/keywords name
+
+See our website [@babel/helper-validator-identifier](https://babeljs.io/docs/babel-helper-validator-identifier) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-validator-identifier
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-validator-identifier
+```
diff --git a/vanilla/node_modules/@babel/helper-validator-identifier/lib/identifier.js b/vanilla/node_modules/@babel/helper-validator-identifier/lib/identifier.js
new file mode 100644
index 0000000..b12e6e4
--- /dev/null
+++ b/vanilla/node_modules/@babel/helper-validator-identifier/lib/identifier.js
@@ -0,0 +1,70 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isIdentifierChar = isIdentifierChar;
+exports.isIdentifierName = isIdentifierName;
+exports.isIdentifierStart = isIdentifierStart;
+let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088f\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5c\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdc-\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7dc\ua7f1-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
+let nonASCIIidentifierChars = "\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1add\u1ae0-\u1aeb\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65";
+const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
+const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
+nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
+const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 7, 25, 39, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 57, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 261, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];
+const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 78, 5, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 199, 7, 137, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 55, 9, 266, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
+function isInAstralSet(code, set) {
+ let pos = 0x10000;
+ for (let i = 0, length = set.length; i < length; i += 2) {
+ pos += set[i];
+ if (pos > code) return false;
+ pos += set[i + 1];
+ if (pos >= code) return true;
+ }
+ return false;
+}
+function isIdentifierStart(code) {
+ if (code < 65) return code === 36;
+ if (code <= 90) return true;
+ if (code < 97) return code === 95;
+ if (code <= 122) return true;
+ if (code <= 0xffff) {
+ return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));
+ }
+ return isInAstralSet(code, astralIdentifierStartCodes);
+}
+function isIdentifierChar(code) {
+ if (code < 48) return code === 36;
+ if (code < 58) return true;
+ if (code < 65) return false;
+ if (code <= 90) return true;
+ if (code < 97) return code === 95;
+ if (code <= 122) return true;
+ if (code <= 0xffff) {
+ return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));
+ }
+ return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
+}
+function isIdentifierName(name) {
+ let isFirst = true;
+ for (let i = 0; i < name.length; i++) {
+ let cp = name.charCodeAt(i);
+ if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {
+ const trail = name.charCodeAt(++i);
+ if ((trail & 0xfc00) === 0xdc00) {
+ cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);
+ }
+ }
+ if (isFirst) {
+ isFirst = false;
+ if (!isIdentifierStart(cp)) {
+ return false;
+ }
+ } else if (!isIdentifierChar(cp)) {
+ return false;
+ }
+ }
+ return !isFirst;
+}
+
+//# sourceMappingURL=identifier.js.map
diff --git a/vanilla/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map b/vanilla/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map
new file mode 100644
index 0000000..71d32ff
--- /dev/null
+++ b/vanilla/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["nonASCIIidentifierStartChars","nonASCIIidentifierChars","nonASCIIidentifierStart","RegExp","nonASCIIidentifier","astralIdentifierStartCodes","astralIdentifierCodes","isInAstralSet","code","set","pos","i","length","isIdentifierStart","test","String","fromCharCode","isIdentifierChar","isIdentifierName","name","isFirst","cp","charCodeAt","trail"],"sources":["../src/identifier.ts"],"sourcesContent":["// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point between 0x80 and 0xffff.\n// Generated by `scripts/generate-identifier-regex.cjs`.\n\n/* prettier-ignore */\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088f\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5c\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdc-\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7dc\\ua7f1-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n/* prettier-ignore */\nlet nonASCIIidentifierChars = \"\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1add\\u1ae0-\\u1aeb\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\nconst nonASCIIidentifierStart = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset-encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by `scripts/generate-identifier-regex.cjs`.\n/* prettier-ignore */\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,4,51,13,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,7,25,39,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,39,27,10,22,251,41,7,1,17,5,57,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,31,9,2,0,3,0,2,37,2,0,26,0,2,0,45,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,200,32,32,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,24,43,261,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,26,3994,6,582,6842,29,1763,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,433,44,212,63,33,24,3,24,45,74,6,0,67,12,65,1,2,0,15,4,10,7381,42,31,98,114,8702,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,229,29,3,0,208,30,2,2,2,1,2,6,3,4,10,1,225,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4381,3,5773,3,7472,16,621,2467,541,1507,4938,6,8489];\n/* prettier-ignore */\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,7,9,32,4,318,1,78,5,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,68,8,2,0,3,0,2,3,2,4,2,0,15,1,83,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,7,19,58,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,199,7,137,9,54,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,55,9,266,3,10,1,2,0,49,6,4,4,14,10,5350,0,7,14,11465,27,2343,9,87,9,39,4,60,6,26,9,535,9,470,0,2,54,8,3,82,0,12,1,19628,1,4178,9,519,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,245,1,2,9,233,0,3,0,8,1,6,0,475,6,110,6,6,9,4759,9,787719,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code: number, set: readonly number[]): boolean {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code: number): boolean {\n if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return (\n code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n );\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n if (code < charCodes.digit0) return code === charCodes.dollarSign;\n if (code < charCodes.colon) return true;\n if (code < charCodes.uppercaseA) return false;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return (\n isInAstralSet(code, astralIdentifierStartCodes) ||\n isInAstralSet(code, astralIdentifierCodes)\n );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n // The implementation is based on\n // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n"],"mappings":";;;;;;;;AAaA,IAAIA,4BAA4B,GAAG,spIAAspI;AAEzrI,IAAIC,uBAAuB,GAAG,4lFAA4lF;AAE1nF,MAAMC,uBAAuB,GAAG,IAAIC,MAAM,CACxC,GAAG,GAAGH,4BAA4B,GAAG,GACvC,CAAC;AACD,MAAMI,kBAAkB,GAAG,IAAID,MAAM,CACnC,GAAG,GAAGH,4BAA4B,GAAGC,uBAAuB,GAAG,GACjE,CAAC;AAEDD,4BAA4B,GAAGC,uBAAuB,GAAG,IAAI;AAQ7D,MAAMI,0BAA0B,GAAG,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,CAAC;AAEjnD,MAAMC,qBAAqB,GAAG,CAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,MAAM,EAAC,GAAG,CAAC;AAK52B,SAASC,aAAaA,CAACC,IAAY,EAAEC,GAAsB,EAAW;EACpE,IAAIC,GAAG,GAAG,OAAO;EACjB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEC,MAAM,GAAGH,GAAG,CAACG,MAAM,EAAED,CAAC,GAAGC,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;IACvDD,GAAG,IAAID,GAAG,CAACE,CAAC,CAAC;IACb,IAAID,GAAG,GAAGF,IAAI,EAAE,OAAO,KAAK;IAE5BE,GAAG,IAAID,GAAG,CAACE,CAAC,GAAG,CAAC,CAAC;IACjB,IAAID,GAAG,IAAIF,IAAI,EAAE,OAAO,IAAI;EAC9B;EACA,OAAO,KAAK;AACd;AAIO,SAASK,iBAAiBA,CAACL,IAAY,EAAW;EACvD,IAAIA,IAAI,KAAuB,EAAE,OAAOA,IAAI,OAAyB;EACrE,IAAIA,IAAI,MAAwB,EAAE,OAAO,IAAI;EAC7C,IAAIA,IAAI,KAAuB,EAAE,OAAOA,IAAI,OAAyB;EACrE,IAAIA,IAAI,OAAwB,EAAE,OAAO,IAAI;EAC7C,IAAIA,IAAI,IAAI,MAAM,EAAE;IAClB,OACEA,IAAI,IAAI,IAAI,IAAIN,uBAAuB,CAACY,IAAI,CAACC,MAAM,CAACC,YAAY,CAACR,IAAI,CAAC,CAAC;EAE3E;EACA,OAAOD,aAAa,CAACC,IAAI,EAAEH,0BAA0B,CAAC;AACxD;AAIO,SAASY,gBAAgBA,CAACT,IAAY,EAAW;EACtD,IAAIA,IAAI,KAAmB,EAAE,OAAOA,IAAI,OAAyB;EACjE,IAAIA,IAAI,KAAkB,EAAE,OAAO,IAAI;EACvC,IAAIA,IAAI,KAAuB,EAAE,OAAO,KAAK;EAC7C,IAAIA,IAAI,MAAwB,EAAE,OAAO,IAAI;EAC7C,IAAIA,IAAI,KAAuB,EAAE,OAAOA,IAAI,OAAyB;EACrE,IAAIA,IAAI,OAAwB,EAAE,OAAO,IAAI;EAC7C,IAAIA,IAAI,IAAI,MAAM,EAAE;IAClB,OAAOA,IAAI,IAAI,IAAI,IAAIJ,kBAAkB,CAACU,IAAI,CAACC,MAAM,CAACC,YAAY,CAACR,IAAI,CAAC,CAAC;EAC3E;EACA,OACED,aAAa,CAACC,IAAI,EAAEH,0BAA0B,CAAC,IAC/CE,aAAa,CAACC,IAAI,EAAEF,qBAAqB,CAAC;AAE9C;AAIO,SAASY,gBAAgBA,CAACC,IAAY,EAAW;EACtD,IAAIC,OAAO,GAAG,IAAI;EAClB,KAAK,IAAIT,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGQ,IAAI,CAACP,MAAM,EAAED,CAAC,EAAE,EAAE;IAKpC,IAAIU,EAAE,GAAGF,IAAI,CAACG,UAAU,CAACX,CAAC,CAAC;IAC3B,IAAI,CAACU,EAAE,GAAG,MAAM,MAAM,MAAM,IAAIV,CAAC,GAAG,CAAC,GAAGQ,IAAI,CAACP,MAAM,EAAE;MACnD,MAAMW,KAAK,GAAGJ,IAAI,CAACG,UAAU,CAAC,EAAEX,CAAC,CAAC;MAClC,IAAI,CAACY,KAAK,GAAG,MAAM,MAAM,MAAM,EAAE;QAC/BF,EAAE,GAAG,OAAO,IAAI,CAACA,EAAE,GAAG,KAAK,KAAK,EAAE,CAAC,IAAIE,KAAK,GAAG,KAAK,CAAC;MACvD;IACF;IACA,IAAIH,OAAO,EAAE;MACXA,OAAO,GAAG,KAAK;MACf,IAAI,CAACP,iBAAiB,CAACQ,EAAE,CAAC,EAAE;QAC1B,OAAO,KAAK;MACd;IACF,CAAC,MAAM,IAAI,CAACJ,gBAAgB,CAACI,EAAE,CAAC,EAAE;MAChC,OAAO,KAAK;IACd;EACF;EACA,OAAO,CAACD,OAAO;AACjB","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/helper-validator-identifier/lib/index.js b/vanilla/node_modules/@babel/helper-validator-identifier/lib/index.js
new file mode 100644
index 0000000..76b2282
--- /dev/null
+++ b/vanilla/node_modules/@babel/helper-validator-identifier/lib/index.js
@@ -0,0 +1,57 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "isIdentifierChar", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierChar;
+ }
+});
+Object.defineProperty(exports, "isIdentifierName", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierName;
+ }
+});
+Object.defineProperty(exports, "isIdentifierStart", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierStart;
+ }
+});
+Object.defineProperty(exports, "isKeyword", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isKeyword;
+ }
+});
+Object.defineProperty(exports, "isReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isReservedWord;
+ }
+});
+Object.defineProperty(exports, "isStrictBindOnlyReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictBindOnlyReservedWord;
+ }
+});
+Object.defineProperty(exports, "isStrictBindReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictBindReservedWord;
+ }
+});
+Object.defineProperty(exports, "isStrictReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictReservedWord;
+ }
+});
+var _identifier = require("./identifier.js");
+var _keyword = require("./keyword.js");
+
+//# sourceMappingURL=index.js.map
diff --git a/vanilla/node_modules/@babel/helper-validator-identifier/lib/index.js.map b/vanilla/node_modules/@babel/helper-validator-identifier/lib/index.js.map
new file mode 100644
index 0000000..d985f3b
--- /dev/null
+++ b/vanilla/node_modules/@babel/helper-validator-identifier/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_identifier","require","_keyword"],"sources":["../src/index.ts"],"sourcesContent":["export {\n isIdentifierName,\n isIdentifierChar,\n isIdentifierStart,\n} from \"./identifier.ts\";\nexport {\n isReservedWord,\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n isStrictReservedWord,\n isKeyword,\n} from \"./keyword.ts\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAKA,IAAAC,QAAA,GAAAD,OAAA","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/helper-validator-identifier/lib/keyword.js b/vanilla/node_modules/@babel/helper-validator-identifier/lib/keyword.js
new file mode 100644
index 0000000..054cf84
--- /dev/null
+++ b/vanilla/node_modules/@babel/helper-validator-identifier/lib/keyword.js
@@ -0,0 +1,35 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isKeyword = isKeyword;
+exports.isReservedWord = isReservedWord;
+exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;
+exports.isStrictBindReservedWord = isStrictBindReservedWord;
+exports.isStrictReservedWord = isStrictReservedWord;
+const reservedWords = {
+ keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],
+ strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
+ strictBind: ["eval", "arguments"]
+};
+const keywords = new Set(reservedWords.keyword);
+const reservedWordsStrictSet = new Set(reservedWords.strict);
+const reservedWordsStrictBindSet = new Set(reservedWords.strictBind);
+function isReservedWord(word, inModule) {
+ return inModule && word === "await" || word === "enum";
+}
+function isStrictReservedWord(word, inModule) {
+ return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);
+}
+function isStrictBindOnlyReservedWord(word) {
+ return reservedWordsStrictBindSet.has(word);
+}
+function isStrictBindReservedWord(word, inModule) {
+ return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);
+}
+function isKeyword(word) {
+ return keywords.has(word);
+}
+
+//# sourceMappingURL=keyword.js.map
diff --git a/vanilla/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map b/vanilla/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map
new file mode 100644
index 0000000..3471f78
--- /dev/null
+++ b/vanilla/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["reservedWords","keyword","strict","strictBind","keywords","Set","reservedWordsStrictSet","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword"],"sources":["../src/keyword.ts"],"sourcesContent":["const reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n"],"mappings":";;;;;;;;;;AAAA,MAAMA,aAAa,GAAG;EACpBC,OAAO,EAAE,CACP,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,SAAS,EACT,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EACL,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,MAAM,EACN,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,QAAQ,CACT;EACDC,MAAM,EAAE,CACN,YAAY,EACZ,WAAW,EACX,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,CACR;EACDC,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW;AAClC,CAAC;AACD,MAAMC,QAAQ,GAAG,IAAIC,GAAG,CAACL,aAAa,CAACC,OAAO,CAAC;AAC/C,MAAMK,sBAAsB,GAAG,IAAID,GAAG,CAACL,aAAa,CAACE,MAAM,CAAC;AAC5D,MAAMK,0BAA0B,GAAG,IAAIF,GAAG,CAACL,aAAa,CAACG,UAAU,CAAC;AAK7D,SAASK,cAAcA,CAACC,IAAY,EAAEC,QAAiB,EAAW;EACvE,OAAQA,QAAQ,IAAID,IAAI,KAAK,OAAO,IAAKA,IAAI,KAAK,MAAM;AAC1D;AAOO,SAASE,oBAAoBA,CAACF,IAAY,EAAEC,QAAiB,EAAW;EAC7E,OAAOF,cAAc,CAACC,IAAI,EAAEC,QAAQ,CAAC,IAAIJ,sBAAsB,CAACM,GAAG,CAACH,IAAI,CAAC;AAC3E;AAMO,SAASI,4BAA4BA,CAACJ,IAAY,EAAW;EAClE,OAAOF,0BAA0B,CAACK,GAAG,CAACH,IAAI,CAAC;AAC7C;AAOO,SAASK,wBAAwBA,CACtCL,IAAY,EACZC,QAAiB,EACR;EACT,OACEC,oBAAoB,CAACF,IAAI,EAAEC,QAAQ,CAAC,IAAIG,4BAA4B,CAACJ,IAAI,CAAC;AAE9E;AAEO,SAASM,SAASA,CAACN,IAAY,EAAW;EAC/C,OAAOL,QAAQ,CAACQ,GAAG,CAACH,IAAI,CAAC;AAC3B","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/helper-validator-identifier/package.json b/vanilla/node_modules/@babel/helper-validator-identifier/package.json
new file mode 100644
index 0000000..1aea38d
--- /dev/null
+++ b/vanilla/node_modules/@babel/helper-validator-identifier/package.json
@@ -0,0 +1,31 @@
+{
+ "name": "@babel/helper-validator-identifier",
+ "version": "7.28.5",
+ "description": "Validate identifier/keywords name",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-validator-identifier"
+ },
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "main": "./lib/index.js",
+ "exports": {
+ ".": {
+ "types": "./lib/index.d.ts",
+ "default": "./lib/index.js"
+ },
+ "./package.json": "./package.json"
+ },
+ "devDependencies": {
+ "@unicode/unicode-17.0.0": "^1.6.10",
+ "charcodes": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "author": "The Babel Team (https://babel.dev/team)",
+ "type": "commonjs"
+} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/parser/CHANGELOG.md b/vanilla/node_modules/@babel/parser/CHANGELOG.md
new file mode 100644
index 0000000..b3840ac
--- /dev/null
+++ b/vanilla/node_modules/@babel/parser/CHANGELOG.md
@@ -0,0 +1,1073 @@
+# Changelog
+
+> **Tags:**
+> - :boom: [Breaking Change]
+> - :eyeglasses: [Spec Compliance]
+> - :rocket: [New Feature]
+> - :bug: [Bug Fix]
+> - :memo: [Documentation]
+> - :house: [Internal]
+> - :nail_care: [Polish]
+
+> Semver Policy: https://github.com/babel/babel/tree/main/packages/babel-parser#semver
+
+_Note: Gaps between patch versions are faulty, broken or test releases._
+
+See the [Babel Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) for the pre-6.8.0 version Changelog.
+
+## 6.17.1 (2017-05-10)
+
+### :bug: Bug Fix
+ * Fix typo in flow spread operator error (Brian Ng)
+ * Fixed invalid number literal parsing ([#473](https://github.com/babel/babylon/pull/473)) (Alex Kuzmenko)
+ * Fix number parser ([#433](https://github.com/babel/babylon/pull/433)) (Alex Kuzmenko)
+ * Ensure non pattern shorthand props are checked for reserved words ([#479](https://github.com/babel/babylon/pull/479)) (Brian Ng)
+ * Remove jsx context when parsing arrow functions ([#475](https://github.com/babel/babylon/pull/475)) (Brian Ng)
+ * Allow super in class properties ([#499](https://github.com/babel/babylon/pull/499)) (Brian Ng)
+ * Allow flow class field to be named constructor ([#510](https://github.com/babel/babylon/pull/510)) (Brian Ng)
+
+## 6.17.0 (2017-04-20)
+
+### :bug: Bug Fix
+ * Cherry-pick #418 to 6.x ([#476](https://github.com/babel/babylon/pull/476)) (Sebastian McKenzie)
+ * Add support for invalid escapes in tagged templates ([#274](https://github.com/babel/babylon/pull/274)) (Kevin Gibbons)
+ * Throw error if new.target is used outside of a function ([#402](https://github.com/babel/babylon/pull/402)) (Brian Ng)
+ * Fix parsing of class properties ([#351](https://github.com/babel/babylon/pull/351)) (Kevin Gibbons)
+ * Fix parsing yield with dynamicImport ([#383](https://github.com/babel/babylon/pull/383)) (Brian Ng)
+ * Ensure consistent start args for parseParenItem ([#386](https://github.com/babel/babylon/pull/386)) (Brian Ng)
+
+## 7.0.0-beta.8 (2017-04-04)
+
+### New Feature
+* Add support for flow type spread (#418) (Conrad Buck)
+* Allow statics in flow interfaces (#427) (Brian Ng)
+
+### Bug Fix
+* Fix predicate attachment to match flow parser (#428) (Brian Ng)
+* Add extra.raw back to JSXText and JSXAttribute (#344) (Alex Rattray)
+* Fix rest parameters with array and objects (#424) (Brian Ng)
+* Fix number parser (#433) (Alex Kuzmenko)
+
+### Docs
+* Fix CONTRIBUTING.md [skip ci] (#432) (Alex Kuzmenko)
+
+### Internal
+* Use babel-register script when running babel smoke tests (#442) (Brian Ng)
+
+## 7.0.0-beta.7 (2017-03-22)
+
+### Spec Compliance
+* Remove babylon plugin for template revision since it's stage-4 (#426) (Henry Zhu)
+
+### Bug Fix
+
+* Fix push-pop logic in flow (#405) (Daniel Tschinder)
+
+## 7.0.0-beta.6 (2017-03-21)
+
+### New Feature
+* Add support for invalid escapes in tagged templates (#274) (Kevin Gibbons)
+
+### Polish
+* Improves error message when super is called outside of constructor (#408) (Arshabh Kumar Agarwal)
+
+### Docs
+
+* [7.0] Moved value field in spec from ObjectMember to ObjectProperty as ObjectMethod's don't have it (#415) [skip ci] (James Browning)
+
+## 7.0.0-beta.5 (2017-03-21)
+
+### Bug Fix
+* Throw error if new.target is used outside of a function (#402) (Brian Ng)
+* Fix parsing of class properties (#351) (Kevin Gibbons)
+
+### Other
+ * Test runner: Detect extra property in 'actual' but not in 'expected'. (#407) (Andy)
+ * Optimize travis builds (#419) (Daniel Tschinder)
+ * Update codecov to 2.0 (#412) (Daniel Tschinder)
+ * Fix spec for ClassMethod: It doesn't have a function, it *is* a function. (#406) [skip ci] (Andy)
+ * Changed Non-existent RestPattern to RestElement which is what is actually parsed (#409) [skip ci] (James Browning)
+ * Upgrade flow to 0.41 (Daniel Tschinder)
+ * Fix watch command (#403) (Brian Ng)
+ * Update yarn lock (Daniel Tschinder)
+ * Fix watch command (#403) (Brian Ng)
+ * chore(package): update flow-bin to version 0.41.0 (#395) (greenkeeper[bot])
+ * Add estree test for correct order of directives (Daniel Tschinder)
+ * Add DoExpression to spec (#364) (Alex Kuzmenko)
+ * Mention cloning of repository in CONTRIBUTING.md (#391) [skip ci] (Sumedh Nimkarde)
+ * Explain how to run only one test (#389) [skip ci] (Aaron Ang)
+
+ ## 7.0.0-beta.4 (2017-03-01)
+
+* Don't consume async when checking for async func decl (#377) (Brian Ng)
+* add `ranges` option [skip ci] (Henry Zhu)
+* Don't parse class properties without initializers when classProperties is disabled and Flow is enabled (#300) (Andrew Levine)
+
+## 7.0.0-beta.3 (2017-02-28)
+
+- [7.0] Change RestProperty/SpreadProperty to RestElement/SpreadElement (#384)
+- Merge changes from 6.x
+
+## 7.0.0-beta.2 (2017-02-20)
+
+- estree: correctly change literals in all cases (#368) (Daniel Tschinder)
+
+## 7.0.0-beta.1 (2017-02-20)
+
+- Fix negative number literal typeannotations (#366) (Daniel Tschinder)
+- Update contributing with more test info [skip ci] (#355) (Brian Ng)
+
+## 7.0.0-beta.0 (2017-02-15)
+
+- Reintroduce Variance node (#333) (Daniel Tschinder)
+- Rename NumericLiteralTypeAnnotation to NumberLiteralTypeAnnotation (#332) (Charles Pick)
+- [7.0] Remove ForAwaitStatement, add await flag to ForOfStatement (#349) (Brandon Dail)
+- chore(package): update ava to version 0.18.0 (#345) (greenkeeper[bot])
+- chore(package): update babel-plugin-istanbul to version 4.0.0 (#350) (greenkeeper[bot])
+- Change location of ObjectTypeIndexer to match flow (#228) (Daniel Tschinder)
+- Rename flow AST Type ExistentialTypeParam to ExistsTypeAnnotation (#322) (Toru Kobayashi)
+- Revert "Temporary rollback for erroring on trailing comma with spread (#154)" (#290) (Daniel Tschinder)
+- Remove classConstructorCall plugin (#291) (Brian Ng)
+- Update yarn.lock (Daniel Tschinder)
+- Update cross-env to 3.x (Daniel Tschinder)
+- [7.0] Remove node 0.10, 0.12 and 5 from Travis (#284) (Sergey Rubanov)
+- Remove `String.fromCodePoint` shim (#279) (Mathias Bynens)
+
+## 6.16.1 (2017-02-23)
+
+### :bug: Regression
+
+- Revert "Fix export default async function to be FunctionDeclaration" ([#375](https://github.com/babel/babylon/pull/375))
+
+Need to modify Babel for this AST node change, so moving to 7.0.
+
+- Revert "Don't parse class properties without initializers when classProperties plugin is disabled, and Flow is enabled" ([#376](https://github.com/babel/babylon/pull/376))
+
+[react-native](https://github.com/facebook/react-native/issues/12542) broke with this so we reverted.
+
+## 6.16.0 (2017-02-23)
+
+### :rocket: New Feature
+
+***ESTree*** compatibility as plugin ([#277](https://github.com/babel/babylon/pull/277)) (Daniel Tschinder)
+
+We finally introduce a new compatibility layer for ESTree. To put babylon into ESTree-compatible mode the new plugin `estree` can be enabled. In this mode the parser will output an AST that is compliant to the specs of [ESTree](https://github.com/estree/estree/)
+
+We highly recommend everyone who uses babylon outside of babel to use this plugin. This will make it much easier for users to switch between different ESTree-compatible parsers. We so far tested several projects with different parsers and exchanged their parser to babylon and in nearly all cases it worked out of the box. Some other estree-compatible parsers include `acorn`, `esprima`, `espree`, `flow-parser`, etc.
+
+To enable `estree` mode simply add the plugin in the config:
+```json
+{
+ "plugins": [ "estree" ]
+}
+```
+
+If you want to migrate your project from non-ESTree mode to ESTree, have a look at our [Readme](https://github.com/babel/babylon/#output), where all deviations are mentioned.
+
+Add a parseExpression public method ([#213](https://github.com/babel/babylon/pull/213)) (jeromew)
+
+Babylon exports a new function to parse a single expression
+
+```js
+import { parseExpression } from 'babylon';
+
+const ast = parseExpression('x || y && z', options);
+```
+
+The returned AST will only consist of the expression. The options are the same as for `parse()`
+
+Add startLine option ([#346](https://github.com/babel/babylon/pull/346)) (Raphael Mu)
+
+A new option was added to babylon allowing to change the initial linenumber for the first line which is usually `1`.
+Changing this for example to `100` will make line `1` of the input source to be marked as line `100`, line `2` as `101`, line `3` as `102`, ...
+
+Function predicate declaration ([#103](https://github.com/babel/babylon/pull/103)) (Panagiotis Vekris)
+
+Added support for function predicates which flow introduced in version 0.33.0
+
+```js
+declare function is_number(x: mixed): boolean %checks(typeof x === "number");
+```
+
+Allow imports in declare module ([#315](https://github.com/babel/babylon/pull/315)) (Daniel Tschinder)
+
+Added support for imports within module declarations which flow introduced in version 0.37.0
+
+```js
+declare module "C" {
+ import type { DT } from "D";
+ declare export type CT = { D: DT };
+}
+```
+
+### :eyeglasses: Spec Compliance
+
+Forbid semicolons after decorators in classes ([#352](https://github.com/babel/babylon/pull/352)) (Kevin Gibbons)
+
+This example now correctly throws an error when there is a semicolon after the decorator:
+
+```js
+class A {
+@a;
+foo(){}
+}
+```
+
+Keywords are not allowed as local specifier ([#307](https://github.com/babel/babylon/pull/307)) (Daniel Tschinder)
+
+Using keywords in imports is not allowed anymore:
+
+```js
+import { default } from "foo";
+import { a as debugger } from "foo";
+```
+
+Do not allow overwritting of primitive types ([#314](https://github.com/babel/babylon/pull/314)) (Daniel Tschinder)
+
+In flow it is now forbidden to overwrite the primitive types `"any"`, `"mixed"`, `"empty"`, `"bool"`, `"boolean"`, `"number"`, `"string"`, `"void"` and `"null"` with your own type declaration.
+
+Disallow import type { type a } from … ([#305](https://github.com/babel/babylon/pull/305)) (Daniel Tschinder)
+
+The following code now correctly throws an error
+
+```js
+import type { type a } from "foo";
+```
+
+Don't parse class properties without initializers when classProperties is disabled and Flow is enabled ([#300](https://github.com/babel/babylon/pull/300)) (Andrew Levine)
+
+Ensure that you enable the `classProperties` plugin in order to enable correct parsing of class properties. Prior to this version it was possible to parse them by enabling the `flow` plugin but this was not intended the behaviour.
+
+If you enable the flow plugin you can only define the type of the class properties, but not initialize them.
+
+Fix export default async function to be FunctionDeclaration ([#324](https://github.com/babel/babylon/pull/324)) (Daniel Tschinder)
+
+Parsing the following code now returns a `FunctionDeclaration` AST node instead of `FunctionExpression`.
+
+```js
+export default async function bar() {};
+```
+
+### :nail_care: Polish
+
+Improve error message on attempt to destructure named import ([#288](https://github.com/babel/babylon/pull/288)) (Brian Ng)
+
+### :bug: Bug Fix
+
+Fix negative number literal typeannotations ([#366](https://github.com/babel/babylon/pull/366)) (Daniel Tschinder)
+
+Ensure takeDecorators is called on exported class ([#358](https://github.com/babel/babylon/pull/358)) (Brian Ng)
+
+ESTree: correctly change literals in all cases ([#368](https://github.com/babel/babylon/pull/368)) (Daniel Tschinder)
+
+Correctly convert RestProperty to Assignable ([#339](https://github.com/babel/babylon/pull/339)) (Daniel Tschinder)
+
+Fix #321 by allowing question marks in type params ([#338](https://github.com/babel/babylon/pull/338)) (Daniel Tschinder)
+
+Fix #336 by correctly setting arrow-param ([#337](https://github.com/babel/babylon/pull/337)) (Daniel Tschinder)
+
+Fix parse error when destructuring `set` with default value ([#317](https://github.com/babel/babylon/pull/317)) (Brian Ng)
+
+Fix ObjectTypeCallProperty static ([#298](https://github.com/babel/babylon/pull/298)) (Dan Harper)
+
+
+### :house: Internal
+
+Fix generator-method-with-computed-name spec ([#360](https://github.com/babel/babylon/pull/360)) (Alex Rattray)
+
+Fix flow type-parameter-declaration test with unintended semantic ([#361](https://github.com/babel/babylon/pull/361)) (Alex Rattray)
+
+Cleanup and splitup parser functions ([#295](https://github.com/babel/babylon/pull/295)) (Daniel Tschinder)
+
+chore(package): update flow-bin to version 0.38.0 ([#313](https://github.com/babel/babylon/pull/313)) (greenkeeper[bot])
+
+Call inner function instead of 1:1 copy to plugin ([#294](https://github.com/babel/babylon/pull/294)) (Daniel Tschinder)
+
+Update eslint-config-babel to the latest version 🚀 ([#299](https://github.com/babel/babylon/pull/299)) (greenkeeper[bot])
+
+Update eslint-config-babel to the latest version 🚀 ([#293](https://github.com/babel/babylon/pull/293)) (greenkeeper[bot])
+
+devDeps: remove eslint-plugin-babel ([#292](https://github.com/babel/babylon/pull/292)) (Kai Cataldo)
+
+Correct indent eslint rule config ([#276](https://github.com/babel/babylon/pull/276)) (Daniel Tschinder)
+
+Fail tests that have expected.json and throws-option ([#285](https://github.com/babel/babylon/pull/285)) (Daniel Tschinder)
+
+### :memo: Documentation
+
+Update contributing with more test info [skip ci] ([#355](https://github.com/babel/babylon/pull/355)) (Brian Ng)
+
+Update API documentation ([#330](https://github.com/babel/babylon/pull/330)) (Timothy Gu)
+
+Added keywords to package.json ([#323](https://github.com/babel/babylon/pull/323)) (Dmytro)
+
+AST spec: fix casing of `RegExpLiteral` ([#318](https://github.com/babel/babylon/pull/318)) (Mathias Bynens)
+
+## 6.15.0 (2017-01-10)
+
+### :eyeglasses: Spec Compliance
+
+Add support for Flow shorthand import type ([#267](https://github.com/babel/babylon/pull/267)) (Jeff Morrison)
+
+This change implements flows new shorthand import syntax
+and where previously you had to write this code:
+
+```js
+import {someValue} from "blah";
+import type {someType} from "blah";
+import typeof {someOtherValue} from "blah";
+```
+
+you can now write it like this:
+
+```js
+import {
+ someValue,
+ type someType,
+ typeof someOtherValue,
+} from "blah";
+```
+
+For more information look at [this](https://github.com/facebook/flow/pull/2890) pull request.
+
+flow: allow leading pipes in all positions ([#256](https://github.com/babel/babylon/pull/256)) (Vladimir Kurchatkin)
+
+This change now allows a leading pipe everywhere types can be used:
+```js
+var f = (x): | 1 | 2 => 1;
+```
+
+Throw error when exporting non-declaration ([#241](https://github.com/babel/babylon/pull/241)) (Kai Cataldo)
+
+Previously babylon parsed the following exports, although they are not valid:
+```js
+export typeof foo;
+export new Foo();
+export function() {};
+export for (;;);
+export while(foo);
+```
+
+### :bug: Bug Fix
+
+Don't set inType flag when parsing property names ([#266](https://github.com/babel/babylon/pull/266)) (Vladimir Kurchatkin)
+
+This fixes parsing of this case:
+
+```js
+const map = {
+ [age <= 17] : 'Too young'
+};
+```
+
+Fix source location for JSXEmptyExpression nodes (fixes #248) ([#249](https://github.com/babel/babylon/pull/249)) (James Long)
+
+The following case produced an invalid AST
+```js
+<div>{/* foo */}</div>
+```
+
+Use fromCodePoint to convert high value unicode entities ([#243](https://github.com/babel/babylon/pull/243)) (Ryan Duffy)
+
+When high value unicode entities (e.g. 💩) were used in the input source code they are now correctly encoded in the resulting AST.
+
+Rename folder to avoid Windows-illegal characters ([#281](https://github.com/babel/babylon/pull/281)) (Ryan Plant)
+
+Allow this.state.clone() when parsing decorators ([#262](https://github.com/babel/babylon/pull/262)) (Alex Rattray)
+
+### :house: Internal
+
+User external-helpers ([#254](https://github.com/babel/babylon/pull/254)) (Daniel Tschinder)
+
+Add watch script for dev ([#234](https://github.com/babel/babylon/pull/234)) (Kai Cataldo)
+
+Freeze current plugins list for "*" option, and remove from README.md ([#245](https://github.com/babel/babylon/pull/245)) (Andrew Levine)
+
+Prepare tests for multiple fixture runners. ([#240](https://github.com/babel/babylon/pull/240)) (Daniel Tschinder)
+
+Add some test coverage for decorators stage-0 plugin ([#250](https://github.com/babel/babylon/pull/250)) (Andrew Levine)
+
+Refactor tokenizer types file ([#263](https://github.com/babel/babylon/pull/263)) (Sven SAULEAU)
+
+Update eslint-config-babel to the latest version 🚀 ([#273](https://github.com/babel/babylon/pull/273)) (greenkeeper[bot])
+
+chore(package): update rollup to version 0.41.0 ([#272](https://github.com/babel/babylon/pull/272)) (greenkeeper[bot])
+
+chore(package): update flow-bin to version 0.37.0 ([#255](https://github.com/babel/babylon/pull/255)) (greenkeeper[bot])
+
+## 6.14.1 (2016-11-17)
+
+### :bug: Bug Fix
+
+Allow `"plugins": ["*"]` ([#229](https://github.com/babel/babylon/pull/229)) (Daniel Tschinder)
+
+```js
+{
+ "plugins": ["*"]
+}
+```
+
+Will include all parser plugins instead of specifying each one individually. Useful for tools like babel-eslint, jscodeshift, and ast-explorer.
+
+## 6.14.0 (2016-11-16)
+
+### :eyeglasses: Spec Compliance
+
+Throw error for reserved words `enum` and `await` ([#195](https://github.com/babel/babylon/pull/195)) (Kai Cataldo)
+
+[11.6.2.2 Future Reserved Words](http://www.ecma-international.org/ecma-262/6.0/#sec-future-reserved-words)
+
+Babylon will throw for more reserved words such as `enum` or `await` (in strict mode).
+
+```
+class enum {} // throws
+class await {} // throws in strict mode (module)
+```
+
+Optional names for function types and object type indexers ([#197](https://github.com/babel/babylon/pull/197)) (Gabe Levi)
+
+So where you used to have to write
+
+```js
+type A = (x: string, y: boolean) => number;
+type B = (z: string) => number;
+type C = { [key: string]: number };
+```
+
+you can now write (with flow 0.34.0)
+
+```js
+type A = (string, boolean) => number;
+type B = string => number;
+type C = { [string]: number };
+```
+
+Parse flow nested array type annotations like `number[][]` ([#219](https://github.com/babel/babylon/pull/219)) (Bernhard Häussner)
+
+Supports these form now of specifying array types:
+
+```js
+var a: number[][][][];
+var b: string[][];
+```
+
+### :bug: Bug Fix
+
+Correctly eat semicolon at the end of `DelcareModuleExports` ([#223](https://github.com/babel/babylon/pull/223)) (Daniel Tschinder)
+
+```
+declare module "foo" { declare module.exports: number }
+declare module "foo" { declare module.exports: number; } // also allowed now
+```
+
+### :house: Internal
+
+ * Count Babel tests towards Babylon code coverage ([#182](https://github.com/babel/babylon/pull/182)) (Moti Zilberman)
+ * Fix strange line endings ([#214](https://github.com/babel/babylon/pull/214)) (Thomas Grainger)
+ * Add node 7 (Daniel Tschinder)
+ * chore(package): update flow-bin to version 0.34.0 ([#204](https://github.com/babel/babylon/pull/204)) (Greenkeeper)
+
+## v6.13.1 (2016-10-26)
+
+### :nail_care: Polish
+
+- Use rollup for bundling to speed up startup time ([#190](https://github.com/babel/babylon/pull/190)) ([@drewml](https://github.com/DrewML))
+
+```js
+const babylon = require('babylon');
+const ast = babylon.parse('var foo = "lol";');
+```
+
+With that test case, there was a ~95ms savings by removing the need for node to build/traverse the dependency graph.
+
+**Without bundling**
+![image](https://cloud.githubusercontent.com/assets/5233399/19420264/3133497e-93ad-11e6-9a6a-2da59c4f5c13.png)
+
+**With bundling**
+![image](https://cloud.githubusercontent.com/assets/5233399/19420267/388f556e-93ad-11e6-813e-7c5c396be322.png)
+
+- add clean command [skip ci] ([#201](https://github.com/babel/babylon/pull/201)) (Henry Zhu)
+- add ForAwaitStatement (async generator already added) [skip ci] ([#196](https://github.com/babel/babylon/pull/196)) (Henry Zhu)
+
+## v6.13.0 (2016-10-21)
+
+### :eyeglasses: Spec Compliance
+
+Property variance type annotations for Flow plugin ([#161](https://github.com/babel/babylon/pull/161)) (Sam Goldman)
+
+> See https://flowtype.org/docs/variance.html for more information
+
+```js
+type T = { +p: T };
+interface T { -p: T };
+declare class T { +[k:K]: V };
+class T { -[k:K]: V };
+class C2 { +p: T = e };
+```
+
+Raise error on duplicate definition of __proto__ ([#183](https://github.com/babel/babylon/pull/183)) (Moti Zilberman)
+
+```js
+({ __proto__: 1, __proto__: 2 }) // Throws an error now
+```
+
+### :bug: Bug Fix
+
+Flow: Allow class properties to be named `static` ([#184](https://github.com/babel/babylon/pull/184)) (Moti Zilberman)
+
+```js
+declare class A {
+ static: T;
+}
+```
+
+Allow "async" as identifier for object literal property shorthand ([#187](https://github.com/babel/babylon/pull/187)) (Andrew Levine)
+
+```js
+var foo = { async, bar };
+```
+
+### :nail_care: Polish
+
+Fix flowtype and add inType to state ([#189](https://github.com/babel/babylon/pull/189)) (Daniel Tschinder)
+
+> This improves the performance slightly (because of hidden classes)
+
+### :house: Internal
+
+Fix .gitattributes line ending setting ([#191](https://github.com/babel/babylon/pull/191)) (Moti Zilberman)
+
+Increase test coverage ([#175](https://github.com/babel/babylon/pull/175) (Moti Zilberman)
+
+Readd missin .eslinignore for IDEs (Daniel Tschinder)
+
+Error on missing expected.json fixture in CI ([#188](https://github.com/babel/babylon/pull/188)) (Moti Zilberman)
+
+Add .gitattributes and .editorconfig for LF line endings ([#179](https://github.com/babel/babylon/pull/179)) (Moti Zilberman)
+
+Fixes two tests that are failing after the merge of #172 ([#177](https://github.com/babel/babylon/pull/177)) (Moti Zilberman)
+
+## v6.12.0 (2016-10-14)
+
+### :eyeglasses: Spec Compliance
+
+Implement import() syntax ([#163](https://github.com/babel/babylon/pull/163)) (Jordan Gensler)
+
+#### Dynamic Import
+
+- Proposal Repo: https://github.com/domenic/proposal-dynamic-import
+- Championed by [@domenic](https://github.com/domenic)
+- stage-2
+- [sept-28 tc39 notes](https://github.com/rwaldron/tc39-notes/blob/master/es7/2016-09/sept-28.md#113a-import)
+
+> This repository contains a proposal for adding a "function-like" import() module loading syntactic form to JavaScript
+
+```js
+import(`./section-modules/${link.dataset.entryModule}.js`)
+.then(module => {
+ module.loadPageInto(main);
+})
+```
+
+Add EmptyTypeAnnotation ([#171](https://github.com/babel/babylon/pull/171)) (Sam Goldman)
+
+#### EmptyTypeAnnotation
+
+Just wasn't covered before.
+
+```js
+type T = empty;
+```
+
+### :bug: Bug Fix
+
+Fix crash when exporting with destructuring and sparse array ([#170](https://github.com/babel/babylon/pull/170)) (Jeroen Engels)
+
+```js
+// was failing due to sparse array
+export const { foo: [ ,, qux7 ] } = bar;
+```
+
+Allow keyword in Flow object declaration property names with type parameters ([#146](https://github.com/babel/babylon/pull/146)) (Dan Harper)
+
+```js
+declare class X {
+ foobar<T>(): void;
+ static foobar<T>(): void;
+}
+```
+
+Allow keyword in object/class property names with Flow type parameters ([#145](https://github.com/babel/babylon/pull/145)) (Dan Harper)
+
+```js
+class Foo {
+ delete<T>(item: T): T {
+ return item;
+ }
+}
+```
+
+Allow typeAnnotations for yield expressions ([#174](https://github.com/babel/babylon/pull/174))) (Daniel Tschinder)
+
+```js
+function *foo() {
+ const x = (yield 5: any);
+}
+```
+
+### :nail_care: Polish
+
+Annotate more errors with expected token ([#172](https://github.com/babel/babylon/pull/172))) (Moti Zilberman)
+
+```js
+// Unexpected token, expected ; (1:6)
+{ set 1 }
+```
+
+### :house: Internal
+
+Remove kcheck ([#173](https://github.com/babel/babylon/pull/173))) (Daniel Tschinder)
+
+Also run flow, linting, babel tests on separate instances (add back node 0.10)
+
+## v6.11.6 (2016-10-12)
+
+### :bug: Bug Fix/Regression
+
+Fix crash when exporting with destructuring and sparse array ([#170](https://github.com/babel/babylon/pull/170)) (Jeroen Engels)
+
+```js
+// was failing with `Cannot read property 'type' of null` because of null identifiers
+export const { foo: [ ,, qux7 ] } = bar;
+```
+
+## v6.11.5 (2016-10-12)
+
+### :eyeglasses: Spec Compliance
+
+Fix: Check for duplicate named exports in exported destructuring assignments ([#144](https://github.com/babel/babylon/pull/144)) (Kai Cataldo)
+
+```js
+// `foo` has already been exported. Exported identifiers must be unique. (2:20)
+export function foo() {};
+export const { a: [{foo}] } = bar;
+```
+
+Fix: Check for duplicate named exports in exported rest elements/properties ([#164](https://github.com/babel/babylon/pull/164)) (Kai Cataldo)
+
+```js
+// `foo` has already been exported. Exported identifiers must be unique. (2:22)
+export const foo = 1;
+export const [bar, ...foo] = baz;
+```
+
+### :bug: Bug Fix
+
+Fix: Allow identifier `async` for default param in arrow expression ([#165](https://github.com/babel/babylon/pull/165)) (Kai Cataldo)
+
+```js
+// this is ok now
+const test = ({async = true}) => {};
+```
+
+### :nail_care: Polish
+
+Babylon will now print out the token it's expecting if there's a `SyntaxError` ([#150](https://github.com/babel/babylon/pull/150)) (Daniel Tschinder)
+
+```bash
+# So in the case of a missing ending curly (`}`)
+Module build failed: SyntaxError: Unexpected token, expected } (30:0)
+ 28 | }
+ 29 |
+> 30 |
+ | ^
+```
+
+## v6.11.4 (2016-10-03)
+
+Temporary rollback for erroring on trailing comma with spread (#154) (Henry Zhu)
+
+## v6.11.3 (2016-10-01)
+
+### :eyeglasses: Spec Compliance
+
+Add static errors for object rest (#149) ([@danez](https://github.com/danez))
+
+> https://github.com/sebmarkbage/ecmascript-rest-spread
+
+Object rest copies the *rest* of properties from the right hand side `obj` starting from the left to right.
+
+```js
+let { x, y, ...z } = { x: 1, y: 2, z: 3 };
+// x = 1
+// y = 2
+// z = { z: 3 }
+```
+
+#### New Syntax Errors:
+
+**SyntaxError**: The rest element has to be the last element when destructuring (1:10)
+```bash
+> 1 | let { ...x, y, z } = { x: 1, y: 2, z: 3};
+ | ^
+# Previous behavior:
+# x = { x: 1, y: 2, z: 3 }
+# y = 2
+# z = 3
+```
+
+Before, this was just a more verbose way of shallow copying `obj` since it doesn't actually do what you think.
+
+**SyntaxError**: Cannot have multiple rest elements when destructuring (1:13)
+
+```bash
+> 1 | let { x, ...y, ...z } = { x: 1, y: 2, z: 3};
+ | ^
+# Previous behavior:
+# x = 1
+# y = { y: 2, z: 3 }
+# z = { y: 2, z: 3 }
+```
+
+Before y and z would just be the same value anyway so there is no reason to need to have both.
+
+**SyntaxError**: A trailing comma is not permitted after the rest element (1:16)
+
+```js
+let { x, y, ...z, } = obj;
+```
+
+The rationale for this is that the use case for trailing comma is that you can add something at the end without affecting the line above. Since a RestProperty always has to be the last property it doesn't make sense.
+
+---
+
+get / set are valid property names in default assignment (#142) ([@jezell](https://github.com/jezell))
+
+```js
+// valid
+function something({ set = null, get = null }) {}
+```
+
+## v6.11.2 (2016-09-23)
+
+### Bug Fix
+
+- [#139](https://github.com/babel/babylon/issues/139) Don't do the duplicate check if not an identifier (#140) @hzoo
+
+```js
+// regression with duplicate export check
+SyntaxError: ./typography.js: `undefined` has already been exported. Exported identifiers must be unique. (22:13)
+ 20 |
+ 21 | export const { rhythm } = typography;
+> 22 | export const { TypographyStyle } = typography
+```
+
+Bail out for now, and make a change to account for destructuring in the next release.
+
+## 6.11.1 (2016-09-22)
+
+### Bug Fix
+- [#137](https://github.com/babel/babylon/pull/137) - Fix a regression with duplicate exports - it was erroring on all keys in `Object.prototype`. @danez
+
+```javascript
+export toString from './toString';
+```
+
+```bash
+`toString` has already been exported. Exported identifiers must be unique. (1:7)
+> 1 | export toString from './toString';
+ | ^
+ 2 |
+```
+
+## 6.11.0 (2016-09-22)
+
+### Spec Compliance (will break CI)
+
+- Disallow duplicate named exports ([#107](https://github.com/babel/babylon/pull/107)) @kaicataldo
+
+```js
+// Only one default export allowed per module. (2:9)
+export default function() {};
+export { foo as default };
+
+// Only one default export allowed per module. (2:0)
+export default {};
+export default function() {};
+
+// `Foo` has already been exported. Exported identifiers must be unique. (2:0)
+export { Foo };
+export class Foo {};
+```
+
+### New Feature (Syntax)
+
+- Add support for computed class property names ([#121](https://github.com/babel/babylon/pull/121)) @motiz88
+
+```js
+// AST
+interface ClassProperty <: Node {
+ type: "ClassProperty";
+ key: Identifier;
+ value: Expression;
+ computed: boolean; // added
+}
+```
+
+```js
+// with "plugins": ["classProperties"]
+class Foo {
+ [x]
+ ['y']
+}
+
+class Bar {
+ [p]
+ [m] () {}
+}
+ ```
+
+### Bug Fix
+
+- Fix `static` property falling through in the declare class Flow AST ([#135](https://github.com/babel/babylon/pull/135)) @danharper
+
+```js
+declare class X {
+ a: number;
+ static b: number; // static
+ c: number; // this was being marked as static in the AST as well
+}
+```
+
+### Polish
+
+- Rephrase "assigning/binding to rvalue" errors to include context ([#119](https://github.com/babel/babylon/pull/119)) @motiz88
+
+```js
+// Used to error with:
+// SyntaxError: Assigning to rvalue (1:0)
+
+// Now:
+// Invalid left-hand side in assignment expression (1:0)
+3 = 4
+
+// Invalid left-hand side in for-in statement (1:5)
+for (+i in {});
+```
+
+### Internal
+
+- Fix call to `this.parseMaybeAssign` with correct arguments ([#133](https://github.com/babel/babylon/pull/133)) @danez
+- Add semver note to changelog ([#131](https://github.com/babel/babylon/pull/131)) @hzoo
+
+## 6.10.0 (2016-09-19)
+
+> We plan to include some spec compliance bugs in patch versions. An example was the multiple default exports issue.
+
+### Spec Compliance
+
+* Implement ES2016 check for simple parameter list in strict mode ([#106](https://github.com/babel/babylon/pull/106)) (Timothy Gu)
+
+> It is a Syntax Error if ContainsUseStrict of FunctionBody is true and IsSimpleParameterList of FormalParameters is false. https://tc39.github.io/ecma262/2016/#sec-function-definitions-static-semantics-early-errors
+
+More Context: [tc39-notes](https://github.com/rwaldron/tc39-notes/blob/master/es7/2015-07/july-29.md#611-the-scope-of-use-strict-with-respect-to-destructuring-in-parameter-lists)
+
+For example:
+
+```js
+// this errors because it uses destructuring and default parameters
+// in a function with a "use strict" directive
+function a([ option1, option2 ] = []) {
+ "use strict";
+}
+ ```
+
+The solution would be to use a top level "use strict" or to remove the destructuring or default parameters when using a function + "use strict" or to.
+
+### New Feature
+
+* Exact object type annotations for Flow plugin ([#104](https://github.com/babel/babylon/pull/104)) (Basil Hosmer)
+
+Added to flow in https://github.com/facebook/flow/commit/c710c40aa2a115435098d6c0dfeaadb023cd39b8
+
+Looks like:
+
+```js
+var a : {| x: number, y: string |} = { x: 0, y: 'foo' };
+```
+
+### Bug Fixes
+
+* Include `typeParameter` location in `ArrowFunctionExpression` ([#126](https://github.com/babel/babylon/pull/126)) (Daniel Tschinder)
+* Error on invalid flow type annotation with default assignment ([#122](https://github.com/babel/babylon/pull/122)) (Dan Harper)
+* Fix Flow return types on arrow functions ([#124](https://github.com/babel/babylon/pull/124)) (Dan Harper)
+
+### Misc
+
+* Add tests for export extensions ([#127](https://github.com/babel/babylon/pull/127)) (Daniel Tschinder)
+* Fix Contributing guidelines [skip ci] (Daniel Tschinder)
+
+## 6.9.2 (2016-09-09)
+
+The only change is to remove the `babel-runtime` dependency by compiling with Babel's ES2015 loose mode. So using babylon standalone should be smaller.
+
+## 6.9.1 (2016-08-23)
+
+This release contains mainly small bugfixes but also updates babylons default mode to es2017. The features for `exponentiationOperator`, `asyncFunctions` and `trailingFunctionCommas` which previously needed to be activated via plugin are now enabled by default and the plugins are now no-ops.
+
+### Bug Fixes
+
+- Fix issues with default object params in async functions ([#96](https://github.com/babel/babylon/pull/96)) @danez
+- Fix issues with flow-types and async function ([#95](https://github.com/babel/babylon/pull/95)) @danez
+- Fix arrow functions with destructuring, types & default value ([#94](https://github.com/babel/babylon/pull/94)) @danharper
+- Fix declare class with qualified type identifier ([#97](https://github.com/babel/babylon/pull/97)) @danez
+- Remove exponentiationOperator, asyncFunctions, trailingFunctionCommas plugins and enable them by default ([#98](https://github.com/babel/babylon/pull/98)) @danez
+
+## 6.9.0 (2016-08-16)
+
+### New syntax support
+
+- Add JSX spread children ([#42](https://github.com/babel/babylon/pull/42)) @calebmer
+
+(Be aware that React is not going to support this syntax)
+
+```js
+<div>
+ {...todos.map(todo => <Todo key={todo.id} todo={todo}/>)}
+</div>
+```
+
+- Add support for declare module.exports ([#72](https://github.com/babel/babylon/pull/72)) @danez
+
+```js
+declare module "foo" {
+ declare module.exports: {}
+}
+```
+
+### New Features
+
+- If supplied, attach filename property to comment node loc. ([#80](https://github.com/babel/babylon/pull/80)) @divmain
+- Add identifier name to node loc field ([#90](https://github.com/babel/babylon/pull/90)) @kittens
+
+### Bug Fixes
+
+- Fix exponential operator to behave according to spec ([#75](https://github.com/babel/babylon/pull/75)) @danez
+- Fix lookahead to not add comments to arrays which are not cloned ([#76](https://github.com/babel/babylon/pull/76)) @danez
+- Fix accidental fall-through in Flow type parsing. ([#82](https://github.com/babel/babylon/pull/82)) @xiemaisi
+- Only allow declares inside declare module ([#73](https://github.com/babel/babylon/pull/73)) @danez
+- Small fix for parsing type parameter declarations ([#83](https://github.com/babel/babylon/pull/83)) @gabelevi
+- Fix arrow param locations with flow types ([#57](https://github.com/babel/babylon/pull/57)) @danez
+- Fixes SyntaxError position with flow optional type ([#65](https://github.com/babel/babylon/pull/65)) @danez
+
+### Internal
+
+- Add codecoverage to tests @danez
+- Fix tests to not save expected output if we expect the test to fail @danez
+- Make a shallow clone of babel for testing @danez
+- chore(package): update cross-env to version 2.0.0 ([#77](https://github.com/babel/babylon/pull/77)) @greenkeeperio-bot
+- chore(package): update ava to version 0.16.0 ([#86](https://github.com/babel/babylon/pull/86)) @greenkeeperio-bot
+- chore(package): update babel-plugin-istanbul to version 2.0.0 ([#89](https://github.com/babel/babylon/pull/89)) @greenkeeperio-bot
+- chore(package): update nyc to version 8.0.0 ([#88](https://github.com/babel/babylon/pull/88)) @greenkeeperio-bot
+
+## 6.8.4 (2016-07-06)
+
+### Bug Fixes
+
+- Fix the location of params, when flow and default value used ([#68](https://github.com/babel/babylon/pull/68)) @danez
+
+## 6.8.3 (2016-07-02)
+
+### Bug Fixes
+
+- Fix performance regression introduced in 6.8.2 with conditionals ([#63](https://github.com/babel/babylon/pull/63)) @danez
+
+## 6.8.2 (2016-06-24)
+
+### Bug Fixes
+
+- Fix parse error with yielding jsx elements in generators `function* it() { yield <a></a>; }` ([#31](https://github.com/babel/babylon/pull/31)) @eldereal
+- When cloning nodes do not clone its comments ([#24](https://github.com/babel/babylon/pull/24)) @danez
+- Fix parse errors when using arrow functions with an spread element and return type `(...props): void => {}` ([#10](https://github.com/babel/babylon/pull/10)) @danez
+- Fix leading comments added from previous node ([#23](https://github.com/babel/babylon/pull/23)) @danez
+- Fix parse errors with flow's optional arguments `(arg?) => {}` ([#19](https://github.com/babel/babylon/pull/19)) @danez
+- Support negative numeric type literals @kittens
+- Remove line terminator restriction after await keyword @kittens
+- Remove grouped type arrow restriction as it seems flow no longer has it @kittens
+- Fix parse error with generic methods that have the name `get` or `set` `class foo { get() {} }` ([#55](https://github.com/babel/babylon/pull/55)) @vkurchatkin
+- Fix parse error with arrow functions that have flow type parameter declarations `<T>(x: T): T => x;` ([#54](https://github.com/babel/babylon/pull/54)) @gabelevi
+
+### Documentation
+
+- Document AST differences from ESTree ([#41](https://github.com/babel/babylon/pull/41)) @nene
+- Move ast spec from babel/babel ([#46](https://github.com/babel/babylon/pull/46)) @hzoo
+
+### Internal
+
+- Enable skipped tests ([#16](https://github.com/babel/babylon/pull/16)) @danez
+- Add script to test latest version of babylon with babel ([#21](https://github.com/babel/babylon/pull/21)) @danez
+- Upgrade test runner ava @kittens
+- Add missing generate-identifier-regex script @kittens
+- Rename parser context types @kittens
+- Add node v6 to travis testing @hzoo
+- Update to Unicode v9 ([#45](https://github.com/babel/babylon/pull/45)) @mathiasbynens
+
+## 6.8.1 (2016-06-06)
+
+### New Feature
+
+- Parse type parameter declarations with defaults like `type Foo<T = string> = T`
+
+### Bug Fixes
+- Type parameter declarations need 1 or more type parameters.
+- The existential type `*` is not a valid type parameter.
+- The existential type `*` is a primary type
+
+### Spec Compliance
+- The param list for type parameter declarations now consists of `TypeParameter` nodes
+- New `TypeParameter` AST Node (replaces using the `Identifier` node before)
+
+```
+interface TypeParameter <: Node {
+ bound: TypeAnnotation;
+ default: TypeAnnotation;
+ name: string;
+ variance: "plus" | "minus";
+}
+```
+
+## 6.8.0 (2016-05-02)
+
+#### New Feature
+
+##### Parse Method Parameter Decorators ([#12](https://github.com/babel/babylon/pull/12))
+
+> [Method Parameter Decorators](https://goo.gl/8MmCMG) is now a TC39 [stage 0 proposal](https://github.com/tc39/ecma262/blob/master/stage0.md).
+
+Examples:
+
+```js
+class Foo {
+ constructor(@foo() x, @bar({ a: 123 }) @baz() y) {}
+}
+
+export default function func(@foo() x, @bar({ a: 123 }) @baz() y) {}
+
+var obj = {
+ method(@foo() x, @bar({ a: 123 }) @baz() y) {}
+};
+```
+
+##### Parse for-await statements (w/ `asyncGenerators` plugin) ([#17](https://github.com/babel/babylon/pull/17))
+
+There is also a new node type, `ForAwaitStatement`.
+
+> [Async generators and for-await](https://github.com/tc39/proposal-async-iteration) are now a [stage 2 proposal](https://github.com/tc39/ecma262#current-proposals).
+
+Example:
+
+```js
+async function f() {
+ for await (let x of y);
+}
+```
diff --git a/vanilla/node_modules/@babel/parser/LICENSE b/vanilla/node_modules/@babel/parser/LICENSE
new file mode 100644
index 0000000..d4c7fc5
--- /dev/null
+++ b/vanilla/node_modules/@babel/parser/LICENSE
@@ -0,0 +1,19 @@
+Copyright (C) 2012-2014 by various contributors (see AUTHORS)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/vanilla/node_modules/@babel/parser/README.md b/vanilla/node_modules/@babel/parser/README.md
new file mode 100644
index 0000000..a9463e8
--- /dev/null
+++ b/vanilla/node_modules/@babel/parser/README.md
@@ -0,0 +1,19 @@
+# @babel/parser
+
+> A JavaScript parser
+
+See our website [@babel/parser](https://babeljs.io/docs/babel-parser) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20parser%22+is%3Aopen) associated with this package.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/parser
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/parser --dev
+```
diff --git a/vanilla/node_modules/@babel/parser/bin/babel-parser.js b/vanilla/node_modules/@babel/parser/bin/babel-parser.js
new file mode 100755
index 0000000..4808c5e
--- /dev/null
+++ b/vanilla/node_modules/@babel/parser/bin/babel-parser.js
@@ -0,0 +1,15 @@
+#!/usr/bin/env node
+/* eslint-disable no-var, unicorn/prefer-node-protocol */
+
+var parser = require("..");
+var fs = require("fs");
+
+var filename = process.argv[2];
+if (!filename) {
+ console.error("no filename specified");
+} else {
+ var file = fs.readFileSync(filename, "utf8");
+ var ast = parser.parse(file);
+
+ console.log(JSON.stringify(ast, null, " "));
+}
diff --git a/vanilla/node_modules/@babel/parser/lib/index.js b/vanilla/node_modules/@babel/parser/lib/index.js
new file mode 100644
index 0000000..fa6628c
--- /dev/null
+++ b/vanilla/node_modules/@babel/parser/lib/index.js
@@ -0,0 +1,14582 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+function _objectWithoutPropertiesLoose(r, e) {
+ if (null == r) return {};
+ var t = {};
+ for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
+ if (-1 !== e.indexOf(n)) continue;
+ t[n] = r[n];
+ }
+ return t;
+}
+class Position {
+ constructor(line, col, index) {
+ this.line = void 0;
+ this.column = void 0;
+ this.index = void 0;
+ this.line = line;
+ this.column = col;
+ this.index = index;
+ }
+}
+class SourceLocation {
+ constructor(start, end) {
+ this.start = void 0;
+ this.end = void 0;
+ this.filename = void 0;
+ this.identifierName = void 0;
+ this.start = start;
+ this.end = end;
+ }
+}
+function createPositionWithColumnOffset(position, columnOffset) {
+ const {
+ line,
+ column,
+ index
+ } = position;
+ return new Position(line, column + columnOffset, index + columnOffset);
+}
+const code = "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED";
+var ModuleErrors = {
+ ImportMetaOutsideModule: {
+ message: `import.meta may appear only with 'sourceType: "module"'`,
+ code
+ },
+ ImportOutsideModule: {
+ message: `'import' and 'export' may appear only with 'sourceType: "module"'`,
+ code
+ }
+};
+const NodeDescriptions = {
+ ArrayPattern: "array destructuring pattern",
+ AssignmentExpression: "assignment expression",
+ AssignmentPattern: "assignment expression",
+ ArrowFunctionExpression: "arrow function expression",
+ ConditionalExpression: "conditional expression",
+ CatchClause: "catch clause",
+ ForOfStatement: "for-of statement",
+ ForInStatement: "for-in statement",
+ ForStatement: "for-loop",
+ FormalParameters: "function parameter list",
+ Identifier: "identifier",
+ ImportSpecifier: "import specifier",
+ ImportDefaultSpecifier: "import default specifier",
+ ImportNamespaceSpecifier: "import namespace specifier",
+ ObjectPattern: "object destructuring pattern",
+ ParenthesizedExpression: "parenthesized expression",
+ RestElement: "rest element",
+ UpdateExpression: {
+ true: "prefix operation",
+ false: "postfix operation"
+ },
+ VariableDeclarator: "variable declaration",
+ YieldExpression: "yield expression"
+};
+const toNodeDescription = node => node.type === "UpdateExpression" ? NodeDescriptions.UpdateExpression[`${node.prefix}`] : NodeDescriptions[node.type];
+var StandardErrors = {
+ AccessorIsGenerator: ({
+ kind
+ }) => `A ${kind}ter cannot be a generator.`,
+ ArgumentsInClass: "'arguments' is only allowed in functions and class methods.",
+ AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.",
+ AwaitBindingIdentifier: "Can not use 'await' as identifier inside an async function.",
+ AwaitBindingIdentifierInStaticBlock: "Can not use 'await' as identifier inside a static block.",
+ AwaitExpressionFormalParameter: "'await' is not allowed in async function parameters.",
+ AwaitUsingNotInAsyncContext: "'await using' is only allowed within async functions and at the top levels of modules.",
+ AwaitNotInAsyncContext: "'await' is only allowed within async functions and at the top levels of modules.",
+ BadGetterArity: "A 'get' accessor must not have any formal parameters.",
+ BadSetterArity: "A 'set' accessor must have exactly one formal parameter.",
+ BadSetterRestParameter: "A 'set' accessor function argument must not be a rest parameter.",
+ ConstructorClassField: "Classes may not have a field named 'constructor'.",
+ ConstructorClassPrivateField: "Classes may not have a private field named '#constructor'.",
+ ConstructorIsAccessor: "Class constructor may not be an accessor.",
+ ConstructorIsAsync: "Constructor can't be an async function.",
+ ConstructorIsGenerator: "Constructor can't be a generator.",
+ DeclarationMissingInitializer: ({
+ kind
+ }) => `Missing initializer in ${kind} declaration.`,
+ DecoratorArgumentsOutsideParentheses: "Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.",
+ DecoratorBeforeExport: "Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.",
+ DecoratorsBeforeAfterExport: "Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.",
+ DecoratorConstructor: "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?",
+ DecoratorExportClass: "Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.",
+ DecoratorSemicolon: "Decorators must not be followed by a semicolon.",
+ DecoratorStaticBlock: "Decorators can't be used with a static block.",
+ DeferImportRequiresNamespace: 'Only `import defer * as x from "./module"` is valid.',
+ DeletePrivateField: "Deleting a private field is not allowed.",
+ DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.",
+ DuplicateConstructor: "Duplicate constructor in the same class.",
+ DuplicateDefaultExport: "Only one default export allowed per module.",
+ DuplicateExport: ({
+ exportName
+ }) => `\`${exportName}\` has already been exported. Exported identifiers must be unique.`,
+ DuplicateProto: "Redefinition of __proto__ property.",
+ DuplicateRegExpFlags: "Duplicate regular expression flag.",
+ ElementAfterRest: "Rest element must be last element.",
+ EscapedCharNotAnIdentifier: "Invalid Unicode escape.",
+ ExportBindingIsString: ({
+ localName,
+ exportName
+ }) => `A string literal cannot be used as an exported binding without \`from\`.\n- Did you mean \`export { '${localName}' as '${exportName}' } from 'some-module'\`?`,
+ ExportDefaultFromAsIdentifier: "'from' is not allowed as an identifier after 'export default'.",
+ ForInOfLoopInitializer: ({
+ type
+ }) => `'${type === "ForInStatement" ? "for-in" : "for-of"}' loop variable declaration may not have an initializer.`,
+ ForInUsing: "For-in loop may not start with 'using' declaration.",
+ ForOfAsync: "The left-hand side of a for-of loop may not be 'async'.",
+ ForOfLet: "The left-hand side of a for-of loop may not start with 'let'.",
+ GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.",
+ IllegalBreakContinue: ({
+ type
+ }) => `Unsyntactic ${type === "BreakStatement" ? "break" : "continue"}.`,
+ IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list.",
+ IllegalReturn: "'return' outside of function.",
+ ImportAttributesUseAssert: "The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedImportAssert` parser plugin to suppress this error.",
+ ImportBindingIsString: ({
+ importName
+ }) => `A string literal cannot be used as an imported binding.\n- Did you mean \`import { "${importName}" as foo }\`?`,
+ ImportCallArity: `\`import()\` requires exactly one or two arguments.`,
+ ImportCallNotNewExpression: "Cannot use new with import(...).",
+ ImportCallSpreadArgument: "`...` is not allowed in `import()`.",
+ ImportJSONBindingNotDefault: "A JSON module can only be imported with `default`.",
+ ImportReflectionHasAssertion: "`import module x` cannot have assertions.",
+ ImportReflectionNotBinding: 'Only `import module x from "./module"` is valid.',
+ IncompatibleRegExpUVFlags: "The 'u' and 'v' regular expression flags cannot be enabled at the same time.",
+ InvalidBigIntLiteral: "Invalid BigIntLiteral.",
+ InvalidCodePoint: "Code point out of bounds.",
+ InvalidCoverDiscardElement: "'void' must be followed by an expression when not used in a binding position.",
+ InvalidCoverInitializedName: "Invalid shorthand property initializer.",
+ InvalidDecimal: "Invalid decimal.",
+ InvalidDigit: ({
+ radix
+ }) => `Expected number in radix ${radix}.`,
+ InvalidEscapeSequence: "Bad character escape sequence.",
+ InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.",
+ InvalidEscapedReservedWord: ({
+ reservedWord
+ }) => `Escape sequence in keyword ${reservedWord}.`,
+ InvalidIdentifier: ({
+ identifierName
+ }) => `Invalid identifier ${identifierName}.`,
+ InvalidLhs: ({
+ ancestor
+ }) => `Invalid left-hand side in ${toNodeDescription(ancestor)}.`,
+ InvalidLhsBinding: ({
+ ancestor
+ }) => `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`,
+ InvalidLhsOptionalChaining: ({
+ ancestor
+ }) => `Invalid optional chaining in the left-hand side of ${toNodeDescription(ancestor)}.`,
+ InvalidNumber: "Invalid number.",
+ InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the 'e'.",
+ InvalidOrUnexpectedToken: ({
+ unexpected
+ }) => `Unexpected character '${unexpected}'.`,
+ InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.",
+ InvalidPrivateFieldResolution: ({
+ identifierName
+ }) => `Private name #${identifierName} is not defined.`,
+ InvalidPropertyBindingPattern: "Binding member expression.",
+ InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.",
+ InvalidRestAssignmentPattern: "Invalid rest operator's argument.",
+ LabelRedeclaration: ({
+ labelName
+ }) => `Label '${labelName}' is already declared.`,
+ LetInLexicalBinding: "'let' is disallowed as a lexically bound name.",
+ LineTerminatorBeforeArrow: "No line break is allowed before '=>'.",
+ MalformedRegExpFlags: "Invalid regular expression flag.",
+ MissingClassName: "A class name is required.",
+ MissingEqInAssignment: "Only '=' operator can be used for specifying default value.",
+ MissingSemicolon: "Missing semicolon.",
+ MissingPlugin: ({
+ missingPlugin
+ }) => `This experimental syntax requires enabling the parser plugin: ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`,
+ MissingOneOfPlugins: ({
+ missingPlugin
+ }) => `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`,
+ MissingUnicodeEscape: "Expecting Unicode escape sequence \\uXXXX.",
+ MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.",
+ ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.",
+ ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.",
+ ModuleAttributesWithDuplicateKeys: ({
+ key
+ }) => `Duplicate key "${key}" is not allowed in module attributes.`,
+ ModuleExportNameHasLoneSurrogate: ({
+ surrogateCharCode
+ }) => `An export name cannot include a lone surrogate, found '\\u${surrogateCharCode.toString(16)}'.`,
+ ModuleExportUndefined: ({
+ localName
+ }) => `Export '${localName}' is not defined.`,
+ MultipleDefaultsInSwitch: "Multiple default clauses.",
+ NewlineAfterThrow: "Illegal newline after throw.",
+ NoCatchOrFinally: "Missing catch or finally clause.",
+ NumberIdentifier: "Identifier directly after number.",
+ NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.",
+ ObsoleteAwaitStar: "'await*' has been removed from the async functions proposal. Use Promise.all() instead.",
+ OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.",
+ OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.",
+ OverrideOnConstructor: "'override' modifier cannot appear on a constructor declaration.",
+ ParamDupe: "Argument name clash.",
+ PatternHasAccessor: "Object pattern can't contain getter or setter.",
+ PatternHasMethod: "Object pattern can't contain methods.",
+ PrivateInExpectedIn: ({
+ identifierName
+ }) => `Private names are only allowed in property accesses (\`obj.#${identifierName}\`) or in \`in\` expressions (\`#${identifierName} in obj\`).`,
+ PrivateNameRedeclaration: ({
+ identifierName
+ }) => `Duplicate private name #${identifierName}.`,
+ RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
+ RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
+ RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.",
+ RecordNoProto: "'__proto__' is not allowed in Record expressions.",
+ RestTrailingComma: "Unexpected trailing comma after rest element.",
+ SloppyFunction: "In non-strict mode code, functions can only be declared at top level or inside a block.",
+ SloppyFunctionAnnexB: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.",
+ SourcePhaseImportRequiresDefault: 'Only `import source x from "./module"` is valid.',
+ StaticPrototype: "Classes may not have static property named prototype.",
+ SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?",
+ SuperPrivateField: "Private fields can't be accessed on super.",
+ TrailingDecorator: "Decorators must be attached to a class element.",
+ TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
+ TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
+ TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.",
+ UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.",
+ UnexpectedAwaitAfterPipelineBody: 'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.',
+ UnexpectedDigitAfterHash: "Unexpected digit after hash token.",
+ UnexpectedImportExport: "'import' and 'export' may only appear at the top level.",
+ UnexpectedKeyword: ({
+ keyword
+ }) => `Unexpected keyword '${keyword}'.`,
+ UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.",
+ UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.",
+ UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.",
+ UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.",
+ UnexpectedPrivateField: "Unexpected private name.",
+ UnexpectedReservedWord: ({
+ reservedWord
+ }) => `Unexpected reserved word '${reservedWord}'.`,
+ UnexpectedSuper: "'super' is only allowed in object methods and classes.",
+ UnexpectedToken: ({
+ expected,
+ unexpected
+ }) => `Unexpected token${unexpected ? ` '${unexpected}'.` : ""}${expected ? `, expected "${expected}"` : ""}`,
+ UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.",
+ UnexpectedUsingDeclaration: "Using declaration cannot appear in the top level when source type is `script` or in the bare case statement.",
+ UnexpectedVoidPattern: "Unexpected void binding.",
+ UnsupportedBind: "Binding should be performed on object property.",
+ UnsupportedDecoratorExport: "A decorated export must export a class declaration.",
+ UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.",
+ UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.",
+ UnsupportedMetaProperty: ({
+ target,
+ onlyValidPropertyName
+ }) => `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`,
+ UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.",
+ UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.",
+ UnsupportedSuper: "'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).",
+ UnterminatedComment: "Unterminated comment.",
+ UnterminatedRegExp: "Unterminated regular expression.",
+ UnterminatedString: "Unterminated string constant.",
+ UnterminatedTemplate: "Unterminated template.",
+ UsingDeclarationExport: "Using declaration cannot be exported.",
+ UsingDeclarationHasBindingPattern: "Using declaration cannot have destructuring patterns.",
+ VarRedeclaration: ({
+ identifierName
+ }) => `Identifier '${identifierName}' has already been declared.`,
+ VoidPatternCatchClauseParam: "A void binding can not be the catch clause parameter. Use `try { ... } catch { ... }` if you want to discard the caught error.",
+ VoidPatternInitializer: "A void binding may not have an initializer.",
+ YieldBindingIdentifier: "Can not use 'yield' as identifier inside a generator.",
+ YieldInParameter: "Yield expression is not allowed in formal parameters.",
+ YieldNotInGeneratorFunction: "'yield' is only allowed within generator functions.",
+ ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0."
+};
+var StrictModeErrors = {
+ StrictDelete: "Deleting local variable in strict mode.",
+ StrictEvalArguments: ({
+ referenceName
+ }) => `Assigning to '${referenceName}' in strict mode.`,
+ StrictEvalArgumentsBinding: ({
+ bindingName
+ }) => `Binding '${bindingName}' in strict mode.`,
+ StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.",
+ StrictNumericEscape: "The only valid numeric escape in strict mode is '\\0'.",
+ StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.",
+ StrictWith: "'with' in strict mode."
+};
+var ParseExpressionErrors = {
+ ParseExpressionEmptyInput: "Unexpected parseExpression() input: The input is empty or contains only comments.",
+ ParseExpressionExpectsEOF: ({
+ unexpected
+ }) => `Unexpected parseExpression() input: The input should contain exactly one expression, but the first expression is followed by the unexpected character \`${String.fromCodePoint(unexpected)}\`.`
+};
+const UnparenthesizedPipeBodyDescriptions = new Set(["ArrowFunctionExpression", "AssignmentExpression", "ConditionalExpression", "YieldExpression"]);
+var PipelineOperatorErrors = Object.assign({
+ PipeBodyIsTighter: "Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.",
+ PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.',
+ PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.",
+ PipeTopicUnconfiguredToken: ({
+ token
+ }) => `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "${token}" }.`,
+ PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.",
+ PipeUnparenthesizedBody: ({
+ type
+ }) => `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({
+ type
+ })}; please wrap it in parentheses.`
+}, {
+ PipelineBodyNoArrow: 'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.',
+ PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.",
+ PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.",
+ PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.",
+ PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.",
+ PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.'
+});
+const _excluded = ["message"];
+function defineHidden(obj, key, value) {
+ Object.defineProperty(obj, key, {
+ enumerable: false,
+ configurable: true,
+ value
+ });
+}
+function toParseErrorConstructor({
+ toMessage,
+ code,
+ reasonCode,
+ syntaxPlugin
+}) {
+ const hasMissingPlugin = reasonCode === "MissingPlugin" || reasonCode === "MissingOneOfPlugins";
+ const oldReasonCodes = {
+ AccessorCannotDeclareThisParameter: "AccesorCannotDeclareThisParameter",
+ AccessorCannotHaveTypeParameters: "AccesorCannotHaveTypeParameters",
+ ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: "ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference",
+ SetAccessorCannotHaveOptionalParameter: "SetAccesorCannotHaveOptionalParameter",
+ SetAccessorCannotHaveRestParameter: "SetAccesorCannotHaveRestParameter",
+ SetAccessorCannotHaveReturnType: "SetAccesorCannotHaveReturnType"
+ };
+ if (oldReasonCodes[reasonCode]) {
+ reasonCode = oldReasonCodes[reasonCode];
+ }
+ return function constructor(loc, details) {
+ const error = new SyntaxError();
+ error.code = code;
+ error.reasonCode = reasonCode;
+ error.loc = loc;
+ error.pos = loc.index;
+ error.syntaxPlugin = syntaxPlugin;
+ if (hasMissingPlugin) {
+ error.missingPlugin = details.missingPlugin;
+ }
+ defineHidden(error, "clone", function clone(overrides = {}) {
+ var _overrides$loc;
+ const {
+ line,
+ column,
+ index
+ } = (_overrides$loc = overrides.loc) != null ? _overrides$loc : loc;
+ return constructor(new Position(line, column, index), Object.assign({}, details, overrides.details));
+ });
+ defineHidden(error, "details", details);
+ Object.defineProperty(error, "message", {
+ configurable: true,
+ get() {
+ const message = `${toMessage(details)} (${loc.line}:${loc.column})`;
+ this.message = message;
+ return message;
+ },
+ set(value) {
+ Object.defineProperty(this, "message", {
+ value,
+ writable: true
+ });
+ }
+ });
+ return error;
+ };
+}
+function ParseErrorEnum(argument, syntaxPlugin) {
+ if (Array.isArray(argument)) {
+ return parseErrorTemplates => ParseErrorEnum(parseErrorTemplates, argument[0]);
+ }
+ const ParseErrorConstructors = {};
+ for (const reasonCode of Object.keys(argument)) {
+ const template = argument[reasonCode];
+ const _ref = typeof template === "string" ? {
+ message: () => template
+ } : typeof template === "function" ? {
+ message: template
+ } : template,
+ {
+ message
+ } = _ref,
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded);
+ const toMessage = typeof message === "string" ? () => message : message;
+ ParseErrorConstructors[reasonCode] = toParseErrorConstructor(Object.assign({
+ code: "BABEL_PARSER_SYNTAX_ERROR",
+ reasonCode,
+ toMessage
+ }, syntaxPlugin ? {
+ syntaxPlugin
+ } : {}, rest));
+ }
+ return ParseErrorConstructors;
+}
+const Errors = Object.assign({}, ParseErrorEnum(ModuleErrors), ParseErrorEnum(StandardErrors), ParseErrorEnum(StrictModeErrors), ParseErrorEnum(ParseExpressionErrors), ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors));
+function createDefaultOptions() {
+ return {
+ sourceType: "script",
+ sourceFilename: undefined,
+ startIndex: 0,
+ startColumn: 0,
+ startLine: 1,
+ allowAwaitOutsideFunction: false,
+ allowReturnOutsideFunction: false,
+ allowNewTargetOutsideFunction: false,
+ allowImportExportEverywhere: false,
+ allowSuperOutsideMethod: false,
+ allowUndeclaredExports: false,
+ allowYieldOutsideFunction: false,
+ plugins: [],
+ strictMode: undefined,
+ ranges: false,
+ tokens: false,
+ createImportExpressions: false,
+ createParenthesizedExpressions: false,
+ errorRecovery: false,
+ attachComment: true,
+ annexB: true
+ };
+}
+function getOptions(opts) {
+ const options = createDefaultOptions();
+ if (opts == null) {
+ return options;
+ }
+ if (opts.annexB != null && opts.annexB !== false) {
+ throw new Error("The `annexB` option can only be set to `false`.");
+ }
+ for (const key of Object.keys(options)) {
+ if (opts[key] != null) options[key] = opts[key];
+ }
+ if (options.startLine === 1) {
+ if (opts.startIndex == null && options.startColumn > 0) {
+ options.startIndex = options.startColumn;
+ } else if (opts.startColumn == null && options.startIndex > 0) {
+ options.startColumn = options.startIndex;
+ }
+ } else if (opts.startColumn == null || opts.startIndex == null) {
+ if (opts.startIndex != null) {
+ throw new Error("With a `startLine > 1` you must also specify `startIndex` and `startColumn`.");
+ }
+ }
+ if (options.sourceType === "commonjs") {
+ if (opts.allowAwaitOutsideFunction != null) {
+ throw new Error("The `allowAwaitOutsideFunction` option cannot be used with `sourceType: 'commonjs'`.");
+ }
+ if (opts.allowReturnOutsideFunction != null) {
+ throw new Error("`sourceType: 'commonjs'` implies `allowReturnOutsideFunction: true`, please remove the `allowReturnOutsideFunction` option or use `sourceType: 'script'`.");
+ }
+ if (opts.allowNewTargetOutsideFunction != null) {
+ throw new Error("`sourceType: 'commonjs'` implies `allowNewTargetOutsideFunction: true`, please remove the `allowNewTargetOutsideFunction` option or use `sourceType: 'script'`.");
+ }
+ }
+ return options;
+}
+const {
+ defineProperty
+} = Object;
+const toUnenumerable = (object, key) => {
+ if (object) {
+ defineProperty(object, key, {
+ enumerable: false,
+ value: object[key]
+ });
+ }
+};
+function toESTreeLocation(node) {
+ toUnenumerable(node.loc.start, "index");
+ toUnenumerable(node.loc.end, "index");
+ return node;
+}
+var estree = superClass => class ESTreeParserMixin extends superClass {
+ parse() {
+ const file = toESTreeLocation(super.parse());
+ if (this.optionFlags & 256) {
+ file.tokens = file.tokens.map(toESTreeLocation);
+ }
+ return file;
+ }
+ parseRegExpLiteral({
+ pattern,
+ flags
+ }) {
+ let regex = null;
+ try {
+ regex = new RegExp(pattern, flags);
+ } catch (_) {}
+ const node = this.estreeParseLiteral(regex);
+ node.regex = {
+ pattern,
+ flags
+ };
+ return node;
+ }
+ parseBigIntLiteral(value) {
+ let bigInt;
+ try {
+ bigInt = BigInt(value);
+ } catch (_unused) {
+ bigInt = null;
+ }
+ const node = this.estreeParseLiteral(bigInt);
+ node.bigint = String(node.value || value);
+ return node;
+ }
+ parseDecimalLiteral(value) {
+ const decimal = null;
+ const node = this.estreeParseLiteral(decimal);
+ node.decimal = String(node.value || value);
+ return node;
+ }
+ estreeParseLiteral(value) {
+ return this.parseLiteral(value, "Literal");
+ }
+ parseStringLiteral(value) {
+ return this.estreeParseLiteral(value);
+ }
+ parseNumericLiteral(value) {
+ return this.estreeParseLiteral(value);
+ }
+ parseNullLiteral() {
+ return this.estreeParseLiteral(null);
+ }
+ parseBooleanLiteral(value) {
+ return this.estreeParseLiteral(value);
+ }
+ estreeParseChainExpression(node, endLoc) {
+ const chain = this.startNodeAtNode(node);
+ chain.expression = node;
+ return this.finishNodeAt(chain, "ChainExpression", endLoc);
+ }
+ directiveToStmt(directive) {
+ const expression = directive.value;
+ delete directive.value;
+ this.castNodeTo(expression, "Literal");
+ expression.raw = expression.extra.raw;
+ expression.value = expression.extra.expressionValue;
+ const stmt = this.castNodeTo(directive, "ExpressionStatement");
+ stmt.expression = expression;
+ stmt.directive = expression.extra.rawValue;
+ delete expression.extra;
+ return stmt;
+ }
+ fillOptionalPropertiesForTSESLint(node) {}
+ cloneEstreeStringLiteral(node) {
+ const {
+ start,
+ end,
+ loc,
+ range,
+ raw,
+ value
+ } = node;
+ const cloned = Object.create(node.constructor.prototype);
+ cloned.type = "Literal";
+ cloned.start = start;
+ cloned.end = end;
+ cloned.loc = loc;
+ cloned.range = range;
+ cloned.raw = raw;
+ cloned.value = value;
+ return cloned;
+ }
+ initFunction(node, isAsync) {
+ super.initFunction(node, isAsync);
+ node.expression = false;
+ }
+ checkDeclaration(node) {
+ if (node != null && this.isObjectProperty(node)) {
+ this.checkDeclaration(node.value);
+ } else {
+ super.checkDeclaration(node);
+ }
+ }
+ getObjectOrClassMethodParams(method) {
+ return method.value.params;
+ }
+ isValidDirective(stmt) {
+ var _stmt$expression$extr;
+ return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized);
+ }
+ parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) {
+ super.parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse);
+ const directiveStatements = node.directives.map(d => this.directiveToStmt(d));
+ node.body = directiveStatements.concat(node.body);
+ delete node.directives;
+ }
+ parsePrivateName() {
+ const node = super.parsePrivateName();
+ if (!this.getPluginOption("estree", "classFeatures")) {
+ return node;
+ }
+ return this.convertPrivateNameToPrivateIdentifier(node);
+ }
+ convertPrivateNameToPrivateIdentifier(node) {
+ const name = super.getPrivateNameSV(node);
+ delete node.id;
+ node.name = name;
+ return this.castNodeTo(node, "PrivateIdentifier");
+ }
+ isPrivateName(node) {
+ if (!this.getPluginOption("estree", "classFeatures")) {
+ return super.isPrivateName(node);
+ }
+ return node.type === "PrivateIdentifier";
+ }
+ getPrivateNameSV(node) {
+ if (!this.getPluginOption("estree", "classFeatures")) {
+ return super.getPrivateNameSV(node);
+ }
+ return node.name;
+ }
+ parseLiteral(value, type) {
+ const node = super.parseLiteral(value, type);
+ node.raw = node.extra.raw;
+ delete node.extra;
+ return node;
+ }
+ parseFunctionBody(node, allowExpression, isMethod = false) {
+ super.parseFunctionBody(node, allowExpression, isMethod);
+ node.expression = node.body.type !== "BlockStatement";
+ }
+ parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {
+ let funcNode = this.startNode();
+ funcNode.kind = node.kind;
+ funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);
+ delete funcNode.kind;
+ const {
+ typeParameters
+ } = node;
+ if (typeParameters) {
+ delete node.typeParameters;
+ funcNode.typeParameters = typeParameters;
+ this.resetStartLocationFromNode(funcNode, typeParameters);
+ }
+ const valueNode = this.castNodeTo(funcNode, "FunctionExpression");
+ node.value = valueNode;
+ if (type === "ClassPrivateMethod") {
+ node.computed = false;
+ }
+ if (type === "ObjectMethod") {
+ if (node.kind === "method") {
+ node.kind = "init";
+ }
+ node.shorthand = false;
+ return this.finishNode(node, "Property");
+ } else {
+ return this.finishNode(node, "MethodDefinition");
+ }
+ }
+ nameIsConstructor(key) {
+ if (key.type === "Literal") return key.value === "constructor";
+ return super.nameIsConstructor(key);
+ }
+ parseClassProperty(...args) {
+ const propertyNode = super.parseClassProperty(...args);
+ if (!this.getPluginOption("estree", "classFeatures")) {
+ return propertyNode;
+ }
+ this.castNodeTo(propertyNode, "PropertyDefinition");
+ return propertyNode;
+ }
+ parseClassPrivateProperty(...args) {
+ const propertyNode = super.parseClassPrivateProperty(...args);
+ if (!this.getPluginOption("estree", "classFeatures")) {
+ return propertyNode;
+ }
+ this.castNodeTo(propertyNode, "PropertyDefinition");
+ propertyNode.computed = false;
+ return propertyNode;
+ }
+ parseClassAccessorProperty(node) {
+ const accessorPropertyNode = super.parseClassAccessorProperty(node);
+ if (!this.getPluginOption("estree", "classFeatures")) {
+ return accessorPropertyNode;
+ }
+ if (accessorPropertyNode.abstract && this.hasPlugin("typescript")) {
+ delete accessorPropertyNode.abstract;
+ this.castNodeTo(accessorPropertyNode, "TSAbstractAccessorProperty");
+ } else {
+ this.castNodeTo(accessorPropertyNode, "AccessorProperty");
+ }
+ return accessorPropertyNode;
+ }
+ parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) {
+ const node = super.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors);
+ if (node) {
+ node.kind = "init";
+ this.castNodeTo(node, "Property");
+ }
+ return node;
+ }
+ finishObjectProperty(node) {
+ node.kind = "init";
+ return this.finishNode(node, "Property");
+ }
+ isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding) {
+ return type === "Property" ? "value" : super.isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding);
+ }
+ isAssignable(node, isBinding) {
+ if (node != null && this.isObjectProperty(node)) {
+ return this.isAssignable(node.value, isBinding);
+ }
+ return super.isAssignable(node, isBinding);
+ }
+ toAssignable(node, isLHS = false) {
+ if (node != null && this.isObjectProperty(node)) {
+ const {
+ key,
+ value
+ } = node;
+ if (this.isPrivateName(key)) {
+ this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start);
+ }
+ this.toAssignable(value, isLHS);
+ } else {
+ super.toAssignable(node, isLHS);
+ }
+ }
+ toAssignableObjectExpressionProp(prop, isLast, isLHS) {
+ if (prop.type === "Property" && (prop.kind === "get" || prop.kind === "set")) {
+ this.raise(Errors.PatternHasAccessor, prop.key);
+ } else if (prop.type === "Property" && prop.method) {
+ this.raise(Errors.PatternHasMethod, prop.key);
+ } else {
+ super.toAssignableObjectExpressionProp(prop, isLast, isLHS);
+ }
+ }
+ finishCallExpression(unfinished, optional) {
+ const node = super.finishCallExpression(unfinished, optional);
+ if (node.callee.type === "Import") {
+ var _ref, _ref2;
+ this.castNodeTo(node, "ImportExpression");
+ node.source = node.arguments[0];
+ node.options = (_ref = node.arguments[1]) != null ? _ref : null;
+ node.attributes = (_ref2 = node.arguments[1]) != null ? _ref2 : null;
+ delete node.arguments;
+ delete node.callee;
+ } else if (node.type === "OptionalCallExpression") {
+ this.castNodeTo(node, "CallExpression");
+ } else {
+ node.optional = false;
+ }
+ return node;
+ }
+ toReferencedArguments(node) {
+ if (node.type === "ImportExpression") {
+ return;
+ }
+ super.toReferencedArguments(node);
+ }
+ parseExport(unfinished, decorators) {
+ const exportStartLoc = this.state.lastTokStartLoc;
+ const node = super.parseExport(unfinished, decorators);
+ switch (node.type) {
+ case "ExportAllDeclaration":
+ node.exported = null;
+ break;
+ case "ExportNamedDeclaration":
+ if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") {
+ this.castNodeTo(node, "ExportAllDeclaration");
+ node.exported = node.specifiers[0].exported;
+ delete node.specifiers;
+ }
+ case "ExportDefaultDeclaration":
+ {
+ var _declaration$decorato;
+ const {
+ declaration
+ } = node;
+ if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && ((_declaration$decorato = declaration.decorators) == null ? void 0 : _declaration$decorato.length) > 0 && declaration.start === node.start) {
+ this.resetStartLocation(node, exportStartLoc);
+ }
+ }
+ break;
+ }
+ return node;
+ }
+ stopParseSubscript(base, state) {
+ const node = super.stopParseSubscript(base, state);
+ if (state.optionalChainMember) {
+ return this.estreeParseChainExpression(node, base.loc.end);
+ }
+ return node;
+ }
+ parseMember(base, startLoc, state, computed, optional) {
+ const node = super.parseMember(base, startLoc, state, computed, optional);
+ if (node.type === "OptionalMemberExpression") {
+ this.castNodeTo(node, "MemberExpression");
+ } else {
+ node.optional = false;
+ }
+ return node;
+ }
+ isOptionalMemberExpression(node) {
+ if (node.type === "ChainExpression") {
+ return node.expression.type === "MemberExpression";
+ }
+ return super.isOptionalMemberExpression(node);
+ }
+ hasPropertyAsPrivateName(node) {
+ if (node.type === "ChainExpression") {
+ node = node.expression;
+ }
+ return super.hasPropertyAsPrivateName(node);
+ }
+ isObjectProperty(node) {
+ return node.type === "Property" && node.kind === "init" && !node.method;
+ }
+ isObjectMethod(node) {
+ return node.type === "Property" && (node.method || node.kind === "get" || node.kind === "set");
+ }
+ castNodeTo(node, type) {
+ const result = super.castNodeTo(node, type);
+ this.fillOptionalPropertiesForTSESLint(result);
+ return result;
+ }
+ cloneIdentifier(node) {
+ const cloned = super.cloneIdentifier(node);
+ this.fillOptionalPropertiesForTSESLint(cloned);
+ return cloned;
+ }
+ cloneStringLiteral(node) {
+ if (node.type === "Literal") {
+ return this.cloneEstreeStringLiteral(node);
+ }
+ return super.cloneStringLiteral(node);
+ }
+ finishNodeAt(node, type, endLoc) {
+ return toESTreeLocation(super.finishNodeAt(node, type, endLoc));
+ }
+ finishNode(node, type) {
+ const result = super.finishNode(node, type);
+ this.fillOptionalPropertiesForTSESLint(result);
+ return result;
+ }
+ resetStartLocation(node, startLoc) {
+ super.resetStartLocation(node, startLoc);
+ toESTreeLocation(node);
+ }
+ resetEndLocation(node, endLoc = this.state.lastTokEndLoc) {
+ super.resetEndLocation(node, endLoc);
+ toESTreeLocation(node);
+ }
+};
+class TokContext {
+ constructor(token, preserveSpace) {
+ this.token = void 0;
+ this.preserveSpace = void 0;
+ this.token = token;
+ this.preserveSpace = !!preserveSpace;
+ }
+}
+const types = {
+ brace: new TokContext("{"),
+ j_oTag: new TokContext("<tag"),
+ j_cTag: new TokContext("</tag"),
+ j_expr: new TokContext("<tag>...</tag>", true)
+};
+types.template = new TokContext("`", true);
+const beforeExpr = true;
+const startsExpr = true;
+const isLoop = true;
+const isAssign = true;
+const prefix = true;
+const postfix = true;
+class ExportedTokenType {
+ constructor(label, conf = {}) {
+ this.label = void 0;
+ this.keyword = void 0;
+ this.beforeExpr = void 0;
+ this.startsExpr = void 0;
+ this.rightAssociative = void 0;
+ this.isLoop = void 0;
+ this.isAssign = void 0;
+ this.prefix = void 0;
+ this.postfix = void 0;
+ this.binop = void 0;
+ this.label = label;
+ this.keyword = conf.keyword;
+ this.beforeExpr = !!conf.beforeExpr;
+ this.startsExpr = !!conf.startsExpr;
+ this.rightAssociative = !!conf.rightAssociative;
+ this.isLoop = !!conf.isLoop;
+ this.isAssign = !!conf.isAssign;
+ this.prefix = !!conf.prefix;
+ this.postfix = !!conf.postfix;
+ this.binop = conf.binop != null ? conf.binop : null;
+ this.updateContext = null;
+ }
+}
+const keywords$1 = new Map();
+function createKeyword(name, options = {}) {
+ options.keyword = name;
+ const token = createToken(name, options);
+ keywords$1.set(name, token);
+ return token;
+}
+function createBinop(name, binop) {
+ return createToken(name, {
+ beforeExpr,
+ binop
+ });
+}
+let tokenTypeCounter = -1;
+const tokenTypes = [];
+const tokenLabels = [];
+const tokenBinops = [];
+const tokenBeforeExprs = [];
+const tokenStartsExprs = [];
+const tokenPrefixes = [];
+function createToken(name, options = {}) {
+ var _options$binop, _options$beforeExpr, _options$startsExpr, _options$prefix;
+ ++tokenTypeCounter;
+ tokenLabels.push(name);
+ tokenBinops.push((_options$binop = options.binop) != null ? _options$binop : -1);
+ tokenBeforeExprs.push((_options$beforeExpr = options.beforeExpr) != null ? _options$beforeExpr : false);
+ tokenStartsExprs.push((_options$startsExpr = options.startsExpr) != null ? _options$startsExpr : false);
+ tokenPrefixes.push((_options$prefix = options.prefix) != null ? _options$prefix : false);
+ tokenTypes.push(new ExportedTokenType(name, options));
+ return tokenTypeCounter;
+}
+function createKeywordLike(name, options = {}) {
+ var _options$binop2, _options$beforeExpr2, _options$startsExpr2, _options$prefix2;
+ ++tokenTypeCounter;
+ keywords$1.set(name, tokenTypeCounter);
+ tokenLabels.push(name);
+ tokenBinops.push((_options$binop2 = options.binop) != null ? _options$binop2 : -1);
+ tokenBeforeExprs.push((_options$beforeExpr2 = options.beforeExpr) != null ? _options$beforeExpr2 : false);
+ tokenStartsExprs.push((_options$startsExpr2 = options.startsExpr) != null ? _options$startsExpr2 : false);
+ tokenPrefixes.push((_options$prefix2 = options.prefix) != null ? _options$prefix2 : false);
+ tokenTypes.push(new ExportedTokenType("name", options));
+ return tokenTypeCounter;
+}
+const tt = {
+ bracketL: createToken("[", {
+ beforeExpr,
+ startsExpr
+ }),
+ bracketHashL: createToken("#[", {
+ beforeExpr,
+ startsExpr
+ }),
+ bracketBarL: createToken("[|", {
+ beforeExpr,
+ startsExpr
+ }),
+ bracketR: createToken("]"),
+ bracketBarR: createToken("|]"),
+ braceL: createToken("{", {
+ beforeExpr,
+ startsExpr
+ }),
+ braceBarL: createToken("{|", {
+ beforeExpr,
+ startsExpr
+ }),
+ braceHashL: createToken("#{", {
+ beforeExpr,
+ startsExpr
+ }),
+ braceR: createToken("}"),
+ braceBarR: createToken("|}"),
+ parenL: createToken("(", {
+ beforeExpr,
+ startsExpr
+ }),
+ parenR: createToken(")"),
+ comma: createToken(",", {
+ beforeExpr
+ }),
+ semi: createToken(";", {
+ beforeExpr
+ }),
+ colon: createToken(":", {
+ beforeExpr
+ }),
+ doubleColon: createToken("::", {
+ beforeExpr
+ }),
+ dot: createToken("."),
+ question: createToken("?", {
+ beforeExpr
+ }),
+ questionDot: createToken("?."),
+ arrow: createToken("=>", {
+ beforeExpr
+ }),
+ template: createToken("template"),
+ ellipsis: createToken("...", {
+ beforeExpr
+ }),
+ backQuote: createToken("`", {
+ startsExpr
+ }),
+ dollarBraceL: createToken("${", {
+ beforeExpr,
+ startsExpr
+ }),
+ templateTail: createToken("...`", {
+ startsExpr
+ }),
+ templateNonTail: createToken("...${", {
+ beforeExpr,
+ startsExpr
+ }),
+ at: createToken("@"),
+ hash: createToken("#", {
+ startsExpr
+ }),
+ interpreterDirective: createToken("#!..."),
+ eq: createToken("=", {
+ beforeExpr,
+ isAssign
+ }),
+ assign: createToken("_=", {
+ beforeExpr,
+ isAssign
+ }),
+ slashAssign: createToken("_=", {
+ beforeExpr,
+ isAssign
+ }),
+ xorAssign: createToken("_=", {
+ beforeExpr,
+ isAssign
+ }),
+ moduloAssign: createToken("_=", {
+ beforeExpr,
+ isAssign
+ }),
+ incDec: createToken("++/--", {
+ prefix,
+ postfix,
+ startsExpr
+ }),
+ bang: createToken("!", {
+ beforeExpr,
+ prefix,
+ startsExpr
+ }),
+ tilde: createToken("~", {
+ beforeExpr,
+ prefix,
+ startsExpr
+ }),
+ doubleCaret: createToken("^^", {
+ startsExpr
+ }),
+ doubleAt: createToken("@@", {
+ startsExpr
+ }),
+ pipeline: createBinop("|>", 0),
+ nullishCoalescing: createBinop("??", 1),
+ logicalOR: createBinop("||", 1),
+ logicalAND: createBinop("&&", 2),
+ bitwiseOR: createBinop("|", 3),
+ bitwiseXOR: createBinop("^", 4),
+ bitwiseAND: createBinop("&", 5),
+ equality: createBinop("==/!=/===/!==", 6),
+ lt: createBinop("</>/<=/>=", 7),
+ gt: createBinop("</>/<=/>=", 7),
+ relational: createBinop("</>/<=/>=", 7),
+ bitShift: createBinop("<</>>/>>>", 8),
+ bitShiftL: createBinop("<</>>/>>>", 8),
+ bitShiftR: createBinop("<</>>/>>>", 8),
+ plusMin: createToken("+/-", {
+ beforeExpr,
+ binop: 9,
+ prefix,
+ startsExpr
+ }),
+ modulo: createToken("%", {
+ binop: 10,
+ startsExpr
+ }),
+ star: createToken("*", {
+ binop: 10
+ }),
+ slash: createBinop("/", 10),
+ exponent: createToken("**", {
+ beforeExpr,
+ binop: 11,
+ rightAssociative: true
+ }),
+ _in: createKeyword("in", {
+ beforeExpr,
+ binop: 7
+ }),
+ _instanceof: createKeyword("instanceof", {
+ beforeExpr,
+ binop: 7
+ }),
+ _break: createKeyword("break"),
+ _case: createKeyword("case", {
+ beforeExpr
+ }),
+ _catch: createKeyword("catch"),
+ _continue: createKeyword("continue"),
+ _debugger: createKeyword("debugger"),
+ _default: createKeyword("default", {
+ beforeExpr
+ }),
+ _else: createKeyword("else", {
+ beforeExpr
+ }),
+ _finally: createKeyword("finally"),
+ _function: createKeyword("function", {
+ startsExpr
+ }),
+ _if: createKeyword("if"),
+ _return: createKeyword("return", {
+ beforeExpr
+ }),
+ _switch: createKeyword("switch"),
+ _throw: createKeyword("throw", {
+ beforeExpr,
+ prefix,
+ startsExpr
+ }),
+ _try: createKeyword("try"),
+ _var: createKeyword("var"),
+ _const: createKeyword("const"),
+ _with: createKeyword("with"),
+ _new: createKeyword("new", {
+ beforeExpr,
+ startsExpr
+ }),
+ _this: createKeyword("this", {
+ startsExpr
+ }),
+ _super: createKeyword("super", {
+ startsExpr
+ }),
+ _class: createKeyword("class", {
+ startsExpr
+ }),
+ _extends: createKeyword("extends", {
+ beforeExpr
+ }),
+ _export: createKeyword("export"),
+ _import: createKeyword("import", {
+ startsExpr
+ }),
+ _null: createKeyword("null", {
+ startsExpr
+ }),
+ _true: createKeyword("true", {
+ startsExpr
+ }),
+ _false: createKeyword("false", {
+ startsExpr
+ }),
+ _typeof: createKeyword("typeof", {
+ beforeExpr,
+ prefix,
+ startsExpr
+ }),
+ _void: createKeyword("void", {
+ beforeExpr,
+ prefix,
+ startsExpr
+ }),
+ _delete: createKeyword("delete", {
+ beforeExpr,
+ prefix,
+ startsExpr
+ }),
+ _do: createKeyword("do", {
+ isLoop,
+ beforeExpr
+ }),
+ _for: createKeyword("for", {
+ isLoop
+ }),
+ _while: createKeyword("while", {
+ isLoop
+ }),
+ _as: createKeywordLike("as", {
+ startsExpr
+ }),
+ _assert: createKeywordLike("assert", {
+ startsExpr
+ }),
+ _async: createKeywordLike("async", {
+ startsExpr
+ }),
+ _await: createKeywordLike("await", {
+ startsExpr
+ }),
+ _defer: createKeywordLike("defer", {
+ startsExpr
+ }),
+ _from: createKeywordLike("from", {
+ startsExpr
+ }),
+ _get: createKeywordLike("get", {
+ startsExpr
+ }),
+ _let: createKeywordLike("let", {
+ startsExpr
+ }),
+ _meta: createKeywordLike("meta", {
+ startsExpr
+ }),
+ _of: createKeywordLike("of", {
+ startsExpr
+ }),
+ _sent: createKeywordLike("sent", {
+ startsExpr
+ }),
+ _set: createKeywordLike("set", {
+ startsExpr
+ }),
+ _source: createKeywordLike("source", {
+ startsExpr
+ }),
+ _static: createKeywordLike("static", {
+ startsExpr
+ }),
+ _using: createKeywordLike("using", {
+ startsExpr
+ }),
+ _yield: createKeywordLike("yield", {
+ startsExpr
+ }),
+ _asserts: createKeywordLike("asserts", {
+ startsExpr
+ }),
+ _checks: createKeywordLike("checks", {
+ startsExpr
+ }),
+ _exports: createKeywordLike("exports", {
+ startsExpr
+ }),
+ _global: createKeywordLike("global", {
+ startsExpr
+ }),
+ _implements: createKeywordLike("implements", {
+ startsExpr
+ }),
+ _intrinsic: createKeywordLike("intrinsic", {
+ startsExpr
+ }),
+ _infer: createKeywordLike("infer", {
+ startsExpr
+ }),
+ _is: createKeywordLike("is", {
+ startsExpr
+ }),
+ _mixins: createKeywordLike("mixins", {
+ startsExpr
+ }),
+ _proto: createKeywordLike("proto", {
+ startsExpr
+ }),
+ _require: createKeywordLike("require", {
+ startsExpr
+ }),
+ _satisfies: createKeywordLike("satisfies", {
+ startsExpr
+ }),
+ _keyof: createKeywordLike("keyof", {
+ startsExpr
+ }),
+ _readonly: createKeywordLike("readonly", {
+ startsExpr
+ }),
+ _unique: createKeywordLike("unique", {
+ startsExpr
+ }),
+ _abstract: createKeywordLike("abstract", {
+ startsExpr
+ }),
+ _declare: createKeywordLike("declare", {
+ startsExpr
+ }),
+ _enum: createKeywordLike("enum", {
+ startsExpr
+ }),
+ _module: createKeywordLike("module", {
+ startsExpr
+ }),
+ _namespace: createKeywordLike("namespace", {
+ startsExpr
+ }),
+ _interface: createKeywordLike("interface", {
+ startsExpr
+ }),
+ _type: createKeywordLike("type", {
+ startsExpr
+ }),
+ _opaque: createKeywordLike("opaque", {
+ startsExpr
+ }),
+ name: createToken("name", {
+ startsExpr
+ }),
+ placeholder: createToken("%%", {
+ startsExpr
+ }),
+ string: createToken("string", {
+ startsExpr
+ }),
+ num: createToken("num", {
+ startsExpr
+ }),
+ bigint: createToken("bigint", {
+ startsExpr
+ }),
+ decimal: createToken("decimal", {
+ startsExpr
+ }),
+ regexp: createToken("regexp", {
+ startsExpr
+ }),
+ privateName: createToken("#name", {
+ startsExpr
+ }),
+ eof: createToken("eof"),
+ jsxName: createToken("jsxName"),
+ jsxText: createToken("jsxText", {
+ beforeExpr
+ }),
+ jsxTagStart: createToken("jsxTagStart", {
+ startsExpr
+ }),
+ jsxTagEnd: createToken("jsxTagEnd")
+};
+function tokenIsIdentifier(token) {
+ return token >= 93 && token <= 133;
+}
+function tokenKeywordOrIdentifierIsKeyword(token) {
+ return token <= 92;
+}
+function tokenIsKeywordOrIdentifier(token) {
+ return token >= 58 && token <= 133;
+}
+function tokenIsLiteralPropertyName(token) {
+ return token >= 58 && token <= 137;
+}
+function tokenComesBeforeExpression(token) {
+ return tokenBeforeExprs[token];
+}
+function tokenCanStartExpression(token) {
+ return tokenStartsExprs[token];
+}
+function tokenIsAssignment(token) {
+ return token >= 29 && token <= 33;
+}
+function tokenIsFlowInterfaceOrTypeOrOpaque(token) {
+ return token >= 129 && token <= 131;
+}
+function tokenIsLoop(token) {
+ return token >= 90 && token <= 92;
+}
+function tokenIsKeyword(token) {
+ return token >= 58 && token <= 92;
+}
+function tokenIsOperator(token) {
+ return token >= 39 && token <= 59;
+}
+function tokenIsPostfix(token) {
+ return token === 34;
+}
+function tokenIsPrefix(token) {
+ return tokenPrefixes[token];
+}
+function tokenIsTSTypeOperator(token) {
+ return token >= 121 && token <= 123;
+}
+function tokenIsTSDeclarationStart(token) {
+ return token >= 124 && token <= 130;
+}
+function tokenLabelName(token) {
+ return tokenLabels[token];
+}
+function tokenOperatorPrecedence(token) {
+ return tokenBinops[token];
+}
+function tokenIsRightAssociative(token) {
+ return token === 57;
+}
+function tokenIsTemplate(token) {
+ return token >= 24 && token <= 25;
+}
+function getExportedToken(token) {
+ return tokenTypes[token];
+}
+tokenTypes[8].updateContext = context => {
+ context.pop();
+};
+tokenTypes[5].updateContext = tokenTypes[7].updateContext = tokenTypes[23].updateContext = context => {
+ context.push(types.brace);
+};
+tokenTypes[22].updateContext = context => {
+ if (context[context.length - 1] === types.template) {
+ context.pop();
+ } else {
+ context.push(types.template);
+ }
+};
+tokenTypes[143].updateContext = context => {
+ context.push(types.j_expr, types.j_oTag);
+};
+let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088f\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5c\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdc-\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7dc\ua7f1-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
+let nonASCIIidentifierChars = "\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1add\u1ae0-\u1aeb\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65";
+const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
+const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
+nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
+const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 7, 25, 39, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 57, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 261, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];
+const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 78, 5, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 199, 7, 137, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 55, 9, 266, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
+function isInAstralSet(code, set) {
+ let pos = 0x10000;
+ for (let i = 0, length = set.length; i < length; i += 2) {
+ pos += set[i];
+ if (pos > code) return false;
+ pos += set[i + 1];
+ if (pos >= code) return true;
+ }
+ return false;
+}
+function isIdentifierStart(code) {
+ if (code < 65) return code === 36;
+ if (code <= 90) return true;
+ if (code < 97) return code === 95;
+ if (code <= 122) return true;
+ if (code <= 0xffff) {
+ return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));
+ }
+ return isInAstralSet(code, astralIdentifierStartCodes);
+}
+function isIdentifierChar(code) {
+ if (code < 48) return code === 36;
+ if (code < 58) return true;
+ if (code < 65) return false;
+ if (code <= 90) return true;
+ if (code < 97) return code === 95;
+ if (code <= 122) return true;
+ if (code <= 0xffff) {
+ return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));
+ }
+ return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
+}
+const reservedWords = {
+ keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],
+ strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
+ strictBind: ["eval", "arguments"]
+};
+const keywords = new Set(reservedWords.keyword);
+const reservedWordsStrictSet = new Set(reservedWords.strict);
+const reservedWordsStrictBindSet = new Set(reservedWords.strictBind);
+function isReservedWord(word, inModule) {
+ return inModule && word === "await" || word === "enum";
+}
+function isStrictReservedWord(word, inModule) {
+ return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);
+}
+function isStrictBindOnlyReservedWord(word) {
+ return reservedWordsStrictBindSet.has(word);
+}
+function isStrictBindReservedWord(word, inModule) {
+ return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);
+}
+function isKeyword(word) {
+ return keywords.has(word);
+}
+function isIteratorStart(current, next, next2) {
+ return current === 64 && next === 64 && isIdentifierStart(next2);
+}
+const reservedWordLikeSet = new Set(["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete", "implements", "interface", "let", "package", "private", "protected", "public", "static", "yield", "eval", "arguments", "enum", "await"]);
+function canBeReservedWord(word) {
+ return reservedWordLikeSet.has(word);
+}
+class Scope {
+ constructor(flags) {
+ this.flags = 0;
+ this.names = new Map();
+ this.firstLexicalName = "";
+ this.flags = flags;
+ }
+}
+class ScopeHandler {
+ constructor(parser, inModule) {
+ this.parser = void 0;
+ this.scopeStack = [];
+ this.inModule = void 0;
+ this.undefinedExports = new Map();
+ this.parser = parser;
+ this.inModule = inModule;
+ }
+ get inTopLevel() {
+ return (this.currentScope().flags & 1) > 0;
+ }
+ get inFunction() {
+ return (this.currentVarScopeFlags() & 2) > 0;
+ }
+ get allowSuper() {
+ return (this.currentThisScopeFlags() & 16) > 0;
+ }
+ get allowDirectSuper() {
+ return (this.currentThisScopeFlags() & 32) > 0;
+ }
+ get allowNewTarget() {
+ return (this.currentThisScopeFlags() & 512) > 0;
+ }
+ get inClass() {
+ return (this.currentThisScopeFlags() & 64) > 0;
+ }
+ get inClassAndNotInNonArrowFunction() {
+ const flags = this.currentThisScopeFlags();
+ return (flags & 64) > 0 && (flags & 2) === 0;
+ }
+ get inStaticBlock() {
+ for (let i = this.scopeStack.length - 1;; i--) {
+ const {
+ flags
+ } = this.scopeStack[i];
+ if (flags & 128) {
+ return true;
+ }
+ if (flags & (1667 | 64)) {
+ return false;
+ }
+ }
+ }
+ get inNonArrowFunction() {
+ return (this.currentThisScopeFlags() & 2) > 0;
+ }
+ get inBareCaseStatement() {
+ return (this.currentScope().flags & 256) > 0;
+ }
+ get treatFunctionsAsVar() {
+ return this.treatFunctionsAsVarInScope(this.currentScope());
+ }
+ createScope(flags) {
+ return new Scope(flags);
+ }
+ enter(flags) {
+ this.scopeStack.push(this.createScope(flags));
+ }
+ exit() {
+ const scope = this.scopeStack.pop();
+ return scope.flags;
+ }
+ treatFunctionsAsVarInScope(scope) {
+ return !!(scope.flags & (2 | 128) || !this.parser.inModule && scope.flags & 1);
+ }
+ declareName(name, bindingType, loc) {
+ let scope = this.currentScope();
+ if (bindingType & 8 || bindingType & 16) {
+ this.checkRedeclarationInScope(scope, name, bindingType, loc);
+ let type = scope.names.get(name) || 0;
+ if (bindingType & 16) {
+ type = type | 4;
+ } else {
+ if (!scope.firstLexicalName) {
+ scope.firstLexicalName = name;
+ }
+ type = type | 2;
+ }
+ scope.names.set(name, type);
+ if (bindingType & 8) {
+ this.maybeExportDefined(scope, name);
+ }
+ } else if (bindingType & 4) {
+ for (let i = this.scopeStack.length - 1; i >= 0; --i) {
+ scope = this.scopeStack[i];
+ this.checkRedeclarationInScope(scope, name, bindingType, loc);
+ scope.names.set(name, (scope.names.get(name) || 0) | 1);
+ this.maybeExportDefined(scope, name);
+ if (scope.flags & 1667) break;
+ }
+ }
+ if (this.parser.inModule && scope.flags & 1) {
+ this.undefinedExports.delete(name);
+ }
+ }
+ maybeExportDefined(scope, name) {
+ if (this.parser.inModule && scope.flags & 1) {
+ this.undefinedExports.delete(name);
+ }
+ }
+ checkRedeclarationInScope(scope, name, bindingType, loc) {
+ if (this.isRedeclaredInScope(scope, name, bindingType)) {
+ this.parser.raise(Errors.VarRedeclaration, loc, {
+ identifierName: name
+ });
+ }
+ }
+ isRedeclaredInScope(scope, name, bindingType) {
+ if (!(bindingType & 1)) return false;
+ if (bindingType & 8) {
+ return scope.names.has(name);
+ }
+ const type = scope.names.get(name) || 0;
+ if (bindingType & 16) {
+ return (type & 2) > 0 || !this.treatFunctionsAsVarInScope(scope) && (type & 1) > 0;
+ }
+ return (type & 2) > 0 && !(scope.flags & 8 && scope.firstLexicalName === name) || !this.treatFunctionsAsVarInScope(scope) && (type & 4) > 0;
+ }
+ checkLocalExport(id) {
+ const {
+ name
+ } = id;
+ const topLevelScope = this.scopeStack[0];
+ if (!topLevelScope.names.has(name)) {
+ this.undefinedExports.set(name, id.loc.start);
+ }
+ }
+ currentScope() {
+ return this.scopeStack[this.scopeStack.length - 1];
+ }
+ currentVarScopeFlags() {
+ for (let i = this.scopeStack.length - 1;; i--) {
+ const {
+ flags
+ } = this.scopeStack[i];
+ if (flags & 1667) {
+ return flags;
+ }
+ }
+ }
+ currentThisScopeFlags() {
+ for (let i = this.scopeStack.length - 1;; i--) {
+ const {
+ flags
+ } = this.scopeStack[i];
+ if (flags & (1667 | 64) && !(flags & 4)) {
+ return flags;
+ }
+ }
+ }
+}
+class FlowScope extends Scope {
+ constructor(...args) {
+ super(...args);
+ this.declareFunctions = new Set();
+ }
+}
+class FlowScopeHandler extends ScopeHandler {
+ createScope(flags) {
+ return new FlowScope(flags);
+ }
+ declareName(name, bindingType, loc) {
+ const scope = this.currentScope();
+ if (bindingType & 2048) {
+ this.checkRedeclarationInScope(scope, name, bindingType, loc);
+ this.maybeExportDefined(scope, name);
+ scope.declareFunctions.add(name);
+ return;
+ }
+ super.declareName(name, bindingType, loc);
+ }
+ isRedeclaredInScope(scope, name, bindingType) {
+ if (super.isRedeclaredInScope(scope, name, bindingType)) return true;
+ if (bindingType & 2048 && !scope.declareFunctions.has(name)) {
+ const type = scope.names.get(name);
+ return (type & 4) > 0 || (type & 2) > 0;
+ }
+ return false;
+ }
+ checkLocalExport(id) {
+ if (!this.scopeStack[0].declareFunctions.has(id.name)) {
+ super.checkLocalExport(id);
+ }
+ }
+}
+const reservedTypes = new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]);
+const FlowErrors = ParseErrorEnum`flow`({
+ AmbiguousConditionalArrow: "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.",
+ AmbiguousDeclareModuleKind: "Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.",
+ AssignReservedType: ({
+ reservedType
+ }) => `Cannot overwrite reserved type ${reservedType}.`,
+ DeclareClassElement: "The `declare` modifier can only appear on class fields.",
+ DeclareClassFieldInitializer: "Initializers are not allowed in fields with the `declare` modifier.",
+ DuplicateDeclareModuleExports: "Duplicate `declare module.exports` statement.",
+ EnumBooleanMemberNotInitialized: ({
+ memberName,
+ enumName
+ }) => `Boolean enum members need to be initialized. Use either \`${memberName} = true,\` or \`${memberName} = false,\` in enum \`${enumName}\`.`,
+ EnumDuplicateMemberName: ({
+ memberName,
+ enumName
+ }) => `Enum member names need to be unique, but the name \`${memberName}\` has already been used before in enum \`${enumName}\`.`,
+ EnumInconsistentMemberValues: ({
+ enumName
+ }) => `Enum \`${enumName}\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`,
+ EnumInvalidExplicitType: ({
+ invalidEnumType,
+ enumName
+ }) => `Enum type \`${invalidEnumType}\` is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`,
+ EnumInvalidExplicitTypeUnknownSupplied: ({
+ enumName
+ }) => `Supplied enum type is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`,
+ EnumInvalidMemberInitializerPrimaryType: ({
+ enumName,
+ memberName,
+ explicitType
+ }) => `Enum \`${enumName}\` has type \`${explicitType}\`, so the initializer of \`${memberName}\` needs to be a ${explicitType} literal.`,
+ EnumInvalidMemberInitializerSymbolType: ({
+ enumName,
+ memberName
+ }) => `Symbol enum members cannot be initialized. Use \`${memberName},\` in enum \`${enumName}\`.`,
+ EnumInvalidMemberInitializerUnknownType: ({
+ enumName,
+ memberName
+ }) => `The enum member initializer for \`${memberName}\` needs to be a literal (either a boolean, number, or string) in enum \`${enumName}\`.`,
+ EnumInvalidMemberName: ({
+ enumName,
+ memberName,
+ suggestion
+ }) => `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \`${memberName}\`, consider using \`${suggestion}\`, in enum \`${enumName}\`.`,
+ EnumNumberMemberNotInitialized: ({
+ enumName,
+ memberName
+ }) => `Number enum members need to be initialized, e.g. \`${memberName} = 1\` in enum \`${enumName}\`.`,
+ EnumStringMemberInconsistentlyInitialized: ({
+ enumName
+ }) => `String enum members need to consistently either all use initializers, or use no initializers, in enum \`${enumName}\`.`,
+ GetterMayNotHaveThisParam: "A getter cannot have a `this` parameter.",
+ ImportReflectionHasImportType: "An `import module` declaration can not use `type` or `typeof` keyword.",
+ ImportTypeShorthandOnlyInPureImport: "The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.",
+ InexactInsideExact: "Explicit inexact syntax cannot appear inside an explicit exact object type.",
+ InexactInsideNonObject: "Explicit inexact syntax cannot appear in class or interface definitions.",
+ InexactVariance: "Explicit inexact syntax cannot have variance.",
+ InvalidNonTypeImportInDeclareModule: "Imports within a `declare module` body must always be `import type` or `import typeof`.",
+ MissingTypeParamDefault: "Type parameter declaration needs a default, since a preceding type parameter declaration has a default.",
+ NestedDeclareModule: "`declare module` cannot be used inside another `declare module`.",
+ NestedFlowComment: "Cannot have a flow comment inside another flow comment.",
+ PatternIsOptional: Object.assign({
+ message: "A binding pattern parameter cannot be optional in an implementation signature."
+ }, {
+ reasonCode: "OptionalBindingPattern"
+ }),
+ SetterMayNotHaveThisParam: "A setter cannot have a `this` parameter.",
+ SpreadVariance: "Spread properties cannot have variance.",
+ ThisParamAnnotationRequired: "A type annotation is required for the `this` parameter.",
+ ThisParamBannedInConstructor: "Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.",
+ ThisParamMayNotBeOptional: "The `this` parameter cannot be optional.",
+ ThisParamMustBeFirst: "The `this` parameter must be the first function parameter.",
+ ThisParamNoDefault: "The `this` parameter may not have a default value.",
+ TypeBeforeInitializer: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.",
+ TypeCastInPattern: "The type cast expression is expected to be wrapped with parenthesis.",
+ UnexpectedExplicitInexactInObject: "Explicit inexact syntax must appear at the end of an inexact object.",
+ UnexpectedReservedType: ({
+ reservedType
+ }) => `Unexpected reserved type ${reservedType}.`,
+ UnexpectedReservedUnderscore: "`_` is only allowed as a type argument to call or new.",
+ UnexpectedSpaceBetweenModuloChecks: "Spaces between `%` and `checks` are not allowed here.",
+ UnexpectedSpreadType: "Spread operator cannot appear in class or interface definitions.",
+ UnexpectedSubtractionOperand: 'Unexpected token, expected "number" or "bigint".',
+ UnexpectedTokenAfterTypeParameter: "Expected an arrow function after this type parameter declaration.",
+ UnexpectedTypeParameterBeforeAsyncArrowFunction: "Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.",
+ UnsupportedDeclareExportKind: ({
+ unsupportedExportKind,
+ suggestion
+ }) => `\`declare export ${unsupportedExportKind}\` is not supported. Use \`${suggestion}\` instead.`,
+ UnsupportedStatementInDeclareModule: "Only declares and type imports are allowed inside declare module.",
+ UnterminatedFlowComment: "Unterminated flow-comment."
+});
+function isEsModuleType(bodyElement) {
+ return bodyElement.type === "DeclareExportAllDeclaration" || bodyElement.type === "DeclareExportDeclaration" && (!bodyElement.declaration || bodyElement.declaration.type !== "TypeAlias" && bodyElement.declaration.type !== "InterfaceDeclaration");
+}
+function hasTypeImportKind(node) {
+ return node.importKind === "type" || node.importKind === "typeof";
+}
+const exportSuggestions = {
+ const: "declare export var",
+ let: "declare export var",
+ type: "export type",
+ interface: "export interface"
+};
+function partition(list, test) {
+ const list1 = [];
+ const list2 = [];
+ for (let i = 0; i < list.length; i++) {
+ (test(list[i], i, list) ? list1 : list2).push(list[i]);
+ }
+ return [list1, list2];
+}
+const FLOW_PRAGMA_REGEX = /\*?\s*@((?:no)?flow)\b/;
+var flow = superClass => class FlowParserMixin extends superClass {
+ constructor(...args) {
+ super(...args);
+ this.flowPragma = undefined;
+ }
+ getScopeHandler() {
+ return FlowScopeHandler;
+ }
+ shouldParseTypes() {
+ return this.getPluginOption("flow", "all") || this.flowPragma === "flow";
+ }
+ finishToken(type, val) {
+ if (type !== 134 && type !== 13 && type !== 28) {
+ if (this.flowPragma === undefined) {
+ this.flowPragma = null;
+ }
+ }
+ super.finishToken(type, val);
+ }
+ addComment(comment) {
+ if (this.flowPragma === undefined) {
+ const matches = FLOW_PRAGMA_REGEX.exec(comment.value);
+ if (!matches) ;else if (matches[1] === "flow") {
+ this.flowPragma = "flow";
+ } else if (matches[1] === "noflow") {
+ this.flowPragma = "noflow";
+ } else {
+ throw new Error("Unexpected flow pragma");
+ }
+ }
+ super.addComment(comment);
+ }
+ flowParseTypeInitialiser(tok) {
+ const oldInType = this.state.inType;
+ this.state.inType = true;
+ this.expect(tok || 14);
+ const type = this.flowParseType();
+ this.state.inType = oldInType;
+ return type;
+ }
+ flowParsePredicate() {
+ const node = this.startNode();
+ const moduloLoc = this.state.startLoc;
+ this.next();
+ this.expectContextual(110);
+ if (this.state.lastTokStartLoc.index > moduloLoc.index + 1) {
+ this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, moduloLoc);
+ }
+ if (this.eat(10)) {
+ node.value = super.parseExpression();
+ this.expect(11);
+ return this.finishNode(node, "DeclaredPredicate");
+ } else {
+ return this.finishNode(node, "InferredPredicate");
+ }
+ }
+ flowParseTypeAndPredicateInitialiser() {
+ const oldInType = this.state.inType;
+ this.state.inType = true;
+ this.expect(14);
+ let type = null;
+ let predicate = null;
+ if (this.match(54)) {
+ this.state.inType = oldInType;
+ predicate = this.flowParsePredicate();
+ } else {
+ type = this.flowParseType();
+ this.state.inType = oldInType;
+ if (this.match(54)) {
+ predicate = this.flowParsePredicate();
+ }
+ }
+ return [type, predicate];
+ }
+ flowParseDeclareClass(node) {
+ this.next();
+ this.flowParseInterfaceish(node, true);
+ return this.finishNode(node, "DeclareClass");
+ }
+ flowParseDeclareFunction(node) {
+ this.next();
+ const id = node.id = this.parseIdentifier();
+ const typeNode = this.startNode();
+ const typeContainer = this.startNode();
+ if (this.match(47)) {
+ typeNode.typeParameters = this.flowParseTypeParameterDeclaration();
+ } else {
+ typeNode.typeParameters = null;
+ }
+ this.expect(10);
+ const tmp = this.flowParseFunctionTypeParams();
+ typeNode.params = tmp.params;
+ typeNode.rest = tmp.rest;
+ typeNode.this = tmp._this;
+ this.expect(11);
+ [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser();
+ typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation");
+ id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation");
+ this.resetEndLocation(id);
+ this.semicolon();
+ this.scope.declareName(node.id.name, 2048, node.id.loc.start);
+ return this.finishNode(node, "DeclareFunction");
+ }
+ flowParseDeclare(node, insideModule) {
+ if (this.match(80)) {
+ return this.flowParseDeclareClass(node);
+ } else if (this.match(68)) {
+ return this.flowParseDeclareFunction(node);
+ } else if (this.match(74)) {
+ return this.flowParseDeclareVariable(node);
+ } else if (this.eatContextual(127)) {
+ if (this.match(16)) {
+ return this.flowParseDeclareModuleExports(node);
+ } else {
+ if (insideModule) {
+ this.raise(FlowErrors.NestedDeclareModule, this.state.lastTokStartLoc);
+ }
+ return this.flowParseDeclareModule(node);
+ }
+ } else if (this.isContextual(130)) {
+ return this.flowParseDeclareTypeAlias(node);
+ } else if (this.isContextual(131)) {
+ return this.flowParseDeclareOpaqueType(node);
+ } else if (this.isContextual(129)) {
+ return this.flowParseDeclareInterface(node);
+ } else if (this.match(82)) {
+ return this.flowParseDeclareExportDeclaration(node, insideModule);
+ }
+ throw this.unexpected();
+ }
+ flowParseDeclareVariable(node) {
+ this.next();
+ node.id = this.flowParseTypeAnnotatableIdentifier(true);
+ this.scope.declareName(node.id.name, 5, node.id.loc.start);
+ this.semicolon();
+ return this.finishNode(node, "DeclareVariable");
+ }
+ flowParseDeclareModule(node) {
+ this.scope.enter(0);
+ if (this.match(134)) {
+ node.id = super.parseExprAtom();
+ } else {
+ node.id = this.parseIdentifier();
+ }
+ const bodyNode = node.body = this.startNode();
+ const body = bodyNode.body = [];
+ this.expect(5);
+ while (!this.match(8)) {
+ const bodyNode = this.startNode();
+ if (this.match(83)) {
+ this.next();
+ if (!this.isContextual(130) && !this.match(87)) {
+ this.raise(FlowErrors.InvalidNonTypeImportInDeclareModule, this.state.lastTokStartLoc);
+ }
+ body.push(super.parseImport(bodyNode));
+ } else {
+ this.expectContextual(125, FlowErrors.UnsupportedStatementInDeclareModule);
+ body.push(this.flowParseDeclare(bodyNode, true));
+ }
+ }
+ this.scope.exit();
+ this.expect(8);
+ this.finishNode(bodyNode, "BlockStatement");
+ let kind = null;
+ let hasModuleExport = false;
+ body.forEach(bodyElement => {
+ if (isEsModuleType(bodyElement)) {
+ if (kind === "CommonJS") {
+ this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);
+ }
+ kind = "ES";
+ } else if (bodyElement.type === "DeclareModuleExports") {
+ if (hasModuleExport) {
+ this.raise(FlowErrors.DuplicateDeclareModuleExports, bodyElement);
+ }
+ if (kind === "ES") {
+ this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);
+ }
+ kind = "CommonJS";
+ hasModuleExport = true;
+ }
+ });
+ node.kind = kind || "CommonJS";
+ return this.finishNode(node, "DeclareModule");
+ }
+ flowParseDeclareExportDeclaration(node, insideModule) {
+ this.expect(82);
+ if (this.eat(65)) {
+ if (this.match(68) || this.match(80)) {
+ node.declaration = this.flowParseDeclare(this.startNode());
+ } else {
+ node.declaration = this.flowParseType();
+ this.semicolon();
+ }
+ node.default = true;
+ return this.finishNode(node, "DeclareExportDeclaration");
+ } else {
+ if (this.match(75) || this.isLet() || (this.isContextual(130) || this.isContextual(129)) && !insideModule) {
+ const label = this.state.value;
+ throw this.raise(FlowErrors.UnsupportedDeclareExportKind, this.state.startLoc, {
+ unsupportedExportKind: label,
+ suggestion: exportSuggestions[label]
+ });
+ }
+ if (this.match(74) || this.match(68) || this.match(80) || this.isContextual(131)) {
+ node.declaration = this.flowParseDeclare(this.startNode());
+ node.default = false;
+ return this.finishNode(node, "DeclareExportDeclaration");
+ } else if (this.match(55) || this.match(5) || this.isContextual(129) || this.isContextual(130) || this.isContextual(131)) {
+ node = this.parseExport(node, null);
+ if (node.type === "ExportNamedDeclaration") {
+ node.default = false;
+ delete node.exportKind;
+ return this.castNodeTo(node, "DeclareExportDeclaration");
+ } else {
+ return this.castNodeTo(node, "DeclareExportAllDeclaration");
+ }
+ }
+ }
+ throw this.unexpected();
+ }
+ flowParseDeclareModuleExports(node) {
+ this.next();
+ this.expectContextual(111);
+ node.typeAnnotation = this.flowParseTypeAnnotation();
+ this.semicolon();
+ return this.finishNode(node, "DeclareModuleExports");
+ }
+ flowParseDeclareTypeAlias(node) {
+ this.next();
+ const finished = this.flowParseTypeAlias(node);
+ this.castNodeTo(finished, "DeclareTypeAlias");
+ return finished;
+ }
+ flowParseDeclareOpaqueType(node) {
+ this.next();
+ const finished = this.flowParseOpaqueType(node, true);
+ this.castNodeTo(finished, "DeclareOpaqueType");
+ return finished;
+ }
+ flowParseDeclareInterface(node) {
+ this.next();
+ this.flowParseInterfaceish(node, false);
+ return this.finishNode(node, "DeclareInterface");
+ }
+ flowParseInterfaceish(node, isClass) {
+ node.id = this.flowParseRestrictedIdentifier(!isClass, true);
+ this.scope.declareName(node.id.name, isClass ? 17 : 8201, node.id.loc.start);
+ if (this.match(47)) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ } else {
+ node.typeParameters = null;
+ }
+ node.extends = [];
+ if (this.eat(81)) {
+ do {
+ node.extends.push(this.flowParseInterfaceExtends());
+ } while (!isClass && this.eat(12));
+ }
+ if (isClass) {
+ node.implements = [];
+ node.mixins = [];
+ if (this.eatContextual(117)) {
+ do {
+ node.mixins.push(this.flowParseInterfaceExtends());
+ } while (this.eat(12));
+ }
+ if (this.eatContextual(113)) {
+ do {
+ node.implements.push(this.flowParseInterfaceExtends());
+ } while (this.eat(12));
+ }
+ }
+ node.body = this.flowParseObjectType({
+ allowStatic: isClass,
+ allowExact: false,
+ allowSpread: false,
+ allowProto: isClass,
+ allowInexact: false
+ });
+ }
+ flowParseInterfaceExtends() {
+ const node = this.startNode();
+ node.id = this.flowParseQualifiedTypeIdentifier();
+ if (this.match(47)) {
+ node.typeParameters = this.flowParseTypeParameterInstantiation();
+ } else {
+ node.typeParameters = null;
+ }
+ return this.finishNode(node, "InterfaceExtends");
+ }
+ flowParseInterface(node) {
+ this.flowParseInterfaceish(node, false);
+ return this.finishNode(node, "InterfaceDeclaration");
+ }
+ checkNotUnderscore(word) {
+ if (word === "_") {
+ this.raise(FlowErrors.UnexpectedReservedUnderscore, this.state.startLoc);
+ }
+ }
+ checkReservedType(word, startLoc, declaration) {
+ if (!reservedTypes.has(word)) return;
+ this.raise(declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, startLoc, {
+ reservedType: word
+ });
+ }
+ flowParseRestrictedIdentifier(liberal, declaration) {
+ this.checkReservedType(this.state.value, this.state.startLoc, declaration);
+ return this.parseIdentifier(liberal);
+ }
+ flowParseTypeAlias(node) {
+ node.id = this.flowParseRestrictedIdentifier(false, true);
+ this.scope.declareName(node.id.name, 8201, node.id.loc.start);
+ if (this.match(47)) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ } else {
+ node.typeParameters = null;
+ }
+ node.right = this.flowParseTypeInitialiser(29);
+ this.semicolon();
+ return this.finishNode(node, "TypeAlias");
+ }
+ flowParseOpaqueType(node, declare) {
+ this.expectContextual(130);
+ node.id = this.flowParseRestrictedIdentifier(true, true);
+ this.scope.declareName(node.id.name, 8201, node.id.loc.start);
+ if (this.match(47)) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ } else {
+ node.typeParameters = null;
+ }
+ node.supertype = null;
+ if (this.match(14)) {
+ node.supertype = this.flowParseTypeInitialiser(14);
+ }
+ node.impltype = null;
+ if (!declare) {
+ node.impltype = this.flowParseTypeInitialiser(29);
+ }
+ this.semicolon();
+ return this.finishNode(node, "OpaqueType");
+ }
+ flowParseTypeParameter(requireDefault = false) {
+ const nodeStartLoc = this.state.startLoc;
+ const node = this.startNode();
+ const variance = this.flowParseVariance();
+ const ident = this.flowParseTypeAnnotatableIdentifier();
+ node.name = ident.name;
+ node.variance = variance;
+ node.bound = ident.typeAnnotation;
+ if (this.match(29)) {
+ this.eat(29);
+ node.default = this.flowParseType();
+ } else {
+ if (requireDefault) {
+ this.raise(FlowErrors.MissingTypeParamDefault, nodeStartLoc);
+ }
+ }
+ return this.finishNode(node, "TypeParameter");
+ }
+ flowParseTypeParameterDeclaration() {
+ const oldInType = this.state.inType;
+ const node = this.startNode();
+ node.params = [];
+ this.state.inType = true;
+ if (this.match(47) || this.match(143)) {
+ this.next();
+ } else {
+ this.unexpected();
+ }
+ let defaultRequired = false;
+ do {
+ const typeParameter = this.flowParseTypeParameter(defaultRequired);
+ node.params.push(typeParameter);
+ if (typeParameter.default) {
+ defaultRequired = true;
+ }
+ if (!this.match(48)) {
+ this.expect(12);
+ }
+ } while (!this.match(48));
+ this.expect(48);
+ this.state.inType = oldInType;
+ return this.finishNode(node, "TypeParameterDeclaration");
+ }
+ flowInTopLevelContext(cb) {
+ if (this.curContext() !== types.brace) {
+ const oldContext = this.state.context;
+ this.state.context = [oldContext[0]];
+ try {
+ return cb();
+ } finally {
+ this.state.context = oldContext;
+ }
+ } else {
+ return cb();
+ }
+ }
+ flowParseTypeParameterInstantiationInExpression() {
+ if (this.reScan_lt() !== 47) return;
+ return this.flowParseTypeParameterInstantiation();
+ }
+ flowParseTypeParameterInstantiation() {
+ const node = this.startNode();
+ const oldInType = this.state.inType;
+ this.state.inType = true;
+ node.params = [];
+ this.flowInTopLevelContext(() => {
+ this.expect(47);
+ const oldNoAnonFunctionType = this.state.noAnonFunctionType;
+ this.state.noAnonFunctionType = false;
+ while (!this.match(48)) {
+ node.params.push(this.flowParseType());
+ if (!this.match(48)) {
+ this.expect(12);
+ }
+ }
+ this.state.noAnonFunctionType = oldNoAnonFunctionType;
+ });
+ this.state.inType = oldInType;
+ if (!this.state.inType && this.curContext() === types.brace) {
+ this.reScan_lt_gt();
+ }
+ this.expect(48);
+ return this.finishNode(node, "TypeParameterInstantiation");
+ }
+ flowParseTypeParameterInstantiationCallOrNew() {
+ if (this.reScan_lt() !== 47) return null;
+ const node = this.startNode();
+ const oldInType = this.state.inType;
+ node.params = [];
+ this.state.inType = true;
+ this.expect(47);
+ while (!this.match(48)) {
+ node.params.push(this.flowParseTypeOrImplicitInstantiation());
+ if (!this.match(48)) {
+ this.expect(12);
+ }
+ }
+ this.expect(48);
+ this.state.inType = oldInType;
+ return this.finishNode(node, "TypeParameterInstantiation");
+ }
+ flowParseInterfaceType() {
+ const node = this.startNode();
+ this.expectContextual(129);
+ node.extends = [];
+ if (this.eat(81)) {
+ do {
+ node.extends.push(this.flowParseInterfaceExtends());
+ } while (this.eat(12));
+ }
+ node.body = this.flowParseObjectType({
+ allowStatic: false,
+ allowExact: false,
+ allowSpread: false,
+ allowProto: false,
+ allowInexact: false
+ });
+ return this.finishNode(node, "InterfaceTypeAnnotation");
+ }
+ flowParseObjectPropertyKey() {
+ return this.match(135) || this.match(134) ? super.parseExprAtom() : this.parseIdentifier(true);
+ }
+ flowParseObjectTypeIndexer(node, isStatic, variance) {
+ node.static = isStatic;
+ if (this.lookahead().type === 14) {
+ node.id = this.flowParseObjectPropertyKey();
+ node.key = this.flowParseTypeInitialiser();
+ } else {
+ node.id = null;
+ node.key = this.flowParseType();
+ }
+ this.expect(3);
+ node.value = this.flowParseTypeInitialiser();
+ node.variance = variance;
+ return this.finishNode(node, "ObjectTypeIndexer");
+ }
+ flowParseObjectTypeInternalSlot(node, isStatic) {
+ node.static = isStatic;
+ node.id = this.flowParseObjectPropertyKey();
+ this.expect(3);
+ this.expect(3);
+ if (this.match(47) || this.match(10)) {
+ node.method = true;
+ node.optional = false;
+ node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start));
+ } else {
+ node.method = false;
+ if (this.eat(17)) {
+ node.optional = true;
+ }
+ node.value = this.flowParseTypeInitialiser();
+ }
+ return this.finishNode(node, "ObjectTypeInternalSlot");
+ }
+ flowParseObjectTypeMethodish(node) {
+ node.params = [];
+ node.rest = null;
+ node.typeParameters = null;
+ node.this = null;
+ if (this.match(47)) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ }
+ this.expect(10);
+ if (this.match(78)) {
+ node.this = this.flowParseFunctionTypeParam(true);
+ node.this.name = null;
+ if (!this.match(11)) {
+ this.expect(12);
+ }
+ }
+ while (!this.match(11) && !this.match(21)) {
+ node.params.push(this.flowParseFunctionTypeParam(false));
+ if (!this.match(11)) {
+ this.expect(12);
+ }
+ }
+ if (this.eat(21)) {
+ node.rest = this.flowParseFunctionTypeParam(false);
+ }
+ this.expect(11);
+ node.returnType = this.flowParseTypeInitialiser();
+ return this.finishNode(node, "FunctionTypeAnnotation");
+ }
+ flowParseObjectTypeCallProperty(node, isStatic) {
+ const valueNode = this.startNode();
+ node.static = isStatic;
+ node.value = this.flowParseObjectTypeMethodish(valueNode);
+ return this.finishNode(node, "ObjectTypeCallProperty");
+ }
+ flowParseObjectType({
+ allowStatic,
+ allowExact,
+ allowSpread,
+ allowProto,
+ allowInexact
+ }) {
+ const oldInType = this.state.inType;
+ this.state.inType = true;
+ const nodeStart = this.startNode();
+ nodeStart.callProperties = [];
+ nodeStart.properties = [];
+ nodeStart.indexers = [];
+ nodeStart.internalSlots = [];
+ let endDelim;
+ let exact;
+ let inexact = false;
+ if (allowExact && this.match(6)) {
+ this.expect(6);
+ endDelim = 9;
+ exact = true;
+ } else {
+ this.expect(5);
+ endDelim = 8;
+ exact = false;
+ }
+ nodeStart.exact = exact;
+ while (!this.match(endDelim)) {
+ let isStatic = false;
+ let protoStartLoc = null;
+ let inexactStartLoc = null;
+ const node = this.startNode();
+ if (allowProto && this.isContextual(118)) {
+ const lookahead = this.lookahead();
+ if (lookahead.type !== 14 && lookahead.type !== 17) {
+ this.next();
+ protoStartLoc = this.state.startLoc;
+ allowStatic = false;
+ }
+ }
+ if (allowStatic && this.isContextual(106)) {
+ const lookahead = this.lookahead();
+ if (lookahead.type !== 14 && lookahead.type !== 17) {
+ this.next();
+ isStatic = true;
+ }
+ }
+ const variance = this.flowParseVariance();
+ if (this.eat(0)) {
+ if (protoStartLoc != null) {
+ this.unexpected(protoStartLoc);
+ }
+ if (this.eat(0)) {
+ if (variance) {
+ this.unexpected(variance.loc.start);
+ }
+ nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic));
+ } else {
+ nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance));
+ }
+ } else if (this.match(10) || this.match(47)) {
+ if (protoStartLoc != null) {
+ this.unexpected(protoStartLoc);
+ }
+ if (variance) {
+ this.unexpected(variance.loc.start);
+ }
+ nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic));
+ } else {
+ let kind = "init";
+ if (this.isContextual(99) || this.isContextual(104)) {
+ const lookahead = this.lookahead();
+ if (tokenIsLiteralPropertyName(lookahead.type)) {
+ kind = this.state.value;
+ this.next();
+ }
+ }
+ const propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact != null ? allowInexact : !exact);
+ if (propOrInexact === null) {
+ inexact = true;
+ inexactStartLoc = this.state.lastTokStartLoc;
+ } else {
+ nodeStart.properties.push(propOrInexact);
+ }
+ }
+ this.flowObjectTypeSemicolon();
+ if (inexactStartLoc && !this.match(8) && !this.match(9)) {
+ this.raise(FlowErrors.UnexpectedExplicitInexactInObject, inexactStartLoc);
+ }
+ }
+ this.expect(endDelim);
+ if (allowSpread) {
+ nodeStart.inexact = inexact;
+ }
+ const out = this.finishNode(nodeStart, "ObjectTypeAnnotation");
+ this.state.inType = oldInType;
+ return out;
+ }
+ flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact) {
+ if (this.eat(21)) {
+ const isInexactToken = this.match(12) || this.match(13) || this.match(8) || this.match(9);
+ if (isInexactToken) {
+ if (!allowSpread) {
+ this.raise(FlowErrors.InexactInsideNonObject, this.state.lastTokStartLoc);
+ } else if (!allowInexact) {
+ this.raise(FlowErrors.InexactInsideExact, this.state.lastTokStartLoc);
+ }
+ if (variance) {
+ this.raise(FlowErrors.InexactVariance, variance);
+ }
+ return null;
+ }
+ if (!allowSpread) {
+ this.raise(FlowErrors.UnexpectedSpreadType, this.state.lastTokStartLoc);
+ }
+ if (protoStartLoc != null) {
+ this.unexpected(protoStartLoc);
+ }
+ if (variance) {
+ this.raise(FlowErrors.SpreadVariance, variance);
+ }
+ node.argument = this.flowParseType();
+ return this.finishNode(node, "ObjectTypeSpreadProperty");
+ } else {
+ node.key = this.flowParseObjectPropertyKey();
+ node.static = isStatic;
+ node.proto = protoStartLoc != null;
+ node.kind = kind;
+ let optional = false;
+ if (this.match(47) || this.match(10)) {
+ node.method = true;
+ if (protoStartLoc != null) {
+ this.unexpected(protoStartLoc);
+ }
+ if (variance) {
+ this.unexpected(variance.loc.start);
+ }
+ node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start));
+ if (kind === "get" || kind === "set") {
+ this.flowCheckGetterSetterParams(node);
+ }
+ if (!allowSpread && node.key.name === "constructor" && node.value.this) {
+ this.raise(FlowErrors.ThisParamBannedInConstructor, node.value.this);
+ }
+ } else {
+ if (kind !== "init") this.unexpected();
+ node.method = false;
+ if (this.eat(17)) {
+ optional = true;
+ }
+ node.value = this.flowParseTypeInitialiser();
+ node.variance = variance;
+ }
+ node.optional = optional;
+ return this.finishNode(node, "ObjectTypeProperty");
+ }
+ }
+ flowCheckGetterSetterParams(property) {
+ const paramCount = property.kind === "get" ? 0 : 1;
+ const length = property.value.params.length + (property.value.rest ? 1 : 0);
+ if (property.value.this) {
+ this.raise(property.kind === "get" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam, property.value.this);
+ }
+ if (length !== paramCount) {
+ this.raise(property.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, property);
+ }
+ if (property.kind === "set" && property.value.rest) {
+ this.raise(Errors.BadSetterRestParameter, property);
+ }
+ }
+ flowObjectTypeSemicolon() {
+ if (!this.eat(13) && !this.eat(12) && !this.match(8) && !this.match(9)) {
+ this.unexpected();
+ }
+ }
+ flowParseQualifiedTypeIdentifier(startLoc, id) {
+ startLoc != null ? startLoc : startLoc = this.state.startLoc;
+ let node = id || this.flowParseRestrictedIdentifier(true);
+ while (this.eat(16)) {
+ const node2 = this.startNodeAt(startLoc);
+ node2.qualification = node;
+ node2.id = this.flowParseRestrictedIdentifier(true);
+ node = this.finishNode(node2, "QualifiedTypeIdentifier");
+ }
+ return node;
+ }
+ flowParseGenericType(startLoc, id) {
+ const node = this.startNodeAt(startLoc);
+ node.typeParameters = null;
+ node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id);
+ if (this.match(47)) {
+ node.typeParameters = this.flowParseTypeParameterInstantiation();
+ }
+ return this.finishNode(node, "GenericTypeAnnotation");
+ }
+ flowParseTypeofType() {
+ const node = this.startNode();
+ this.expect(87);
+ node.argument = this.flowParsePrimaryType();
+ return this.finishNode(node, "TypeofTypeAnnotation");
+ }
+ flowParseTupleType() {
+ const node = this.startNode();
+ node.types = [];
+ this.expect(0);
+ while (this.state.pos < this.length && !this.match(3)) {
+ node.types.push(this.flowParseType());
+ if (this.match(3)) break;
+ this.expect(12);
+ }
+ this.expect(3);
+ return this.finishNode(node, "TupleTypeAnnotation");
+ }
+ flowParseFunctionTypeParam(first) {
+ let name = null;
+ let optional = false;
+ let typeAnnotation = null;
+ const node = this.startNode();
+ const lh = this.lookahead();
+ const isThis = this.state.type === 78;
+ if (lh.type === 14 || lh.type === 17) {
+ if (isThis && !first) {
+ this.raise(FlowErrors.ThisParamMustBeFirst, node);
+ }
+ name = this.parseIdentifier(isThis);
+ if (this.eat(17)) {
+ optional = true;
+ if (isThis) {
+ this.raise(FlowErrors.ThisParamMayNotBeOptional, node);
+ }
+ }
+ typeAnnotation = this.flowParseTypeInitialiser();
+ } else {
+ typeAnnotation = this.flowParseType();
+ }
+ node.name = name;
+ node.optional = optional;
+ node.typeAnnotation = typeAnnotation;
+ return this.finishNode(node, "FunctionTypeParam");
+ }
+ reinterpretTypeAsFunctionTypeParam(type) {
+ const node = this.startNodeAt(type.loc.start);
+ node.name = null;
+ node.optional = false;
+ node.typeAnnotation = type;
+ return this.finishNode(node, "FunctionTypeParam");
+ }
+ flowParseFunctionTypeParams(params = []) {
+ let rest = null;
+ let _this = null;
+ if (this.match(78)) {
+ _this = this.flowParseFunctionTypeParam(true);
+ _this.name = null;
+ if (!this.match(11)) {
+ this.expect(12);
+ }
+ }
+ while (!this.match(11) && !this.match(21)) {
+ params.push(this.flowParseFunctionTypeParam(false));
+ if (!this.match(11)) {
+ this.expect(12);
+ }
+ }
+ if (this.eat(21)) {
+ rest = this.flowParseFunctionTypeParam(false);
+ }
+ return {
+ params,
+ rest,
+ _this
+ };
+ }
+ flowIdentToTypeAnnotation(startLoc, node, id) {
+ switch (id.name) {
+ case "any":
+ return this.finishNode(node, "AnyTypeAnnotation");
+ case "bool":
+ case "boolean":
+ return this.finishNode(node, "BooleanTypeAnnotation");
+ case "mixed":
+ return this.finishNode(node, "MixedTypeAnnotation");
+ case "empty":
+ return this.finishNode(node, "EmptyTypeAnnotation");
+ case "number":
+ return this.finishNode(node, "NumberTypeAnnotation");
+ case "string":
+ return this.finishNode(node, "StringTypeAnnotation");
+ case "symbol":
+ return this.finishNode(node, "SymbolTypeAnnotation");
+ default:
+ this.checkNotUnderscore(id.name);
+ return this.flowParseGenericType(startLoc, id);
+ }
+ }
+ flowParsePrimaryType() {
+ const startLoc = this.state.startLoc;
+ const node = this.startNode();
+ let tmp;
+ let type;
+ let isGroupedType = false;
+ const oldNoAnonFunctionType = this.state.noAnonFunctionType;
+ switch (this.state.type) {
+ case 5:
+ return this.flowParseObjectType({
+ allowStatic: false,
+ allowExact: false,
+ allowSpread: true,
+ allowProto: false,
+ allowInexact: true
+ });
+ case 6:
+ return this.flowParseObjectType({
+ allowStatic: false,
+ allowExact: true,
+ allowSpread: true,
+ allowProto: false,
+ allowInexact: false
+ });
+ case 0:
+ this.state.noAnonFunctionType = false;
+ type = this.flowParseTupleType();
+ this.state.noAnonFunctionType = oldNoAnonFunctionType;
+ return type;
+ case 47:
+ {
+ const node = this.startNode();
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ this.expect(10);
+ tmp = this.flowParseFunctionTypeParams();
+ node.params = tmp.params;
+ node.rest = tmp.rest;
+ node.this = tmp._this;
+ this.expect(11);
+ this.expect(19);
+ node.returnType = this.flowParseType();
+ return this.finishNode(node, "FunctionTypeAnnotation");
+ }
+ case 10:
+ {
+ const node = this.startNode();
+ this.next();
+ if (!this.match(11) && !this.match(21)) {
+ if (tokenIsIdentifier(this.state.type) || this.match(78)) {
+ const token = this.lookahead().type;
+ isGroupedType = token !== 17 && token !== 14;
+ } else {
+ isGroupedType = true;
+ }
+ }
+ if (isGroupedType) {
+ this.state.noAnonFunctionType = false;
+ type = this.flowParseType();
+ this.state.noAnonFunctionType = oldNoAnonFunctionType;
+ if (this.state.noAnonFunctionType || !(this.match(12) || this.match(11) && this.lookahead().type === 19)) {
+ this.expect(11);
+ return type;
+ } else {
+ this.eat(12);
+ }
+ }
+ if (type) {
+ tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]);
+ } else {
+ tmp = this.flowParseFunctionTypeParams();
+ }
+ node.params = tmp.params;
+ node.rest = tmp.rest;
+ node.this = tmp._this;
+ this.expect(11);
+ this.expect(19);
+ node.returnType = this.flowParseType();
+ node.typeParameters = null;
+ return this.finishNode(node, "FunctionTypeAnnotation");
+ }
+ case 134:
+ return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation");
+ case 85:
+ case 86:
+ node.value = this.match(85);
+ this.next();
+ return this.finishNode(node, "BooleanLiteralTypeAnnotation");
+ case 53:
+ if (this.state.value === "-") {
+ this.next();
+ if (this.match(135)) {
+ return this.parseLiteralAtNode(-this.state.value, "NumberLiteralTypeAnnotation", node);
+ }
+ if (this.match(136)) {
+ return this.parseLiteralAtNode(-this.state.value, "BigIntLiteralTypeAnnotation", node);
+ }
+ throw this.raise(FlowErrors.UnexpectedSubtractionOperand, this.state.startLoc);
+ }
+ throw this.unexpected();
+ case 135:
+ return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation");
+ case 136:
+ return this.parseLiteral(this.state.value, "BigIntLiteralTypeAnnotation");
+ case 88:
+ this.next();
+ return this.finishNode(node, "VoidTypeAnnotation");
+ case 84:
+ this.next();
+ return this.finishNode(node, "NullLiteralTypeAnnotation");
+ case 78:
+ this.next();
+ return this.finishNode(node, "ThisTypeAnnotation");
+ case 55:
+ this.next();
+ return this.finishNode(node, "ExistsTypeAnnotation");
+ case 87:
+ return this.flowParseTypeofType();
+ default:
+ if (tokenIsKeyword(this.state.type)) {
+ const label = tokenLabelName(this.state.type);
+ this.next();
+ return super.createIdentifier(node, label);
+ } else if (tokenIsIdentifier(this.state.type)) {
+ if (this.isContextual(129)) {
+ return this.flowParseInterfaceType();
+ }
+ return this.flowIdentToTypeAnnotation(startLoc, node, this.parseIdentifier());
+ }
+ }
+ throw this.unexpected();
+ }
+ flowParsePostfixType() {
+ const startLoc = this.state.startLoc;
+ let type = this.flowParsePrimaryType();
+ let seenOptionalIndexedAccess = false;
+ while ((this.match(0) || this.match(18)) && !this.canInsertSemicolon()) {
+ const node = this.startNodeAt(startLoc);
+ const optional = this.eat(18);
+ seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional;
+ this.expect(0);
+ if (!optional && this.match(3)) {
+ node.elementType = type;
+ this.next();
+ type = this.finishNode(node, "ArrayTypeAnnotation");
+ } else {
+ node.objectType = type;
+ node.indexType = this.flowParseType();
+ this.expect(3);
+ if (seenOptionalIndexedAccess) {
+ node.optional = optional;
+ type = this.finishNode(node, "OptionalIndexedAccessType");
+ } else {
+ type = this.finishNode(node, "IndexedAccessType");
+ }
+ }
+ }
+ return type;
+ }
+ flowParsePrefixType() {
+ const node = this.startNode();
+ if (this.eat(17)) {
+ node.typeAnnotation = this.flowParsePrefixType();
+ return this.finishNode(node, "NullableTypeAnnotation");
+ } else {
+ return this.flowParsePostfixType();
+ }
+ }
+ flowParseAnonFunctionWithoutParens() {
+ const param = this.flowParsePrefixType();
+ if (!this.state.noAnonFunctionType && this.eat(19)) {
+ const node = this.startNodeAt(param.loc.start);
+ node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];
+ node.rest = null;
+ node.this = null;
+ node.returnType = this.flowParseType();
+ node.typeParameters = null;
+ return this.finishNode(node, "FunctionTypeAnnotation");
+ }
+ return param;
+ }
+ flowParseIntersectionType() {
+ const node = this.startNode();
+ this.eat(45);
+ const type = this.flowParseAnonFunctionWithoutParens();
+ node.types = [type];
+ while (this.eat(45)) {
+ node.types.push(this.flowParseAnonFunctionWithoutParens());
+ }
+ return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation");
+ }
+ flowParseUnionType() {
+ const node = this.startNode();
+ this.eat(43);
+ const type = this.flowParseIntersectionType();
+ node.types = [type];
+ while (this.eat(43)) {
+ node.types.push(this.flowParseIntersectionType());
+ }
+ return node.types.length === 1 ? type : this.finishNode(node, "UnionTypeAnnotation");
+ }
+ flowParseType() {
+ const oldInType = this.state.inType;
+ this.state.inType = true;
+ const type = this.flowParseUnionType();
+ this.state.inType = oldInType;
+ return type;
+ }
+ flowParseTypeOrImplicitInstantiation() {
+ if (this.state.type === 132 && this.state.value === "_") {
+ const startLoc = this.state.startLoc;
+ const node = this.parseIdentifier();
+ return this.flowParseGenericType(startLoc, node);
+ } else {
+ return this.flowParseType();
+ }
+ }
+ flowParseTypeAnnotation() {
+ const node = this.startNode();
+ node.typeAnnotation = this.flowParseTypeInitialiser();
+ return this.finishNode(node, "TypeAnnotation");
+ }
+ flowParseTypeAnnotatableIdentifier(allowPrimitiveOverride) {
+ const ident = allowPrimitiveOverride ? this.parseIdentifier() : this.flowParseRestrictedIdentifier();
+ if (this.match(14)) {
+ ident.typeAnnotation = this.flowParseTypeAnnotation();
+ this.resetEndLocation(ident);
+ }
+ return ident;
+ }
+ typeCastToParameter(node) {
+ node.expression.typeAnnotation = node.typeAnnotation;
+ this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);
+ return node.expression;
+ }
+ flowParseVariance() {
+ let variance = null;
+ if (this.match(53)) {
+ variance = this.startNode();
+ if (this.state.value === "+") {
+ variance.kind = "plus";
+ } else {
+ variance.kind = "minus";
+ }
+ this.next();
+ return this.finishNode(variance, "Variance");
+ }
+ return variance;
+ }
+ parseFunctionBody(node, allowExpressionBody, isMethod = false) {
+ if (allowExpressionBody) {
+ this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod));
+ return;
+ }
+ super.parseFunctionBody(node, false, isMethod);
+ }
+ parseFunctionBodyAndFinish(node, type, isMethod = false) {
+ if (this.match(14)) {
+ const typeNode = this.startNode();
+ [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser();
+ node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, "TypeAnnotation") : null;
+ }
+ return super.parseFunctionBodyAndFinish(node, type, isMethod);
+ }
+ parseStatementLike(flags) {
+ if (this.state.strict && this.isContextual(129)) {
+ const lookahead = this.lookahead();
+ if (tokenIsKeywordOrIdentifier(lookahead.type)) {
+ const node = this.startNode();
+ this.next();
+ return this.flowParseInterface(node);
+ }
+ } else if (this.isContextual(126)) {
+ const node = this.startNode();
+ this.next();
+ return this.flowParseEnumDeclaration(node);
+ }
+ const stmt = super.parseStatementLike(flags);
+ if (this.flowPragma === undefined && !this.isValidDirective(stmt)) {
+ this.flowPragma = null;
+ }
+ return stmt;
+ }
+ parseExpressionStatement(node, expr, decorators) {
+ if (expr.type === "Identifier") {
+ if (expr.name === "declare") {
+ if (this.match(80) || tokenIsIdentifier(this.state.type) || this.match(68) || this.match(74) || this.match(82)) {
+ return this.flowParseDeclare(node);
+ }
+ } else if (tokenIsIdentifier(this.state.type)) {
+ if (expr.name === "interface") {
+ return this.flowParseInterface(node);
+ } else if (expr.name === "type") {
+ return this.flowParseTypeAlias(node);
+ } else if (expr.name === "opaque") {
+ return this.flowParseOpaqueType(node, false);
+ }
+ }
+ }
+ return super.parseExpressionStatement(node, expr, decorators);
+ }
+ shouldParseExportDeclaration() {
+ const {
+ type
+ } = this.state;
+ if (type === 126 || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {
+ return !this.state.containsEsc;
+ }
+ return super.shouldParseExportDeclaration();
+ }
+ isExportDefaultSpecifier() {
+ const {
+ type
+ } = this.state;
+ if (type === 126 || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {
+ return this.state.containsEsc;
+ }
+ return super.isExportDefaultSpecifier();
+ }
+ parseExportDefaultExpression() {
+ if (this.isContextual(126)) {
+ const node = this.startNode();
+ this.next();
+ return this.flowParseEnumDeclaration(node);
+ }
+ return super.parseExportDefaultExpression();
+ }
+ parseConditional(expr, startLoc, refExpressionErrors) {
+ if (!this.match(17)) return expr;
+ if (this.state.maybeInArrowParameters) {
+ const nextCh = this.lookaheadCharCode();
+ if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) {
+ this.setOptionalParametersError(refExpressionErrors);
+ return expr;
+ }
+ }
+ this.expect(17);
+ const state = this.state.clone();
+ const originalNoArrowAt = this.state.noArrowAt;
+ const node = this.startNodeAt(startLoc);
+ let {
+ consequent,
+ failed
+ } = this.tryParseConditionalConsequent();
+ let [valid, invalid] = this.getArrowLikeExpressions(consequent);
+ if (failed || invalid.length > 0) {
+ const noArrowAt = [...originalNoArrowAt];
+ if (invalid.length > 0) {
+ this.state = state;
+ this.state.noArrowAt = noArrowAt;
+ for (let i = 0; i < invalid.length; i++) {
+ noArrowAt.push(invalid[i].start);
+ }
+ ({
+ consequent,
+ failed
+ } = this.tryParseConditionalConsequent());
+ [valid, invalid] = this.getArrowLikeExpressions(consequent);
+ }
+ if (failed && valid.length > 1) {
+ this.raise(FlowErrors.AmbiguousConditionalArrow, state.startLoc);
+ }
+ if (failed && valid.length === 1) {
+ this.state = state;
+ noArrowAt.push(valid[0].start);
+ this.state.noArrowAt = noArrowAt;
+ ({
+ consequent,
+ failed
+ } = this.tryParseConditionalConsequent());
+ }
+ }
+ this.getArrowLikeExpressions(consequent, true);
+ this.state.noArrowAt = originalNoArrowAt;
+ this.expect(14);
+ node.test = expr;
+ node.consequent = consequent;
+ node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(undefined, undefined));
+ return this.finishNode(node, "ConditionalExpression");
+ }
+ tryParseConditionalConsequent() {
+ this.state.noArrowParamsConversionAt.push(this.state.start);
+ const consequent = this.parseMaybeAssignAllowIn();
+ const failed = !this.match(14);
+ this.state.noArrowParamsConversionAt.pop();
+ return {
+ consequent,
+ failed
+ };
+ }
+ getArrowLikeExpressions(node, disallowInvalid) {
+ const stack = [node];
+ const arrows = [];
+ while (stack.length !== 0) {
+ const node = stack.pop();
+ if (node.type === "ArrowFunctionExpression" && node.body.type !== "BlockStatement") {
+ if (node.typeParameters || !node.returnType) {
+ this.finishArrowValidation(node);
+ } else {
+ arrows.push(node);
+ }
+ stack.push(node.body);
+ } else if (node.type === "ConditionalExpression") {
+ stack.push(node.consequent);
+ stack.push(node.alternate);
+ }
+ }
+ if (disallowInvalid) {
+ arrows.forEach(node => this.finishArrowValidation(node));
+ return [arrows, []];
+ }
+ return partition(arrows, node => node.params.every(param => this.isAssignable(param, true)));
+ }
+ finishArrowValidation(node) {
+ var _node$extra;
+ this.toAssignableList(node.params, (_node$extra = node.extra) == null ? void 0 : _node$extra.trailingCommaLoc, false);
+ this.scope.enter(514 | 4);
+ super.checkParams(node, false, true);
+ this.scope.exit();
+ }
+ forwardNoArrowParamsConversionAt(node, parse) {
+ let result;
+ if (this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) {
+ this.state.noArrowParamsConversionAt.push(this.state.start);
+ result = parse();
+ this.state.noArrowParamsConversionAt.pop();
+ } else {
+ result = parse();
+ }
+ return result;
+ }
+ parseParenItem(node, startLoc) {
+ const newNode = super.parseParenItem(node, startLoc);
+ if (this.eat(17)) {
+ newNode.optional = true;
+ this.resetEndLocation(node);
+ }
+ if (this.match(14)) {
+ const typeCastNode = this.startNodeAt(startLoc);
+ typeCastNode.expression = newNode;
+ typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();
+ return this.finishNode(typeCastNode, "TypeCastExpression");
+ }
+ return newNode;
+ }
+ assertModuleNodeAllowed(node) {
+ if (node.type === "ImportDeclaration" && (node.importKind === "type" || node.importKind === "typeof") || node.type === "ExportNamedDeclaration" && node.exportKind === "type" || node.type === "ExportAllDeclaration" && node.exportKind === "type") {
+ return;
+ }
+ super.assertModuleNodeAllowed(node);
+ }
+ parseExportDeclaration(node) {
+ if (this.isContextual(130)) {
+ node.exportKind = "type";
+ const declarationNode = this.startNode();
+ this.next();
+ if (this.match(5)) {
+ node.specifiers = this.parseExportSpecifiers(true);
+ super.parseExportFrom(node);
+ return null;
+ } else {
+ return this.flowParseTypeAlias(declarationNode);
+ }
+ } else if (this.isContextual(131)) {
+ node.exportKind = "type";
+ const declarationNode = this.startNode();
+ this.next();
+ return this.flowParseOpaqueType(declarationNode, false);
+ } else if (this.isContextual(129)) {
+ node.exportKind = "type";
+ const declarationNode = this.startNode();
+ this.next();
+ return this.flowParseInterface(declarationNode);
+ } else if (this.isContextual(126)) {
+ node.exportKind = "value";
+ const declarationNode = this.startNode();
+ this.next();
+ return this.flowParseEnumDeclaration(declarationNode);
+ } else {
+ return super.parseExportDeclaration(node);
+ }
+ }
+ eatExportStar(node) {
+ if (super.eatExportStar(node)) return true;
+ if (this.isContextual(130) && this.lookahead().type === 55) {
+ node.exportKind = "type";
+ this.next();
+ this.next();
+ return true;
+ }
+ return false;
+ }
+ maybeParseExportNamespaceSpecifier(node) {
+ const {
+ startLoc
+ } = this.state;
+ const hasNamespace = super.maybeParseExportNamespaceSpecifier(node);
+ if (hasNamespace && node.exportKind === "type") {
+ this.unexpected(startLoc);
+ }
+ return hasNamespace;
+ }
+ parseClassId(node, isStatement, optionalId) {
+ super.parseClassId(node, isStatement, optionalId);
+ if (this.match(47)) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ }
+ }
+ parseClassMember(classBody, member, state) {
+ const {
+ startLoc
+ } = this.state;
+ if (this.isContextual(125)) {
+ if (super.parseClassMemberFromModifier(classBody, member)) {
+ return;
+ }
+ member.declare = true;
+ }
+ super.parseClassMember(classBody, member, state);
+ if (member.declare) {
+ if (member.type !== "ClassProperty" && member.type !== "ClassPrivateProperty" && member.type !== "PropertyDefinition") {
+ this.raise(FlowErrors.DeclareClassElement, startLoc);
+ } else if (member.value) {
+ this.raise(FlowErrors.DeclareClassFieldInitializer, member.value);
+ }
+ }
+ }
+ isIterator(word) {
+ return word === "iterator" || word === "asyncIterator";
+ }
+ readIterator() {
+ const word = super.readWord1();
+ const fullWord = "@@" + word;
+ if (!this.isIterator(word) || !this.state.inType) {
+ this.raise(Errors.InvalidIdentifier, this.state.curPosition(), {
+ identifierName: fullWord
+ });
+ }
+ this.finishToken(132, fullWord);
+ }
+ getTokenFromCode(code) {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (code === 123 && next === 124) {
+ this.finishOp(6, 2);
+ } else if (this.state.inType && (code === 62 || code === 60)) {
+ this.finishOp(code === 62 ? 48 : 47, 1);
+ } else if (this.state.inType && code === 63) {
+ if (next === 46) {
+ this.finishOp(18, 2);
+ } else {
+ this.finishOp(17, 1);
+ }
+ } else if (isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))) {
+ this.state.pos += 2;
+ this.readIterator();
+ } else {
+ super.getTokenFromCode(code);
+ }
+ }
+ isAssignable(node, isBinding) {
+ if (node.type === "TypeCastExpression") {
+ return this.isAssignable(node.expression, isBinding);
+ } else {
+ return super.isAssignable(node, isBinding);
+ }
+ }
+ toAssignable(node, isLHS = false) {
+ if (!isLHS && node.type === "AssignmentExpression" && node.left.type === "TypeCastExpression") {
+ node.left = this.typeCastToParameter(node.left);
+ }
+ super.toAssignable(node, isLHS);
+ }
+ toAssignableList(exprList, trailingCommaLoc, isLHS) {
+ for (let i = 0; i < exprList.length; i++) {
+ const expr = exprList[i];
+ if ((expr == null ? void 0 : expr.type) === "TypeCastExpression") {
+ exprList[i] = this.typeCastToParameter(expr);
+ }
+ }
+ super.toAssignableList(exprList, trailingCommaLoc, isLHS);
+ }
+ toReferencedList(exprList, isParenthesizedExpr) {
+ for (let i = 0; i < exprList.length; i++) {
+ var _expr$extra;
+ const expr = exprList[i];
+ if (expr && expr.type === "TypeCastExpression" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) {
+ this.raise(FlowErrors.TypeCastInPattern, expr.typeAnnotation);
+ }
+ }
+ return exprList;
+ }
+ parseArrayLike(close, isTuple, refExpressionErrors) {
+ const node = super.parseArrayLike(close, isTuple, refExpressionErrors);
+ if (refExpressionErrors != null && !this.state.maybeInArrowParameters) {
+ this.toReferencedList(node.elements);
+ }
+ return node;
+ }
+ isValidLVal(type, disallowCallExpression, isParenthesized, binding) {
+ return type === "TypeCastExpression" || super.isValidLVal(type, disallowCallExpression, isParenthesized, binding);
+ }
+ parseClassProperty(node) {
+ if (this.match(14)) {
+ node.typeAnnotation = this.flowParseTypeAnnotation();
+ }
+ return super.parseClassProperty(node);
+ }
+ parseClassPrivateProperty(node) {
+ if (this.match(14)) {
+ node.typeAnnotation = this.flowParseTypeAnnotation();
+ }
+ return super.parseClassPrivateProperty(node);
+ }
+ isClassMethod() {
+ return this.match(47) || super.isClassMethod();
+ }
+ isClassProperty() {
+ return this.match(14) || super.isClassProperty();
+ }
+ isNonstaticConstructor(method) {
+ return !this.match(14) && super.isNonstaticConstructor(method);
+ }
+ pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
+ if (method.variance) {
+ this.unexpected(method.variance.loc.start);
+ }
+ delete method.variance;
+ if (this.match(47)) {
+ method.typeParameters = this.flowParseTypeParameterDeclaration();
+ }
+ super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);
+ if (method.params && isConstructor) {
+ const params = method.params;
+ if (params.length > 0 && this.isThisParam(params[0])) {
+ this.raise(FlowErrors.ThisParamBannedInConstructor, method);
+ }
+ } else if (method.type === "MethodDefinition" && isConstructor && method.value.params) {
+ const params = method.value.params;
+ if (params.length > 0 && this.isThisParam(params[0])) {
+ this.raise(FlowErrors.ThisParamBannedInConstructor, method);
+ }
+ }
+ }
+ pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {
+ if (method.variance) {
+ this.unexpected(method.variance.loc.start);
+ }
+ delete method.variance;
+ if (this.match(47)) {
+ method.typeParameters = this.flowParseTypeParameterDeclaration();
+ }
+ super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);
+ }
+ parseClassSuper(node) {
+ super.parseClassSuper(node);
+ if (node.superClass && (this.match(47) || this.match(51))) {
+ node.superTypeParameters = this.flowParseTypeParameterInstantiationInExpression();
+ }
+ if (this.isContextual(113)) {
+ this.next();
+ const implemented = node.implements = [];
+ do {
+ const node = this.startNode();
+ node.id = this.flowParseRestrictedIdentifier(true);
+ if (this.match(47)) {
+ node.typeParameters = this.flowParseTypeParameterInstantiation();
+ } else {
+ node.typeParameters = null;
+ }
+ implemented.push(this.finishNode(node, "ClassImplements"));
+ } while (this.eat(12));
+ }
+ }
+ checkGetterSetterParams(method) {
+ super.checkGetterSetterParams(method);
+ const params = this.getObjectOrClassMethodParams(method);
+ if (params.length > 0) {
+ const param = params[0];
+ if (this.isThisParam(param) && method.kind === "get") {
+ this.raise(FlowErrors.GetterMayNotHaveThisParam, param);
+ } else if (this.isThisParam(param)) {
+ this.raise(FlowErrors.SetterMayNotHaveThisParam, param);
+ }
+ }
+ }
+ parsePropertyNamePrefixOperator(node) {
+ node.variance = this.flowParseVariance();
+ }
+ parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {
+ if (prop.variance) {
+ this.unexpected(prop.variance.loc.start);
+ }
+ delete prop.variance;
+ let typeParameters;
+ if (this.match(47) && !isAccessor) {
+ typeParameters = this.flowParseTypeParameterDeclaration();
+ if (!this.match(10)) this.unexpected();
+ }
+ const result = super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors);
+ if (typeParameters) {
+ (result.value || result).typeParameters = typeParameters;
+ }
+ return result;
+ }
+ parseFunctionParamType(param) {
+ if (this.eat(17)) {
+ if (param.type !== "Identifier") {
+ this.raise(FlowErrors.PatternIsOptional, param);
+ }
+ if (this.isThisParam(param)) {
+ this.raise(FlowErrors.ThisParamMayNotBeOptional, param);
+ }
+ param.optional = true;
+ }
+ if (this.match(14)) {
+ param.typeAnnotation = this.flowParseTypeAnnotation();
+ } else if (this.isThisParam(param)) {
+ this.raise(FlowErrors.ThisParamAnnotationRequired, param);
+ }
+ if (this.match(29) && this.isThisParam(param)) {
+ this.raise(FlowErrors.ThisParamNoDefault, param);
+ }
+ this.resetEndLocation(param);
+ return param;
+ }
+ parseMaybeDefault(startLoc, left) {
+ const node = super.parseMaybeDefault(startLoc, left);
+ if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {
+ this.raise(FlowErrors.TypeBeforeInitializer, node.typeAnnotation);
+ }
+ return node;
+ }
+ checkImportReflection(node) {
+ super.checkImportReflection(node);
+ if (node.module && node.importKind !== "value") {
+ this.raise(FlowErrors.ImportReflectionHasImportType, node.specifiers[0].loc.start);
+ }
+ }
+ parseImportSpecifierLocal(node, specifier, type) {
+ specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier();
+ node.specifiers.push(this.finishImportSpecifier(specifier, type));
+ }
+ isPotentialImportPhase(isExport) {
+ if (super.isPotentialImportPhase(isExport)) return true;
+ if (this.isContextual(130)) {
+ if (!isExport) return true;
+ const ch = this.lookaheadCharCode();
+ return ch === 123 || ch === 42;
+ }
+ return !isExport && this.isContextual(87);
+ }
+ applyImportPhase(node, isExport, phase, loc) {
+ super.applyImportPhase(node, isExport, phase, loc);
+ if (isExport) {
+ if (!phase && this.match(65)) {
+ return;
+ }
+ node.exportKind = phase === "type" ? phase : "value";
+ } else {
+ if (phase === "type" && this.match(55)) this.unexpected();
+ node.importKind = phase === "type" || phase === "typeof" ? phase : "value";
+ }
+ }
+ parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) {
+ const firstIdent = specifier.imported;
+ let specifierTypeKind = null;
+ if (firstIdent.type === "Identifier") {
+ if (firstIdent.name === "type") {
+ specifierTypeKind = "type";
+ } else if (firstIdent.name === "typeof") {
+ specifierTypeKind = "typeof";
+ }
+ }
+ let isBinding = false;
+ if (this.isContextual(93) && !this.isLookaheadContextual("as")) {
+ const as_ident = this.parseIdentifier(true);
+ if (specifierTypeKind !== null && !tokenIsKeywordOrIdentifier(this.state.type)) {
+ specifier.imported = as_ident;
+ specifier.importKind = specifierTypeKind;
+ specifier.local = this.cloneIdentifier(as_ident);
+ } else {
+ specifier.imported = firstIdent;
+ specifier.importKind = null;
+ specifier.local = this.parseIdentifier();
+ }
+ } else {
+ if (specifierTypeKind !== null && tokenIsKeywordOrIdentifier(this.state.type)) {
+ specifier.imported = this.parseIdentifier(true);
+ specifier.importKind = specifierTypeKind;
+ } else {
+ if (importedIsString) {
+ throw this.raise(Errors.ImportBindingIsString, specifier, {
+ importName: firstIdent.value
+ });
+ }
+ specifier.imported = firstIdent;
+ specifier.importKind = null;
+ }
+ if (this.eatContextual(93)) {
+ specifier.local = this.parseIdentifier();
+ } else {
+ isBinding = true;
+ specifier.local = this.cloneIdentifier(specifier.imported);
+ }
+ }
+ const specifierIsTypeImport = hasTypeImportKind(specifier);
+ if (isInTypeOnlyImport && specifierIsTypeImport) {
+ this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, specifier);
+ }
+ if (isInTypeOnlyImport || specifierIsTypeImport) {
+ this.checkReservedType(specifier.local.name, specifier.local.loc.start, true);
+ }
+ if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) {
+ this.checkReservedWord(specifier.local.name, specifier.loc.start, true, true);
+ }
+ return this.finishImportSpecifier(specifier, "ImportSpecifier");
+ }
+ parseBindingAtom() {
+ switch (this.state.type) {
+ case 78:
+ return this.parseIdentifier(true);
+ default:
+ return super.parseBindingAtom();
+ }
+ }
+ parseFunctionParams(node, isConstructor) {
+ const kind = node.kind;
+ if (kind !== "get" && kind !== "set" && this.match(47)) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ }
+ super.parseFunctionParams(node, isConstructor);
+ }
+ parseVarId(decl, kind) {
+ super.parseVarId(decl, kind);
+ if (this.match(14)) {
+ decl.id.typeAnnotation = this.flowParseTypeAnnotation();
+ this.resetEndLocation(decl.id);
+ }
+ }
+ parseAsyncArrowFromCallExpression(node, call) {
+ if (this.match(14)) {
+ const oldNoAnonFunctionType = this.state.noAnonFunctionType;
+ this.state.noAnonFunctionType = true;
+ node.returnType = this.flowParseTypeAnnotation();
+ this.state.noAnonFunctionType = oldNoAnonFunctionType;
+ }
+ return super.parseAsyncArrowFromCallExpression(node, call);
+ }
+ shouldParseAsyncArrow() {
+ return this.match(14) || super.shouldParseAsyncArrow();
+ }
+ parseMaybeAssign(refExpressionErrors, afterLeftParse) {
+ var _jsx;
+ let state = null;
+ let jsx;
+ if (this.hasPlugin("jsx") && (this.match(143) || this.match(47))) {
+ state = this.state.clone();
+ jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state);
+ if (!jsx.error) return jsx.node;
+ const {
+ context
+ } = this.state;
+ const currentContext = context[context.length - 1];
+ if (currentContext === types.j_oTag || currentContext === types.j_expr) {
+ context.pop();
+ }
+ }
+ if ((_jsx = jsx) != null && _jsx.error || this.match(47)) {
+ var _jsx2, _jsx3;
+ state = state || this.state.clone();
+ let typeParameters;
+ const arrow = this.tryParse(abort => {
+ var _arrowExpression$extr;
+ typeParameters = this.flowParseTypeParameterDeclaration();
+ const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => {
+ const result = super.parseMaybeAssign(refExpressionErrors, afterLeftParse);
+ this.resetStartLocationFromNode(result, typeParameters);
+ return result;
+ });
+ if ((_arrowExpression$extr = arrowExpression.extra) != null && _arrowExpression$extr.parenthesized) abort();
+ const expr = this.maybeUnwrapTypeCastExpression(arrowExpression);
+ if (expr.type !== "ArrowFunctionExpression") abort();
+ expr.typeParameters = typeParameters;
+ this.resetStartLocationFromNode(expr, typeParameters);
+ return arrowExpression;
+ }, state);
+ let arrowExpression = null;
+ if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === "ArrowFunctionExpression") {
+ if (!arrow.error && !arrow.aborted) {
+ if (arrow.node.async) {
+ this.raise(FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction, typeParameters);
+ }
+ return arrow.node;
+ }
+ arrowExpression = arrow.node;
+ }
+ if ((_jsx2 = jsx) != null && _jsx2.node) {
+ this.state = jsx.failState;
+ return jsx.node;
+ }
+ if (arrowExpression) {
+ this.state = arrow.failState;
+ return arrowExpression;
+ }
+ if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error;
+ if (arrow.thrown) throw arrow.error;
+ throw this.raise(FlowErrors.UnexpectedTokenAfterTypeParameter, typeParameters);
+ }
+ return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);
+ }
+ parseArrow(node) {
+ if (this.match(14)) {
+ const result = this.tryParse(() => {
+ const oldNoAnonFunctionType = this.state.noAnonFunctionType;
+ this.state.noAnonFunctionType = true;
+ const typeNode = this.startNode();
+ [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser();
+ this.state.noAnonFunctionType = oldNoAnonFunctionType;
+ if (this.canInsertSemicolon()) this.unexpected();
+ if (!this.match(19)) this.unexpected();
+ return typeNode;
+ });
+ if (result.thrown) return null;
+ if (result.error) this.state = result.failState;
+ node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, "TypeAnnotation") : null;
+ }
+ return super.parseArrow(node);
+ }
+ shouldParseArrow(params) {
+ return this.match(14) || super.shouldParseArrow(params);
+ }
+ setArrowFunctionParameters(node, params) {
+ if (this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) {
+ node.params = params;
+ } else {
+ super.setArrowFunctionParameters(node, params);
+ }
+ }
+ checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) {
+ if (isArrowFunction && this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) {
+ return;
+ }
+ for (let i = 0; i < node.params.length; i++) {
+ if (this.isThisParam(node.params[i]) && i > 0) {
+ this.raise(FlowErrors.ThisParamMustBeFirst, node.params[i]);
+ }
+ }
+ super.checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged);
+ }
+ parseParenAndDistinguishExpression(canBeArrow) {
+ return super.parseParenAndDistinguishExpression(canBeArrow && !this.state.noArrowAt.includes(this.sourceToOffsetPos(this.state.start)));
+ }
+ parseSubscripts(base, startLoc, noCalls) {
+ if (base.type === "Identifier" && base.name === "async" && this.state.noArrowAt.includes(startLoc.index)) {
+ this.next();
+ const node = this.startNodeAt(startLoc);
+ node.callee = base;
+ node.arguments = super.parseCallExpressionArguments();
+ base = this.finishNode(node, "CallExpression");
+ } else if (base.type === "Identifier" && base.name === "async" && this.match(47)) {
+ const state = this.state.clone();
+ const arrow = this.tryParse(abort => this.parseAsyncArrowWithTypeParameters(startLoc) || abort(), state);
+ if (!arrow.error && !arrow.aborted) return arrow.node;
+ const result = this.tryParse(() => super.parseSubscripts(base, startLoc, noCalls), state);
+ if (result.node && !result.error) return result.node;
+ if (arrow.node) {
+ this.state = arrow.failState;
+ return arrow.node;
+ }
+ if (result.node) {
+ this.state = result.failState;
+ return result.node;
+ }
+ throw arrow.error || result.error;
+ }
+ return super.parseSubscripts(base, startLoc, noCalls);
+ }
+ parseSubscript(base, startLoc, noCalls, subscriptState) {
+ if (this.match(18) && this.isLookaheadToken_lt()) {
+ subscriptState.optionalChainMember = true;
+ if (noCalls) {
+ subscriptState.stop = true;
+ return base;
+ }
+ this.next();
+ const node = this.startNodeAt(startLoc);
+ node.callee = base;
+ node.typeArguments = this.flowParseTypeParameterInstantiationInExpression();
+ this.expect(10);
+ node.arguments = this.parseCallExpressionArguments();
+ node.optional = true;
+ return this.finishCallExpression(node, true);
+ } else if (!noCalls && this.shouldParseTypes() && (this.match(47) || this.match(51))) {
+ const node = this.startNodeAt(startLoc);
+ node.callee = base;
+ const result = this.tryParse(() => {
+ node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew();
+ this.expect(10);
+ node.arguments = super.parseCallExpressionArguments();
+ if (subscriptState.optionalChainMember) {
+ node.optional = false;
+ }
+ return this.finishCallExpression(node, subscriptState.optionalChainMember);
+ });
+ if (result.node) {
+ if (result.error) this.state = result.failState;
+ return result.node;
+ }
+ }
+ return super.parseSubscript(base, startLoc, noCalls, subscriptState);
+ }
+ parseNewCallee(node) {
+ super.parseNewCallee(node);
+ let targs = null;
+ if (this.shouldParseTypes() && this.match(47)) {
+ targs = this.tryParse(() => this.flowParseTypeParameterInstantiationCallOrNew()).node;
+ }
+ node.typeArguments = targs;
+ }
+ parseAsyncArrowWithTypeParameters(startLoc) {
+ const node = this.startNodeAt(startLoc);
+ this.parseFunctionParams(node, false);
+ if (!this.parseArrow(node)) return;
+ return super.parseArrowExpression(node, undefined, true);
+ }
+ readToken_mult_modulo(code) {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (code === 42 && next === 47 && this.state.hasFlowComment) {
+ this.state.hasFlowComment = false;
+ this.state.pos += 2;
+ this.nextToken();
+ return;
+ }
+ super.readToken_mult_modulo(code);
+ }
+ readToken_pipe_amp(code) {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (code === 124 && next === 125) {
+ this.finishOp(9, 2);
+ return;
+ }
+ super.readToken_pipe_amp(code);
+ }
+ parseTopLevel(file, program) {
+ const fileNode = super.parseTopLevel(file, program);
+ if (this.state.hasFlowComment) {
+ this.raise(FlowErrors.UnterminatedFlowComment, this.state.curPosition());
+ }
+ return fileNode;
+ }
+ skipBlockComment() {
+ if (this.hasPlugin("flowComments") && this.skipFlowComment()) {
+ if (this.state.hasFlowComment) {
+ throw this.raise(FlowErrors.NestedFlowComment, this.state.startLoc);
+ }
+ this.hasFlowCommentCompletion();
+ const commentSkip = this.skipFlowComment();
+ if (commentSkip) {
+ this.state.pos += commentSkip;
+ this.state.hasFlowComment = true;
+ }
+ return;
+ }
+ return super.skipBlockComment(this.state.hasFlowComment ? "*-/" : "*/");
+ }
+ skipFlowComment() {
+ const {
+ pos
+ } = this.state;
+ let shiftToFirstNonWhiteSpace = 2;
+ while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) {
+ shiftToFirstNonWhiteSpace++;
+ }
+ const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos);
+ const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1);
+ if (ch2 === 58 && ch3 === 58) {
+ return shiftToFirstNonWhiteSpace + 2;
+ }
+ if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === "flow-include") {
+ return shiftToFirstNonWhiteSpace + 12;
+ }
+ if (ch2 === 58 && ch3 !== 58) {
+ return shiftToFirstNonWhiteSpace;
+ }
+ return false;
+ }
+ hasFlowCommentCompletion() {
+ const end = this.input.indexOf("*/", this.state.pos);
+ if (end === -1) {
+ throw this.raise(Errors.UnterminatedComment, this.state.curPosition());
+ }
+ }
+ flowEnumErrorBooleanMemberNotInitialized(loc, {
+ enumName,
+ memberName
+ }) {
+ this.raise(FlowErrors.EnumBooleanMemberNotInitialized, loc, {
+ memberName,
+ enumName
+ });
+ }
+ flowEnumErrorInvalidMemberInitializer(loc, enumContext) {
+ return this.raise(!enumContext.explicitType ? FlowErrors.EnumInvalidMemberInitializerUnknownType : enumContext.explicitType === "symbol" ? FlowErrors.EnumInvalidMemberInitializerSymbolType : FlowErrors.EnumInvalidMemberInitializerPrimaryType, loc, enumContext);
+ }
+ flowEnumErrorNumberMemberNotInitialized(loc, details) {
+ this.raise(FlowErrors.EnumNumberMemberNotInitialized, loc, details);
+ }
+ flowEnumErrorStringMemberInconsistentlyInitialized(node, details) {
+ this.raise(FlowErrors.EnumStringMemberInconsistentlyInitialized, node, details);
+ }
+ flowEnumMemberInit() {
+ const startLoc = this.state.startLoc;
+ const endOfInit = () => this.match(12) || this.match(8);
+ switch (this.state.type) {
+ case 135:
+ {
+ const literal = this.parseNumericLiteral(this.state.value);
+ if (endOfInit()) {
+ return {
+ type: "number",
+ loc: literal.loc.start,
+ value: literal
+ };
+ }
+ return {
+ type: "invalid",
+ loc: startLoc
+ };
+ }
+ case 134:
+ {
+ const literal = this.parseStringLiteral(this.state.value);
+ if (endOfInit()) {
+ return {
+ type: "string",
+ loc: literal.loc.start,
+ value: literal
+ };
+ }
+ return {
+ type: "invalid",
+ loc: startLoc
+ };
+ }
+ case 85:
+ case 86:
+ {
+ const literal = this.parseBooleanLiteral(this.match(85));
+ if (endOfInit()) {
+ return {
+ type: "boolean",
+ loc: literal.loc.start,
+ value: literal
+ };
+ }
+ return {
+ type: "invalid",
+ loc: startLoc
+ };
+ }
+ default:
+ return {
+ type: "invalid",
+ loc: startLoc
+ };
+ }
+ }
+ flowEnumMemberRaw() {
+ const loc = this.state.startLoc;
+ const id = this.parseIdentifier(true);
+ const init = this.eat(29) ? this.flowEnumMemberInit() : {
+ type: "none",
+ loc
+ };
+ return {
+ id,
+ init
+ };
+ }
+ flowEnumCheckExplicitTypeMismatch(loc, context, expectedType) {
+ const {
+ explicitType
+ } = context;
+ if (explicitType === null) {
+ return;
+ }
+ if (explicitType !== expectedType) {
+ this.flowEnumErrorInvalidMemberInitializer(loc, context);
+ }
+ }
+ flowEnumMembers({
+ enumName,
+ explicitType
+ }) {
+ const seenNames = new Set();
+ const members = {
+ booleanMembers: [],
+ numberMembers: [],
+ stringMembers: [],
+ defaultedMembers: []
+ };
+ let hasUnknownMembers = false;
+ while (!this.match(8)) {
+ if (this.eat(21)) {
+ hasUnknownMembers = true;
+ break;
+ }
+ const memberNode = this.startNode();
+ const {
+ id,
+ init
+ } = this.flowEnumMemberRaw();
+ const memberName = id.name;
+ if (memberName === "") {
+ continue;
+ }
+ if (/^[a-z]/.test(memberName)) {
+ this.raise(FlowErrors.EnumInvalidMemberName, id, {
+ memberName,
+ suggestion: memberName[0].toUpperCase() + memberName.slice(1),
+ enumName
+ });
+ }
+ if (seenNames.has(memberName)) {
+ this.raise(FlowErrors.EnumDuplicateMemberName, id, {
+ memberName,
+ enumName
+ });
+ }
+ seenNames.add(memberName);
+ const context = {
+ enumName,
+ explicitType,
+ memberName
+ };
+ memberNode.id = id;
+ switch (init.type) {
+ case "boolean":
+ {
+ this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "boolean");
+ memberNode.init = init.value;
+ members.booleanMembers.push(this.finishNode(memberNode, "EnumBooleanMember"));
+ break;
+ }
+ case "number":
+ {
+ this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "number");
+ memberNode.init = init.value;
+ members.numberMembers.push(this.finishNode(memberNode, "EnumNumberMember"));
+ break;
+ }
+ case "string":
+ {
+ this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "string");
+ memberNode.init = init.value;
+ members.stringMembers.push(this.finishNode(memberNode, "EnumStringMember"));
+ break;
+ }
+ case "invalid":
+ {
+ throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context);
+ }
+ case "none":
+ {
+ switch (explicitType) {
+ case "boolean":
+ this.flowEnumErrorBooleanMemberNotInitialized(init.loc, context);
+ break;
+ case "number":
+ this.flowEnumErrorNumberMemberNotInitialized(init.loc, context);
+ break;
+ default:
+ members.defaultedMembers.push(this.finishNode(memberNode, "EnumDefaultedMember"));
+ }
+ }
+ }
+ if (!this.match(8)) {
+ this.expect(12);
+ }
+ }
+ return {
+ members,
+ hasUnknownMembers
+ };
+ }
+ flowEnumStringMembers(initializedMembers, defaultedMembers, {
+ enumName
+ }) {
+ if (initializedMembers.length === 0) {
+ return defaultedMembers;
+ } else if (defaultedMembers.length === 0) {
+ return initializedMembers;
+ } else if (defaultedMembers.length > initializedMembers.length) {
+ for (const member of initializedMembers) {
+ this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {
+ enumName
+ });
+ }
+ return defaultedMembers;
+ } else {
+ for (const member of defaultedMembers) {
+ this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {
+ enumName
+ });
+ }
+ return initializedMembers;
+ }
+ }
+ flowEnumParseExplicitType({
+ enumName
+ }) {
+ if (!this.eatContextual(102)) return null;
+ if (!tokenIsIdentifier(this.state.type)) {
+ throw this.raise(FlowErrors.EnumInvalidExplicitTypeUnknownSupplied, this.state.startLoc, {
+ enumName
+ });
+ }
+ const {
+ value
+ } = this.state;
+ this.next();
+ if (value !== "boolean" && value !== "number" && value !== "string" && value !== "symbol") {
+ this.raise(FlowErrors.EnumInvalidExplicitType, this.state.startLoc, {
+ enumName,
+ invalidEnumType: value
+ });
+ }
+ return value;
+ }
+ flowEnumBody(node, id) {
+ const enumName = id.name;
+ const nameLoc = id.loc.start;
+ const explicitType = this.flowEnumParseExplicitType({
+ enumName
+ });
+ this.expect(5);
+ const {
+ members,
+ hasUnknownMembers
+ } = this.flowEnumMembers({
+ enumName,
+ explicitType
+ });
+ node.hasUnknownMembers = hasUnknownMembers;
+ switch (explicitType) {
+ case "boolean":
+ node.explicitType = true;
+ node.members = members.booleanMembers;
+ this.expect(8);
+ return this.finishNode(node, "EnumBooleanBody");
+ case "number":
+ node.explicitType = true;
+ node.members = members.numberMembers;
+ this.expect(8);
+ return this.finishNode(node, "EnumNumberBody");
+ case "string":
+ node.explicitType = true;
+ node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {
+ enumName
+ });
+ this.expect(8);
+ return this.finishNode(node, "EnumStringBody");
+ case "symbol":
+ node.members = members.defaultedMembers;
+ this.expect(8);
+ return this.finishNode(node, "EnumSymbolBody");
+ default:
+ {
+ const empty = () => {
+ node.members = [];
+ this.expect(8);
+ return this.finishNode(node, "EnumStringBody");
+ };
+ node.explicitType = false;
+ const boolsLen = members.booleanMembers.length;
+ const numsLen = members.numberMembers.length;
+ const strsLen = members.stringMembers.length;
+ const defaultedLen = members.defaultedMembers.length;
+ if (!boolsLen && !numsLen && !strsLen && !defaultedLen) {
+ return empty();
+ } else if (!boolsLen && !numsLen) {
+ node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {
+ enumName
+ });
+ this.expect(8);
+ return this.finishNode(node, "EnumStringBody");
+ } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {
+ for (const member of members.defaultedMembers) {
+ this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, {
+ enumName,
+ memberName: member.id.name
+ });
+ }
+ node.members = members.booleanMembers;
+ this.expect(8);
+ return this.finishNode(node, "EnumBooleanBody");
+ } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {
+ for (const member of members.defaultedMembers) {
+ this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, {
+ enumName,
+ memberName: member.id.name
+ });
+ }
+ node.members = members.numberMembers;
+ this.expect(8);
+ return this.finishNode(node, "EnumNumberBody");
+ } else {
+ this.raise(FlowErrors.EnumInconsistentMemberValues, nameLoc, {
+ enumName
+ });
+ return empty();
+ }
+ }
+ }
+ }
+ flowParseEnumDeclaration(node) {
+ const id = this.parseIdentifier();
+ node.id = id;
+ node.body = this.flowEnumBody(this.startNode(), id);
+ return this.finishNode(node, "EnumDeclaration");
+ }
+ jsxParseOpeningElementAfterName(node) {
+ if (this.shouldParseTypes()) {
+ if (this.match(47) || this.match(51)) {
+ node.typeArguments = this.flowParseTypeParameterInstantiationInExpression();
+ }
+ }
+ return super.jsxParseOpeningElementAfterName(node);
+ }
+ isLookaheadToken_lt() {
+ const next = this.nextTokenStart();
+ if (this.input.charCodeAt(next) === 60) {
+ const afterNext = this.input.charCodeAt(next + 1);
+ return afterNext !== 60 && afterNext !== 61;
+ }
+ return false;
+ }
+ reScan_lt_gt() {
+ const {
+ type
+ } = this.state;
+ if (type === 47) {
+ this.state.pos -= 1;
+ this.readToken_lt();
+ } else if (type === 48) {
+ this.state.pos -= 1;
+ this.readToken_gt();
+ }
+ }
+ reScan_lt() {
+ const {
+ type
+ } = this.state;
+ if (type === 51) {
+ this.state.pos -= 2;
+ this.finishOp(47, 1);
+ return 47;
+ }
+ return type;
+ }
+ maybeUnwrapTypeCastExpression(node) {
+ return node.type === "TypeCastExpression" ? node.expression : node;
+ }
+};
+const entities = {
+ __proto__: null,
+ quot: "\u0022",
+ amp: "&",
+ apos: "\u0027",
+ lt: "<",
+ gt: ">",
+ nbsp: "\u00A0",
+ iexcl: "\u00A1",
+ cent: "\u00A2",
+ pound: "\u00A3",
+ curren: "\u00A4",
+ yen: "\u00A5",
+ brvbar: "\u00A6",
+ sect: "\u00A7",
+ uml: "\u00A8",
+ copy: "\u00A9",
+ ordf: "\u00AA",
+ laquo: "\u00AB",
+ not: "\u00AC",
+ shy: "\u00AD",
+ reg: "\u00AE",
+ macr: "\u00AF",
+ deg: "\u00B0",
+ plusmn: "\u00B1",
+ sup2: "\u00B2",
+ sup3: "\u00B3",
+ acute: "\u00B4",
+ micro: "\u00B5",
+ para: "\u00B6",
+ middot: "\u00B7",
+ cedil: "\u00B8",
+ sup1: "\u00B9",
+ ordm: "\u00BA",
+ raquo: "\u00BB",
+ frac14: "\u00BC",
+ frac12: "\u00BD",
+ frac34: "\u00BE",
+ iquest: "\u00BF",
+ Agrave: "\u00C0",
+ Aacute: "\u00C1",
+ Acirc: "\u00C2",
+ Atilde: "\u00C3",
+ Auml: "\u00C4",
+ Aring: "\u00C5",
+ AElig: "\u00C6",
+ Ccedil: "\u00C7",
+ Egrave: "\u00C8",
+ Eacute: "\u00C9",
+ Ecirc: "\u00CA",
+ Euml: "\u00CB",
+ Igrave: "\u00CC",
+ Iacute: "\u00CD",
+ Icirc: "\u00CE",
+ Iuml: "\u00CF",
+ ETH: "\u00D0",
+ Ntilde: "\u00D1",
+ Ograve: "\u00D2",
+ Oacute: "\u00D3",
+ Ocirc: "\u00D4",
+ Otilde: "\u00D5",
+ Ouml: "\u00D6",
+ times: "\u00D7",
+ Oslash: "\u00D8",
+ Ugrave: "\u00D9",
+ Uacute: "\u00DA",
+ Ucirc: "\u00DB",
+ Uuml: "\u00DC",
+ Yacute: "\u00DD",
+ THORN: "\u00DE",
+ szlig: "\u00DF",
+ agrave: "\u00E0",
+ aacute: "\u00E1",
+ acirc: "\u00E2",
+ atilde: "\u00E3",
+ auml: "\u00E4",
+ aring: "\u00E5",
+ aelig: "\u00E6",
+ ccedil: "\u00E7",
+ egrave: "\u00E8",
+ eacute: "\u00E9",
+ ecirc: "\u00EA",
+ euml: "\u00EB",
+ igrave: "\u00EC",
+ iacute: "\u00ED",
+ icirc: "\u00EE",
+ iuml: "\u00EF",
+ eth: "\u00F0",
+ ntilde: "\u00F1",
+ ograve: "\u00F2",
+ oacute: "\u00F3",
+ ocirc: "\u00F4",
+ otilde: "\u00F5",
+ ouml: "\u00F6",
+ divide: "\u00F7",
+ oslash: "\u00F8",
+ ugrave: "\u00F9",
+ uacute: "\u00FA",
+ ucirc: "\u00FB",
+ uuml: "\u00FC",
+ yacute: "\u00FD",
+ thorn: "\u00FE",
+ yuml: "\u00FF",
+ OElig: "\u0152",
+ oelig: "\u0153",
+ Scaron: "\u0160",
+ scaron: "\u0161",
+ Yuml: "\u0178",
+ fnof: "\u0192",
+ circ: "\u02C6",
+ tilde: "\u02DC",
+ Alpha: "\u0391",
+ Beta: "\u0392",
+ Gamma: "\u0393",
+ Delta: "\u0394",
+ Epsilon: "\u0395",
+ Zeta: "\u0396",
+ Eta: "\u0397",
+ Theta: "\u0398",
+ Iota: "\u0399",
+ Kappa: "\u039A",
+ Lambda: "\u039B",
+ Mu: "\u039C",
+ Nu: "\u039D",
+ Xi: "\u039E",
+ Omicron: "\u039F",
+ Pi: "\u03A0",
+ Rho: "\u03A1",
+ Sigma: "\u03A3",
+ Tau: "\u03A4",
+ Upsilon: "\u03A5",
+ Phi: "\u03A6",
+ Chi: "\u03A7",
+ Psi: "\u03A8",
+ Omega: "\u03A9",
+ alpha: "\u03B1",
+ beta: "\u03B2",
+ gamma: "\u03B3",
+ delta: "\u03B4",
+ epsilon: "\u03B5",
+ zeta: "\u03B6",
+ eta: "\u03B7",
+ theta: "\u03B8",
+ iota: "\u03B9",
+ kappa: "\u03BA",
+ lambda: "\u03BB",
+ mu: "\u03BC",
+ nu: "\u03BD",
+ xi: "\u03BE",
+ omicron: "\u03BF",
+ pi: "\u03C0",
+ rho: "\u03C1",
+ sigmaf: "\u03C2",
+ sigma: "\u03C3",
+ tau: "\u03C4",
+ upsilon: "\u03C5",
+ phi: "\u03C6",
+ chi: "\u03C7",
+ psi: "\u03C8",
+ omega: "\u03C9",
+ thetasym: "\u03D1",
+ upsih: "\u03D2",
+ piv: "\u03D6",
+ ensp: "\u2002",
+ emsp: "\u2003",
+ thinsp: "\u2009",
+ zwnj: "\u200C",
+ zwj: "\u200D",
+ lrm: "\u200E",
+ rlm: "\u200F",
+ ndash: "\u2013",
+ mdash: "\u2014",
+ lsquo: "\u2018",
+ rsquo: "\u2019",
+ sbquo: "\u201A",
+ ldquo: "\u201C",
+ rdquo: "\u201D",
+ bdquo: "\u201E",
+ dagger: "\u2020",
+ Dagger: "\u2021",
+ bull: "\u2022",
+ hellip: "\u2026",
+ permil: "\u2030",
+ prime: "\u2032",
+ Prime: "\u2033",
+ lsaquo: "\u2039",
+ rsaquo: "\u203A",
+ oline: "\u203E",
+ frasl: "\u2044",
+ euro: "\u20AC",
+ image: "\u2111",
+ weierp: "\u2118",
+ real: "\u211C",
+ trade: "\u2122",
+ alefsym: "\u2135",
+ larr: "\u2190",
+ uarr: "\u2191",
+ rarr: "\u2192",
+ darr: "\u2193",
+ harr: "\u2194",
+ crarr: "\u21B5",
+ lArr: "\u21D0",
+ uArr: "\u21D1",
+ rArr: "\u21D2",
+ dArr: "\u21D3",
+ hArr: "\u21D4",
+ forall: "\u2200",
+ part: "\u2202",
+ exist: "\u2203",
+ empty: "\u2205",
+ nabla: "\u2207",
+ isin: "\u2208",
+ notin: "\u2209",
+ ni: "\u220B",
+ prod: "\u220F",
+ sum: "\u2211",
+ minus: "\u2212",
+ lowast: "\u2217",
+ radic: "\u221A",
+ prop: "\u221D",
+ infin: "\u221E",
+ ang: "\u2220",
+ and: "\u2227",
+ or: "\u2228",
+ cap: "\u2229",
+ cup: "\u222A",
+ int: "\u222B",
+ there4: "\u2234",
+ sim: "\u223C",
+ cong: "\u2245",
+ asymp: "\u2248",
+ ne: "\u2260",
+ equiv: "\u2261",
+ le: "\u2264",
+ ge: "\u2265",
+ sub: "\u2282",
+ sup: "\u2283",
+ nsub: "\u2284",
+ sube: "\u2286",
+ supe: "\u2287",
+ oplus: "\u2295",
+ otimes: "\u2297",
+ perp: "\u22A5",
+ sdot: "\u22C5",
+ lceil: "\u2308",
+ rceil: "\u2309",
+ lfloor: "\u230A",
+ rfloor: "\u230B",
+ lang: "\u2329",
+ rang: "\u232A",
+ loz: "\u25CA",
+ spades: "\u2660",
+ clubs: "\u2663",
+ hearts: "\u2665",
+ diams: "\u2666"
+};
+const lineBreak = /\r\n|[\r\n\u2028\u2029]/;
+const lineBreakG = new RegExp(lineBreak.source, "g");
+function isNewLine(code) {
+ switch (code) {
+ case 10:
+ case 13:
+ case 8232:
+ case 8233:
+ return true;
+ default:
+ return false;
+ }
+}
+function hasNewLine(input, start, end) {
+ for (let i = start; i < end; i++) {
+ if (isNewLine(input.charCodeAt(i))) {
+ return true;
+ }
+ }
+ return false;
+}
+const skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g;
+const skipWhiteSpaceInLine = /(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/g;
+function isWhitespace(code) {
+ switch (code) {
+ case 0x0009:
+ case 0x000b:
+ case 0x000c:
+ case 32:
+ case 160:
+ case 5760:
+ case 0x2000:
+ case 0x2001:
+ case 0x2002:
+ case 0x2003:
+ case 0x2004:
+ case 0x2005:
+ case 0x2006:
+ case 0x2007:
+ case 0x2008:
+ case 0x2009:
+ case 0x200a:
+ case 0x202f:
+ case 0x205f:
+ case 0x3000:
+ case 0xfeff:
+ return true;
+ default:
+ return false;
+ }
+}
+const JsxErrors = ParseErrorEnum`jsx`({
+ AttributeIsEmpty: "JSX attributes must only be assigned a non-empty expression.",
+ MissingClosingTagElement: ({
+ openingTagName
+ }) => `Expected corresponding JSX closing tag for <${openingTagName}>.`,
+ MissingClosingTagFragment: "Expected corresponding JSX closing tag for <>.",
+ UnexpectedSequenceExpression: "Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?",
+ UnexpectedToken: ({
+ unexpected,
+ HTMLEntity
+ }) => `Unexpected token \`${unexpected}\`. Did you mean \`${HTMLEntity}\` or \`{'${unexpected}'}\`?`,
+ UnsupportedJsxValue: "JSX value should be either an expression or a quoted JSX text.",
+ UnterminatedJsxContent: "Unterminated JSX contents.",
+ UnwrappedAdjacentJSXElements: "Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?"
+});
+function isFragment(object) {
+ return object ? object.type === "JSXOpeningFragment" || object.type === "JSXClosingFragment" : false;
+}
+function getQualifiedJSXName(object) {
+ if (object.type === "JSXIdentifier") {
+ return object.name;
+ }
+ if (object.type === "JSXNamespacedName") {
+ return object.namespace.name + ":" + object.name.name;
+ }
+ if (object.type === "JSXMemberExpression") {
+ return getQualifiedJSXName(object.object) + "." + getQualifiedJSXName(object.property);
+ }
+ throw new Error("Node had unexpected type: " + object.type);
+}
+var jsx = superClass => class JSXParserMixin extends superClass {
+ jsxReadToken() {
+ let out = "";
+ let chunkStart = this.state.pos;
+ for (;;) {
+ if (this.state.pos >= this.length) {
+ throw this.raise(JsxErrors.UnterminatedJsxContent, this.state.startLoc);
+ }
+ const ch = this.input.charCodeAt(this.state.pos);
+ switch (ch) {
+ case 60:
+ case 123:
+ if (this.state.pos === this.state.start) {
+ if (ch === 60 && this.state.canStartJSXElement) {
+ ++this.state.pos;
+ this.finishToken(143);
+ } else {
+ super.getTokenFromCode(ch);
+ }
+ return;
+ }
+ out += this.input.slice(chunkStart, this.state.pos);
+ this.finishToken(142, out);
+ return;
+ case 38:
+ out += this.input.slice(chunkStart, this.state.pos);
+ out += this.jsxReadEntity();
+ chunkStart = this.state.pos;
+ break;
+ case 62:
+ case 125:
+ default:
+ if (isNewLine(ch)) {
+ out += this.input.slice(chunkStart, this.state.pos);
+ out += this.jsxReadNewLine(true);
+ chunkStart = this.state.pos;
+ } else {
+ ++this.state.pos;
+ }
+ }
+ }
+ }
+ jsxReadNewLine(normalizeCRLF) {
+ const ch = this.input.charCodeAt(this.state.pos);
+ let out;
+ ++this.state.pos;
+ if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) {
+ ++this.state.pos;
+ out = normalizeCRLF ? "\n" : "\r\n";
+ } else {
+ out = String.fromCharCode(ch);
+ }
+ ++this.state.curLine;
+ this.state.lineStart = this.state.pos;
+ return out;
+ }
+ jsxReadString(quote) {
+ let out = "";
+ let chunkStart = ++this.state.pos;
+ for (;;) {
+ if (this.state.pos >= this.length) {
+ throw this.raise(Errors.UnterminatedString, this.state.startLoc);
+ }
+ const ch = this.input.charCodeAt(this.state.pos);
+ if (ch === quote) break;
+ if (ch === 38) {
+ out += this.input.slice(chunkStart, this.state.pos);
+ out += this.jsxReadEntity();
+ chunkStart = this.state.pos;
+ } else if (isNewLine(ch)) {
+ out += this.input.slice(chunkStart, this.state.pos);
+ out += this.jsxReadNewLine(false);
+ chunkStart = this.state.pos;
+ } else {
+ ++this.state.pos;
+ }
+ }
+ out += this.input.slice(chunkStart, this.state.pos++);
+ this.finishToken(134, out);
+ }
+ jsxReadEntity() {
+ const startPos = ++this.state.pos;
+ if (this.codePointAtPos(this.state.pos) === 35) {
+ ++this.state.pos;
+ let radix = 10;
+ if (this.codePointAtPos(this.state.pos) === 120) {
+ radix = 16;
+ ++this.state.pos;
+ }
+ const codePoint = this.readInt(radix, undefined, false, "bail");
+ if (codePoint !== null && this.codePointAtPos(this.state.pos) === 59) {
+ ++this.state.pos;
+ return String.fromCodePoint(codePoint);
+ }
+ } else {
+ let count = 0;
+ let semi = false;
+ while (count++ < 10 && this.state.pos < this.length && !(semi = this.codePointAtPos(this.state.pos) === 59)) {
+ ++this.state.pos;
+ }
+ if (semi) {
+ const desc = this.input.slice(startPos, this.state.pos);
+ const entity = entities[desc];
+ ++this.state.pos;
+ if (entity) {
+ return entity;
+ }
+ }
+ }
+ this.state.pos = startPos;
+ return "&";
+ }
+ jsxReadWord() {
+ let ch;
+ const start = this.state.pos;
+ do {
+ ch = this.input.charCodeAt(++this.state.pos);
+ } while (isIdentifierChar(ch) || ch === 45);
+ this.finishToken(141, this.input.slice(start, this.state.pos));
+ }
+ jsxParseIdentifier() {
+ const node = this.startNode();
+ if (this.match(141)) {
+ node.name = this.state.value;
+ } else if (tokenIsKeyword(this.state.type)) {
+ node.name = tokenLabelName(this.state.type);
+ } else {
+ this.unexpected();
+ }
+ this.next();
+ return this.finishNode(node, "JSXIdentifier");
+ }
+ jsxParseNamespacedName() {
+ const startLoc = this.state.startLoc;
+ const name = this.jsxParseIdentifier();
+ if (!this.eat(14)) return name;
+ const node = this.startNodeAt(startLoc);
+ node.namespace = name;
+ node.name = this.jsxParseIdentifier();
+ return this.finishNode(node, "JSXNamespacedName");
+ }
+ jsxParseElementName() {
+ const startLoc = this.state.startLoc;
+ let node = this.jsxParseNamespacedName();
+ if (node.type === "JSXNamespacedName") {
+ return node;
+ }
+ while (this.eat(16)) {
+ const newNode = this.startNodeAt(startLoc);
+ newNode.object = node;
+ newNode.property = this.jsxParseIdentifier();
+ node = this.finishNode(newNode, "JSXMemberExpression");
+ }
+ return node;
+ }
+ jsxParseAttributeValue() {
+ let node;
+ switch (this.state.type) {
+ case 5:
+ node = this.startNode();
+ this.setContext(types.brace);
+ this.next();
+ node = this.jsxParseExpressionContainer(node, types.j_oTag);
+ if (node.expression.type === "JSXEmptyExpression") {
+ this.raise(JsxErrors.AttributeIsEmpty, node);
+ }
+ return node;
+ case 143:
+ case 134:
+ return this.parseExprAtom();
+ default:
+ throw this.raise(JsxErrors.UnsupportedJsxValue, this.state.startLoc);
+ }
+ }
+ jsxParseEmptyExpression() {
+ const node = this.startNodeAt(this.state.lastTokEndLoc);
+ return this.finishNodeAt(node, "JSXEmptyExpression", this.state.startLoc);
+ }
+ jsxParseSpreadChild(node) {
+ this.next();
+ node.expression = this.parseExpression();
+ this.setContext(types.j_expr);
+ this.state.canStartJSXElement = true;
+ this.expect(8);
+ return this.finishNode(node, "JSXSpreadChild");
+ }
+ jsxParseExpressionContainer(node, previousContext) {
+ if (this.match(8)) {
+ node.expression = this.jsxParseEmptyExpression();
+ } else {
+ const expression = this.parseExpression();
+ node.expression = expression;
+ }
+ this.setContext(previousContext);
+ this.state.canStartJSXElement = true;
+ this.expect(8);
+ return this.finishNode(node, "JSXExpressionContainer");
+ }
+ jsxParseAttribute() {
+ const node = this.startNode();
+ if (this.match(5)) {
+ this.setContext(types.brace);
+ this.next();
+ this.expect(21);
+ node.argument = this.parseMaybeAssignAllowIn();
+ this.setContext(types.j_oTag);
+ this.state.canStartJSXElement = true;
+ this.expect(8);
+ return this.finishNode(node, "JSXSpreadAttribute");
+ }
+ node.name = this.jsxParseNamespacedName();
+ node.value = this.eat(29) ? this.jsxParseAttributeValue() : null;
+ return this.finishNode(node, "JSXAttribute");
+ }
+ jsxParseOpeningElementAt(startLoc) {
+ const node = this.startNodeAt(startLoc);
+ if (this.eat(144)) {
+ return this.finishNode(node, "JSXOpeningFragment");
+ }
+ node.name = this.jsxParseElementName();
+ return this.jsxParseOpeningElementAfterName(node);
+ }
+ jsxParseOpeningElementAfterName(node) {
+ const attributes = [];
+ while (!this.match(56) && !this.match(144)) {
+ attributes.push(this.jsxParseAttribute());
+ }
+ node.attributes = attributes;
+ node.selfClosing = this.eat(56);
+ this.expect(144);
+ return this.finishNode(node, "JSXOpeningElement");
+ }
+ jsxParseClosingElementAt(startLoc) {
+ const node = this.startNodeAt(startLoc);
+ if (this.eat(144)) {
+ return this.finishNode(node, "JSXClosingFragment");
+ }
+ node.name = this.jsxParseElementName();
+ this.expect(144);
+ return this.finishNode(node, "JSXClosingElement");
+ }
+ jsxParseElementAt(startLoc) {
+ const node = this.startNodeAt(startLoc);
+ const children = [];
+ const openingElement = this.jsxParseOpeningElementAt(startLoc);
+ let closingElement = null;
+ if (!openingElement.selfClosing) {
+ contents: for (;;) {
+ switch (this.state.type) {
+ case 143:
+ startLoc = this.state.startLoc;
+ this.next();
+ if (this.eat(56)) {
+ closingElement = this.jsxParseClosingElementAt(startLoc);
+ break contents;
+ }
+ children.push(this.jsxParseElementAt(startLoc));
+ break;
+ case 142:
+ children.push(this.parseLiteral(this.state.value, "JSXText"));
+ break;
+ case 5:
+ {
+ const node = this.startNode();
+ this.setContext(types.brace);
+ this.next();
+ if (this.match(21)) {
+ children.push(this.jsxParseSpreadChild(node));
+ } else {
+ children.push(this.jsxParseExpressionContainer(node, types.j_expr));
+ }
+ break;
+ }
+ default:
+ this.unexpected();
+ }
+ }
+ if (isFragment(openingElement) && !isFragment(closingElement) && closingElement !== null) {
+ this.raise(JsxErrors.MissingClosingTagFragment, closingElement);
+ } else if (!isFragment(openingElement) && isFragment(closingElement)) {
+ this.raise(JsxErrors.MissingClosingTagElement, closingElement, {
+ openingTagName: getQualifiedJSXName(openingElement.name)
+ });
+ } else if (!isFragment(openingElement) && !isFragment(closingElement)) {
+ if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) {
+ this.raise(JsxErrors.MissingClosingTagElement, closingElement, {
+ openingTagName: getQualifiedJSXName(openingElement.name)
+ });
+ }
+ }
+ }
+ if (isFragment(openingElement)) {
+ node.openingFragment = openingElement;
+ node.closingFragment = closingElement;
+ } else {
+ node.openingElement = openingElement;
+ node.closingElement = closingElement;
+ }
+ node.children = children;
+ if (this.match(47)) {
+ throw this.raise(JsxErrors.UnwrappedAdjacentJSXElements, this.state.startLoc);
+ }
+ return isFragment(openingElement) ? this.finishNode(node, "JSXFragment") : this.finishNode(node, "JSXElement");
+ }
+ jsxParseElement() {
+ const startLoc = this.state.startLoc;
+ this.next();
+ return this.jsxParseElementAt(startLoc);
+ }
+ setContext(newContext) {
+ const {
+ context
+ } = this.state;
+ context[context.length - 1] = newContext;
+ }
+ parseExprAtom(refExpressionErrors) {
+ if (this.match(143)) {
+ return this.jsxParseElement();
+ } else if (this.match(47) && this.input.charCodeAt(this.state.pos) !== 33) {
+ this.replaceToken(143);
+ return this.jsxParseElement();
+ } else {
+ return super.parseExprAtom(refExpressionErrors);
+ }
+ }
+ skipSpace() {
+ const curContext = this.curContext();
+ if (!curContext.preserveSpace) super.skipSpace();
+ }
+ getTokenFromCode(code) {
+ const context = this.curContext();
+ if (context === types.j_expr) {
+ this.jsxReadToken();
+ return;
+ }
+ if (context === types.j_oTag || context === types.j_cTag) {
+ if (isIdentifierStart(code)) {
+ this.jsxReadWord();
+ return;
+ }
+ if (code === 62) {
+ ++this.state.pos;
+ this.finishToken(144);
+ return;
+ }
+ if ((code === 34 || code === 39) && context === types.j_oTag) {
+ this.jsxReadString(code);
+ return;
+ }
+ }
+ if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) {
+ ++this.state.pos;
+ this.finishToken(143);
+ return;
+ }
+ super.getTokenFromCode(code);
+ }
+ updateContext(prevType) {
+ const {
+ context,
+ type
+ } = this.state;
+ if (type === 56 && prevType === 143) {
+ context.splice(-2, 2, types.j_cTag);
+ this.state.canStartJSXElement = false;
+ } else if (type === 143) {
+ context.push(types.j_oTag);
+ } else if (type === 144) {
+ const out = context[context.length - 1];
+ if (out === types.j_oTag && prevType === 56 || out === types.j_cTag) {
+ context.pop();
+ this.state.canStartJSXElement = context[context.length - 1] === types.j_expr;
+ } else {
+ this.setContext(types.j_expr);
+ this.state.canStartJSXElement = true;
+ }
+ } else {
+ this.state.canStartJSXElement = tokenComesBeforeExpression(type);
+ }
+ }
+};
+class TypeScriptScope extends Scope {
+ constructor(...args) {
+ super(...args);
+ this.tsNames = new Map();
+ }
+}
+class TypeScriptScopeHandler extends ScopeHandler {
+ constructor(...args) {
+ super(...args);
+ this.importsStack = [];
+ }
+ createScope(flags) {
+ this.importsStack.push(new Set());
+ return new TypeScriptScope(flags);
+ }
+ enter(flags) {
+ if (flags === 1024) {
+ this.importsStack.push(new Set());
+ }
+ super.enter(flags);
+ }
+ exit() {
+ const flags = super.exit();
+ if (flags === 1024) {
+ this.importsStack.pop();
+ }
+ return flags;
+ }
+ hasImport(name, allowShadow) {
+ const len = this.importsStack.length;
+ if (this.importsStack[len - 1].has(name)) {
+ return true;
+ }
+ if (!allowShadow && len > 1) {
+ for (let i = 0; i < len - 1; i++) {
+ if (this.importsStack[i].has(name)) return true;
+ }
+ }
+ return false;
+ }
+ declareName(name, bindingType, loc) {
+ if (bindingType & 4096) {
+ if (this.hasImport(name, true)) {
+ this.parser.raise(Errors.VarRedeclaration, loc, {
+ identifierName: name
+ });
+ }
+ this.importsStack[this.importsStack.length - 1].add(name);
+ return;
+ }
+ const scope = this.currentScope();
+ let type = scope.tsNames.get(name) || 0;
+ if (bindingType & 1024) {
+ this.maybeExportDefined(scope, name);
+ scope.tsNames.set(name, type | 16);
+ return;
+ }
+ super.declareName(name, bindingType, loc);
+ if (bindingType & 2) {
+ if (!(bindingType & 1)) {
+ this.checkRedeclarationInScope(scope, name, bindingType, loc);
+ this.maybeExportDefined(scope, name);
+ }
+ type = type | 1;
+ }
+ if (bindingType & 256) {
+ type = type | 2;
+ }
+ if (bindingType & 512) {
+ type = type | 4;
+ }
+ if (bindingType & 128) {
+ type = type | 8;
+ }
+ if (type) scope.tsNames.set(name, type);
+ }
+ isRedeclaredInScope(scope, name, bindingType) {
+ const type = scope.tsNames.get(name);
+ if ((type & 2) > 0) {
+ if (bindingType & 256) {
+ const isConst = !!(bindingType & 512);
+ const wasConst = (type & 4) > 0;
+ return isConst !== wasConst;
+ }
+ return true;
+ }
+ if (bindingType & 128 && (type & 8) > 0) {
+ if (scope.names.get(name) & 2) {
+ return !!(bindingType & 1);
+ } else {
+ return false;
+ }
+ }
+ if (bindingType & 2 && (type & 1) > 0) {
+ return true;
+ }
+ return super.isRedeclaredInScope(scope, name, bindingType);
+ }
+ checkLocalExport(id) {
+ const {
+ name
+ } = id;
+ if (this.hasImport(name)) return;
+ const len = this.scopeStack.length;
+ for (let i = len - 1; i >= 0; i--) {
+ const scope = this.scopeStack[i];
+ const type = scope.tsNames.get(name);
+ if ((type & 1) > 0 || (type & 16) > 0) {
+ return;
+ }
+ }
+ super.checkLocalExport(id);
+ }
+}
+class ProductionParameterHandler {
+ constructor() {
+ this.stacks = [];
+ }
+ enter(flags) {
+ this.stacks.push(flags);
+ }
+ exit() {
+ this.stacks.pop();
+ }
+ currentFlags() {
+ return this.stacks[this.stacks.length - 1];
+ }
+ get hasAwait() {
+ return (this.currentFlags() & 2) > 0;
+ }
+ get hasYield() {
+ return (this.currentFlags() & 1) > 0;
+ }
+ get hasReturn() {
+ return (this.currentFlags() & 4) > 0;
+ }
+ get hasIn() {
+ return (this.currentFlags() & 8) > 0;
+ }
+}
+function functionFlags(isAsync, isGenerator) {
+ return (isAsync ? 2 : 0) | (isGenerator ? 1 : 0);
+}
+class BaseParser {
+ constructor() {
+ this.sawUnambiguousESM = false;
+ this.ambiguousScriptDifferentAst = false;
+ }
+ sourceToOffsetPos(sourcePos) {
+ return sourcePos + this.startIndex;
+ }
+ offsetToSourcePos(offsetPos) {
+ return offsetPos - this.startIndex;
+ }
+ hasPlugin(pluginConfig) {
+ if (typeof pluginConfig === "string") {
+ return this.plugins.has(pluginConfig);
+ } else {
+ const [pluginName, pluginOptions] = pluginConfig;
+ if (!this.hasPlugin(pluginName)) {
+ return false;
+ }
+ const actualOptions = this.plugins.get(pluginName);
+ for (const key of Object.keys(pluginOptions)) {
+ if ((actualOptions == null ? void 0 : actualOptions[key]) !== pluginOptions[key]) {
+ return false;
+ }
+ }
+ return true;
+ }
+ }
+ getPluginOption(plugin, name) {
+ var _this$plugins$get;
+ return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name];
+ }
+}
+function setTrailingComments(node, comments) {
+ if (node.trailingComments === undefined) {
+ node.trailingComments = comments;
+ } else {
+ node.trailingComments.unshift(...comments);
+ }
+}
+function setLeadingComments(node, comments) {
+ if (node.leadingComments === undefined) {
+ node.leadingComments = comments;
+ } else {
+ node.leadingComments.unshift(...comments);
+ }
+}
+function setInnerComments(node, comments) {
+ if (node.innerComments === undefined) {
+ node.innerComments = comments;
+ } else {
+ node.innerComments.unshift(...comments);
+ }
+}
+function adjustInnerComments(node, elements, commentWS) {
+ let lastElement = null;
+ let i = elements.length;
+ while (lastElement === null && i > 0) {
+ lastElement = elements[--i];
+ }
+ if (lastElement === null || lastElement.start > commentWS.start) {
+ setInnerComments(node, commentWS.comments);
+ } else {
+ setTrailingComments(lastElement, commentWS.comments);
+ }
+}
+class CommentsParser extends BaseParser {
+ addComment(comment) {
+ if (this.filename) comment.loc.filename = this.filename;
+ const {
+ commentsLen
+ } = this.state;
+ if (this.comments.length !== commentsLen) {
+ this.comments.length = commentsLen;
+ }
+ this.comments.push(comment);
+ this.state.commentsLen++;
+ }
+ processComment(node) {
+ const {
+ commentStack
+ } = this.state;
+ const commentStackLength = commentStack.length;
+ if (commentStackLength === 0) return;
+ let i = commentStackLength - 1;
+ const lastCommentWS = commentStack[i];
+ if (lastCommentWS.start === node.end) {
+ lastCommentWS.leadingNode = node;
+ i--;
+ }
+ const {
+ start: nodeStart
+ } = node;
+ for (; i >= 0; i--) {
+ const commentWS = commentStack[i];
+ const commentEnd = commentWS.end;
+ if (commentEnd > nodeStart) {
+ commentWS.containingNode = node;
+ this.finalizeComment(commentWS);
+ commentStack.splice(i, 1);
+ } else {
+ if (commentEnd === nodeStart) {
+ commentWS.trailingNode = node;
+ }
+ break;
+ }
+ }
+ }
+ finalizeComment(commentWS) {
+ var _node$options;
+ const {
+ comments
+ } = commentWS;
+ if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {
+ if (commentWS.leadingNode !== null) {
+ setTrailingComments(commentWS.leadingNode, comments);
+ }
+ if (commentWS.trailingNode !== null) {
+ setLeadingComments(commentWS.trailingNode, comments);
+ }
+ } else {
+ const node = commentWS.containingNode;
+ const commentStart = commentWS.start;
+ if (this.input.charCodeAt(this.offsetToSourcePos(commentStart) - 1) === 44) {
+ switch (node.type) {
+ case "ObjectExpression":
+ case "ObjectPattern":
+ adjustInnerComments(node, node.properties, commentWS);
+ break;
+ case "CallExpression":
+ case "OptionalCallExpression":
+ adjustInnerComments(node, node.arguments, commentWS);
+ break;
+ case "ImportExpression":
+ adjustInnerComments(node, [node.source, (_node$options = node.options) != null ? _node$options : null], commentWS);
+ break;
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ case "ArrowFunctionExpression":
+ case "ObjectMethod":
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ adjustInnerComments(node, node.params, commentWS);
+ break;
+ case "ArrayExpression":
+ case "ArrayPattern":
+ adjustInnerComments(node, node.elements, commentWS);
+ break;
+ case "ExportNamedDeclaration":
+ case "ImportDeclaration":
+ adjustInnerComments(node, node.specifiers, commentWS);
+ break;
+ case "TSEnumDeclaration":
+ adjustInnerComments(node, node.members, commentWS);
+ break;
+ case "TSEnumBody":
+ adjustInnerComments(node, node.members, commentWS);
+ break;
+ default:
+ {
+ if (node.type === "RecordExpression") {
+ adjustInnerComments(node, node.properties, commentWS);
+ break;
+ }
+ if (node.type === "TupleExpression") {
+ adjustInnerComments(node, node.elements, commentWS);
+ break;
+ }
+ setInnerComments(node, comments);
+ }
+ }
+ } else {
+ setInnerComments(node, comments);
+ }
+ }
+ }
+ finalizeRemainingComments() {
+ const {
+ commentStack
+ } = this.state;
+ for (let i = commentStack.length - 1; i >= 0; i--) {
+ this.finalizeComment(commentStack[i]);
+ }
+ this.state.commentStack = [];
+ }
+ resetPreviousNodeTrailingComments(node) {
+ const {
+ commentStack
+ } = this.state;
+ const {
+ length
+ } = commentStack;
+ if (length === 0) return;
+ const commentWS = commentStack[length - 1];
+ if (commentWS.leadingNode === node) {
+ commentWS.leadingNode = null;
+ }
+ }
+ takeSurroundingComments(node, start, end) {
+ const {
+ commentStack
+ } = this.state;
+ const commentStackLength = commentStack.length;
+ if (commentStackLength === 0) return;
+ let i = commentStackLength - 1;
+ for (; i >= 0; i--) {
+ const commentWS = commentStack[i];
+ const commentEnd = commentWS.end;
+ const commentStart = commentWS.start;
+ if (commentStart === end) {
+ commentWS.leadingNode = node;
+ } else if (commentEnd === start) {
+ commentWS.trailingNode = node;
+ } else if (commentEnd < start) {
+ break;
+ }
+ }
+ }
+}
+class State {
+ constructor() {
+ this.flags = 1024;
+ this.startIndex = void 0;
+ this.curLine = void 0;
+ this.lineStart = void 0;
+ this.startLoc = void 0;
+ this.endLoc = void 0;
+ this.errors = [];
+ this.potentialArrowAt = -1;
+ this.noArrowAt = [];
+ this.noArrowParamsConversionAt = [];
+ this.topicContext = {
+ maxNumOfResolvableTopics: 0,
+ maxTopicIndex: null
+ };
+ this.labels = [];
+ this.commentsLen = 0;
+ this.commentStack = [];
+ this.pos = 0;
+ this.type = 140;
+ this.value = null;
+ this.start = 0;
+ this.end = 0;
+ this.lastTokEndLoc = null;
+ this.lastTokStartLoc = null;
+ this.context = [types.brace];
+ this.firstInvalidTemplateEscapePos = null;
+ this.strictErrors = new Map();
+ this.tokensLength = 0;
+ }
+ get strict() {
+ return (this.flags & 1) > 0;
+ }
+ set strict(v) {
+ if (v) this.flags |= 1;else this.flags &= -2;
+ }
+ init({
+ strictMode,
+ sourceType,
+ startIndex,
+ startLine,
+ startColumn
+ }) {
+ this.strict = strictMode === false ? false : strictMode === true ? true : sourceType === "module";
+ this.startIndex = startIndex;
+ this.curLine = startLine;
+ this.lineStart = -startColumn;
+ this.startLoc = this.endLoc = new Position(startLine, startColumn, startIndex);
+ }
+ get maybeInArrowParameters() {
+ return (this.flags & 2) > 0;
+ }
+ set maybeInArrowParameters(v) {
+ if (v) this.flags |= 2;else this.flags &= -3;
+ }
+ get inType() {
+ return (this.flags & 4) > 0;
+ }
+ set inType(v) {
+ if (v) this.flags |= 4;else this.flags &= -5;
+ }
+ get noAnonFunctionType() {
+ return (this.flags & 8) > 0;
+ }
+ set noAnonFunctionType(v) {
+ if (v) this.flags |= 8;else this.flags &= -9;
+ }
+ get hasFlowComment() {
+ return (this.flags & 16) > 0;
+ }
+ set hasFlowComment(v) {
+ if (v) this.flags |= 16;else this.flags &= -17;
+ }
+ get isAmbientContext() {
+ return (this.flags & 32) > 0;
+ }
+ set isAmbientContext(v) {
+ if (v) this.flags |= 32;else this.flags &= -33;
+ }
+ get inAbstractClass() {
+ return (this.flags & 64) > 0;
+ }
+ set inAbstractClass(v) {
+ if (v) this.flags |= 64;else this.flags &= -65;
+ }
+ get inDisallowConditionalTypesContext() {
+ return (this.flags & 128) > 0;
+ }
+ set inDisallowConditionalTypesContext(v) {
+ if (v) this.flags |= 128;else this.flags &= -129;
+ }
+ get soloAwait() {
+ return (this.flags & 256) > 0;
+ }
+ set soloAwait(v) {
+ if (v) this.flags |= 256;else this.flags &= -257;
+ }
+ get inFSharpPipelineDirectBody() {
+ return (this.flags & 512) > 0;
+ }
+ set inFSharpPipelineDirectBody(v) {
+ if (v) this.flags |= 512;else this.flags &= -513;
+ }
+ get canStartJSXElement() {
+ return (this.flags & 1024) > 0;
+ }
+ set canStartJSXElement(v) {
+ if (v) this.flags |= 1024;else this.flags &= -1025;
+ }
+ get containsEsc() {
+ return (this.flags & 2048) > 0;
+ }
+ set containsEsc(v) {
+ if (v) this.flags |= 2048;else this.flags &= -2049;
+ }
+ get hasTopLevelAwait() {
+ return (this.flags & 4096) > 0;
+ }
+ set hasTopLevelAwait(v) {
+ if (v) this.flags |= 4096;else this.flags &= -4097;
+ }
+ curPosition() {
+ return new Position(this.curLine, this.pos - this.lineStart, this.pos + this.startIndex);
+ }
+ clone() {
+ const state = new State();
+ state.flags = this.flags;
+ state.startIndex = this.startIndex;
+ state.curLine = this.curLine;
+ state.lineStart = this.lineStart;
+ state.startLoc = this.startLoc;
+ state.endLoc = this.endLoc;
+ state.errors = this.errors.slice();
+ state.potentialArrowAt = this.potentialArrowAt;
+ state.noArrowAt = this.noArrowAt.slice();
+ state.noArrowParamsConversionAt = this.noArrowParamsConversionAt.slice();
+ state.topicContext = this.topicContext;
+ state.labels = this.labels.slice();
+ state.commentsLen = this.commentsLen;
+ state.commentStack = this.commentStack.slice();
+ state.pos = this.pos;
+ state.type = this.type;
+ state.value = this.value;
+ state.start = this.start;
+ state.end = this.end;
+ state.lastTokEndLoc = this.lastTokEndLoc;
+ state.lastTokStartLoc = this.lastTokStartLoc;
+ state.context = this.context.slice();
+ state.firstInvalidTemplateEscapePos = this.firstInvalidTemplateEscapePos;
+ state.strictErrors = this.strictErrors;
+ state.tokensLength = this.tokensLength;
+ return state;
+ }
+}
+var _isDigit = function isDigit(code) {
+ return code >= 48 && code <= 57;
+};
+const forbiddenNumericSeparatorSiblings = {
+ decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]),
+ hex: new Set([46, 88, 95, 120])
+};
+const isAllowedNumericSeparatorSibling = {
+ bin: ch => ch === 48 || ch === 49,
+ oct: ch => ch >= 48 && ch <= 55,
+ dec: ch => ch >= 48 && ch <= 57,
+ hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102
+};
+function readStringContents(type, input, pos, lineStart, curLine, errors) {
+ const initialPos = pos;
+ const initialLineStart = lineStart;
+ const initialCurLine = curLine;
+ let out = "";
+ let firstInvalidLoc = null;
+ let chunkStart = pos;
+ const {
+ length
+ } = input;
+ for (;;) {
+ if (pos >= length) {
+ errors.unterminated(initialPos, initialLineStart, initialCurLine);
+ out += input.slice(chunkStart, pos);
+ break;
+ }
+ const ch = input.charCodeAt(pos);
+ if (isStringEnd(type, ch, input, pos)) {
+ out += input.slice(chunkStart, pos);
+ break;
+ }
+ if (ch === 92) {
+ out += input.slice(chunkStart, pos);
+ const res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors);
+ if (res.ch === null && !firstInvalidLoc) {
+ firstInvalidLoc = {
+ pos,
+ lineStart,
+ curLine
+ };
+ } else {
+ out += res.ch;
+ }
+ ({
+ pos,
+ lineStart,
+ curLine
+ } = res);
+ chunkStart = pos;
+ } else if (ch === 8232 || ch === 8233) {
+ ++pos;
+ ++curLine;
+ lineStart = pos;
+ } else if (ch === 10 || ch === 13) {
+ if (type === "template") {
+ out += input.slice(chunkStart, pos) + "\n";
+ ++pos;
+ if (ch === 13 && input.charCodeAt(pos) === 10) {
+ ++pos;
+ }
+ ++curLine;
+ chunkStart = lineStart = pos;
+ } else {
+ errors.unterminated(initialPos, initialLineStart, initialCurLine);
+ }
+ } else {
+ ++pos;
+ }
+ }
+ return {
+ pos,
+ str: out,
+ firstInvalidLoc,
+ lineStart,
+ curLine,
+ containsInvalid: !!firstInvalidLoc
+ };
+}
+function isStringEnd(type, ch, input, pos) {
+ if (type === "template") {
+ return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123;
+ }
+ return ch === (type === "double" ? 34 : 39);
+}
+function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) {
+ const throwOnInvalid = !inTemplate;
+ pos++;
+ const res = ch => ({
+ pos,
+ ch,
+ lineStart,
+ curLine
+ });
+ const ch = input.charCodeAt(pos++);
+ switch (ch) {
+ case 110:
+ return res("\n");
+ case 114:
+ return res("\r");
+ case 120:
+ {
+ let code;
+ ({
+ code,
+ pos
+ } = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors));
+ return res(code === null ? null : String.fromCharCode(code));
+ }
+ case 117:
+ {
+ let code;
+ ({
+ code,
+ pos
+ } = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors));
+ return res(code === null ? null : String.fromCodePoint(code));
+ }
+ case 116:
+ return res("\t");
+ case 98:
+ return res("\b");
+ case 118:
+ return res("\u000b");
+ case 102:
+ return res("\f");
+ case 13:
+ if (input.charCodeAt(pos) === 10) {
+ ++pos;
+ }
+ case 10:
+ lineStart = pos;
+ ++curLine;
+ case 8232:
+ case 8233:
+ return res("");
+ case 56:
+ case 57:
+ if (inTemplate) {
+ return res(null);
+ } else {
+ errors.strictNumericEscape(pos - 1, lineStart, curLine);
+ }
+ default:
+ if (ch >= 48 && ch <= 55) {
+ const startPos = pos - 1;
+ const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));
+ let octalStr = match[0];
+ let octal = parseInt(octalStr, 8);
+ if (octal > 255) {
+ octalStr = octalStr.slice(0, -1);
+ octal = parseInt(octalStr, 8);
+ }
+ pos += octalStr.length - 1;
+ const next = input.charCodeAt(pos);
+ if (octalStr !== "0" || next === 56 || next === 57) {
+ if (inTemplate) {
+ return res(null);
+ } else {
+ errors.strictNumericEscape(startPos, lineStart, curLine);
+ }
+ }
+ return res(String.fromCharCode(octal));
+ }
+ return res(String.fromCharCode(ch));
+ }
+}
+function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) {
+ const initialPos = pos;
+ let n;
+ ({
+ n,
+ pos
+ } = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid));
+ if (n === null) {
+ if (throwOnInvalid) {
+ errors.invalidEscapeSequence(initialPos, lineStart, curLine);
+ } else {
+ pos = initialPos - 1;
+ }
+ }
+ return {
+ code: n,
+ pos
+ };
+}
+function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) {
+ const start = pos;
+ const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct;
+ const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin;
+ let invalid = false;
+ let total = 0;
+ for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {
+ const code = input.charCodeAt(pos);
+ let val;
+ if (code === 95 && allowNumSeparator !== "bail") {
+ const prev = input.charCodeAt(pos - 1);
+ const next = input.charCodeAt(pos + 1);
+ if (!allowNumSeparator) {
+ if (bailOnError) return {
+ n: null,
+ pos
+ };
+ errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);
+ } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) {
+ if (bailOnError) return {
+ n: null,
+ pos
+ };
+ errors.unexpectedNumericSeparator(pos, lineStart, curLine);
+ }
+ ++pos;
+ continue;
+ }
+ if (code >= 97) {
+ val = code - 97 + 10;
+ } else if (code >= 65) {
+ val = code - 65 + 10;
+ } else if (_isDigit(code)) {
+ val = code - 48;
+ } else {
+ val = Infinity;
+ }
+ if (val >= radix) {
+ if (val <= 9 && bailOnError) {
+ return {
+ n: null,
+ pos
+ };
+ } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) {
+ val = 0;
+ } else if (forceLen) {
+ val = 0;
+ invalid = true;
+ } else {
+ break;
+ }
+ }
+ ++pos;
+ total = total * radix + val;
+ }
+ if (pos === start || len != null && pos - start !== len || invalid) {
+ return {
+ n: null,
+ pos
+ };
+ }
+ return {
+ n: total,
+ pos
+ };
+}
+function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) {
+ const ch = input.charCodeAt(pos);
+ let code;
+ if (ch === 123) {
+ ++pos;
+ ({
+ code,
+ pos
+ } = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors));
+ ++pos;
+ if (code !== null && code > 0x10ffff) {
+ if (throwOnInvalid) {
+ errors.invalidCodePoint(pos, lineStart, curLine);
+ } else {
+ return {
+ code: null,
+ pos
+ };
+ }
+ }
+ } else {
+ ({
+ code,
+ pos
+ } = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors));
+ }
+ return {
+ code,
+ pos
+ };
+}
+function buildPosition(pos, lineStart, curLine) {
+ return new Position(curLine, pos - lineStart, pos);
+}
+const VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100, 118]);
+class Token {
+ constructor(state) {
+ const startIndex = state.startIndex || 0;
+ this.type = state.type;
+ this.value = state.value;
+ this.start = startIndex + state.start;
+ this.end = startIndex + state.end;
+ this.loc = new SourceLocation(state.startLoc, state.endLoc);
+ }
+}
+class Tokenizer extends CommentsParser {
+ constructor(options, input) {
+ super();
+ this.isLookahead = void 0;
+ this.tokens = [];
+ this.errorHandlers_readInt = {
+ invalidDigit: (pos, lineStart, curLine, radix) => {
+ if (!(this.optionFlags & 2048)) return false;
+ this.raise(Errors.InvalidDigit, buildPosition(pos, lineStart, curLine), {
+ radix
+ });
+ return true;
+ },
+ numericSeparatorInEscapeSequence: this.errorBuilder(Errors.NumericSeparatorInEscapeSequence),
+ unexpectedNumericSeparator: this.errorBuilder(Errors.UnexpectedNumericSeparator)
+ };
+ this.errorHandlers_readCodePoint = Object.assign({}, this.errorHandlers_readInt, {
+ invalidEscapeSequence: this.errorBuilder(Errors.InvalidEscapeSequence),
+ invalidCodePoint: this.errorBuilder(Errors.InvalidCodePoint)
+ });
+ this.errorHandlers_readStringContents_string = Object.assign({}, this.errorHandlers_readCodePoint, {
+ strictNumericEscape: (pos, lineStart, curLine) => {
+ this.recordStrictModeErrors(Errors.StrictNumericEscape, buildPosition(pos, lineStart, curLine));
+ },
+ unterminated: (pos, lineStart, curLine) => {
+ throw this.raise(Errors.UnterminatedString, buildPosition(pos - 1, lineStart, curLine));
+ }
+ });
+ this.errorHandlers_readStringContents_template = Object.assign({}, this.errorHandlers_readCodePoint, {
+ strictNumericEscape: this.errorBuilder(Errors.StrictNumericEscape),
+ unterminated: (pos, lineStart, curLine) => {
+ throw this.raise(Errors.UnterminatedTemplate, buildPosition(pos, lineStart, curLine));
+ }
+ });
+ this.state = new State();
+ this.state.init(options);
+ this.input = input;
+ this.length = input.length;
+ this.comments = [];
+ this.isLookahead = false;
+ }
+ pushToken(token) {
+ this.tokens.length = this.state.tokensLength;
+ this.tokens.push(token);
+ ++this.state.tokensLength;
+ }
+ next() {
+ this.checkKeywordEscapes();
+ if (this.optionFlags & 256) {
+ this.pushToken(new Token(this.state));
+ }
+ this.state.lastTokEndLoc = this.state.endLoc;
+ this.state.lastTokStartLoc = this.state.startLoc;
+ this.nextToken();
+ }
+ eat(type) {
+ if (this.match(type)) {
+ this.next();
+ return true;
+ } else {
+ return false;
+ }
+ }
+ match(type) {
+ return this.state.type === type;
+ }
+ createLookaheadState(state) {
+ return {
+ pos: state.pos,
+ value: null,
+ type: state.type,
+ start: state.start,
+ end: state.end,
+ context: [this.curContext()],
+ inType: state.inType,
+ startLoc: state.startLoc,
+ lastTokEndLoc: state.lastTokEndLoc,
+ curLine: state.curLine,
+ lineStart: state.lineStart,
+ curPosition: state.curPosition
+ };
+ }
+ lookahead() {
+ const old = this.state;
+ this.state = this.createLookaheadState(old);
+ this.isLookahead = true;
+ this.nextToken();
+ this.isLookahead = false;
+ const curr = this.state;
+ this.state = old;
+ return curr;
+ }
+ nextTokenStart() {
+ return this.nextTokenStartSince(this.state.pos);
+ }
+ nextTokenStartSince(pos) {
+ skipWhiteSpace.lastIndex = pos;
+ return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos;
+ }
+ lookaheadCharCode() {
+ return this.lookaheadCharCodeSince(this.state.pos);
+ }
+ lookaheadCharCodeSince(pos) {
+ return this.input.charCodeAt(this.nextTokenStartSince(pos));
+ }
+ nextTokenInLineStart() {
+ return this.nextTokenInLineStartSince(this.state.pos);
+ }
+ nextTokenInLineStartSince(pos) {
+ skipWhiteSpaceInLine.lastIndex = pos;
+ return skipWhiteSpaceInLine.test(this.input) ? skipWhiteSpaceInLine.lastIndex : pos;
+ }
+ lookaheadInLineCharCode() {
+ return this.input.charCodeAt(this.nextTokenInLineStart());
+ }
+ codePointAtPos(pos) {
+ let cp = this.input.charCodeAt(pos);
+ if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) {
+ const trail = this.input.charCodeAt(pos);
+ if ((trail & 0xfc00) === 0xdc00) {
+ cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);
+ }
+ }
+ return cp;
+ }
+ setStrict(strict) {
+ this.state.strict = strict;
+ if (strict) {
+ this.state.strictErrors.forEach(([toParseError, at]) => this.raise(toParseError, at));
+ this.state.strictErrors.clear();
+ }
+ }
+ curContext() {
+ return this.state.context[this.state.context.length - 1];
+ }
+ nextToken() {
+ this.skipSpace();
+ this.state.start = this.state.pos;
+ if (!this.isLookahead) this.state.startLoc = this.state.curPosition();
+ if (this.state.pos >= this.length) {
+ this.finishToken(140);
+ return;
+ }
+ this.getTokenFromCode(this.codePointAtPos(this.state.pos));
+ }
+ skipBlockComment(commentEnd) {
+ let startLoc;
+ if (!this.isLookahead) startLoc = this.state.curPosition();
+ const start = this.state.pos;
+ const end = this.input.indexOf(commentEnd, start + 2);
+ if (end === -1) {
+ throw this.raise(Errors.UnterminatedComment, this.state.curPosition());
+ }
+ this.state.pos = end + commentEnd.length;
+ lineBreakG.lastIndex = start + 2;
+ while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) {
+ ++this.state.curLine;
+ this.state.lineStart = lineBreakG.lastIndex;
+ }
+ if (this.isLookahead) return;
+ const comment = {
+ type: "CommentBlock",
+ value: this.input.slice(start + 2, end),
+ start: this.sourceToOffsetPos(start),
+ end: this.sourceToOffsetPos(end + commentEnd.length),
+ loc: new SourceLocation(startLoc, this.state.curPosition())
+ };
+ if (this.optionFlags & 256) this.pushToken(comment);
+ return comment;
+ }
+ skipLineComment(startSkip) {
+ const start = this.state.pos;
+ let startLoc;
+ if (!this.isLookahead) startLoc = this.state.curPosition();
+ let ch = this.input.charCodeAt(this.state.pos += startSkip);
+ if (this.state.pos < this.length) {
+ while (!isNewLine(ch) && ++this.state.pos < this.length) {
+ ch = this.input.charCodeAt(this.state.pos);
+ }
+ }
+ if (this.isLookahead) return;
+ const end = this.state.pos;
+ const value = this.input.slice(start + startSkip, end);
+ const comment = {
+ type: "CommentLine",
+ value,
+ start: this.sourceToOffsetPos(start),
+ end: this.sourceToOffsetPos(end),
+ loc: new SourceLocation(startLoc, this.state.curPosition())
+ };
+ if (this.optionFlags & 256) this.pushToken(comment);
+ return comment;
+ }
+ skipSpace() {
+ const spaceStart = this.state.pos;
+ const comments = this.optionFlags & 4096 ? [] : null;
+ loop: while (this.state.pos < this.length) {
+ const ch = this.input.charCodeAt(this.state.pos);
+ switch (ch) {
+ case 32:
+ case 160:
+ case 9:
+ ++this.state.pos;
+ break;
+ case 13:
+ if (this.input.charCodeAt(this.state.pos + 1) === 10) {
+ ++this.state.pos;
+ }
+ case 10:
+ case 8232:
+ case 8233:
+ ++this.state.pos;
+ ++this.state.curLine;
+ this.state.lineStart = this.state.pos;
+ break;
+ case 47:
+ switch (this.input.charCodeAt(this.state.pos + 1)) {
+ case 42:
+ {
+ const comment = this.skipBlockComment("*/");
+ if (comment !== undefined) {
+ this.addComment(comment);
+ comments == null || comments.push(comment);
+ }
+ break;
+ }
+ case 47:
+ {
+ const comment = this.skipLineComment(2);
+ if (comment !== undefined) {
+ this.addComment(comment);
+ comments == null || comments.push(comment);
+ }
+ break;
+ }
+ default:
+ break loop;
+ }
+ break;
+ default:
+ if (isWhitespace(ch)) {
+ ++this.state.pos;
+ } else if (ch === 45 && !this.inModule && this.optionFlags & 8192) {
+ const pos = this.state.pos;
+ if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) {
+ const comment = this.skipLineComment(3);
+ if (comment !== undefined) {
+ this.addComment(comment);
+ comments == null || comments.push(comment);
+ }
+ } else {
+ break loop;
+ }
+ } else if (ch === 60 && !this.inModule && this.optionFlags & 8192) {
+ const pos = this.state.pos;
+ if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) {
+ const comment = this.skipLineComment(4);
+ if (comment !== undefined) {
+ this.addComment(comment);
+ comments == null || comments.push(comment);
+ }
+ } else {
+ break loop;
+ }
+ } else {
+ break loop;
+ }
+ }
+ }
+ if ((comments == null ? void 0 : comments.length) > 0) {
+ const end = this.state.pos;
+ const commentWhitespace = {
+ start: this.sourceToOffsetPos(spaceStart),
+ end: this.sourceToOffsetPos(end),
+ comments: comments,
+ leadingNode: null,
+ trailingNode: null,
+ containingNode: null
+ };
+ this.state.commentStack.push(commentWhitespace);
+ }
+ }
+ finishToken(type, val) {
+ this.state.end = this.state.pos;
+ this.state.endLoc = this.state.curPosition();
+ const prevType = this.state.type;
+ this.state.type = type;
+ this.state.value = val;
+ if (!this.isLookahead) {
+ this.updateContext(prevType);
+ }
+ }
+ replaceToken(type) {
+ this.state.type = type;
+ this.updateContext();
+ }
+ readToken_numberSign() {
+ if (this.state.pos === 0 && this.readToken_interpreter()) {
+ return;
+ }
+ const nextPos = this.state.pos + 1;
+ const next = this.codePointAtPos(nextPos);
+ if (next >= 48 && next <= 57) {
+ throw this.raise(Errors.UnexpectedDigitAfterHash, this.state.curPosition());
+ }
+ if (next === 123 || next === 91 && this.hasPlugin("recordAndTuple")) {
+ this.expectPlugin("recordAndTuple");
+ if (this.getPluginOption("recordAndTuple", "syntaxType") === "bar") {
+ throw this.raise(next === 123 ? Errors.RecordExpressionHashIncorrectStartSyntaxType : Errors.TupleExpressionHashIncorrectStartSyntaxType, this.state.curPosition());
+ }
+ this.state.pos += 2;
+ if (next === 123) {
+ this.finishToken(7);
+ } else {
+ this.finishToken(1);
+ }
+ } else if (isIdentifierStart(next)) {
+ ++this.state.pos;
+ this.finishToken(139, this.readWord1(next));
+ } else if (next === 92) {
+ ++this.state.pos;
+ this.finishToken(139, this.readWord1());
+ } else {
+ this.finishOp(27, 1);
+ }
+ }
+ readToken_dot() {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (next >= 48 && next <= 57) {
+ this.readNumber(true);
+ return;
+ }
+ if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) {
+ this.state.pos += 3;
+ this.finishToken(21);
+ } else {
+ ++this.state.pos;
+ this.finishToken(16);
+ }
+ }
+ readToken_slash() {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (next === 61) {
+ this.finishOp(31, 2);
+ } else {
+ this.finishOp(56, 1);
+ }
+ }
+ readToken_interpreter() {
+ if (this.state.pos !== 0 || this.length < 2) return false;
+ let ch = this.input.charCodeAt(this.state.pos + 1);
+ if (ch !== 33) return false;
+ const start = this.state.pos;
+ this.state.pos += 1;
+ while (!isNewLine(ch) && ++this.state.pos < this.length) {
+ ch = this.input.charCodeAt(this.state.pos);
+ }
+ const value = this.input.slice(start + 2, this.state.pos);
+ this.finishToken(28, value);
+ return true;
+ }
+ readToken_mult_modulo(code) {
+ let type = code === 42 ? 55 : 54;
+ let width = 1;
+ let next = this.input.charCodeAt(this.state.pos + 1);
+ if (code === 42 && next === 42) {
+ width++;
+ next = this.input.charCodeAt(this.state.pos + 2);
+ type = 57;
+ }
+ if (next === 61 && !this.state.inType) {
+ width++;
+ type = code === 37 ? 33 : 30;
+ }
+ this.finishOp(type, width);
+ }
+ readToken_pipe_amp(code) {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (next === code) {
+ if (this.input.charCodeAt(this.state.pos + 2) === 61) {
+ this.finishOp(30, 3);
+ } else {
+ this.finishOp(code === 124 ? 41 : 42, 2);
+ }
+ return;
+ }
+ if (code === 124) {
+ if (next === 62) {
+ this.finishOp(39, 2);
+ return;
+ }
+ if (this.hasPlugin("recordAndTuple") && next === 125) {
+ if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {
+ throw this.raise(Errors.RecordExpressionBarIncorrectEndSyntaxType, this.state.curPosition());
+ }
+ this.state.pos += 2;
+ this.finishToken(9);
+ return;
+ }
+ if (this.hasPlugin("recordAndTuple") && next === 93) {
+ if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {
+ throw this.raise(Errors.TupleExpressionBarIncorrectEndSyntaxType, this.state.curPosition());
+ }
+ this.state.pos += 2;
+ this.finishToken(4);
+ return;
+ }
+ }
+ if (next === 61) {
+ this.finishOp(30, 2);
+ return;
+ }
+ this.finishOp(code === 124 ? 43 : 45, 1);
+ }
+ readToken_caret() {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (next === 61 && !this.state.inType) {
+ this.finishOp(32, 2);
+ } else if (next === 94 && this.hasPlugin(["pipelineOperator", {
+ proposal: "hack",
+ topicToken: "^^"
+ }])) {
+ this.finishOp(37, 2);
+ const lookaheadCh = this.input.codePointAt(this.state.pos);
+ if (lookaheadCh === 94) {
+ this.unexpected();
+ }
+ } else {
+ this.finishOp(44, 1);
+ }
+ }
+ readToken_atSign() {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (next === 64 && this.hasPlugin(["pipelineOperator", {
+ proposal: "hack",
+ topicToken: "@@"
+ }])) {
+ this.finishOp(38, 2);
+ } else {
+ this.finishOp(26, 1);
+ }
+ }
+ readToken_plus_min(code) {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (next === code) {
+ this.finishOp(34, 2);
+ return;
+ }
+ if (next === 61) {
+ this.finishOp(30, 2);
+ } else {
+ this.finishOp(53, 1);
+ }
+ }
+ readToken_lt() {
+ const {
+ pos
+ } = this.state;
+ const next = this.input.charCodeAt(pos + 1);
+ if (next === 60) {
+ if (this.input.charCodeAt(pos + 2) === 61) {
+ this.finishOp(30, 3);
+ return;
+ }
+ this.finishOp(51, 2);
+ return;
+ }
+ if (next === 61) {
+ this.finishOp(49, 2);
+ return;
+ }
+ this.finishOp(47, 1);
+ }
+ readToken_gt() {
+ const {
+ pos
+ } = this.state;
+ const next = this.input.charCodeAt(pos + 1);
+ if (next === 62) {
+ const size = this.input.charCodeAt(pos + 2) === 62 ? 3 : 2;
+ if (this.input.charCodeAt(pos + size) === 61) {
+ this.finishOp(30, size + 1);
+ return;
+ }
+ this.finishOp(52, size);
+ return;
+ }
+ if (next === 61) {
+ this.finishOp(49, 2);
+ return;
+ }
+ this.finishOp(48, 1);
+ }
+ readToken_eq_excl(code) {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (next === 61) {
+ this.finishOp(46, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2);
+ return;
+ }
+ if (code === 61 && next === 62) {
+ this.state.pos += 2;
+ this.finishToken(19);
+ return;
+ }
+ this.finishOp(code === 61 ? 29 : 35, 1);
+ }
+ readToken_question() {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ const next2 = this.input.charCodeAt(this.state.pos + 2);
+ if (next === 63) {
+ if (next2 === 61) {
+ this.finishOp(30, 3);
+ } else {
+ this.finishOp(40, 2);
+ }
+ } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) {
+ this.state.pos += 2;
+ this.finishToken(18);
+ } else {
+ ++this.state.pos;
+ this.finishToken(17);
+ }
+ }
+ getTokenFromCode(code) {
+ switch (code) {
+ case 46:
+ this.readToken_dot();
+ return;
+ case 40:
+ ++this.state.pos;
+ this.finishToken(10);
+ return;
+ case 41:
+ ++this.state.pos;
+ this.finishToken(11);
+ return;
+ case 59:
+ ++this.state.pos;
+ this.finishToken(13);
+ return;
+ case 44:
+ ++this.state.pos;
+ this.finishToken(12);
+ return;
+ case 91:
+ if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) {
+ if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {
+ throw this.raise(Errors.TupleExpressionBarIncorrectStartSyntaxType, this.state.curPosition());
+ }
+ this.state.pos += 2;
+ this.finishToken(2);
+ } else {
+ ++this.state.pos;
+ this.finishToken(0);
+ }
+ return;
+ case 93:
+ ++this.state.pos;
+ this.finishToken(3);
+ return;
+ case 123:
+ if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) {
+ if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {
+ throw this.raise(Errors.RecordExpressionBarIncorrectStartSyntaxType, this.state.curPosition());
+ }
+ this.state.pos += 2;
+ this.finishToken(6);
+ } else {
+ ++this.state.pos;
+ this.finishToken(5);
+ }
+ return;
+ case 125:
+ ++this.state.pos;
+ this.finishToken(8);
+ return;
+ case 58:
+ if (this.hasPlugin("functionBind") && this.input.charCodeAt(this.state.pos + 1) === 58) {
+ this.finishOp(15, 2);
+ } else {
+ ++this.state.pos;
+ this.finishToken(14);
+ }
+ return;
+ case 63:
+ this.readToken_question();
+ return;
+ case 96:
+ this.readTemplateToken();
+ return;
+ case 48:
+ {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (next === 120 || next === 88) {
+ this.readRadixNumber(16);
+ return;
+ }
+ if (next === 111 || next === 79) {
+ this.readRadixNumber(8);
+ return;
+ }
+ if (next === 98 || next === 66) {
+ this.readRadixNumber(2);
+ return;
+ }
+ }
+ case 49:
+ case 50:
+ case 51:
+ case 52:
+ case 53:
+ case 54:
+ case 55:
+ case 56:
+ case 57:
+ this.readNumber(false);
+ return;
+ case 34:
+ case 39:
+ this.readString(code);
+ return;
+ case 47:
+ this.readToken_slash();
+ return;
+ case 37:
+ case 42:
+ this.readToken_mult_modulo(code);
+ return;
+ case 124:
+ case 38:
+ this.readToken_pipe_amp(code);
+ return;
+ case 94:
+ this.readToken_caret();
+ return;
+ case 43:
+ case 45:
+ this.readToken_plus_min(code);
+ return;
+ case 60:
+ this.readToken_lt();
+ return;
+ case 62:
+ this.readToken_gt();
+ return;
+ case 61:
+ case 33:
+ this.readToken_eq_excl(code);
+ return;
+ case 126:
+ this.finishOp(36, 1);
+ return;
+ case 64:
+ this.readToken_atSign();
+ return;
+ case 35:
+ this.readToken_numberSign();
+ return;
+ case 92:
+ this.readWord();
+ return;
+ default:
+ if (isIdentifierStart(code)) {
+ this.readWord(code);
+ return;
+ }
+ }
+ throw this.raise(Errors.InvalidOrUnexpectedToken, this.state.curPosition(), {
+ unexpected: String.fromCodePoint(code)
+ });
+ }
+ finishOp(type, size) {
+ const str = this.input.slice(this.state.pos, this.state.pos + size);
+ this.state.pos += size;
+ this.finishToken(type, str);
+ }
+ readRegexp() {
+ const startLoc = this.state.startLoc;
+ const start = this.state.start + 1;
+ let escaped, inClass;
+ let {
+ pos
+ } = this.state;
+ for (;; ++pos) {
+ if (pos >= this.length) {
+ throw this.raise(Errors.UnterminatedRegExp, createPositionWithColumnOffset(startLoc, 1));
+ }
+ const ch = this.input.charCodeAt(pos);
+ if (isNewLine(ch)) {
+ throw this.raise(Errors.UnterminatedRegExp, createPositionWithColumnOffset(startLoc, 1));
+ }
+ if (escaped) {
+ escaped = false;
+ } else {
+ if (ch === 91) {
+ inClass = true;
+ } else if (ch === 93 && inClass) {
+ inClass = false;
+ } else if (ch === 47 && !inClass) {
+ break;
+ }
+ escaped = ch === 92;
+ }
+ }
+ const content = this.input.slice(start, pos);
+ ++pos;
+ let mods = "";
+ const nextPos = () => createPositionWithColumnOffset(startLoc, pos + 2 - start);
+ while (pos < this.length) {
+ const cp = this.codePointAtPos(pos);
+ const char = String.fromCharCode(cp);
+ if (VALID_REGEX_FLAGS.has(cp)) {
+ if (cp === 118) {
+ if (mods.includes("u")) {
+ this.raise(Errors.IncompatibleRegExpUVFlags, nextPos());
+ }
+ } else if (cp === 117) {
+ if (mods.includes("v")) {
+ this.raise(Errors.IncompatibleRegExpUVFlags, nextPos());
+ }
+ }
+ if (mods.includes(char)) {
+ this.raise(Errors.DuplicateRegExpFlags, nextPos());
+ }
+ } else if (isIdentifierChar(cp) || cp === 92) {
+ this.raise(Errors.MalformedRegExpFlags, nextPos());
+ } else {
+ break;
+ }
+ ++pos;
+ mods += char;
+ }
+ this.state.pos = pos;
+ this.finishToken(138, {
+ pattern: content,
+ flags: mods
+ });
+ }
+ readInt(radix, len, forceLen = false, allowNumSeparator = true) {
+ const {
+ n,
+ pos
+ } = readInt(this.input, this.state.pos, this.state.lineStart, this.state.curLine, radix, len, forceLen, allowNumSeparator, this.errorHandlers_readInt, false);
+ this.state.pos = pos;
+ return n;
+ }
+ readRadixNumber(radix) {
+ const start = this.state.pos;
+ const startLoc = this.state.curPosition();
+ let isBigInt = false;
+ this.state.pos += 2;
+ const val = this.readInt(radix);
+ if (val == null) {
+ this.raise(Errors.InvalidDigit, createPositionWithColumnOffset(startLoc, 2), {
+ radix
+ });
+ }
+ const next = this.input.charCodeAt(this.state.pos);
+ if (next === 110) {
+ ++this.state.pos;
+ isBigInt = true;
+ } else if (next === 109) {
+ throw this.raise(Errors.InvalidDecimal, startLoc);
+ }
+ if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {
+ throw this.raise(Errors.NumberIdentifier, this.state.curPosition());
+ }
+ if (isBigInt) {
+ const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, "");
+ this.finishToken(136, str);
+ return;
+ }
+ this.finishToken(135, val);
+ }
+ readNumber(startsWithDot) {
+ const start = this.state.pos;
+ const startLoc = this.state.curPosition();
+ let isFloat = false;
+ let isBigInt = false;
+ let hasExponent = false;
+ let isOctal = false;
+ if (!startsWithDot && this.readInt(10) === null) {
+ this.raise(Errors.InvalidNumber, this.state.curPosition());
+ }
+ const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48;
+ if (hasLeadingZero) {
+ const integer = this.input.slice(start, this.state.pos);
+ this.recordStrictModeErrors(Errors.StrictOctalLiteral, startLoc);
+ if (!this.state.strict) {
+ const underscorePos = integer.indexOf("_");
+ if (underscorePos > 0) {
+ this.raise(Errors.ZeroDigitNumericSeparator, createPositionWithColumnOffset(startLoc, underscorePos));
+ }
+ }
+ isOctal = hasLeadingZero && !/[89]/.test(integer);
+ }
+ let next = this.input.charCodeAt(this.state.pos);
+ if (next === 46 && !isOctal) {
+ ++this.state.pos;
+ this.readInt(10);
+ isFloat = true;
+ next = this.input.charCodeAt(this.state.pos);
+ }
+ if ((next === 69 || next === 101) && !isOctal) {
+ next = this.input.charCodeAt(++this.state.pos);
+ if (next === 43 || next === 45) {
+ ++this.state.pos;
+ }
+ if (this.readInt(10) === null) {
+ this.raise(Errors.InvalidOrMissingExponent, startLoc);
+ }
+ isFloat = true;
+ hasExponent = true;
+ next = this.input.charCodeAt(this.state.pos);
+ }
+ if (next === 110) {
+ if (isFloat || hasLeadingZero) {
+ this.raise(Errors.InvalidBigIntLiteral, startLoc);
+ }
+ ++this.state.pos;
+ isBigInt = true;
+ }
+ if (next === 109) {
+ this.expectPlugin("decimal", this.state.curPosition());
+ if (hasExponent || hasLeadingZero) {
+ this.raise(Errors.InvalidDecimal, startLoc);
+ }
+ ++this.state.pos;
+ var isDecimal = true;
+ }
+ if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {
+ throw this.raise(Errors.NumberIdentifier, this.state.curPosition());
+ }
+ const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, "");
+ if (isBigInt) {
+ this.finishToken(136, str);
+ return;
+ }
+ if (isDecimal) {
+ this.finishToken(137, str);
+ return;
+ }
+ const val = isOctal ? parseInt(str, 8) : parseFloat(str);
+ this.finishToken(135, val);
+ }
+ readCodePoint(throwOnInvalid) {
+ const {
+ code,
+ pos
+ } = readCodePoint(this.input, this.state.pos, this.state.lineStart, this.state.curLine, throwOnInvalid, this.errorHandlers_readCodePoint);
+ this.state.pos = pos;
+ return code;
+ }
+ readString(quote) {
+ const {
+ str,
+ pos,
+ curLine,
+ lineStart
+ } = readStringContents(quote === 34 ? "double" : "single", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_string);
+ this.state.pos = pos + 1;
+ this.state.lineStart = lineStart;
+ this.state.curLine = curLine;
+ this.finishToken(134, str);
+ }
+ readTemplateContinuation() {
+ if (!this.match(8)) {
+ this.unexpected(null, 8);
+ }
+ this.state.pos--;
+ this.readTemplateToken();
+ }
+ readTemplateToken() {
+ const opening = this.input[this.state.pos];
+ const {
+ str,
+ firstInvalidLoc,
+ pos,
+ curLine,
+ lineStart
+ } = readStringContents("template", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_template);
+ this.state.pos = pos + 1;
+ this.state.lineStart = lineStart;
+ this.state.curLine = curLine;
+ if (firstInvalidLoc) {
+ this.state.firstInvalidTemplateEscapePos = new Position(firstInvalidLoc.curLine, firstInvalidLoc.pos - firstInvalidLoc.lineStart, this.sourceToOffsetPos(firstInvalidLoc.pos));
+ }
+ if (this.input.codePointAt(pos) === 96) {
+ this.finishToken(24, firstInvalidLoc ? null : opening + str + "`");
+ } else {
+ this.state.pos++;
+ this.finishToken(25, firstInvalidLoc ? null : opening + str + "${");
+ }
+ }
+ recordStrictModeErrors(toParseError, at) {
+ const index = at.index;
+ if (this.state.strict && !this.state.strictErrors.has(index)) {
+ this.raise(toParseError, at);
+ } else {
+ this.state.strictErrors.set(index, [toParseError, at]);
+ }
+ }
+ readWord1(firstCode) {
+ this.state.containsEsc = false;
+ let word = "";
+ const start = this.state.pos;
+ let chunkStart = this.state.pos;
+ if (firstCode !== undefined) {
+ this.state.pos += firstCode <= 0xffff ? 1 : 2;
+ }
+ while (this.state.pos < this.length) {
+ const ch = this.codePointAtPos(this.state.pos);
+ if (isIdentifierChar(ch)) {
+ this.state.pos += ch <= 0xffff ? 1 : 2;
+ } else if (ch === 92) {
+ this.state.containsEsc = true;
+ word += this.input.slice(chunkStart, this.state.pos);
+ const escStart = this.state.curPosition();
+ const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar;
+ if (this.input.charCodeAt(++this.state.pos) !== 117) {
+ this.raise(Errors.MissingUnicodeEscape, this.state.curPosition());
+ chunkStart = this.state.pos - 1;
+ continue;
+ }
+ ++this.state.pos;
+ const esc = this.readCodePoint(true);
+ if (esc !== null) {
+ if (!identifierCheck(esc)) {
+ this.raise(Errors.EscapedCharNotAnIdentifier, escStart);
+ }
+ word += String.fromCodePoint(esc);
+ }
+ chunkStart = this.state.pos;
+ } else {
+ break;
+ }
+ }
+ return word + this.input.slice(chunkStart, this.state.pos);
+ }
+ readWord(firstCode) {
+ const word = this.readWord1(firstCode);
+ const type = keywords$1.get(word);
+ if (type !== undefined) {
+ this.finishToken(type, tokenLabelName(type));
+ } else {
+ this.finishToken(132, word);
+ }
+ }
+ checkKeywordEscapes() {
+ const {
+ type
+ } = this.state;
+ if (tokenIsKeyword(type) && this.state.containsEsc) {
+ this.raise(Errors.InvalidEscapedReservedWord, this.state.startLoc, {
+ reservedWord: tokenLabelName(type)
+ });
+ }
+ }
+ raise(toParseError, at, details = {}) {
+ const loc = at instanceof Position ? at : at.loc.start;
+ const error = toParseError(loc, details);
+ if (!(this.optionFlags & 2048)) throw error;
+ if (!this.isLookahead) this.state.errors.push(error);
+ return error;
+ }
+ raiseOverwrite(toParseError, at, details = {}) {
+ const loc = at instanceof Position ? at : at.loc.start;
+ const pos = loc.index;
+ const errors = this.state.errors;
+ for (let i = errors.length - 1; i >= 0; i--) {
+ const error = errors[i];
+ if (error.loc.index === pos) {
+ return errors[i] = toParseError(loc, details);
+ }
+ if (error.loc.index < pos) break;
+ }
+ return this.raise(toParseError, at, details);
+ }
+ updateContext(prevType) {}
+ unexpected(loc, type) {
+ throw this.raise(Errors.UnexpectedToken, loc != null ? loc : this.state.startLoc, {
+ expected: type ? tokenLabelName(type) : null
+ });
+ }
+ expectPlugin(pluginName, loc) {
+ if (this.hasPlugin(pluginName)) {
+ return true;
+ }
+ throw this.raise(Errors.MissingPlugin, loc != null ? loc : this.state.startLoc, {
+ missingPlugin: [pluginName]
+ });
+ }
+ expectOnePlugin(pluginNames) {
+ if (!pluginNames.some(name => this.hasPlugin(name))) {
+ throw this.raise(Errors.MissingOneOfPlugins, this.state.startLoc, {
+ missingPlugin: pluginNames
+ });
+ }
+ }
+ errorBuilder(error) {
+ return (pos, lineStart, curLine) => {
+ this.raise(error, buildPosition(pos, lineStart, curLine));
+ };
+ }
+}
+class ClassScope {
+ constructor() {
+ this.privateNames = new Set();
+ this.loneAccessors = new Map();
+ this.undefinedPrivateNames = new Map();
+ }
+}
+class ClassScopeHandler {
+ constructor(parser) {
+ this.parser = void 0;
+ this.stack = [];
+ this.undefinedPrivateNames = new Map();
+ this.parser = parser;
+ }
+ current() {
+ return this.stack[this.stack.length - 1];
+ }
+ enter() {
+ this.stack.push(new ClassScope());
+ }
+ exit() {
+ const oldClassScope = this.stack.pop();
+ const current = this.current();
+ for (const [name, loc] of Array.from(oldClassScope.undefinedPrivateNames)) {
+ if (current) {
+ if (!current.undefinedPrivateNames.has(name)) {
+ current.undefinedPrivateNames.set(name, loc);
+ }
+ } else {
+ this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, {
+ identifierName: name
+ });
+ }
+ }
+ }
+ declarePrivateName(name, elementType, loc) {
+ const {
+ privateNames,
+ loneAccessors,
+ undefinedPrivateNames
+ } = this.current();
+ let redefined = privateNames.has(name);
+ if (elementType & 3) {
+ const accessor = redefined && loneAccessors.get(name);
+ if (accessor) {
+ const oldStatic = accessor & 4;
+ const newStatic = elementType & 4;
+ const oldKind = accessor & 3;
+ const newKind = elementType & 3;
+ redefined = oldKind === newKind || oldStatic !== newStatic;
+ if (!redefined) loneAccessors.delete(name);
+ } else if (!redefined) {
+ loneAccessors.set(name, elementType);
+ }
+ }
+ if (redefined) {
+ this.parser.raise(Errors.PrivateNameRedeclaration, loc, {
+ identifierName: name
+ });
+ }
+ privateNames.add(name);
+ undefinedPrivateNames.delete(name);
+ }
+ usePrivateName(name, loc) {
+ let classScope;
+ for (classScope of this.stack) {
+ if (classScope.privateNames.has(name)) return;
+ }
+ if (classScope) {
+ classScope.undefinedPrivateNames.set(name, loc);
+ } else {
+ this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, {
+ identifierName: name
+ });
+ }
+ }
+}
+class ExpressionScope {
+ constructor(type = 0) {
+ this.type = type;
+ }
+ canBeArrowParameterDeclaration() {
+ return this.type === 2 || this.type === 1;
+ }
+ isCertainlyParameterDeclaration() {
+ return this.type === 3;
+ }
+}
+class ArrowHeadParsingScope extends ExpressionScope {
+ constructor(type) {
+ super(type);
+ this.declarationErrors = new Map();
+ }
+ recordDeclarationError(ParsingErrorClass, at) {
+ const index = at.index;
+ this.declarationErrors.set(index, [ParsingErrorClass, at]);
+ }
+ clearDeclarationError(index) {
+ this.declarationErrors.delete(index);
+ }
+ iterateErrors(iterator) {
+ this.declarationErrors.forEach(iterator);
+ }
+}
+class ExpressionScopeHandler {
+ constructor(parser) {
+ this.parser = void 0;
+ this.stack = [new ExpressionScope()];
+ this.parser = parser;
+ }
+ enter(scope) {
+ this.stack.push(scope);
+ }
+ exit() {
+ this.stack.pop();
+ }
+ recordParameterInitializerError(toParseError, node) {
+ const origin = node.loc.start;
+ const {
+ stack
+ } = this;
+ let i = stack.length - 1;
+ let scope = stack[i];
+ while (!scope.isCertainlyParameterDeclaration()) {
+ if (scope.canBeArrowParameterDeclaration()) {
+ scope.recordDeclarationError(toParseError, origin);
+ } else {
+ return;
+ }
+ scope = stack[--i];
+ }
+ this.parser.raise(toParseError, origin);
+ }
+ recordArrowParameterBindingError(error, node) {
+ const {
+ stack
+ } = this;
+ const scope = stack[stack.length - 1];
+ const origin = node.loc.start;
+ if (scope.isCertainlyParameterDeclaration()) {
+ this.parser.raise(error, origin);
+ } else if (scope.canBeArrowParameterDeclaration()) {
+ scope.recordDeclarationError(error, origin);
+ } else {
+ return;
+ }
+ }
+ recordAsyncArrowParametersError(at) {
+ const {
+ stack
+ } = this;
+ let i = stack.length - 1;
+ let scope = stack[i];
+ while (scope.canBeArrowParameterDeclaration()) {
+ if (scope.type === 2) {
+ scope.recordDeclarationError(Errors.AwaitBindingIdentifier, at);
+ }
+ scope = stack[--i];
+ }
+ }
+ validateAsPattern() {
+ const {
+ stack
+ } = this;
+ const currentScope = stack[stack.length - 1];
+ if (!currentScope.canBeArrowParameterDeclaration()) return;
+ currentScope.iterateErrors(([toParseError, loc]) => {
+ this.parser.raise(toParseError, loc);
+ let i = stack.length - 2;
+ let scope = stack[i];
+ while (scope.canBeArrowParameterDeclaration()) {
+ scope.clearDeclarationError(loc.index);
+ scope = stack[--i];
+ }
+ });
+ }
+}
+function newParameterDeclarationScope() {
+ return new ExpressionScope(3);
+}
+function newArrowHeadScope() {
+ return new ArrowHeadParsingScope(1);
+}
+function newAsyncArrowScope() {
+ return new ArrowHeadParsingScope(2);
+}
+function newExpressionScope() {
+ return new ExpressionScope();
+}
+class UtilParser extends Tokenizer {
+ addExtra(node, key, value, enumerable = true) {
+ if (!node) return;
+ let {
+ extra
+ } = node;
+ if (extra == null) {
+ extra = {};
+ node.extra = extra;
+ }
+ if (enumerable) {
+ extra[key] = value;
+ } else {
+ Object.defineProperty(extra, key, {
+ enumerable,
+ value
+ });
+ }
+ }
+ isContextual(token) {
+ return this.state.type === token && !this.state.containsEsc;
+ }
+ isUnparsedContextual(nameStart, name) {
+ if (this.input.startsWith(name, nameStart)) {
+ const nextCh = this.input.charCodeAt(nameStart + name.length);
+ return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800);
+ }
+ return false;
+ }
+ isLookaheadContextual(name) {
+ const next = this.nextTokenStart();
+ return this.isUnparsedContextual(next, name);
+ }
+ eatContextual(token) {
+ if (this.isContextual(token)) {
+ this.next();
+ return true;
+ }
+ return false;
+ }
+ expectContextual(token, toParseError) {
+ if (!this.eatContextual(token)) {
+ if (toParseError != null) {
+ throw this.raise(toParseError, this.state.startLoc);
+ }
+ this.unexpected(null, token);
+ }
+ }
+ canInsertSemicolon() {
+ return this.match(140) || this.match(8) || this.hasPrecedingLineBreak();
+ }
+ hasPrecedingLineBreak() {
+ return hasNewLine(this.input, this.offsetToSourcePos(this.state.lastTokEndLoc.index), this.state.start);
+ }
+ hasFollowingLineBreak() {
+ return hasNewLine(this.input, this.state.end, this.nextTokenStart());
+ }
+ isLineTerminator() {
+ return this.eat(13) || this.canInsertSemicolon();
+ }
+ semicolon(allowAsi = true) {
+ if (allowAsi ? this.isLineTerminator() : this.eat(13)) return;
+ this.raise(Errors.MissingSemicolon, this.state.lastTokEndLoc);
+ }
+ expect(type, loc) {
+ if (!this.eat(type)) {
+ this.unexpected(loc, type);
+ }
+ }
+ tryParse(fn, oldState = this.state.clone()) {
+ const abortSignal = {
+ node: null
+ };
+ try {
+ const node = fn((node = null) => {
+ abortSignal.node = node;
+ throw abortSignal;
+ });
+ if (this.state.errors.length > oldState.errors.length) {
+ const failState = this.state;
+ this.state = oldState;
+ this.state.tokensLength = failState.tokensLength;
+ return {
+ node,
+ error: failState.errors[oldState.errors.length],
+ thrown: false,
+ aborted: false,
+ failState
+ };
+ }
+ return {
+ node: node,
+ error: null,
+ thrown: false,
+ aborted: false,
+ failState: null
+ };
+ } catch (error) {
+ const failState = this.state;
+ this.state = oldState;
+ if (error instanceof SyntaxError) {
+ return {
+ node: null,
+ error,
+ thrown: true,
+ aborted: false,
+ failState
+ };
+ }
+ if (error === abortSignal) {
+ return {
+ node: abortSignal.node,
+ error: null,
+ thrown: false,
+ aborted: true,
+ failState
+ };
+ }
+ throw error;
+ }
+ }
+ checkExpressionErrors(refExpressionErrors, andThrow) {
+ if (!refExpressionErrors) return false;
+ const {
+ shorthandAssignLoc,
+ doubleProtoLoc,
+ privateKeyLoc,
+ optionalParametersLoc,
+ voidPatternLoc
+ } = refExpressionErrors;
+ const hasErrors = !!shorthandAssignLoc || !!doubleProtoLoc || !!optionalParametersLoc || !!privateKeyLoc || !!voidPatternLoc;
+ if (!andThrow) {
+ return hasErrors;
+ }
+ if (shorthandAssignLoc != null) {
+ this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc);
+ }
+ if (doubleProtoLoc != null) {
+ this.raise(Errors.DuplicateProto, doubleProtoLoc);
+ }
+ if (privateKeyLoc != null) {
+ this.raise(Errors.UnexpectedPrivateField, privateKeyLoc);
+ }
+ if (optionalParametersLoc != null) {
+ this.unexpected(optionalParametersLoc);
+ }
+ if (voidPatternLoc != null) {
+ this.raise(Errors.InvalidCoverDiscardElement, voidPatternLoc);
+ }
+ }
+ isLiteralPropertyName() {
+ return tokenIsLiteralPropertyName(this.state.type);
+ }
+ isPrivateName(node) {
+ return node.type === "PrivateName";
+ }
+ getPrivateNameSV(node) {
+ return node.id.name;
+ }
+ hasPropertyAsPrivateName(node) {
+ return (node.type === "MemberExpression" || node.type === "OptionalMemberExpression") && this.isPrivateName(node.property);
+ }
+ isObjectProperty(node) {
+ return node.type === "ObjectProperty";
+ }
+ isObjectMethod(node) {
+ return node.type === "ObjectMethod";
+ }
+ initializeScopes(inModule = this.options.sourceType === "module") {
+ const oldLabels = this.state.labels;
+ this.state.labels = [];
+ const oldExportedIdentifiers = this.exportedIdentifiers;
+ this.exportedIdentifiers = new Set();
+ const oldInModule = this.inModule;
+ this.inModule = inModule;
+ const oldScope = this.scope;
+ const ScopeHandler = this.getScopeHandler();
+ this.scope = new ScopeHandler(this, inModule);
+ const oldProdParam = this.prodParam;
+ this.prodParam = new ProductionParameterHandler();
+ const oldClassScope = this.classScope;
+ this.classScope = new ClassScopeHandler(this);
+ const oldExpressionScope = this.expressionScope;
+ this.expressionScope = new ExpressionScopeHandler(this);
+ return () => {
+ this.state.labels = oldLabels;
+ this.exportedIdentifiers = oldExportedIdentifiers;
+ this.inModule = oldInModule;
+ this.scope = oldScope;
+ this.prodParam = oldProdParam;
+ this.classScope = oldClassScope;
+ this.expressionScope = oldExpressionScope;
+ };
+ }
+ enterInitialScopes() {
+ let paramFlags = 0;
+ if (this.inModule || this.optionFlags & 1) {
+ paramFlags |= 2;
+ }
+ if (this.optionFlags & 32) {
+ paramFlags |= 1;
+ }
+ const isCommonJS = !this.inModule && this.options.sourceType === "commonjs";
+ if (isCommonJS || this.optionFlags & 2) {
+ paramFlags |= 4;
+ }
+ this.prodParam.enter(paramFlags);
+ let scopeFlags = isCommonJS ? 514 : 1;
+ if (this.optionFlags & 4) {
+ scopeFlags |= 512;
+ }
+ this.scope.enter(scopeFlags);
+ }
+ checkDestructuringPrivate(refExpressionErrors) {
+ const {
+ privateKeyLoc
+ } = refExpressionErrors;
+ if (privateKeyLoc !== null) {
+ this.expectPlugin("destructuringPrivate", privateKeyLoc);
+ }
+ }
+}
+class ExpressionErrors {
+ constructor() {
+ this.shorthandAssignLoc = null;
+ this.doubleProtoLoc = null;
+ this.privateKeyLoc = null;
+ this.optionalParametersLoc = null;
+ this.voidPatternLoc = null;
+ }
+}
+class Node {
+ constructor(parser, pos, loc) {
+ this.type = "";
+ this.start = pos;
+ this.end = 0;
+ this.loc = new SourceLocation(loc);
+ if ((parser == null ? void 0 : parser.optionFlags) & 128) this.range = [pos, 0];
+ if (parser != null && parser.filename) this.loc.filename = parser.filename;
+ }
+}
+const NodePrototype = Node.prototype;
+NodePrototype.__clone = function () {
+ const newNode = new Node(undefined, this.start, this.loc.start);
+ const keys = Object.keys(this);
+ for (let i = 0, length = keys.length; i < length; i++) {
+ const key = keys[i];
+ if (key !== "leadingComments" && key !== "trailingComments" && key !== "innerComments") {
+ newNode[key] = this[key];
+ }
+ }
+ return newNode;
+};
+class NodeUtils extends UtilParser {
+ startNode() {
+ const loc = this.state.startLoc;
+ return new Node(this, loc.index, loc);
+ }
+ startNodeAt(loc) {
+ return new Node(this, loc.index, loc);
+ }
+ startNodeAtNode(type) {
+ return this.startNodeAt(type.loc.start);
+ }
+ finishNode(node, type) {
+ return this.finishNodeAt(node, type, this.state.lastTokEndLoc);
+ }
+ finishNodeAt(node, type, endLoc) {
+ node.type = type;
+ node.end = endLoc.index;
+ node.loc.end = endLoc;
+ if (this.optionFlags & 128) node.range[1] = endLoc.index;
+ if (this.optionFlags & 4096) {
+ this.processComment(node);
+ }
+ return node;
+ }
+ resetStartLocation(node, startLoc) {
+ node.start = startLoc.index;
+ node.loc.start = startLoc;
+ if (this.optionFlags & 128) node.range[0] = startLoc.index;
+ }
+ resetEndLocation(node, endLoc = this.state.lastTokEndLoc) {
+ node.end = endLoc.index;
+ node.loc.end = endLoc;
+ if (this.optionFlags & 128) node.range[1] = endLoc.index;
+ }
+ resetStartLocationFromNode(node, locationNode) {
+ this.resetStartLocation(node, locationNode.loc.start);
+ }
+ castNodeTo(node, type) {
+ node.type = type;
+ return node;
+ }
+ cloneIdentifier(node) {
+ const {
+ type,
+ start,
+ end,
+ loc,
+ range,
+ name
+ } = node;
+ const cloned = Object.create(NodePrototype);
+ cloned.type = type;
+ cloned.start = start;
+ cloned.end = end;
+ cloned.loc = loc;
+ cloned.range = range;
+ cloned.name = name;
+ if (node.extra) cloned.extra = node.extra;
+ return cloned;
+ }
+ cloneStringLiteral(node) {
+ const {
+ type,
+ start,
+ end,
+ loc,
+ range,
+ extra
+ } = node;
+ const cloned = Object.create(NodePrototype);
+ cloned.type = type;
+ cloned.start = start;
+ cloned.end = end;
+ cloned.loc = loc;
+ cloned.range = range;
+ cloned.extra = extra;
+ cloned.value = node.value;
+ return cloned;
+ }
+}
+const unwrapParenthesizedExpression = node => {
+ return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node;
+};
+class LValParser extends NodeUtils {
+ toAssignable(node, isLHS = false) {
+ var _node$extra, _node$extra3;
+ let parenthesized = undefined;
+ if (node.type === "ParenthesizedExpression" || (_node$extra = node.extra) != null && _node$extra.parenthesized) {
+ parenthesized = unwrapParenthesizedExpression(node);
+ if (isLHS) {
+ if (parenthesized.type === "Identifier") {
+ this.expressionScope.recordArrowParameterBindingError(Errors.InvalidParenthesizedAssignment, node);
+ } else if (parenthesized.type !== "CallExpression" && parenthesized.type !== "MemberExpression" && !this.isOptionalMemberExpression(parenthesized)) {
+ this.raise(Errors.InvalidParenthesizedAssignment, node);
+ }
+ } else {
+ this.raise(Errors.InvalidParenthesizedAssignment, node);
+ }
+ }
+ switch (node.type) {
+ case "Identifier":
+ case "ObjectPattern":
+ case "ArrayPattern":
+ case "AssignmentPattern":
+ case "RestElement":
+ case "VoidPattern":
+ break;
+ case "ObjectExpression":
+ this.castNodeTo(node, "ObjectPattern");
+ for (let i = 0, length = node.properties.length, last = length - 1; i < length; i++) {
+ var _node$extra2;
+ const prop = node.properties[i];
+ const isLast = i === last;
+ this.toAssignableObjectExpressionProp(prop, isLast, isLHS);
+ if (isLast && prop.type === "RestElement" && (_node$extra2 = node.extra) != null && _node$extra2.trailingCommaLoc) {
+ this.raise(Errors.RestTrailingComma, node.extra.trailingCommaLoc);
+ }
+ }
+ break;
+ case "ObjectProperty":
+ {
+ const {
+ key,
+ value
+ } = node;
+ if (this.isPrivateName(key)) {
+ this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start);
+ }
+ this.toAssignable(value, isLHS);
+ break;
+ }
+ case "SpreadElement":
+ {
+ throw new Error("Internal @babel/parser error (this is a bug, please report it)." + " SpreadElement should be converted by .toAssignable's caller.");
+ }
+ case "ArrayExpression":
+ this.castNodeTo(node, "ArrayPattern");
+ this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingCommaLoc, isLHS);
+ break;
+ case "AssignmentExpression":
+ if (node.operator !== "=") {
+ this.raise(Errors.MissingEqInAssignment, node.left.loc.end);
+ }
+ this.castNodeTo(node, "AssignmentPattern");
+ delete node.operator;
+ if (node.left.type === "VoidPattern") {
+ this.raise(Errors.VoidPatternInitializer, node.left);
+ }
+ this.toAssignable(node.left, isLHS);
+ break;
+ case "ParenthesizedExpression":
+ this.toAssignable(parenthesized, isLHS);
+ break;
+ }
+ }
+ toAssignableObjectExpressionProp(prop, isLast, isLHS) {
+ if (prop.type === "ObjectMethod") {
+ this.raise(prop.kind === "get" || prop.kind === "set" ? Errors.PatternHasAccessor : Errors.PatternHasMethod, prop.key);
+ } else if (prop.type === "SpreadElement") {
+ this.castNodeTo(prop, "RestElement");
+ const arg = prop.argument;
+ this.checkToRestConversion(arg, false);
+ this.toAssignable(arg, isLHS);
+ if (!isLast) {
+ this.raise(Errors.RestTrailingComma, prop);
+ }
+ } else {
+ this.toAssignable(prop, isLHS);
+ }
+ }
+ toAssignableList(exprList, trailingCommaLoc, isLHS) {
+ const end = exprList.length - 1;
+ for (let i = 0; i <= end; i++) {
+ const elt = exprList[i];
+ if (!elt) continue;
+ this.toAssignableListItem(exprList, i, isLHS);
+ if (elt.type === "RestElement") {
+ if (i < end) {
+ this.raise(Errors.RestTrailingComma, elt);
+ } else if (trailingCommaLoc) {
+ this.raise(Errors.RestTrailingComma, trailingCommaLoc);
+ }
+ }
+ }
+ }
+ toAssignableListItem(exprList, index, isLHS) {
+ const node = exprList[index];
+ if (node.type === "SpreadElement") {
+ this.castNodeTo(node, "RestElement");
+ const arg = node.argument;
+ this.checkToRestConversion(arg, true);
+ this.toAssignable(arg, isLHS);
+ } else {
+ this.toAssignable(node, isLHS);
+ }
+ }
+ isAssignable(node, isBinding) {
+ switch (node.type) {
+ case "Identifier":
+ case "ObjectPattern":
+ case "ArrayPattern":
+ case "AssignmentPattern":
+ case "RestElement":
+ case "VoidPattern":
+ return true;
+ case "ObjectExpression":
+ {
+ const last = node.properties.length - 1;
+ return node.properties.every((prop, i) => {
+ return prop.type !== "ObjectMethod" && (i === last || prop.type !== "SpreadElement") && this.isAssignable(prop);
+ });
+ }
+ case "ObjectProperty":
+ return this.isAssignable(node.value);
+ case "SpreadElement":
+ return this.isAssignable(node.argument);
+ case "ArrayExpression":
+ return node.elements.every(element => element === null || this.isAssignable(element));
+ case "AssignmentExpression":
+ return node.operator === "=";
+ case "ParenthesizedExpression":
+ return this.isAssignable(node.expression);
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return !isBinding;
+ default:
+ return false;
+ }
+ }
+ toReferencedList(exprList, isParenthesizedExpr) {
+ return exprList;
+ }
+ toReferencedListDeep(exprList, isParenthesizedExpr) {
+ this.toReferencedList(exprList, isParenthesizedExpr);
+ for (const expr of exprList) {
+ if ((expr == null ? void 0 : expr.type) === "ArrayExpression") {
+ this.toReferencedListDeep(expr.elements);
+ }
+ }
+ }
+ parseSpread(refExpressionErrors) {
+ const node = this.startNode();
+ this.next();
+ node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined);
+ return this.finishNode(node, "SpreadElement");
+ }
+ parseRestBinding() {
+ const node = this.startNode();
+ this.next();
+ const argument = this.parseBindingAtom();
+ if (argument.type === "VoidPattern") {
+ this.raise(Errors.UnexpectedVoidPattern, argument);
+ }
+ node.argument = argument;
+ return this.finishNode(node, "RestElement");
+ }
+ parseBindingAtom() {
+ switch (this.state.type) {
+ case 0:
+ {
+ const node = this.startNode();
+ this.next();
+ node.elements = this.parseBindingList(3, 93, 1);
+ return this.finishNode(node, "ArrayPattern");
+ }
+ case 5:
+ return this.parseObjectLike(8, true);
+ case 88:
+ return this.parseVoidPattern(null);
+ }
+ return this.parseIdentifier();
+ }
+ parseBindingList(close, closeCharCode, flags) {
+ const allowEmpty = flags & 1;
+ const elts = [];
+ let first = true;
+ while (!this.eat(close)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(12);
+ }
+ if (allowEmpty && this.match(12)) {
+ elts.push(null);
+ } else if (this.eat(close)) {
+ break;
+ } else if (this.match(21)) {
+ let rest = this.parseRestBinding();
+ if (this.hasPlugin("flow") || flags & 2) {
+ rest = this.parseFunctionParamType(rest);
+ }
+ elts.push(rest);
+ if (!this.checkCommaAfterRest(closeCharCode)) {
+ this.expect(close);
+ break;
+ }
+ } else {
+ const decorators = [];
+ if (flags & 2) {
+ if (this.match(26) && this.hasPlugin("decorators")) {
+ this.raise(Errors.UnsupportedParameterDecorator, this.state.startLoc);
+ }
+ while (this.match(26)) {
+ decorators.push(this.parseDecorator());
+ }
+ }
+ elts.push(this.parseBindingElement(flags, decorators));
+ }
+ }
+ return elts;
+ }
+ parseBindingRestProperty(prop) {
+ this.next();
+ if (this.hasPlugin("discardBinding") && this.match(88)) {
+ prop.argument = this.parseVoidPattern(null);
+ this.raise(Errors.UnexpectedVoidPattern, prop.argument);
+ } else {
+ prop.argument = this.parseIdentifier();
+ }
+ this.checkCommaAfterRest(125);
+ return this.finishNode(prop, "RestElement");
+ }
+ parseBindingProperty() {
+ const {
+ type,
+ startLoc
+ } = this.state;
+ if (type === 21) {
+ return this.parseBindingRestProperty(this.startNode());
+ }
+ const prop = this.startNode();
+ if (type === 139) {
+ this.expectPlugin("destructuringPrivate", startLoc);
+ this.classScope.usePrivateName(this.state.value, startLoc);
+ prop.key = this.parsePrivateName();
+ } else {
+ this.parsePropertyName(prop);
+ }
+ prop.method = false;
+ return this.parseObjPropValue(prop, startLoc, false, false, true, false);
+ }
+ parseBindingElement(flags, decorators) {
+ const left = this.parseMaybeDefault();
+ if (this.hasPlugin("flow") || flags & 2) {
+ this.parseFunctionParamType(left);
+ }
+ if (decorators.length) {
+ left.decorators = decorators;
+ this.resetStartLocationFromNode(left, decorators[0]);
+ }
+ const elt = this.parseMaybeDefault(left.loc.start, left);
+ return elt;
+ }
+ parseFunctionParamType(param) {
+ return param;
+ }
+ parseMaybeDefault(startLoc, left) {
+ startLoc != null ? startLoc : startLoc = this.state.startLoc;
+ left = left != null ? left : this.parseBindingAtom();
+ if (!this.eat(29)) return left;
+ const node = this.startNodeAt(startLoc);
+ if (left.type === "VoidPattern") {
+ this.raise(Errors.VoidPatternInitializer, left);
+ }
+ node.left = left;
+ node.right = this.parseMaybeAssignAllowIn();
+ return this.finishNode(node, "AssignmentPattern");
+ }
+ isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding) {
+ switch (type) {
+ case "AssignmentPattern":
+ return "left";
+ case "RestElement":
+ return "argument";
+ case "ObjectProperty":
+ return "value";
+ case "ParenthesizedExpression":
+ return "expression";
+ case "ArrayPattern":
+ return "elements";
+ case "ObjectPattern":
+ return "properties";
+ case "VoidPattern":
+ return true;
+ case "CallExpression":
+ if (!disallowCallExpression && !this.state.strict && this.optionFlags & 8192) {
+ return true;
+ }
+ }
+ return false;
+ }
+ isOptionalMemberExpression(expression) {
+ return expression.type === "OptionalMemberExpression";
+ }
+ checkLVal(expression, ancestor, binding = 64, checkClashes = false, strictModeChanged = false, hasParenthesizedAncestor = false, disallowCallExpression = false) {
+ var _expression$extra;
+ const type = expression.type;
+ if (this.isObjectMethod(expression)) return;
+ const isOptionalMemberExpression = this.isOptionalMemberExpression(expression);
+ if (isOptionalMemberExpression || type === "MemberExpression") {
+ if (isOptionalMemberExpression) {
+ this.expectPlugin("optionalChainingAssign", expression.loc.start);
+ if (ancestor.type !== "AssignmentExpression") {
+ this.raise(Errors.InvalidLhsOptionalChaining, expression, {
+ ancestor
+ });
+ }
+ }
+ if (binding !== 64) {
+ this.raise(Errors.InvalidPropertyBindingPattern, expression);
+ }
+ return;
+ }
+ if (type === "Identifier") {
+ this.checkIdentifier(expression, binding, strictModeChanged);
+ const {
+ name
+ } = expression;
+ if (checkClashes) {
+ if (checkClashes.has(name)) {
+ this.raise(Errors.ParamDupe, expression);
+ } else {
+ checkClashes.add(name);
+ }
+ }
+ return;
+ } else if (type === "VoidPattern" && ancestor.type === "CatchClause") {
+ this.raise(Errors.VoidPatternCatchClauseParam, expression);
+ }
+ const unwrappedExpression = unwrapParenthesizedExpression(expression);
+ disallowCallExpression || (disallowCallExpression = unwrappedExpression.type === "CallExpression" && (unwrappedExpression.callee.type === "Import" || unwrappedExpression.callee.type === "Super"));
+ const validity = this.isValidLVal(type, disallowCallExpression, !(hasParenthesizedAncestor || (_expression$extra = expression.extra) != null && _expression$extra.parenthesized) && ancestor.type === "AssignmentExpression", binding);
+ if (validity === true) return;
+ if (validity === false) {
+ const ParseErrorClass = binding === 64 ? Errors.InvalidLhs : Errors.InvalidLhsBinding;
+ this.raise(ParseErrorClass, expression, {
+ ancestor
+ });
+ return;
+ }
+ let key, isParenthesizedExpression;
+ if (typeof validity === "string") {
+ key = validity;
+ isParenthesizedExpression = type === "ParenthesizedExpression";
+ } else {
+ [key, isParenthesizedExpression] = validity;
+ }
+ const nextAncestor = type === "ArrayPattern" || type === "ObjectPattern" ? {
+ type
+ } : ancestor;
+ const val = expression[key];
+ if (Array.isArray(val)) {
+ for (const child of val) {
+ if (child) {
+ this.checkLVal(child, nextAncestor, binding, checkClashes, strictModeChanged, isParenthesizedExpression, true);
+ }
+ }
+ } else if (val) {
+ this.checkLVal(val, nextAncestor, binding, checkClashes, strictModeChanged, isParenthesizedExpression, disallowCallExpression);
+ }
+ }
+ checkIdentifier(at, bindingType, strictModeChanged = false) {
+ if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(at.name, this.inModule) : isStrictBindOnlyReservedWord(at.name))) {
+ if (bindingType === 64) {
+ this.raise(Errors.StrictEvalArguments, at, {
+ referenceName: at.name
+ });
+ } else {
+ this.raise(Errors.StrictEvalArgumentsBinding, at, {
+ bindingName: at.name
+ });
+ }
+ }
+ if (bindingType & 8192 && at.name === "let") {
+ this.raise(Errors.LetInLexicalBinding, at);
+ }
+ if (!(bindingType & 64)) {
+ this.declareNameFromIdentifier(at, bindingType);
+ }
+ }
+ declareNameFromIdentifier(identifier, binding) {
+ this.scope.declareName(identifier.name, binding, identifier.loc.start);
+ }
+ checkToRestConversion(node, allowPattern) {
+ switch (node.type) {
+ case "ParenthesizedExpression":
+ this.checkToRestConversion(node.expression, allowPattern);
+ break;
+ case "Identifier":
+ case "MemberExpression":
+ break;
+ case "ArrayExpression":
+ case "ObjectExpression":
+ if (allowPattern) break;
+ default:
+ this.raise(Errors.InvalidRestAssignmentPattern, node);
+ }
+ }
+ checkCommaAfterRest(close) {
+ if (!this.match(12)) {
+ return false;
+ }
+ this.raise(this.lookaheadCharCode() === close ? Errors.RestTrailingComma : Errors.ElementAfterRest, this.state.startLoc);
+ return true;
+ }
+}
+const keywordAndTSRelationalOperator = /in(?:stanceof)?|as|satisfies/y;
+function nonNull(x) {
+ if (x == null) {
+ throw new Error(`Unexpected ${x} value.`);
+ }
+ return x;
+}
+function assert(x) {
+ if (!x) {
+ throw new Error("Assert fail");
+ }
+}
+const TSErrors = ParseErrorEnum`typescript`({
+ AbstractMethodHasImplementation: ({
+ methodName
+ }) => `Method '${methodName}' cannot have an implementation because it is marked abstract.`,
+ AbstractPropertyHasInitializer: ({
+ propertyName
+ }) => `Property '${propertyName}' cannot have an initializer because it is marked abstract.`,
+ AccessorCannotBeOptional: "An 'accessor' property cannot be declared optional.",
+ AccessorCannotDeclareThisParameter: "'get' and 'set' accessors cannot declare 'this' parameters.",
+ AccessorCannotHaveTypeParameters: "An accessor cannot have type parameters.",
+ ClassMethodHasDeclare: "Class methods cannot have the 'declare' modifier.",
+ ClassMethodHasReadonly: "Class methods cannot have the 'readonly' modifier.",
+ ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: "A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.",
+ ConstructorHasTypeParameters: "Type parameters cannot appear on a constructor declaration.",
+ DeclareAccessor: ({
+ kind
+ }) => `'declare' is not allowed in ${kind}ters.`,
+ DeclareClassFieldHasInitializer: "Initializers are not allowed in ambient contexts.",
+ DeclareFunctionHasImplementation: "An implementation cannot be declared in ambient contexts.",
+ DuplicateAccessibilityModifier: ({
+ modifier
+ }) => `Accessibility modifier already seen: '${modifier}'.`,
+ DuplicateModifier: ({
+ modifier
+ }) => `Duplicate modifier: '${modifier}'.`,
+ EmptyHeritageClauseType: ({
+ token
+ }) => `'${token}' list cannot be empty.`,
+ EmptyTypeArguments: "Type argument list cannot be empty.",
+ EmptyTypeParameters: "Type parameter list cannot be empty.",
+ ExpectedAmbientAfterExportDeclare: "'export declare' must be followed by an ambient declaration.",
+ ImportAliasHasImportType: "An import alias can not use 'import type'.",
+ ImportReflectionHasImportType: "An `import module` declaration can not use `type` modifier",
+ IncompatibleModifiers: ({
+ modifiers
+ }) => `'${modifiers[0]}' modifier cannot be used with '${modifiers[1]}' modifier.`,
+ IndexSignatureHasAbstract: "Index signatures cannot have the 'abstract' modifier.",
+ IndexSignatureHasAccessibility: ({
+ modifier
+ }) => `Index signatures cannot have an accessibility modifier ('${modifier}').`,
+ IndexSignatureHasDeclare: "Index signatures cannot have the 'declare' modifier.",
+ IndexSignatureHasOverride: "'override' modifier cannot appear on an index signature.",
+ IndexSignatureHasStatic: "Index signatures cannot have the 'static' modifier.",
+ InitializerNotAllowedInAmbientContext: "Initializers are not allowed in ambient contexts.",
+ InvalidHeritageClauseType: ({
+ token
+ }) => `'${token}' list can only include identifiers or qualified-names with optional type arguments.`,
+ InvalidModifierOnAwaitUsingDeclaration: modifier => `'${modifier}' modifier cannot appear on an await using declaration.`,
+ InvalidModifierOnTypeMember: ({
+ modifier
+ }) => `'${modifier}' modifier cannot appear on a type member.`,
+ InvalidModifierOnTypeParameter: ({
+ modifier
+ }) => `'${modifier}' modifier cannot appear on a type parameter.`,
+ InvalidModifierOnTypeParameterPositions: ({
+ modifier
+ }) => `'${modifier}' modifier can only appear on a type parameter of a class, interface or type alias.`,
+ InvalidModifierOnUsingDeclaration: modifier => `'${modifier}' modifier cannot appear on a using declaration.`,
+ InvalidModifiersOrder: ({
+ orderedModifiers
+ }) => `'${orderedModifiers[0]}' modifier must precede '${orderedModifiers[1]}' modifier.`,
+ InvalidPropertyAccessAfterInstantiationExpression: "Invalid property access after an instantiation expression. " + "You can either wrap the instantiation expression in parentheses, or delete the type arguments.",
+ InvalidTupleMemberLabel: "Tuple members must be labeled with a simple identifier.",
+ MissingInterfaceName: "'interface' declarations must be followed by an identifier.",
+ NonAbstractClassHasAbstractMethod: "Abstract methods can only appear within an abstract class.",
+ NonClassMethodPropertyHasAbstractModifier: "'abstract' modifier can only appear on a class, method, or property declaration.",
+ OptionalTypeBeforeRequired: "A required element cannot follow an optional element.",
+ OverrideNotInSubClass: "This member cannot have an 'override' modifier because its containing class does not extend another class.",
+ PatternIsOptional: "A binding pattern parameter cannot be optional in an implementation signature.",
+ PrivateElementHasAbstract: "Private elements cannot have the 'abstract' modifier.",
+ PrivateElementHasAccessibility: ({
+ modifier
+ }) => `Private elements cannot have an accessibility modifier ('${modifier}').`,
+ ReadonlyForMethodSignature: "'readonly' modifier can only appear on a property declaration or index signature.",
+ ReservedArrowTypeParam: "This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.",
+ ReservedTypeAssertion: "This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.",
+ SetAccessorCannotHaveOptionalParameter: "A 'set' accessor cannot have an optional parameter.",
+ SetAccessorCannotHaveRestParameter: "A 'set' accessor cannot have rest parameter.",
+ SetAccessorCannotHaveReturnType: "A 'set' accessor cannot have a return type annotation.",
+ SingleTypeParameterWithoutTrailingComma: ({
+ typeParameterName
+ }) => `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`,
+ StaticBlockCannotHaveModifier: "Static class blocks cannot have any modifier.",
+ TupleOptionalAfterType: "A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).",
+ TypeAnnotationAfterAssign: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.",
+ TypeImportCannotSpecifyDefaultAndNamed: "A type-only import can specify a default import or named bindings, but not both.",
+ TypeModifierIsUsedInTypeExports: "The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.",
+ TypeModifierIsUsedInTypeImports: "The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.",
+ UnexpectedParameterModifier: "A parameter property is only allowed in a constructor implementation.",
+ UnexpectedReadonly: "'readonly' type modifier is only permitted on array and tuple literal types.",
+ UnexpectedTypeAnnotation: "Did not expect a type annotation here.",
+ UnexpectedTypeCastInParameter: "Unexpected type cast in parameter position.",
+ UnsupportedImportTypeArgument: "Argument in a type import must be a string literal.",
+ UnsupportedParameterPropertyKind: "A parameter property may not be declared using a binding pattern.",
+ UnsupportedSignatureParameterKind: ({
+ type
+ }) => `Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${type}.`,
+ UsingDeclarationInAmbientContext: kind => `'${kind}' declarations are not allowed in ambient contexts.`
+});
+function keywordTypeFromName(value) {
+ switch (value) {
+ case "any":
+ return "TSAnyKeyword";
+ case "boolean":
+ return "TSBooleanKeyword";
+ case "bigint":
+ return "TSBigIntKeyword";
+ case "never":
+ return "TSNeverKeyword";
+ case "number":
+ return "TSNumberKeyword";
+ case "object":
+ return "TSObjectKeyword";
+ case "string":
+ return "TSStringKeyword";
+ case "symbol":
+ return "TSSymbolKeyword";
+ case "undefined":
+ return "TSUndefinedKeyword";
+ case "unknown":
+ return "TSUnknownKeyword";
+ default:
+ return undefined;
+ }
+}
+function tsIsAccessModifier(modifier) {
+ return modifier === "private" || modifier === "public" || modifier === "protected";
+}
+function tsIsVarianceAnnotations(modifier) {
+ return modifier === "in" || modifier === "out";
+}
+var typescript = superClass => class TypeScriptParserMixin extends superClass {
+ constructor(...args) {
+ super(...args);
+ this.tsParseInOutModifiers = this.tsParseModifiers.bind(this, {
+ allowedModifiers: ["in", "out"],
+ disallowedModifiers: ["const", "public", "private", "protected", "readonly", "declare", "abstract", "override"],
+ errorTemplate: TSErrors.InvalidModifierOnTypeParameter
+ });
+ this.tsParseConstModifier = this.tsParseModifiers.bind(this, {
+ allowedModifiers: ["const"],
+ disallowedModifiers: ["in", "out"],
+ errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions
+ });
+ this.tsParseInOutConstModifiers = this.tsParseModifiers.bind(this, {
+ allowedModifiers: ["in", "out", "const"],
+ disallowedModifiers: ["public", "private", "protected", "readonly", "declare", "abstract", "override"],
+ errorTemplate: TSErrors.InvalidModifierOnTypeParameter
+ });
+ }
+ getScopeHandler() {
+ return TypeScriptScopeHandler;
+ }
+ tsIsIdentifier() {
+ return tokenIsIdentifier(this.state.type);
+ }
+ tsTokenCanFollowModifier() {
+ return this.match(0) || this.match(5) || this.match(55) || this.match(21) || this.match(139) || this.isLiteralPropertyName();
+ }
+ tsNextTokenOnSameLineAndCanFollowModifier() {
+ this.next();
+ if (this.hasPrecedingLineBreak()) {
+ return false;
+ }
+ return this.tsTokenCanFollowModifier();
+ }
+ tsNextTokenCanFollowModifier() {
+ if (this.match(106)) {
+ this.next();
+ return this.tsTokenCanFollowModifier();
+ }
+ return this.tsNextTokenOnSameLineAndCanFollowModifier();
+ }
+ tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock, hasSeenStaticModifier) {
+ if (!tokenIsIdentifier(this.state.type) && this.state.type !== 58 && this.state.type !== 75) {
+ return undefined;
+ }
+ const modifier = this.state.value;
+ if (allowedModifiers.includes(modifier)) {
+ if (hasSeenStaticModifier && this.match(106)) {
+ return undefined;
+ }
+ if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) {
+ return undefined;
+ }
+ if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) {
+ return modifier;
+ }
+ }
+ return undefined;
+ }
+ tsParseModifiers({
+ allowedModifiers,
+ disallowedModifiers,
+ stopOnStartOfClassStaticBlock,
+ errorTemplate = TSErrors.InvalidModifierOnTypeMember
+ }, modified) {
+ const enforceOrder = (loc, modifier, before, after) => {
+ if (modifier === before && modified[after]) {
+ this.raise(TSErrors.InvalidModifiersOrder, loc, {
+ orderedModifiers: [before, after]
+ });
+ }
+ };
+ const incompatible = (loc, modifier, mod1, mod2) => {
+ if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) {
+ this.raise(TSErrors.IncompatibleModifiers, loc, {
+ modifiers: [mod1, mod2]
+ });
+ }
+ };
+ for (;;) {
+ const {
+ startLoc
+ } = this.state;
+ const modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers != null ? disallowedModifiers : []), stopOnStartOfClassStaticBlock, modified.static);
+ if (!modifier) break;
+ if (tsIsAccessModifier(modifier)) {
+ if (modified.accessibility) {
+ this.raise(TSErrors.DuplicateAccessibilityModifier, startLoc, {
+ modifier
+ });
+ } else {
+ enforceOrder(startLoc, modifier, modifier, "override");
+ enforceOrder(startLoc, modifier, modifier, "static");
+ enforceOrder(startLoc, modifier, modifier, "readonly");
+ modified.accessibility = modifier;
+ }
+ } else if (tsIsVarianceAnnotations(modifier)) {
+ if (modified[modifier]) {
+ this.raise(TSErrors.DuplicateModifier, startLoc, {
+ modifier
+ });
+ }
+ modified[modifier] = true;
+ enforceOrder(startLoc, modifier, "in", "out");
+ } else {
+ if (hasOwnProperty.call(modified, modifier)) {
+ this.raise(TSErrors.DuplicateModifier, startLoc, {
+ modifier
+ });
+ } else {
+ enforceOrder(startLoc, modifier, "static", "readonly");
+ enforceOrder(startLoc, modifier, "static", "override");
+ enforceOrder(startLoc, modifier, "override", "readonly");
+ enforceOrder(startLoc, modifier, "abstract", "override");
+ incompatible(startLoc, modifier, "declare", "override");
+ incompatible(startLoc, modifier, "static", "abstract");
+ }
+ modified[modifier] = true;
+ }
+ if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) {
+ this.raise(errorTemplate, startLoc, {
+ modifier
+ });
+ }
+ }
+ }
+ tsIsListTerminator(kind) {
+ switch (kind) {
+ case "EnumMembers":
+ case "TypeMembers":
+ return this.match(8);
+ case "HeritageClauseElement":
+ return this.match(5);
+ case "TupleElementTypes":
+ return this.match(3);
+ case "TypeParametersOrArguments":
+ return this.match(48);
+ }
+ }
+ tsParseList(kind, parseElement) {
+ const result = [];
+ while (!this.tsIsListTerminator(kind)) {
+ result.push(parseElement());
+ }
+ return result;
+ }
+ tsParseDelimitedList(kind, parseElement, refTrailingCommaPos) {
+ return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true, refTrailingCommaPos));
+ }
+ tsParseDelimitedListWorker(kind, parseElement, expectSuccess, refTrailingCommaPos) {
+ const result = [];
+ let trailingCommaPos = -1;
+ for (;;) {
+ if (this.tsIsListTerminator(kind)) {
+ break;
+ }
+ trailingCommaPos = -1;
+ const element = parseElement();
+ if (element == null) {
+ return undefined;
+ }
+ result.push(element);
+ if (this.eat(12)) {
+ trailingCommaPos = this.state.lastTokStartLoc.index;
+ continue;
+ }
+ if (this.tsIsListTerminator(kind)) {
+ break;
+ }
+ if (expectSuccess) {
+ this.expect(12);
+ }
+ return undefined;
+ }
+ if (refTrailingCommaPos) {
+ refTrailingCommaPos.value = trailingCommaPos;
+ }
+ return result;
+ }
+ tsParseBracketedList(kind, parseElement, bracket, skipFirstToken, refTrailingCommaPos) {
+ if (!skipFirstToken) {
+ if (bracket) {
+ this.expect(0);
+ } else {
+ this.expect(47);
+ }
+ }
+ const result = this.tsParseDelimitedList(kind, parseElement, refTrailingCommaPos);
+ if (bracket) {
+ this.expect(3);
+ } else {
+ this.expect(48);
+ }
+ return result;
+ }
+ tsParseImportType() {
+ const node = this.startNode();
+ this.expect(83);
+ this.expect(10);
+ if (!this.match(134)) {
+ this.raise(TSErrors.UnsupportedImportTypeArgument, this.state.startLoc);
+ node.argument = super.parseExprAtom();
+ } else {
+ node.argument = this.parseStringLiteral(this.state.value);
+ }
+ if (this.eat(12)) {
+ node.options = this.tsParseImportTypeOptions();
+ } else {
+ node.options = null;
+ }
+ this.expect(11);
+ if (this.eat(16)) {
+ node.qualifier = this.tsParseEntityName(1 | 2);
+ }
+ if (this.match(47)) {
+ node.typeParameters = this.tsParseTypeArguments();
+ }
+ return this.finishNode(node, "TSImportType");
+ }
+ tsParseImportTypeOptions() {
+ const node = this.startNode();
+ this.expect(5);
+ const withProperty = this.startNode();
+ if (this.isContextual(76)) {
+ withProperty.method = false;
+ withProperty.key = this.parseIdentifier(true);
+ withProperty.computed = false;
+ withProperty.shorthand = false;
+ } else {
+ this.unexpected(null, 76);
+ }
+ this.expect(14);
+ withProperty.value = this.tsParseImportTypeWithPropertyValue();
+ node.properties = [this.finishObjectProperty(withProperty)];
+ this.eat(12);
+ this.expect(8);
+ return this.finishNode(node, "ObjectExpression");
+ }
+ tsParseImportTypeWithPropertyValue() {
+ const node = this.startNode();
+ const properties = [];
+ this.expect(5);
+ while (!this.match(8)) {
+ const type = this.state.type;
+ if (tokenIsIdentifier(type) || type === 134) {
+ properties.push(super.parsePropertyDefinition(null));
+ } else {
+ this.unexpected();
+ }
+ this.eat(12);
+ }
+ node.properties = properties;
+ this.next();
+ return this.finishNode(node, "ObjectExpression");
+ }
+ tsParseEntityName(flags) {
+ let entity;
+ if (flags & 1 && this.match(78)) {
+ if (flags & 2) {
+ entity = this.parseIdentifier(true);
+ } else {
+ const node = this.startNode();
+ this.next();
+ entity = this.finishNode(node, "ThisExpression");
+ }
+ } else {
+ entity = this.parseIdentifier(!!(flags & 1));
+ }
+ while (this.eat(16)) {
+ const node = this.startNodeAtNode(entity);
+ node.left = entity;
+ node.right = this.parseIdentifier(!!(flags & 1));
+ entity = this.finishNode(node, "TSQualifiedName");
+ }
+ return entity;
+ }
+ tsParseTypeReference() {
+ const node = this.startNode();
+ node.typeName = this.tsParseEntityName(1);
+ if (!this.hasPrecedingLineBreak() && this.match(47)) {
+ node.typeParameters = this.tsParseTypeArguments();
+ }
+ return this.finishNode(node, "TSTypeReference");
+ }
+ tsParseThisTypePredicate(lhs) {
+ this.next();
+ const node = this.startNodeAtNode(lhs);
+ node.parameterName = lhs;
+ node.typeAnnotation = this.tsParseTypeAnnotation(false);
+ node.asserts = false;
+ return this.finishNode(node, "TSTypePredicate");
+ }
+ tsParseThisTypeNode() {
+ const node = this.startNode();
+ this.next();
+ return this.finishNode(node, "TSThisType");
+ }
+ tsParseTypeQuery() {
+ const node = this.startNode();
+ this.expect(87);
+ if (this.match(83)) {
+ node.exprName = this.tsParseImportType();
+ } else {
+ node.exprName = this.tsParseEntityName(1 | 2);
+ }
+ if (!this.hasPrecedingLineBreak() && this.match(47)) {
+ node.typeParameters = this.tsParseTypeArguments();
+ }
+ return this.finishNode(node, "TSTypeQuery");
+ }
+ tsParseTypeParameter(parseModifiers) {
+ const node = this.startNode();
+ parseModifiers(node);
+ node.name = this.tsParseTypeParameterName();
+ node.constraint = this.tsEatThenParseType(81);
+ node.default = this.tsEatThenParseType(29);
+ return this.finishNode(node, "TSTypeParameter");
+ }
+ tsTryParseTypeParameters(parseModifiers) {
+ if (this.match(47)) {
+ return this.tsParseTypeParameters(parseModifiers);
+ }
+ }
+ tsParseTypeParameters(parseModifiers) {
+ const node = this.startNode();
+ if (this.match(47) || this.match(143)) {
+ this.next();
+ } else {
+ this.unexpected();
+ }
+ const refTrailingCommaPos = {
+ value: -1
+ };
+ node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this, parseModifiers), false, true, refTrailingCommaPos);
+ if (node.params.length === 0) {
+ this.raise(TSErrors.EmptyTypeParameters, node);
+ }
+ if (refTrailingCommaPos.value !== -1) {
+ this.addExtra(node, "trailingComma", refTrailingCommaPos.value);
+ }
+ return this.finishNode(node, "TSTypeParameterDeclaration");
+ }
+ tsFillSignature(returnToken, signature) {
+ const returnTokenRequired = returnToken === 19;
+ const paramsKey = "parameters";
+ const returnTypeKey = "typeAnnotation";
+ signature.typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);
+ this.expect(10);
+ signature[paramsKey] = this.tsParseBindingListForSignature();
+ if (returnTokenRequired) {
+ signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken);
+ } else if (this.match(returnToken)) {
+ signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken);
+ }
+ }
+ tsParseBindingListForSignature() {
+ const list = super.parseBindingList(11, 41, 2);
+ for (const pattern of list) {
+ const {
+ type
+ } = pattern;
+ if (type === "AssignmentPattern" || type === "TSParameterProperty") {
+ this.raise(TSErrors.UnsupportedSignatureParameterKind, pattern, {
+ type
+ });
+ }
+ }
+ return list;
+ }
+ tsParseTypeMemberSemicolon() {
+ if (!this.eat(12) && !this.isLineTerminator()) {
+ this.expect(13);
+ }
+ }
+ tsParseSignatureMember(kind, node) {
+ this.tsFillSignature(14, node);
+ this.tsParseTypeMemberSemicolon();
+ return this.finishNode(node, kind);
+ }
+ tsIsUnambiguouslyIndexSignature() {
+ this.next();
+ if (tokenIsIdentifier(this.state.type)) {
+ this.next();
+ return this.match(14);
+ }
+ return false;
+ }
+ tsTryParseIndexSignature(node) {
+ if (!(this.match(0) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) {
+ return;
+ }
+ this.expect(0);
+ const id = this.parseIdentifier();
+ id.typeAnnotation = this.tsParseTypeAnnotation();
+ this.resetEndLocation(id);
+ this.expect(3);
+ node.parameters = [id];
+ const type = this.tsTryParseTypeAnnotation();
+ if (type) node.typeAnnotation = type;
+ this.tsParseTypeMemberSemicolon();
+ return this.finishNode(node, "TSIndexSignature");
+ }
+ tsParsePropertyOrMethodSignature(node, readonly) {
+ if (this.eat(17)) node.optional = true;
+ if (this.match(10) || this.match(47)) {
+ if (readonly) {
+ this.raise(TSErrors.ReadonlyForMethodSignature, node);
+ }
+ const method = node;
+ if (method.kind && this.match(47)) {
+ this.raise(TSErrors.AccessorCannotHaveTypeParameters, this.state.curPosition());
+ }
+ this.tsFillSignature(14, method);
+ this.tsParseTypeMemberSemicolon();
+ const paramsKey = "parameters";
+ const returnTypeKey = "typeAnnotation";
+ if (method.kind === "get") {
+ if (method[paramsKey].length > 0) {
+ this.raise(Errors.BadGetterArity, this.state.curPosition());
+ if (this.isThisParam(method[paramsKey][0])) {
+ this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition());
+ }
+ }
+ } else if (method.kind === "set") {
+ if (method[paramsKey].length !== 1) {
+ this.raise(Errors.BadSetterArity, this.state.curPosition());
+ } else {
+ const firstParameter = method[paramsKey][0];
+ if (this.isThisParam(firstParameter)) {
+ this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition());
+ }
+ if (firstParameter.type === "Identifier" && firstParameter.optional) {
+ this.raise(TSErrors.SetAccessorCannotHaveOptionalParameter, this.state.curPosition());
+ }
+ if (firstParameter.type === "RestElement") {
+ this.raise(TSErrors.SetAccessorCannotHaveRestParameter, this.state.curPosition());
+ }
+ }
+ if (method[returnTypeKey]) {
+ this.raise(TSErrors.SetAccessorCannotHaveReturnType, method[returnTypeKey]);
+ }
+ } else {
+ method.kind = "method";
+ }
+ return this.finishNode(method, "TSMethodSignature");
+ } else {
+ const property = node;
+ if (readonly) property.readonly = true;
+ const type = this.tsTryParseTypeAnnotation();
+ if (type) property.typeAnnotation = type;
+ this.tsParseTypeMemberSemicolon();
+ return this.finishNode(property, "TSPropertySignature");
+ }
+ }
+ tsParseTypeMember() {
+ const node = this.startNode();
+ if (this.match(10) || this.match(47)) {
+ return this.tsParseSignatureMember("TSCallSignatureDeclaration", node);
+ }
+ if (this.match(77)) {
+ const id = this.startNode();
+ this.next();
+ if (this.match(10) || this.match(47)) {
+ return this.tsParseSignatureMember("TSConstructSignatureDeclaration", node);
+ } else {
+ node.key = this.createIdentifier(id, "new");
+ return this.tsParsePropertyOrMethodSignature(node, false);
+ }
+ }
+ this.tsParseModifiers({
+ allowedModifiers: ["readonly"],
+ disallowedModifiers: ["declare", "abstract", "private", "protected", "public", "static", "override"]
+ }, node);
+ const idx = this.tsTryParseIndexSignature(node);
+ if (idx) {
+ return idx;
+ }
+ super.parsePropertyName(node);
+ if (!node.computed && node.key.type === "Identifier" && (node.key.name === "get" || node.key.name === "set") && this.tsTokenCanFollowModifier()) {
+ node.kind = node.key.name;
+ super.parsePropertyName(node);
+ if (!this.match(10) && !this.match(47)) {
+ this.unexpected(null, 10);
+ }
+ }
+ return this.tsParsePropertyOrMethodSignature(node, !!node.readonly);
+ }
+ tsParseTypeLiteral() {
+ const node = this.startNode();
+ node.members = this.tsParseObjectTypeMembers();
+ return this.finishNode(node, "TSTypeLiteral");
+ }
+ tsParseObjectTypeMembers() {
+ this.expect(5);
+ const members = this.tsParseList("TypeMembers", this.tsParseTypeMember.bind(this));
+ this.expect(8);
+ return members;
+ }
+ tsIsStartOfMappedType() {
+ this.next();
+ if (this.eat(53)) {
+ return this.isContextual(122);
+ }
+ if (this.isContextual(122)) {
+ this.next();
+ }
+ if (!this.match(0)) {
+ return false;
+ }
+ this.next();
+ if (!this.tsIsIdentifier()) {
+ return false;
+ }
+ this.next();
+ return this.match(58);
+ }
+ tsParseMappedType() {
+ const node = this.startNode();
+ this.expect(5);
+ if (this.match(53)) {
+ node.readonly = this.state.value;
+ this.next();
+ this.expectContextual(122);
+ } else if (this.eatContextual(122)) {
+ node.readonly = true;
+ }
+ this.expect(0);
+ const typeParameter = this.startNode();
+ typeParameter.name = this.tsParseTypeParameterName();
+ typeParameter.constraint = this.tsExpectThenParseType(58);
+ node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter");
+ node.nameType = this.eatContextual(93) ? this.tsParseType() : null;
+ this.expect(3);
+ if (this.match(53)) {
+ node.optional = this.state.value;
+ this.next();
+ this.expect(17);
+ } else if (this.eat(17)) {
+ node.optional = true;
+ }
+ node.typeAnnotation = this.tsTryParseType();
+ this.semicolon();
+ this.expect(8);
+ return this.finishNode(node, "TSMappedType");
+ }
+ tsParseTupleType() {
+ const node = this.startNode();
+ node.elementTypes = this.tsParseBracketedList("TupleElementTypes", this.tsParseTupleElementType.bind(this), true, false);
+ let seenOptionalElement = false;
+ node.elementTypes.forEach(elementNode => {
+ const {
+ type
+ } = elementNode;
+ if (seenOptionalElement && type !== "TSRestType" && type !== "TSOptionalType" && !(type === "TSNamedTupleMember" && elementNode.optional)) {
+ this.raise(TSErrors.OptionalTypeBeforeRequired, elementNode);
+ }
+ seenOptionalElement || (seenOptionalElement = type === "TSNamedTupleMember" && elementNode.optional || type === "TSOptionalType");
+ });
+ return this.finishNode(node, "TSTupleType");
+ }
+ tsParseTupleElementType() {
+ const restStartLoc = this.state.startLoc;
+ const rest = this.eat(21);
+ const {
+ startLoc
+ } = this.state;
+ let labeled;
+ let label;
+ let optional;
+ let type;
+ const isWord = tokenIsKeywordOrIdentifier(this.state.type);
+ const chAfterWord = isWord ? this.lookaheadCharCode() : null;
+ if (chAfterWord === 58) {
+ labeled = true;
+ optional = false;
+ label = this.parseIdentifier(true);
+ this.expect(14);
+ type = this.tsParseType();
+ } else if (chAfterWord === 63) {
+ optional = true;
+ const wordName = this.state.value;
+ const typeOrLabel = this.tsParseNonArrayType();
+ if (this.lookaheadCharCode() === 58) {
+ labeled = true;
+ label = this.createIdentifier(this.startNodeAt(startLoc), wordName);
+ this.expect(17);
+ this.expect(14);
+ type = this.tsParseType();
+ } else {
+ labeled = false;
+ type = typeOrLabel;
+ this.expect(17);
+ }
+ } else {
+ type = this.tsParseType();
+ optional = this.eat(17);
+ labeled = this.eat(14);
+ }
+ if (labeled) {
+ let labeledNode;
+ if (label) {
+ labeledNode = this.startNodeAt(startLoc);
+ labeledNode.optional = optional;
+ labeledNode.label = label;
+ labeledNode.elementType = type;
+ if (this.eat(17)) {
+ labeledNode.optional = true;
+ this.raise(TSErrors.TupleOptionalAfterType, this.state.lastTokStartLoc);
+ }
+ } else {
+ labeledNode = this.startNodeAt(startLoc);
+ labeledNode.optional = optional;
+ this.raise(TSErrors.InvalidTupleMemberLabel, type);
+ labeledNode.label = type;
+ labeledNode.elementType = this.tsParseType();
+ }
+ type = this.finishNode(labeledNode, "TSNamedTupleMember");
+ } else if (optional) {
+ const optionalTypeNode = this.startNodeAt(startLoc);
+ optionalTypeNode.typeAnnotation = type;
+ type = this.finishNode(optionalTypeNode, "TSOptionalType");
+ }
+ if (rest) {
+ const restNode = this.startNodeAt(restStartLoc);
+ restNode.typeAnnotation = type;
+ type = this.finishNode(restNode, "TSRestType");
+ }
+ return type;
+ }
+ tsParseParenthesizedType() {
+ const node = this.startNode();
+ this.expect(10);
+ node.typeAnnotation = this.tsParseType();
+ this.expect(11);
+ return this.finishNode(node, "TSParenthesizedType");
+ }
+ tsParseFunctionOrConstructorType(type, abstract) {
+ const node = this.startNode();
+ if (type === "TSConstructorType") {
+ node.abstract = !!abstract;
+ if (abstract) this.next();
+ this.next();
+ }
+ this.tsInAllowConditionalTypesContext(() => this.tsFillSignature(19, node));
+ return this.finishNode(node, type);
+ }
+ tsParseLiteralTypeNode() {
+ const node = this.startNode();
+ switch (this.state.type) {
+ case 135:
+ case 136:
+ case 134:
+ case 85:
+ case 86:
+ node.literal = super.parseExprAtom();
+ break;
+ default:
+ this.unexpected();
+ }
+ return this.finishNode(node, "TSLiteralType");
+ }
+ tsParseTemplateLiteralType() {
+ const node = this.startNode();
+ node.literal = super.parseTemplate(false);
+ return this.finishNode(node, "TSLiteralType");
+ }
+ parseTemplateSubstitution() {
+ if (this.state.inType) return this.tsParseType();
+ return super.parseTemplateSubstitution();
+ }
+ tsParseThisTypeOrThisTypePredicate() {
+ const thisKeyword = this.tsParseThisTypeNode();
+ if (this.isContextual(116) && !this.hasPrecedingLineBreak()) {
+ return this.tsParseThisTypePredicate(thisKeyword);
+ } else {
+ return thisKeyword;
+ }
+ }
+ tsParseNonArrayType() {
+ switch (this.state.type) {
+ case 134:
+ case 135:
+ case 136:
+ case 85:
+ case 86:
+ return this.tsParseLiteralTypeNode();
+ case 53:
+ if (this.state.value === "-") {
+ const node = this.startNode();
+ const nextToken = this.lookahead();
+ if (nextToken.type !== 135 && nextToken.type !== 136) {
+ this.unexpected();
+ }
+ node.literal = this.parseMaybeUnary();
+ return this.finishNode(node, "TSLiteralType");
+ }
+ break;
+ case 78:
+ return this.tsParseThisTypeOrThisTypePredicate();
+ case 87:
+ return this.tsParseTypeQuery();
+ case 83:
+ return this.tsParseImportType();
+ case 5:
+ return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral();
+ case 0:
+ return this.tsParseTupleType();
+ case 10:
+ return this.tsParseParenthesizedType();
+ case 25:
+ case 24:
+ return this.tsParseTemplateLiteralType();
+ default:
+ {
+ const {
+ type
+ } = this.state;
+ if (tokenIsIdentifier(type) || type === 88 || type === 84) {
+ const nodeType = type === 88 ? "TSVoidKeyword" : type === 84 ? "TSNullKeyword" : keywordTypeFromName(this.state.value);
+ if (nodeType !== undefined && this.lookaheadCharCode() !== 46) {
+ const node = this.startNode();
+ this.next();
+ return this.finishNode(node, nodeType);
+ }
+ return this.tsParseTypeReference();
+ }
+ }
+ }
+ throw this.unexpected();
+ }
+ tsParseArrayTypeOrHigher() {
+ const {
+ startLoc
+ } = this.state;
+ let type = this.tsParseNonArrayType();
+ while (!this.hasPrecedingLineBreak() && this.eat(0)) {
+ if (this.match(3)) {
+ const node = this.startNodeAt(startLoc);
+ node.elementType = type;
+ this.expect(3);
+ type = this.finishNode(node, "TSArrayType");
+ } else {
+ const node = this.startNodeAt(startLoc);
+ node.objectType = type;
+ node.indexType = this.tsParseType();
+ this.expect(3);
+ type = this.finishNode(node, "TSIndexedAccessType");
+ }
+ }
+ return type;
+ }
+ tsParseTypeOperator() {
+ const node = this.startNode();
+ const operator = this.state.value;
+ this.next();
+ node.operator = operator;
+ node.typeAnnotation = this.tsParseTypeOperatorOrHigher();
+ if (operator === "readonly") {
+ this.tsCheckTypeAnnotationForReadOnly(node);
+ }
+ return this.finishNode(node, "TSTypeOperator");
+ }
+ tsCheckTypeAnnotationForReadOnly(node) {
+ switch (node.typeAnnotation.type) {
+ case "TSTupleType":
+ case "TSArrayType":
+ return;
+ default:
+ this.raise(TSErrors.UnexpectedReadonly, node);
+ }
+ }
+ tsParseInferType() {
+ const node = this.startNode();
+ this.expectContextual(115);
+ const typeParameter = this.startNode();
+ typeParameter.name = this.tsParseTypeParameterName();
+ typeParameter.constraint = this.tsTryParse(() => this.tsParseConstraintForInferType());
+ node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter");
+ return this.finishNode(node, "TSInferType");
+ }
+ tsParseConstraintForInferType() {
+ if (this.eat(81)) {
+ const constraint = this.tsInDisallowConditionalTypesContext(() => this.tsParseType());
+ if (this.state.inDisallowConditionalTypesContext || !this.match(17)) {
+ return constraint;
+ }
+ }
+ }
+ tsParseTypeOperatorOrHigher() {
+ const isTypeOperator = tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc;
+ return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(115) ? this.tsParseInferType() : this.tsInAllowConditionalTypesContext(() => this.tsParseArrayTypeOrHigher());
+ }
+ tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) {
+ const node = this.startNode();
+ const hasLeadingOperator = this.eat(operator);
+ const types = [];
+ do {
+ types.push(parseConstituentType());
+ } while (this.eat(operator));
+ if (types.length === 1 && !hasLeadingOperator) {
+ return types[0];
+ }
+ node.types = types;
+ return this.finishNode(node, kind);
+ }
+ tsParseIntersectionTypeOrHigher() {
+ return this.tsParseUnionOrIntersectionType("TSIntersectionType", this.tsParseTypeOperatorOrHigher.bind(this), 45);
+ }
+ tsParseUnionTypeOrHigher() {
+ return this.tsParseUnionOrIntersectionType("TSUnionType", this.tsParseIntersectionTypeOrHigher.bind(this), 43);
+ }
+ tsIsStartOfFunctionType() {
+ if (this.match(47)) {
+ return true;
+ }
+ return this.match(10) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this));
+ }
+ tsSkipParameterStart() {
+ if (tokenIsIdentifier(this.state.type) || this.match(78)) {
+ this.next();
+ return true;
+ }
+ if (this.match(5)) {
+ const {
+ errors
+ } = this.state;
+ const previousErrorCount = errors.length;
+ try {
+ this.parseObjectLike(8, true);
+ return errors.length === previousErrorCount;
+ } catch (_unused) {
+ return false;
+ }
+ }
+ if (this.match(0)) {
+ this.next();
+ const {
+ errors
+ } = this.state;
+ const previousErrorCount = errors.length;
+ try {
+ super.parseBindingList(3, 93, 1);
+ return errors.length === previousErrorCount;
+ } catch (_unused2) {
+ return false;
+ }
+ }
+ return false;
+ }
+ tsIsUnambiguouslyStartOfFunctionType() {
+ this.next();
+ if (this.match(11) || this.match(21)) {
+ return true;
+ }
+ if (this.tsSkipParameterStart()) {
+ if (this.match(14) || this.match(12) || this.match(17) || this.match(29)) {
+ return true;
+ }
+ if (this.match(11)) {
+ this.next();
+ if (this.match(19)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+ tsParseTypeOrTypePredicateAnnotation(returnToken) {
+ return this.tsInType(() => {
+ const t = this.startNode();
+ this.expect(returnToken);
+ const node = this.startNode();
+ const asserts = !!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this));
+ if (asserts && this.match(78)) {
+ let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate();
+ if (thisTypePredicate.type === "TSThisType") {
+ node.parameterName = thisTypePredicate;
+ node.asserts = true;
+ node.typeAnnotation = null;
+ thisTypePredicate = this.finishNode(node, "TSTypePredicate");
+ } else {
+ this.resetStartLocationFromNode(thisTypePredicate, node);
+ thisTypePredicate.asserts = true;
+ }
+ t.typeAnnotation = thisTypePredicate;
+ return this.finishNode(t, "TSTypeAnnotation");
+ }
+ const typePredicateVariable = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this));
+ if (!typePredicateVariable) {
+ if (!asserts) {
+ return this.tsParseTypeAnnotation(false, t);
+ }
+ node.parameterName = this.parseIdentifier();
+ node.asserts = asserts;
+ node.typeAnnotation = null;
+ t.typeAnnotation = this.finishNode(node, "TSTypePredicate");
+ return this.finishNode(t, "TSTypeAnnotation");
+ }
+ const type = this.tsParseTypeAnnotation(false);
+ node.parameterName = typePredicateVariable;
+ node.typeAnnotation = type;
+ node.asserts = asserts;
+ t.typeAnnotation = this.finishNode(node, "TSTypePredicate");
+ return this.finishNode(t, "TSTypeAnnotation");
+ });
+ }
+ tsTryParseTypeOrTypePredicateAnnotation() {
+ if (this.match(14)) {
+ return this.tsParseTypeOrTypePredicateAnnotation(14);
+ }
+ }
+ tsTryParseTypeAnnotation() {
+ if (this.match(14)) {
+ return this.tsParseTypeAnnotation();
+ }
+ }
+ tsTryParseType() {
+ return this.tsEatThenParseType(14);
+ }
+ tsParseTypePredicatePrefix() {
+ const id = this.parseIdentifier();
+ if (this.isContextual(116) && !this.hasPrecedingLineBreak()) {
+ this.next();
+ return id;
+ }
+ }
+ tsParseTypePredicateAsserts() {
+ if (this.state.type !== 109) {
+ return false;
+ }
+ const containsEsc = this.state.containsEsc;
+ this.next();
+ if (!tokenIsIdentifier(this.state.type) && !this.match(78)) {
+ return false;
+ }
+ if (containsEsc) {
+ this.raise(Errors.InvalidEscapedReservedWord, this.state.lastTokStartLoc, {
+ reservedWord: "asserts"
+ });
+ }
+ return true;
+ }
+ tsParseTypeAnnotation(eatColon = true, t = this.startNode()) {
+ this.tsInType(() => {
+ if (eatColon) this.expect(14);
+ t.typeAnnotation = this.tsParseType();
+ });
+ return this.finishNode(t, "TSTypeAnnotation");
+ }
+ tsParseType() {
+ assert(this.state.inType);
+ const type = this.tsParseNonConditionalType();
+ if (this.state.inDisallowConditionalTypesContext || this.hasPrecedingLineBreak() || !this.eat(81)) {
+ return type;
+ }
+ const node = this.startNodeAtNode(type);
+ node.checkType = type;
+ node.extendsType = this.tsInDisallowConditionalTypesContext(() => this.tsParseNonConditionalType());
+ this.expect(17);
+ node.trueType = this.tsInAllowConditionalTypesContext(() => this.tsParseType());
+ this.expect(14);
+ node.falseType = this.tsInAllowConditionalTypesContext(() => this.tsParseType());
+ return this.finishNode(node, "TSConditionalType");
+ }
+ isAbstractConstructorSignature() {
+ return this.isContextual(124) && this.isLookaheadContextual("new");
+ }
+ tsParseNonConditionalType() {
+ if (this.tsIsStartOfFunctionType()) {
+ return this.tsParseFunctionOrConstructorType("TSFunctionType");
+ }
+ if (this.match(77)) {
+ return this.tsParseFunctionOrConstructorType("TSConstructorType");
+ } else if (this.isAbstractConstructorSignature()) {
+ return this.tsParseFunctionOrConstructorType("TSConstructorType", true);
+ }
+ return this.tsParseUnionTypeOrHigher();
+ }
+ tsParseTypeAssertion() {
+ if (this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) {
+ this.raise(TSErrors.ReservedTypeAssertion, this.state.startLoc);
+ }
+ const node = this.startNode();
+ node.typeAnnotation = this.tsInType(() => {
+ this.next();
+ return this.match(75) ? this.tsParseTypeReference() : this.tsParseType();
+ });
+ this.expect(48);
+ node.expression = this.parseMaybeUnary();
+ return this.finishNode(node, "TSTypeAssertion");
+ }
+ tsParseHeritageClause(token) {
+ const originalStartLoc = this.state.startLoc;
+ const delimitedList = this.tsParseDelimitedList("HeritageClauseElement", () => {
+ const node = this.startNode();
+ node.expression = this.tsParseEntityName(1 | 2);
+ if (this.match(47)) {
+ node.typeParameters = this.tsParseTypeArguments();
+ }
+ return this.finishNode(node, "TSExpressionWithTypeArguments");
+ });
+ if (!delimitedList.length) {
+ this.raise(TSErrors.EmptyHeritageClauseType, originalStartLoc, {
+ token
+ });
+ }
+ return delimitedList;
+ }
+ tsParseInterfaceDeclaration(node, properties = {}) {
+ if (this.hasFollowingLineBreak()) return null;
+ this.expectContextual(129);
+ if (properties.declare) node.declare = true;
+ if (tokenIsIdentifier(this.state.type)) {
+ node.id = this.parseIdentifier();
+ this.checkIdentifier(node.id, 130);
+ } else {
+ node.id = null;
+ this.raise(TSErrors.MissingInterfaceName, this.state.startLoc);
+ }
+ node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers);
+ if (this.eat(81)) {
+ node.extends = this.tsParseHeritageClause("extends");
+ }
+ const body = this.startNode();
+ body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this));
+ node.body = this.finishNode(body, "TSInterfaceBody");
+ return this.finishNode(node, "TSInterfaceDeclaration");
+ }
+ tsParseTypeAliasDeclaration(node) {
+ node.id = this.parseIdentifier();
+ this.checkIdentifier(node.id, 2);
+ node.typeAnnotation = this.tsInType(() => {
+ node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers);
+ this.expect(29);
+ if (this.isContextual(114) && this.lookaheadCharCode() !== 46) {
+ const node = this.startNode();
+ this.next();
+ return this.finishNode(node, "TSIntrinsicKeyword");
+ }
+ return this.tsParseType();
+ });
+ this.semicolon();
+ return this.finishNode(node, "TSTypeAliasDeclaration");
+ }
+ tsInTopLevelContext(cb) {
+ if (this.curContext() !== types.brace) {
+ const oldContext = this.state.context;
+ this.state.context = [oldContext[0]];
+ try {
+ return cb();
+ } finally {
+ this.state.context = oldContext;
+ }
+ } else {
+ return cb();
+ }
+ }
+ tsInType(cb) {
+ const oldInType = this.state.inType;
+ this.state.inType = true;
+ try {
+ return cb();
+ } finally {
+ this.state.inType = oldInType;
+ }
+ }
+ tsInDisallowConditionalTypesContext(cb) {
+ const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext;
+ this.state.inDisallowConditionalTypesContext = true;
+ try {
+ return cb();
+ } finally {
+ this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;
+ }
+ }
+ tsInAllowConditionalTypesContext(cb) {
+ const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext;
+ this.state.inDisallowConditionalTypesContext = false;
+ try {
+ return cb();
+ } finally {
+ this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;
+ }
+ }
+ tsEatThenParseType(token) {
+ if (this.match(token)) {
+ return this.tsNextThenParseType();
+ }
+ }
+ tsExpectThenParseType(token) {
+ return this.tsInType(() => {
+ this.expect(token);
+ return this.tsParseType();
+ });
+ }
+ tsNextThenParseType() {
+ return this.tsInType(() => {
+ this.next();
+ return this.tsParseType();
+ });
+ }
+ tsParseEnumMember() {
+ const node = this.startNode();
+ node.id = this.match(134) ? super.parseStringLiteral(this.state.value) : this.parseIdentifier(true);
+ if (this.eat(29)) {
+ node.initializer = super.parseMaybeAssignAllowIn();
+ }
+ return this.finishNode(node, "TSEnumMember");
+ }
+ tsParseEnumDeclaration(node, properties = {}) {
+ if (properties.const) node.const = true;
+ if (properties.declare) node.declare = true;
+ this.expectContextual(126);
+ node.id = this.parseIdentifier();
+ this.checkIdentifier(node.id, node.const ? 8971 : 8459);
+ this.expect(5);
+ node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this));
+ this.expect(8);
+ return this.finishNode(node, "TSEnumDeclaration");
+ }
+ tsParseEnumBody() {
+ const node = this.startNode();
+ this.expect(5);
+ node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this));
+ this.expect(8);
+ return this.finishNode(node, "TSEnumBody");
+ }
+ tsParseModuleBlock() {
+ const node = this.startNode();
+ this.scope.enter(0);
+ this.expect(5);
+ super.parseBlockOrModuleBlockBody(node.body = [], undefined, true, 8);
+ this.scope.exit();
+ return this.finishNode(node, "TSModuleBlock");
+ }
+ tsParseModuleOrNamespaceDeclaration(node, nested = false) {
+ node.id = this.parseIdentifier();
+ if (!nested) {
+ this.checkIdentifier(node.id, 1024);
+ }
+ if (this.eat(16)) {
+ const inner = this.startNode();
+ this.tsParseModuleOrNamespaceDeclaration(inner, true);
+ node.body = inner;
+ } else {
+ this.scope.enter(1024);
+ this.prodParam.enter(0);
+ node.body = this.tsParseModuleBlock();
+ this.prodParam.exit();
+ this.scope.exit();
+ }
+ return this.finishNode(node, "TSModuleDeclaration");
+ }
+ tsParseAmbientExternalModuleDeclaration(node) {
+ if (this.isContextual(112)) {
+ node.kind = "global";
+ node.global = true;
+ node.id = this.parseIdentifier();
+ } else if (this.match(134)) {
+ node.kind = "module";
+ node.id = super.parseStringLiteral(this.state.value);
+ } else {
+ this.unexpected();
+ }
+ if (this.match(5)) {
+ this.scope.enter(1024);
+ this.prodParam.enter(0);
+ node.body = this.tsParseModuleBlock();
+ this.prodParam.exit();
+ this.scope.exit();
+ } else {
+ this.semicolon();
+ }
+ return this.finishNode(node, "TSModuleDeclaration");
+ }
+ tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier, isExport) {
+ node.isExport = isExport || false;
+ node.id = maybeDefaultIdentifier || this.parseIdentifier();
+ this.checkIdentifier(node.id, 4096);
+ this.expect(29);
+ const moduleReference = this.tsParseModuleReference();
+ if (node.importKind === "type" && moduleReference.type !== "TSExternalModuleReference") {
+ this.raise(TSErrors.ImportAliasHasImportType, moduleReference);
+ }
+ node.moduleReference = moduleReference;
+ this.semicolon();
+ return this.finishNode(node, "TSImportEqualsDeclaration");
+ }
+ tsIsExternalModuleReference() {
+ return this.isContextual(119) && this.lookaheadCharCode() === 40;
+ }
+ tsParseModuleReference() {
+ return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(0);
+ }
+ tsParseExternalModuleReference() {
+ const node = this.startNode();
+ this.expectContextual(119);
+ this.expect(10);
+ if (!this.match(134)) {
+ this.unexpected();
+ }
+ node.expression = super.parseExprAtom();
+ this.expect(11);
+ this.sawUnambiguousESM = true;
+ return this.finishNode(node, "TSExternalModuleReference");
+ }
+ tsLookAhead(f) {
+ const state = this.state.clone();
+ const res = f();
+ this.state = state;
+ return res;
+ }
+ tsTryParseAndCatch(f) {
+ const result = this.tryParse(abort => f() || abort());
+ if (result.aborted || !result.node) return;
+ if (result.error) this.state = result.failState;
+ return result.node;
+ }
+ tsTryParse(f) {
+ const state = this.state.clone();
+ const result = f();
+ if (result !== undefined && result !== false) {
+ return result;
+ }
+ this.state = state;
+ }
+ tsTryParseDeclare(node) {
+ if (this.isLineTerminator()) {
+ return;
+ }
+ const startType = this.state.type;
+ return this.tsInAmbientContext(() => {
+ switch (startType) {
+ case 68:
+ node.declare = true;
+ return super.parseFunctionStatement(node, false, false);
+ case 80:
+ node.declare = true;
+ return this.parseClass(node, true, false);
+ case 126:
+ return this.tsParseEnumDeclaration(node, {
+ declare: true
+ });
+ case 112:
+ return this.tsParseAmbientExternalModuleDeclaration(node);
+ case 100:
+ if (this.state.containsEsc) {
+ return;
+ }
+ case 75:
+ case 74:
+ if (!this.match(75) || !this.isLookaheadContextual("enum")) {
+ node.declare = true;
+ return this.parseVarStatement(node, this.state.value, true);
+ }
+ this.expect(75);
+ return this.tsParseEnumDeclaration(node, {
+ const: true,
+ declare: true
+ });
+ case 107:
+ if (this.isUsing()) {
+ this.raise(TSErrors.InvalidModifierOnUsingDeclaration, this.state.startLoc, "declare");
+ node.declare = true;
+ return this.parseVarStatement(node, "using", true);
+ }
+ break;
+ case 96:
+ if (this.isAwaitUsing()) {
+ this.raise(TSErrors.InvalidModifierOnAwaitUsingDeclaration, this.state.startLoc, "declare");
+ node.declare = true;
+ this.next();
+ return this.parseVarStatement(node, "await using", true);
+ }
+ break;
+ case 129:
+ {
+ const result = this.tsParseInterfaceDeclaration(node, {
+ declare: true
+ });
+ if (result) return result;
+ }
+ default:
+ if (tokenIsIdentifier(startType)) {
+ return this.tsParseDeclaration(node, this.state.type, true, null);
+ }
+ }
+ });
+ }
+ tsTryParseExportDeclaration() {
+ return this.tsParseDeclaration(this.startNode(), this.state.type, true, null);
+ }
+ tsParseDeclaration(node, type, next, decorators) {
+ switch (type) {
+ case 124:
+ if (this.tsCheckLineTerminator(next) && (this.match(80) || tokenIsIdentifier(this.state.type))) {
+ return this.tsParseAbstractDeclaration(node, decorators);
+ }
+ break;
+ case 127:
+ if (this.tsCheckLineTerminator(next)) {
+ if (this.match(134)) {
+ return this.tsParseAmbientExternalModuleDeclaration(node);
+ } else if (tokenIsIdentifier(this.state.type)) {
+ node.kind = "module";
+ return this.tsParseModuleOrNamespaceDeclaration(node);
+ }
+ }
+ break;
+ case 128:
+ if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {
+ node.kind = "namespace";
+ return this.tsParseModuleOrNamespaceDeclaration(node);
+ }
+ break;
+ case 130:
+ if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {
+ return this.tsParseTypeAliasDeclaration(node);
+ }
+ break;
+ }
+ }
+ tsCheckLineTerminator(next) {
+ if (next) {
+ if (this.hasFollowingLineBreak()) return false;
+ this.next();
+ return true;
+ }
+ return !this.isLineTerminator();
+ }
+ tsTryParseGenericAsyncArrowFunction(startLoc) {
+ if (!this.match(47)) return;
+ const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
+ this.state.maybeInArrowParameters = true;
+ const res = this.tsTryParseAndCatch(() => {
+ const node = this.startNodeAt(startLoc);
+ node.typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier);
+ super.parseFunctionParams(node);
+ node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation();
+ this.expect(19);
+ return node;
+ });
+ this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
+ if (!res) return;
+ return super.parseArrowExpression(res, null, true);
+ }
+ tsParseTypeArgumentsInExpression() {
+ if (this.reScan_lt() !== 47) return;
+ return this.tsParseTypeArguments();
+ }
+ tsParseTypeArguments() {
+ const node = this.startNode();
+ node.params = this.tsInType(() => this.tsInTopLevelContext(() => {
+ this.expect(47);
+ return this.tsParseDelimitedList("TypeParametersOrArguments", this.tsParseType.bind(this));
+ }));
+ if (node.params.length === 0) {
+ this.raise(TSErrors.EmptyTypeArguments, node);
+ } else if (!this.state.inType && this.curContext() === types.brace) {
+ this.reScan_lt_gt();
+ }
+ this.expect(48);
+ return this.finishNode(node, "TSTypeParameterInstantiation");
+ }
+ tsIsDeclarationStart() {
+ return tokenIsTSDeclarationStart(this.state.type);
+ }
+ isExportDefaultSpecifier() {
+ if (this.tsIsDeclarationStart()) return false;
+ return super.isExportDefaultSpecifier();
+ }
+ parseBindingElement(flags, decorators) {
+ const startLoc = decorators.length ? decorators[0].loc.start : this.state.startLoc;
+ const modified = {};
+ this.tsParseModifiers({
+ allowedModifiers: ["public", "private", "protected", "override", "readonly"]
+ }, modified);
+ const accessibility = modified.accessibility;
+ const override = modified.override;
+ const readonly = modified.readonly;
+ if (!(flags & 4) && (accessibility || readonly || override)) {
+ this.raise(TSErrors.UnexpectedParameterModifier, startLoc);
+ }
+ const left = this.parseMaybeDefault();
+ if (flags & 2) {
+ this.parseFunctionParamType(left);
+ }
+ const elt = this.parseMaybeDefault(left.loc.start, left);
+ if (accessibility || readonly || override) {
+ const pp = this.startNodeAt(startLoc);
+ if (decorators.length) {
+ pp.decorators = decorators;
+ }
+ if (accessibility) pp.accessibility = accessibility;
+ if (readonly) pp.readonly = readonly;
+ if (override) pp.override = override;
+ if (elt.type !== "Identifier" && elt.type !== "AssignmentPattern") {
+ this.raise(TSErrors.UnsupportedParameterPropertyKind, pp);
+ }
+ pp.parameter = elt;
+ return this.finishNode(pp, "TSParameterProperty");
+ }
+ if (decorators.length) {
+ left.decorators = decorators;
+ }
+ return elt;
+ }
+ isSimpleParameter(node) {
+ return node.type === "TSParameterProperty" && super.isSimpleParameter(node.parameter) || super.isSimpleParameter(node);
+ }
+ tsDisallowOptionalPattern(node) {
+ for (const param of node.params) {
+ if (param.type !== "Identifier" && param.optional && !this.state.isAmbientContext) {
+ this.raise(TSErrors.PatternIsOptional, param);
+ }
+ }
+ }
+ setArrowFunctionParameters(node, params, trailingCommaLoc) {
+ super.setArrowFunctionParameters(node, params, trailingCommaLoc);
+ this.tsDisallowOptionalPattern(node);
+ }
+ parseFunctionBodyAndFinish(node, type, isMethod = false) {
+ if (this.match(14)) {
+ node.returnType = this.tsParseTypeOrTypePredicateAnnotation(14);
+ }
+ const bodilessType = type === "FunctionDeclaration" ? "TSDeclareFunction" : type === "ClassMethod" || type === "ClassPrivateMethod" ? "TSDeclareMethod" : undefined;
+ if (bodilessType && !this.match(5) && this.isLineTerminator()) {
+ return this.finishNode(node, bodilessType);
+ }
+ if (bodilessType === "TSDeclareFunction" && this.state.isAmbientContext) {
+ this.raise(TSErrors.DeclareFunctionHasImplementation, node);
+ if (node.declare) {
+ return super.parseFunctionBodyAndFinish(node, bodilessType, isMethod);
+ }
+ }
+ this.tsDisallowOptionalPattern(node);
+ return super.parseFunctionBodyAndFinish(node, type, isMethod);
+ }
+ registerFunctionStatementId(node) {
+ if (!node.body && node.id) {
+ this.checkIdentifier(node.id, 1024);
+ } else {
+ super.registerFunctionStatementId(node);
+ }
+ }
+ tsCheckForInvalidTypeCasts(items) {
+ items.forEach(node => {
+ if ((node == null ? void 0 : node.type) === "TSTypeCastExpression") {
+ this.raise(TSErrors.UnexpectedTypeAnnotation, node.typeAnnotation);
+ }
+ });
+ }
+ toReferencedList(exprList, isInParens) {
+ this.tsCheckForInvalidTypeCasts(exprList);
+ return exprList;
+ }
+ parseArrayLike(close, isTuple, refExpressionErrors) {
+ const node = super.parseArrayLike(close, isTuple, refExpressionErrors);
+ if (node.type === "ArrayExpression") {
+ this.tsCheckForInvalidTypeCasts(node.elements);
+ }
+ return node;
+ }
+ parseSubscript(base, startLoc, noCalls, state) {
+ if (!this.hasPrecedingLineBreak() && this.match(35)) {
+ this.state.canStartJSXElement = false;
+ this.next();
+ const nonNullExpression = this.startNodeAt(startLoc);
+ nonNullExpression.expression = base;
+ return this.finishNode(nonNullExpression, "TSNonNullExpression");
+ }
+ let isOptionalCall = false;
+ if (this.match(18) && this.lookaheadCharCode() === 60) {
+ if (noCalls) {
+ state.stop = true;
+ return base;
+ }
+ state.optionalChainMember = isOptionalCall = true;
+ this.next();
+ }
+ if (this.match(47) || this.match(51)) {
+ let missingParenErrorLoc;
+ const result = this.tsTryParseAndCatch(() => {
+ if (!noCalls && this.atPossibleAsyncArrow(base)) {
+ const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(startLoc);
+ if (asyncArrowFn) {
+ state.stop = true;
+ return asyncArrowFn;
+ }
+ }
+ const typeArguments = this.tsParseTypeArgumentsInExpression();
+ if (!typeArguments) return;
+ if (isOptionalCall && !this.match(10)) {
+ missingParenErrorLoc = this.state.curPosition();
+ return;
+ }
+ if (tokenIsTemplate(this.state.type)) {
+ const result = super.parseTaggedTemplateExpression(base, startLoc, state);
+ result.typeParameters = typeArguments;
+ return result;
+ }
+ if (!noCalls && this.eat(10)) {
+ const node = this.startNodeAt(startLoc);
+ node.callee = base;
+ node.arguments = this.parseCallExpressionArguments();
+ this.tsCheckForInvalidTypeCasts(node.arguments);
+ node.typeParameters = typeArguments;
+ if (state.optionalChainMember) {
+ node.optional = isOptionalCall;
+ }
+ return this.finishCallExpression(node, state.optionalChainMember);
+ }
+ const tokenType = this.state.type;
+ if (tokenType === 48 || tokenType === 52 || tokenType !== 10 && tokenType !== 93 && tokenType !== 120 && tokenCanStartExpression(tokenType) && !this.hasPrecedingLineBreak()) {
+ return;
+ }
+ const node = this.startNodeAt(startLoc);
+ node.expression = base;
+ node.typeParameters = typeArguments;
+ return this.finishNode(node, "TSInstantiationExpression");
+ });
+ if (missingParenErrorLoc) {
+ this.unexpected(missingParenErrorLoc, 10);
+ }
+ if (result) {
+ if (result.type === "TSInstantiationExpression") {
+ if (this.match(16) || this.match(18) && this.lookaheadCharCode() !== 40) {
+ this.raise(TSErrors.InvalidPropertyAccessAfterInstantiationExpression, this.state.startLoc);
+ }
+ if (!this.match(16) && !this.match(18)) {
+ result.expression = super.stopParseSubscript(base, state);
+ }
+ }
+ return result;
+ }
+ }
+ return super.parseSubscript(base, startLoc, noCalls, state);
+ }
+ parseNewCallee(node) {
+ var _callee$extra;
+ super.parseNewCallee(node);
+ const {
+ callee
+ } = node;
+ if (callee.type === "TSInstantiationExpression" && !((_callee$extra = callee.extra) != null && _callee$extra.parenthesized)) {
+ node.typeParameters = callee.typeParameters;
+ node.callee = callee.expression;
+ }
+ }
+ parseExprOp(left, leftStartLoc, minPrec) {
+ let isSatisfies;
+ if (tokenOperatorPrecedence(58) > minPrec && !this.hasPrecedingLineBreak() && (this.isContextual(93) || (isSatisfies = this.isContextual(120)))) {
+ const node = this.startNodeAt(leftStartLoc);
+ node.expression = left;
+ node.typeAnnotation = this.tsInType(() => {
+ this.next();
+ if (this.match(75)) {
+ if (isSatisfies) {
+ this.raise(Errors.UnexpectedKeyword, this.state.startLoc, {
+ keyword: "const"
+ });
+ }
+ return this.tsParseTypeReference();
+ }
+ return this.tsParseType();
+ });
+ this.finishNode(node, isSatisfies ? "TSSatisfiesExpression" : "TSAsExpression");
+ this.reScan_lt_gt();
+ return this.parseExprOp(node, leftStartLoc, minPrec);
+ }
+ return super.parseExprOp(left, leftStartLoc, minPrec);
+ }
+ checkReservedWord(word, startLoc, checkKeywords, isBinding) {
+ if (!this.state.isAmbientContext) {
+ super.checkReservedWord(word, startLoc, checkKeywords, isBinding);
+ }
+ }
+ checkImportReflection(node) {
+ super.checkImportReflection(node);
+ if (node.module && node.importKind !== "value") {
+ this.raise(TSErrors.ImportReflectionHasImportType, node.specifiers[0].loc.start);
+ }
+ }
+ checkDuplicateExports() {}
+ isPotentialImportPhase(isExport) {
+ if (super.isPotentialImportPhase(isExport)) return true;
+ if (this.isContextual(130)) {
+ const ch = this.lookaheadCharCode();
+ return isExport ? ch === 123 || ch === 42 : ch !== 61;
+ }
+ return !isExport && this.isContextual(87);
+ }
+ applyImportPhase(node, isExport, phase, loc) {
+ super.applyImportPhase(node, isExport, phase, loc);
+ if (isExport) {
+ node.exportKind = phase === "type" ? "type" : "value";
+ } else {
+ node.importKind = phase === "type" || phase === "typeof" ? phase : "value";
+ }
+ }
+ parseImport(node) {
+ if (this.match(134)) {
+ node.importKind = "value";
+ return super.parseImport(node);
+ }
+ let importNode;
+ if (tokenIsIdentifier(this.state.type) && this.lookaheadCharCode() === 61) {
+ node.importKind = "value";
+ return this.tsParseImportEqualsDeclaration(node);
+ } else if (this.isContextual(130)) {
+ const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, false);
+ if (this.lookaheadCharCode() === 61) {
+ return this.tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier);
+ } else {
+ importNode = super.parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier);
+ }
+ } else {
+ importNode = super.parseImport(node);
+ }
+ if (importNode.importKind === "type" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === "ImportDefaultSpecifier") {
+ this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, importNode);
+ }
+ return importNode;
+ }
+ parseExport(node, decorators) {
+ if (this.match(83)) {
+ const nodeImportEquals = node;
+ this.next();
+ let maybeDefaultIdentifier = null;
+ if (this.isContextual(130) && this.isPotentialImportPhase(false)) {
+ maybeDefaultIdentifier = this.parseMaybeImportPhase(nodeImportEquals, false);
+ } else {
+ nodeImportEquals.importKind = "value";
+ }
+ const declaration = this.tsParseImportEqualsDeclaration(nodeImportEquals, maybeDefaultIdentifier, true);
+ return declaration;
+ } else if (this.eat(29)) {
+ const assign = node;
+ assign.expression = super.parseExpression();
+ this.semicolon();
+ this.sawUnambiguousESM = true;
+ return this.finishNode(assign, "TSExportAssignment");
+ } else if (this.eatContextual(93)) {
+ const decl = node;
+ this.expectContextual(128);
+ decl.id = this.parseIdentifier();
+ this.semicolon();
+ return this.finishNode(decl, "TSNamespaceExportDeclaration");
+ } else {
+ return super.parseExport(node, decorators);
+ }
+ }
+ isAbstractClass() {
+ return this.isContextual(124) && this.isLookaheadContextual("class");
+ }
+ parseExportDefaultExpression() {
+ if (this.isAbstractClass()) {
+ const cls = this.startNode();
+ this.next();
+ cls.abstract = true;
+ return this.parseClass(cls, true, true);
+ }
+ if (this.match(129)) {
+ const result = this.tsParseInterfaceDeclaration(this.startNode());
+ if (result) return result;
+ }
+ return super.parseExportDefaultExpression();
+ }
+ parseVarStatement(node, kind, allowMissingInitializer = false) {
+ const {
+ isAmbientContext
+ } = this.state;
+ const declaration = super.parseVarStatement(node, kind, allowMissingInitializer || isAmbientContext);
+ if (!isAmbientContext) return declaration;
+ if (!node.declare && (kind === "using" || kind === "await using")) {
+ this.raiseOverwrite(TSErrors.UsingDeclarationInAmbientContext, node, kind);
+ return declaration;
+ }
+ for (const {
+ id,
+ init
+ } of declaration.declarations) {
+ if (!init) continue;
+ if (kind === "var" || kind === "let" || !!id.typeAnnotation) {
+ this.raise(TSErrors.InitializerNotAllowedInAmbientContext, init);
+ } else if (!isValidAmbientConstInitializer(init, this.hasPlugin("estree"))) {
+ this.raise(TSErrors.ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference, init);
+ }
+ }
+ return declaration;
+ }
+ parseStatementContent(flags, decorators) {
+ if (!this.state.containsEsc) {
+ switch (this.state.type) {
+ case 75:
+ {
+ if (this.isLookaheadContextual("enum")) {
+ const node = this.startNode();
+ this.expect(75);
+ return this.tsParseEnumDeclaration(node, {
+ const: true
+ });
+ }
+ break;
+ }
+ case 124:
+ case 125:
+ {
+ if (this.nextTokenIsIdentifierAndNotTSRelationalOperatorOnSameLine()) {
+ const token = this.state.type;
+ const node = this.startNode();
+ this.next();
+ const declaration = token === 125 ? this.tsTryParseDeclare(node) : this.tsParseAbstractDeclaration(node, decorators);
+ if (declaration) {
+ if (token === 125) {
+ declaration.declare = true;
+ }
+ return declaration;
+ } else {
+ node.expression = this.createIdentifier(this.startNodeAt(node.loc.start), token === 125 ? "declare" : "abstract");
+ this.semicolon(false);
+ return this.finishNode(node, "ExpressionStatement");
+ }
+ }
+ break;
+ }
+ case 126:
+ return this.tsParseEnumDeclaration(this.startNode());
+ case 112:
+ {
+ const nextCh = this.lookaheadCharCode();
+ if (nextCh === 123) {
+ const node = this.startNode();
+ return this.tsParseAmbientExternalModuleDeclaration(node);
+ }
+ break;
+ }
+ case 129:
+ {
+ const result = this.tsParseInterfaceDeclaration(this.startNode());
+ if (result) return result;
+ break;
+ }
+ case 127:
+ {
+ if (this.nextTokenIsIdentifierOrStringLiteralOnSameLine()) {
+ const node = this.startNode();
+ this.next();
+ return this.tsParseDeclaration(node, 127, false, decorators);
+ }
+ break;
+ }
+ case 128:
+ {
+ if (this.nextTokenIsIdentifierOnSameLine()) {
+ const node = this.startNode();
+ this.next();
+ return this.tsParseDeclaration(node, 128, false, decorators);
+ }
+ break;
+ }
+ case 130:
+ {
+ if (this.nextTokenIsIdentifierOnSameLine()) {
+ const node = this.startNode();
+ this.next();
+ return this.tsParseTypeAliasDeclaration(node);
+ }
+ break;
+ }
+ }
+ }
+ return super.parseStatementContent(flags, decorators);
+ }
+ parseAccessModifier() {
+ return this.tsParseModifier(["public", "protected", "private"]);
+ }
+ tsHasSomeModifiers(member, modifiers) {
+ return modifiers.some(modifier => {
+ if (tsIsAccessModifier(modifier)) {
+ return member.accessibility === modifier;
+ }
+ return !!member[modifier];
+ });
+ }
+ tsIsStartOfStaticBlocks() {
+ return this.isContextual(106) && this.lookaheadCharCode() === 123;
+ }
+ parseClassMember(classBody, member, state) {
+ const modifiers = ["declare", "private", "public", "protected", "override", "abstract", "readonly", "static"];
+ this.tsParseModifiers({
+ allowedModifiers: modifiers,
+ disallowedModifiers: ["in", "out"],
+ stopOnStartOfClassStaticBlock: true,
+ errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions
+ }, member);
+ const callParseClassMemberWithIsStatic = () => {
+ if (this.tsIsStartOfStaticBlocks()) {
+ this.next();
+ this.next();
+ if (this.tsHasSomeModifiers(member, modifiers)) {
+ this.raise(TSErrors.StaticBlockCannotHaveModifier, this.state.curPosition());
+ }
+ super.parseClassStaticBlock(classBody, member);
+ } else {
+ this.parseClassMemberWithIsStatic(classBody, member, state, !!member.static);
+ }
+ };
+ if (member.declare) {
+ this.tsInAmbientContext(callParseClassMemberWithIsStatic);
+ } else {
+ callParseClassMemberWithIsStatic();
+ }
+ }
+ parseClassMemberWithIsStatic(classBody, member, state, isStatic) {
+ const idx = this.tsTryParseIndexSignature(member);
+ if (idx) {
+ classBody.body.push(idx);
+ if (member.abstract) {
+ this.raise(TSErrors.IndexSignatureHasAbstract, member);
+ }
+ if (member.accessibility) {
+ this.raise(TSErrors.IndexSignatureHasAccessibility, member, {
+ modifier: member.accessibility
+ });
+ }
+ if (member.declare) {
+ this.raise(TSErrors.IndexSignatureHasDeclare, member);
+ }
+ if (member.override) {
+ this.raise(TSErrors.IndexSignatureHasOverride, member);
+ }
+ return;
+ }
+ if (!this.state.inAbstractClass && member.abstract) {
+ this.raise(TSErrors.NonAbstractClassHasAbstractMethod, member);
+ }
+ if (member.override) {
+ if (!state.hadSuperClass) {
+ this.raise(TSErrors.OverrideNotInSubClass, member);
+ }
+ }
+ super.parseClassMemberWithIsStatic(classBody, member, state, isStatic);
+ }
+ parsePostMemberNameModifiers(methodOrProp) {
+ const optional = this.eat(17);
+ if (optional) methodOrProp.optional = true;
+ if (methodOrProp.readonly && this.match(10)) {
+ this.raise(TSErrors.ClassMethodHasReadonly, methodOrProp);
+ }
+ if (methodOrProp.declare && this.match(10)) {
+ this.raise(TSErrors.ClassMethodHasDeclare, methodOrProp);
+ }
+ }
+ shouldParseExportDeclaration() {
+ if (this.tsIsDeclarationStart()) return true;
+ return super.shouldParseExportDeclaration();
+ }
+ parseConditional(expr, startLoc, refExpressionErrors) {
+ if (!this.match(17)) return expr;
+ if (this.state.maybeInArrowParameters) {
+ const nextCh = this.lookaheadCharCode();
+ if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) {
+ this.setOptionalParametersError(refExpressionErrors);
+ return expr;
+ }
+ }
+ return super.parseConditional(expr, startLoc, refExpressionErrors);
+ }
+ parseParenItem(node, startLoc) {
+ const newNode = super.parseParenItem(node, startLoc);
+ if (this.eat(17)) {
+ newNode.optional = true;
+ this.resetEndLocation(node);
+ }
+ if (this.match(14)) {
+ const typeCastNode = this.startNodeAt(startLoc);
+ typeCastNode.expression = node;
+ typeCastNode.typeAnnotation = this.tsParseTypeAnnotation();
+ return this.finishNode(typeCastNode, "TSTypeCastExpression");
+ }
+ return node;
+ }
+ parseExportDeclaration(node) {
+ if (!this.state.isAmbientContext && this.isContextual(125)) {
+ return this.tsInAmbientContext(() => this.parseExportDeclaration(node));
+ }
+ const startLoc = this.state.startLoc;
+ const isDeclare = this.eatContextual(125);
+ if (isDeclare && (this.isContextual(125) || !this.shouldParseExportDeclaration())) {
+ throw this.raise(TSErrors.ExpectedAmbientAfterExportDeclare, this.state.startLoc);
+ }
+ const isIdentifier = tokenIsIdentifier(this.state.type);
+ const declaration = isIdentifier && this.tsTryParseExportDeclaration() || super.parseExportDeclaration(node);
+ if (!declaration) return null;
+ if (declaration.type === "TSInterfaceDeclaration" || declaration.type === "TSTypeAliasDeclaration" || isDeclare) {
+ node.exportKind = "type";
+ }
+ if (isDeclare && declaration.type !== "TSImportEqualsDeclaration") {
+ this.resetStartLocation(declaration, startLoc);
+ declaration.declare = true;
+ }
+ return declaration;
+ }
+ parseClassId(node, isStatement, optionalId, bindingType) {
+ if ((!isStatement || optionalId) && this.isContextual(113)) {
+ return;
+ }
+ super.parseClassId(node, isStatement, optionalId, node.declare ? 1024 : 8331);
+ const typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers);
+ if (typeParameters) node.typeParameters = typeParameters;
+ }
+ parseClassPropertyAnnotation(node) {
+ if (!node.optional) {
+ if (this.eat(35)) {
+ node.definite = true;
+ } else if (this.eat(17)) {
+ node.optional = true;
+ }
+ }
+ const type = this.tsTryParseTypeAnnotation();
+ if (type) node.typeAnnotation = type;
+ }
+ parseClassProperty(node) {
+ this.parseClassPropertyAnnotation(node);
+ if (this.state.isAmbientContext && !(node.readonly && !node.typeAnnotation) && this.match(29)) {
+ this.raise(TSErrors.DeclareClassFieldHasInitializer, this.state.startLoc);
+ }
+ if (node.abstract && this.match(29)) {
+ const {
+ key
+ } = node;
+ this.raise(TSErrors.AbstractPropertyHasInitializer, this.state.startLoc, {
+ propertyName: key.type === "Identifier" && !node.computed ? key.name : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]`
+ });
+ }
+ return super.parseClassProperty(node);
+ }
+ parseClassPrivateProperty(node) {
+ if (node.abstract) {
+ this.raise(TSErrors.PrivateElementHasAbstract, node);
+ }
+ if (node.accessibility) {
+ this.raise(TSErrors.PrivateElementHasAccessibility, node, {
+ modifier: node.accessibility
+ });
+ }
+ this.parseClassPropertyAnnotation(node);
+ return super.parseClassPrivateProperty(node);
+ }
+ parseClassAccessorProperty(node) {
+ this.parseClassPropertyAnnotation(node);
+ if (node.optional) {
+ this.raise(TSErrors.AccessorCannotBeOptional, node);
+ }
+ return super.parseClassAccessorProperty(node);
+ }
+ pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
+ const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);
+ if (typeParameters && isConstructor) {
+ this.raise(TSErrors.ConstructorHasTypeParameters, typeParameters);
+ }
+ const {
+ declare = false,
+ kind
+ } = method;
+ if (declare && (kind === "get" || kind === "set")) {
+ this.raise(TSErrors.DeclareAccessor, method, {
+ kind
+ });
+ }
+ if (typeParameters) method.typeParameters = typeParameters;
+ super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);
+ }
+ pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {
+ const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);
+ if (typeParameters) method.typeParameters = typeParameters;
+ super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);
+ }
+ declareClassPrivateMethodInScope(node, kind) {
+ if (node.type === "TSDeclareMethod") return;
+ if (node.type === "MethodDefinition" && node.value.body == null) {
+ return;
+ }
+ super.declareClassPrivateMethodInScope(node, kind);
+ }
+ parseClassSuper(node) {
+ super.parseClassSuper(node);
+ if (node.superClass) {
+ if (node.superClass.type === "TSInstantiationExpression") {
+ const tsInstantiationExpression = node.superClass;
+ const superClass = tsInstantiationExpression.expression;
+ this.takeSurroundingComments(superClass, superClass.start, superClass.end);
+ const superTypeArguments = tsInstantiationExpression.typeParameters;
+ this.takeSurroundingComments(superTypeArguments, superTypeArguments.start, superTypeArguments.end);
+ node.superClass = superClass;
+ node.superTypeParameters = superTypeArguments;
+ } else if (this.match(47) || this.match(51)) {
+ node.superTypeParameters = this.tsParseTypeArgumentsInExpression();
+ }
+ }
+ if (this.eatContextual(113)) {
+ node.implements = this.tsParseHeritageClause("implements");
+ }
+ }
+ parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {
+ const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);
+ if (typeParameters) prop.typeParameters = typeParameters;
+ return super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors);
+ }
+ parseFunctionParams(node, isConstructor) {
+ const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);
+ if (typeParameters) node.typeParameters = typeParameters;
+ super.parseFunctionParams(node, isConstructor);
+ }
+ parseVarId(decl, kind) {
+ super.parseVarId(decl, kind);
+ if (decl.id.type === "Identifier" && !this.hasPrecedingLineBreak() && this.eat(35)) {
+ decl.definite = true;
+ }
+ const type = this.tsTryParseTypeAnnotation();
+ if (type) {
+ decl.id.typeAnnotation = type;
+ this.resetEndLocation(decl.id);
+ }
+ }
+ parseAsyncArrowFromCallExpression(node, call) {
+ if (this.match(14)) {
+ node.returnType = this.tsParseTypeAnnotation();
+ }
+ return super.parseAsyncArrowFromCallExpression(node, call);
+ }
+ parseMaybeAssign(refExpressionErrors, afterLeftParse) {
+ var _jsx, _jsx2, _typeCast, _jsx3, _typeCast2;
+ let state;
+ let jsx;
+ let typeCast;
+ if (this.hasPlugin("jsx") && (this.match(143) || this.match(47))) {
+ state = this.state.clone();
+ jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state);
+ if (!jsx.error) return jsx.node;
+ const {
+ context
+ } = this.state;
+ const currentContext = context[context.length - 1];
+ if (currentContext === types.j_oTag || currentContext === types.j_expr) {
+ context.pop();
+ }
+ }
+ if (!((_jsx = jsx) != null && _jsx.error) && !this.match(47)) {
+ return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);
+ }
+ if (!state || state === this.state) state = this.state.clone();
+ let typeParameters;
+ const arrow = this.tryParse(abort => {
+ var _expr$extra, _typeParameters;
+ typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier);
+ const expr = super.parseMaybeAssign(refExpressionErrors, afterLeftParse);
+ if (expr.type !== "ArrowFunctionExpression" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) {
+ abort();
+ }
+ if (((_typeParameters = typeParameters) == null ? void 0 : _typeParameters.params.length) !== 0) {
+ this.resetStartLocationFromNode(expr, typeParameters);
+ }
+ expr.typeParameters = typeParameters;
+ return expr;
+ }, state);
+ if (!arrow.error && !arrow.aborted) {
+ if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);
+ return arrow.node;
+ }
+ if (!jsx) {
+ assert(!this.hasPlugin("jsx"));
+ typeCast = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state);
+ if (!typeCast.error) return typeCast.node;
+ }
+ if ((_jsx2 = jsx) != null && _jsx2.node) {
+ this.state = jsx.failState;
+ return jsx.node;
+ }
+ if (arrow.node) {
+ this.state = arrow.failState;
+ if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);
+ return arrow.node;
+ }
+ if ((_typeCast = typeCast) != null && _typeCast.node) {
+ this.state = typeCast.failState;
+ return typeCast.node;
+ }
+ throw ((_jsx3 = jsx) == null ? void 0 : _jsx3.error) || arrow.error || ((_typeCast2 = typeCast) == null ? void 0 : _typeCast2.error);
+ }
+ reportReservedArrowTypeParam(node) {
+ var _node$extra2;
+ if (node.params.length === 1 && !node.params[0].constraint && !((_node$extra2 = node.extra) != null && _node$extra2.trailingComma) && this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) {
+ this.raise(TSErrors.ReservedArrowTypeParam, node);
+ }
+ }
+ parseMaybeUnary(refExpressionErrors, sawUnary) {
+ if (!this.hasPlugin("jsx") && this.match(47)) {
+ return this.tsParseTypeAssertion();
+ }
+ return super.parseMaybeUnary(refExpressionErrors, sawUnary);
+ }
+ parseArrow(node) {
+ if (this.match(14)) {
+ const result = this.tryParse(abort => {
+ const returnType = this.tsParseTypeOrTypePredicateAnnotation(14);
+ if (this.canInsertSemicolon() || !this.match(19)) abort();
+ return returnType;
+ });
+ if (result.aborted) return;
+ if (!result.thrown) {
+ if (result.error) this.state = result.failState;
+ node.returnType = result.node;
+ }
+ }
+ return super.parseArrow(node);
+ }
+ parseFunctionParamType(param) {
+ if (this.eat(17)) {
+ param.optional = true;
+ }
+ const type = this.tsTryParseTypeAnnotation();
+ if (type) param.typeAnnotation = type;
+ this.resetEndLocation(param);
+ return param;
+ }
+ isAssignable(node, isBinding) {
+ switch (node.type) {
+ case "TSTypeCastExpression":
+ return this.isAssignable(node.expression, isBinding);
+ case "TSParameterProperty":
+ return true;
+ default:
+ return super.isAssignable(node, isBinding);
+ }
+ }
+ toAssignable(node, isLHS = false) {
+ switch (node.type) {
+ case "ParenthesizedExpression":
+ this.toAssignableParenthesizedExpression(node, isLHS);
+ break;
+ case "TSAsExpression":
+ case "TSSatisfiesExpression":
+ case "TSNonNullExpression":
+ case "TSTypeAssertion":
+ if (isLHS) {
+ this.expressionScope.recordArrowParameterBindingError(TSErrors.UnexpectedTypeCastInParameter, node);
+ } else {
+ this.raise(TSErrors.UnexpectedTypeCastInParameter, node);
+ }
+ this.toAssignable(node.expression, isLHS);
+ break;
+ case "AssignmentExpression":
+ if (!isLHS && node.left.type === "TSTypeCastExpression") {
+ node.left = this.typeCastToParameter(node.left);
+ }
+ default:
+ super.toAssignable(node, isLHS);
+ }
+ }
+ toAssignableParenthesizedExpression(node, isLHS) {
+ switch (node.expression.type) {
+ case "TSAsExpression":
+ case "TSSatisfiesExpression":
+ case "TSNonNullExpression":
+ case "TSTypeAssertion":
+ case "ParenthesizedExpression":
+ this.toAssignable(node.expression, isLHS);
+ break;
+ default:
+ super.toAssignable(node, isLHS);
+ }
+ }
+ checkToRestConversion(node, allowPattern) {
+ switch (node.type) {
+ case "TSAsExpression":
+ case "TSSatisfiesExpression":
+ case "TSTypeAssertion":
+ case "TSNonNullExpression":
+ this.checkToRestConversion(node.expression, false);
+ break;
+ default:
+ super.checkToRestConversion(node, allowPattern);
+ }
+ }
+ isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding) {
+ switch (type) {
+ case "TSTypeCastExpression":
+ return true;
+ case "TSParameterProperty":
+ return "parameter";
+ case "TSNonNullExpression":
+ return "expression";
+ case "TSAsExpression":
+ case "TSSatisfiesExpression":
+ case "TSTypeAssertion":
+ return (binding !== 64 || !isUnparenthesizedInAssign) && ["expression", true];
+ default:
+ return super.isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding);
+ }
+ }
+ parseBindingAtom() {
+ if (this.state.type === 78) {
+ return this.parseIdentifier(true);
+ }
+ return super.parseBindingAtom();
+ }
+ parseMaybeDecoratorArguments(expr, startLoc) {
+ if (this.match(47) || this.match(51)) {
+ const typeArguments = this.tsParseTypeArgumentsInExpression();
+ if (this.match(10)) {
+ const call = super.parseMaybeDecoratorArguments(expr, startLoc);
+ call.typeParameters = typeArguments;
+ return call;
+ }
+ this.unexpected(null, 10);
+ }
+ return super.parseMaybeDecoratorArguments(expr, startLoc);
+ }
+ checkCommaAfterRest(close) {
+ if (this.state.isAmbientContext && this.match(12) && this.lookaheadCharCode() === close) {
+ this.next();
+ return false;
+ }
+ return super.checkCommaAfterRest(close);
+ }
+ isClassMethod() {
+ return this.match(47) || super.isClassMethod();
+ }
+ isClassProperty() {
+ return this.match(35) || this.match(14) || super.isClassProperty();
+ }
+ parseMaybeDefault(startLoc, left) {
+ const node = super.parseMaybeDefault(startLoc, left);
+ if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {
+ this.raise(TSErrors.TypeAnnotationAfterAssign, node.typeAnnotation);
+ }
+ return node;
+ }
+ getTokenFromCode(code) {
+ if (this.state.inType) {
+ if (code === 62) {
+ this.finishOp(48, 1);
+ return;
+ }
+ if (code === 60) {
+ this.finishOp(47, 1);
+ return;
+ }
+ }
+ super.getTokenFromCode(code);
+ }
+ reScan_lt_gt() {
+ const {
+ type
+ } = this.state;
+ if (type === 47) {
+ this.state.pos -= 1;
+ this.readToken_lt();
+ } else if (type === 48) {
+ this.state.pos -= 1;
+ this.readToken_gt();
+ }
+ }
+ reScan_lt() {
+ const {
+ type
+ } = this.state;
+ if (type === 51) {
+ this.state.pos -= 2;
+ this.finishOp(47, 1);
+ return 47;
+ }
+ return type;
+ }
+ toAssignableListItem(exprList, index, isLHS) {
+ const node = exprList[index];
+ if (node.type === "TSTypeCastExpression") {
+ exprList[index] = this.typeCastToParameter(node);
+ }
+ super.toAssignableListItem(exprList, index, isLHS);
+ }
+ typeCastToParameter(node) {
+ node.expression.typeAnnotation = node.typeAnnotation;
+ this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);
+ return node.expression;
+ }
+ shouldParseArrow(params) {
+ if (this.match(14)) {
+ return params.every(expr => this.isAssignable(expr, true));
+ }
+ return super.shouldParseArrow(params);
+ }
+ shouldParseAsyncArrow() {
+ return this.match(14) || super.shouldParseAsyncArrow();
+ }
+ canHaveLeadingDecorator() {
+ return super.canHaveLeadingDecorator() || this.isAbstractClass();
+ }
+ jsxParseOpeningElementAfterName(node) {
+ if (this.match(47) || this.match(51)) {
+ const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArgumentsInExpression());
+ if (typeArguments) {
+ node.typeParameters = typeArguments;
+ }
+ }
+ return super.jsxParseOpeningElementAfterName(node);
+ }
+ getGetterSetterExpectedParamCount(method) {
+ const baseCount = super.getGetterSetterExpectedParamCount(method);
+ const params = this.getObjectOrClassMethodParams(method);
+ const firstParam = params[0];
+ const hasContextParam = firstParam && this.isThisParam(firstParam);
+ return hasContextParam ? baseCount + 1 : baseCount;
+ }
+ parseCatchClauseParam() {
+ const param = super.parseCatchClauseParam();
+ const type = this.tsTryParseTypeAnnotation();
+ if (type) {
+ param.typeAnnotation = type;
+ this.resetEndLocation(param);
+ }
+ return param;
+ }
+ tsInAmbientContext(cb) {
+ const {
+ isAmbientContext: oldIsAmbientContext,
+ strict: oldStrict
+ } = this.state;
+ this.state.isAmbientContext = true;
+ this.state.strict = false;
+ try {
+ return cb();
+ } finally {
+ this.state.isAmbientContext = oldIsAmbientContext;
+ this.state.strict = oldStrict;
+ }
+ }
+ parseClass(node, isStatement, optionalId) {
+ const oldInAbstractClass = this.state.inAbstractClass;
+ this.state.inAbstractClass = !!node.abstract;
+ try {
+ return super.parseClass(node, isStatement, optionalId);
+ } finally {
+ this.state.inAbstractClass = oldInAbstractClass;
+ }
+ }
+ tsParseAbstractDeclaration(node, decorators) {
+ if (this.match(80)) {
+ node.abstract = true;
+ return this.maybeTakeDecorators(decorators, this.parseClass(node, true, false));
+ } else if (this.isContextual(129)) {
+ if (!this.hasFollowingLineBreak()) {
+ node.abstract = true;
+ this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifier, node);
+ return this.tsParseInterfaceDeclaration(node);
+ } else {
+ return null;
+ }
+ }
+ throw this.unexpected(null, 80);
+ }
+ parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope) {
+ const method = super.parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);
+ if (method.abstract || method.type === "TSAbstractMethodDefinition") {
+ const hasEstreePlugin = this.hasPlugin("estree");
+ const methodFn = hasEstreePlugin ? method.value : method;
+ if (methodFn.body) {
+ const {
+ key
+ } = method;
+ this.raise(TSErrors.AbstractMethodHasImplementation, method, {
+ methodName: key.type === "Identifier" && !method.computed ? key.name : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]`
+ });
+ }
+ }
+ return method;
+ }
+ tsParseTypeParameterName() {
+ const typeName = this.parseIdentifier();
+ return typeName.name;
+ }
+ shouldParseAsAmbientContext() {
+ return !!this.getPluginOption("typescript", "dts");
+ }
+ parse() {
+ if (this.shouldParseAsAmbientContext()) {
+ this.state.isAmbientContext = true;
+ }
+ return super.parse();
+ }
+ getExpression() {
+ if (this.shouldParseAsAmbientContext()) {
+ this.state.isAmbientContext = true;
+ }
+ return super.getExpression();
+ }
+ parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {
+ if (!isString && isMaybeTypeOnly) {
+ this.parseTypeOnlyImportExportSpecifier(node, false, isInTypeExport);
+ return this.finishNode(node, "ExportSpecifier");
+ }
+ node.exportKind = "value";
+ return super.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly);
+ }
+ parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) {
+ if (!importedIsString && isMaybeTypeOnly) {
+ this.parseTypeOnlyImportExportSpecifier(specifier, true, isInTypeOnlyImport);
+ return this.finishNode(specifier, "ImportSpecifier");
+ }
+ specifier.importKind = "value";
+ return super.parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, isInTypeOnlyImport ? 4098 : 4096);
+ }
+ parseTypeOnlyImportExportSpecifier(node, isImport, isInTypeOnlyImportExport) {
+ const leftOfAsKey = isImport ? "imported" : "local";
+ const rightOfAsKey = isImport ? "local" : "exported";
+ let leftOfAs = node[leftOfAsKey];
+ let rightOfAs;
+ let hasTypeSpecifier = false;
+ let canParseAsKeyword = true;
+ const loc = leftOfAs.loc.start;
+ if (this.isContextual(93)) {
+ const firstAs = this.parseIdentifier();
+ if (this.isContextual(93)) {
+ const secondAs = this.parseIdentifier();
+ if (tokenIsKeywordOrIdentifier(this.state.type)) {
+ hasTypeSpecifier = true;
+ leftOfAs = firstAs;
+ rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName();
+ canParseAsKeyword = false;
+ } else {
+ rightOfAs = secondAs;
+ canParseAsKeyword = false;
+ }
+ } else if (tokenIsKeywordOrIdentifier(this.state.type)) {
+ canParseAsKeyword = false;
+ rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName();
+ } else {
+ hasTypeSpecifier = true;
+ leftOfAs = firstAs;
+ }
+ } else if (tokenIsKeywordOrIdentifier(this.state.type)) {
+ hasTypeSpecifier = true;
+ if (isImport) {
+ leftOfAs = this.parseIdentifier(true);
+ if (!this.isContextual(93)) {
+ this.checkReservedWord(leftOfAs.name, leftOfAs.loc.start, true, true);
+ }
+ } else {
+ leftOfAs = this.parseModuleExportName();
+ }
+ }
+ if (hasTypeSpecifier && isInTypeOnlyImportExport) {
+ this.raise(isImport ? TSErrors.TypeModifierIsUsedInTypeImports : TSErrors.TypeModifierIsUsedInTypeExports, loc);
+ }
+ node[leftOfAsKey] = leftOfAs;
+ node[rightOfAsKey] = rightOfAs;
+ const kindKey = isImport ? "importKind" : "exportKind";
+ node[kindKey] = hasTypeSpecifier ? "type" : "value";
+ if (canParseAsKeyword && this.eatContextual(93)) {
+ node[rightOfAsKey] = isImport ? this.parseIdentifier() : this.parseModuleExportName();
+ }
+ if (!node[rightOfAsKey]) {
+ node[rightOfAsKey] = this.cloneIdentifier(node[leftOfAsKey]);
+ }
+ if (isImport) {
+ this.checkIdentifier(node[rightOfAsKey], hasTypeSpecifier ? 4098 : 4096);
+ }
+ }
+ fillOptionalPropertiesForTSESLint(node) {
+ var _node$directive, _node$decorators, _node$optional, _node$typeAnnotation, _node$accessibility, _node$decorators2, _node$override, _node$readonly, _node$static, _node$declare, _node$returnType, _node$typeParameters, _node$optional2, _node$optional3, _node$accessibility2, _node$readonly2, _node$static2, _node$declare2, _node$definite, _node$readonly3, _node$typeAnnotation2, _node$accessibility3, _node$decorators3, _node$override2, _node$optional4, _node$id, _node$abstract, _node$declare3, _node$decorators4, _node$implements, _node$superTypeArgume, _node$typeParameters2, _node$declare4, _node$definite2, _node$const, _node$declare5, _node$computed, _node$qualifier, _node$options, _node$declare6, _node$extends, _node$optional5, _node$readonly4, _node$declare7, _node$global, _node$const2, _node$in, _node$out;
+ switch (node.type) {
+ case "ExpressionStatement":
+ (_node$directive = node.directive) != null ? _node$directive : node.directive = undefined;
+ return;
+ case "RestElement":
+ node.value = undefined;
+ case "Identifier":
+ case "ArrayPattern":
+ case "AssignmentPattern":
+ case "ObjectPattern":
+ (_node$decorators = node.decorators) != null ? _node$decorators : node.decorators = [];
+ (_node$optional = node.optional) != null ? _node$optional : node.optional = false;
+ (_node$typeAnnotation = node.typeAnnotation) != null ? _node$typeAnnotation : node.typeAnnotation = undefined;
+ return;
+ case "TSParameterProperty":
+ (_node$accessibility = node.accessibility) != null ? _node$accessibility : node.accessibility = undefined;
+ (_node$decorators2 = node.decorators) != null ? _node$decorators2 : node.decorators = [];
+ (_node$override = node.override) != null ? _node$override : node.override = false;
+ (_node$readonly = node.readonly) != null ? _node$readonly : node.readonly = false;
+ (_node$static = node.static) != null ? _node$static : node.static = false;
+ return;
+ case "TSEmptyBodyFunctionExpression":
+ node.body = null;
+ case "TSDeclareFunction":
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ (_node$declare = node.declare) != null ? _node$declare : node.declare = false;
+ (_node$returnType = node.returnType) != null ? _node$returnType : node.returnType = undefined;
+ (_node$typeParameters = node.typeParameters) != null ? _node$typeParameters : node.typeParameters = undefined;
+ return;
+ case "Property":
+ (_node$optional2 = node.optional) != null ? _node$optional2 : node.optional = false;
+ return;
+ case "TSMethodSignature":
+ case "TSPropertySignature":
+ (_node$optional3 = node.optional) != null ? _node$optional3 : node.optional = false;
+ case "TSIndexSignature":
+ (_node$accessibility2 = node.accessibility) != null ? _node$accessibility2 : node.accessibility = undefined;
+ (_node$readonly2 = node.readonly) != null ? _node$readonly2 : node.readonly = false;
+ (_node$static2 = node.static) != null ? _node$static2 : node.static = false;
+ return;
+ case "TSAbstractPropertyDefinition":
+ case "PropertyDefinition":
+ case "TSAbstractAccessorProperty":
+ case "AccessorProperty":
+ (_node$declare2 = node.declare) != null ? _node$declare2 : node.declare = false;
+ (_node$definite = node.definite) != null ? _node$definite : node.definite = false;
+ (_node$readonly3 = node.readonly) != null ? _node$readonly3 : node.readonly = false;
+ (_node$typeAnnotation2 = node.typeAnnotation) != null ? _node$typeAnnotation2 : node.typeAnnotation = undefined;
+ case "TSAbstractMethodDefinition":
+ case "MethodDefinition":
+ (_node$accessibility3 = node.accessibility) != null ? _node$accessibility3 : node.accessibility = undefined;
+ (_node$decorators3 = node.decorators) != null ? _node$decorators3 : node.decorators = [];
+ (_node$override2 = node.override) != null ? _node$override2 : node.override = false;
+ (_node$optional4 = node.optional) != null ? _node$optional4 : node.optional = false;
+ return;
+ case "ClassExpression":
+ (_node$id = node.id) != null ? _node$id : node.id = null;
+ case "ClassDeclaration":
+ (_node$abstract = node.abstract) != null ? _node$abstract : node.abstract = false;
+ (_node$declare3 = node.declare) != null ? _node$declare3 : node.declare = false;
+ (_node$decorators4 = node.decorators) != null ? _node$decorators4 : node.decorators = [];
+ (_node$implements = node.implements) != null ? _node$implements : node.implements = [];
+ (_node$superTypeArgume = node.superTypeArguments) != null ? _node$superTypeArgume : node.superTypeArguments = undefined;
+ (_node$typeParameters2 = node.typeParameters) != null ? _node$typeParameters2 : node.typeParameters = undefined;
+ return;
+ case "TSTypeAliasDeclaration":
+ case "VariableDeclaration":
+ (_node$declare4 = node.declare) != null ? _node$declare4 : node.declare = false;
+ return;
+ case "VariableDeclarator":
+ (_node$definite2 = node.definite) != null ? _node$definite2 : node.definite = false;
+ return;
+ case "TSEnumDeclaration":
+ (_node$const = node.const) != null ? _node$const : node.const = false;
+ (_node$declare5 = node.declare) != null ? _node$declare5 : node.declare = false;
+ return;
+ case "TSEnumMember":
+ (_node$computed = node.computed) != null ? _node$computed : node.computed = false;
+ return;
+ case "TSImportType":
+ (_node$qualifier = node.qualifier) != null ? _node$qualifier : node.qualifier = null;
+ (_node$options = node.options) != null ? _node$options : node.options = null;
+ return;
+ case "TSInterfaceDeclaration":
+ (_node$declare6 = node.declare) != null ? _node$declare6 : node.declare = false;
+ (_node$extends = node.extends) != null ? _node$extends : node.extends = [];
+ return;
+ case "TSMappedType":
+ (_node$optional5 = node.optional) != null ? _node$optional5 : node.optional = false;
+ (_node$readonly4 = node.readonly) != null ? _node$readonly4 : node.readonly = undefined;
+ return;
+ case "TSModuleDeclaration":
+ (_node$declare7 = node.declare) != null ? _node$declare7 : node.declare = false;
+ (_node$global = node.global) != null ? _node$global : node.global = node.kind === "global";
+ return;
+ case "TSTypeParameter":
+ (_node$const2 = node.const) != null ? _node$const2 : node.const = false;
+ (_node$in = node.in) != null ? _node$in : node.in = false;
+ (_node$out = node.out) != null ? _node$out : node.out = false;
+ return;
+ }
+ }
+ chStartsBindingIdentifierAndNotRelationalOperator(ch, pos) {
+ if (isIdentifierStart(ch)) {
+ keywordAndTSRelationalOperator.lastIndex = pos;
+ if (keywordAndTSRelationalOperator.test(this.input)) {
+ const endCh = this.codePointAtPos(keywordAndTSRelationalOperator.lastIndex);
+ if (!isIdentifierChar(endCh) && endCh !== 92) {
+ return false;
+ }
+ }
+ return true;
+ } else if (ch === 92) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ nextTokenIsIdentifierAndNotTSRelationalOperatorOnSameLine() {
+ const next = this.nextTokenInLineStart();
+ const nextCh = this.codePointAtPos(next);
+ return this.chStartsBindingIdentifierAndNotRelationalOperator(nextCh, next);
+ }
+ nextTokenIsIdentifierOrStringLiteralOnSameLine() {
+ const next = this.nextTokenInLineStart();
+ const nextCh = this.codePointAtPos(next);
+ return this.chStartsBindingIdentifier(nextCh, next) || nextCh === 34 || nextCh === 39;
+ }
+};
+function isPossiblyLiteralEnum(expression) {
+ if (expression.type !== "MemberExpression") return false;
+ const {
+ computed,
+ property
+ } = expression;
+ if (computed && property.type !== "StringLiteral" && (property.type !== "TemplateLiteral" || property.expressions.length > 0)) {
+ return false;
+ }
+ return isUncomputedMemberExpressionChain(expression.object);
+}
+function isValidAmbientConstInitializer(expression, estree) {
+ var _expression$extra;
+ const {
+ type
+ } = expression;
+ if ((_expression$extra = expression.extra) != null && _expression$extra.parenthesized) {
+ return false;
+ }
+ if (estree) {
+ if (type === "Literal") {
+ const {
+ value
+ } = expression;
+ if (typeof value === "string" || typeof value === "boolean") {
+ return true;
+ }
+ }
+ } else {
+ if (type === "StringLiteral" || type === "BooleanLiteral") {
+ return true;
+ }
+ }
+ if (isNumber(expression, estree) || isNegativeNumber(expression, estree)) {
+ return true;
+ }
+ if (type === "TemplateLiteral" && expression.expressions.length === 0) {
+ return true;
+ }
+ if (isPossiblyLiteralEnum(expression)) {
+ return true;
+ }
+ return false;
+}
+function isNumber(expression, estree) {
+ if (estree) {
+ return expression.type === "Literal" && (typeof expression.value === "number" || "bigint" in expression);
+ }
+ return expression.type === "NumericLiteral" || expression.type === "BigIntLiteral";
+}
+function isNegativeNumber(expression, estree) {
+ if (expression.type === "UnaryExpression") {
+ const {
+ operator,
+ argument
+ } = expression;
+ if (operator === "-" && isNumber(argument, estree)) {
+ return true;
+ }
+ }
+ return false;
+}
+function isUncomputedMemberExpressionChain(expression) {
+ if (expression.type === "Identifier") return true;
+ if (expression.type !== "MemberExpression" || expression.computed) {
+ return false;
+ }
+ return isUncomputedMemberExpressionChain(expression.object);
+}
+const PlaceholderErrors = ParseErrorEnum`placeholders`({
+ ClassNameIsRequired: "A class name is required.",
+ UnexpectedSpace: "Unexpected space in placeholder."
+});
+var placeholders = superClass => class PlaceholdersParserMixin extends superClass {
+ parsePlaceholder(expectedNode) {
+ if (this.match(133)) {
+ const node = this.startNode();
+ this.next();
+ this.assertNoSpace();
+ node.name = super.parseIdentifier(true);
+ this.assertNoSpace();
+ this.expect(133);
+ return this.finishPlaceholder(node, expectedNode);
+ }
+ }
+ finishPlaceholder(node, expectedNode) {
+ let placeholder = node;
+ if (!placeholder.expectedNode || !placeholder.type) {
+ placeholder = this.finishNode(placeholder, "Placeholder");
+ }
+ placeholder.expectedNode = expectedNode;
+ return placeholder;
+ }
+ getTokenFromCode(code) {
+ if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) {
+ this.finishOp(133, 2);
+ } else {
+ super.getTokenFromCode(code);
+ }
+ }
+ parseExprAtom(refExpressionErrors) {
+ return this.parsePlaceholder("Expression") || super.parseExprAtom(refExpressionErrors);
+ }
+ parseIdentifier(liberal) {
+ return this.parsePlaceholder("Identifier") || super.parseIdentifier(liberal);
+ }
+ checkReservedWord(word, startLoc, checkKeywords, isBinding) {
+ if (word !== undefined) {
+ super.checkReservedWord(word, startLoc, checkKeywords, isBinding);
+ }
+ }
+ cloneIdentifier(node) {
+ const cloned = super.cloneIdentifier(node);
+ if (cloned.type === "Placeholder") {
+ cloned.expectedNode = node.expectedNode;
+ }
+ return cloned;
+ }
+ cloneStringLiteral(node) {
+ if (node.type === "Placeholder") {
+ return this.cloneIdentifier(node);
+ }
+ return super.cloneStringLiteral(node);
+ }
+ parseBindingAtom() {
+ return this.parsePlaceholder("Pattern") || super.parseBindingAtom();
+ }
+ isValidLVal(type, disallowCallExpression, isParenthesized, binding) {
+ return type === "Placeholder" || super.isValidLVal(type, disallowCallExpression, isParenthesized, binding);
+ }
+ toAssignable(node, isLHS) {
+ if (node && node.type === "Placeholder" && node.expectedNode === "Expression") {
+ node.expectedNode = "Pattern";
+ } else {
+ super.toAssignable(node, isLHS);
+ }
+ }
+ chStartsBindingIdentifier(ch, pos) {
+ if (super.chStartsBindingIdentifier(ch, pos)) {
+ return true;
+ }
+ const next = this.nextTokenStart();
+ if (this.input.charCodeAt(next) === 37 && this.input.charCodeAt(next + 1) === 37) {
+ return true;
+ }
+ return false;
+ }
+ verifyBreakContinue(node, isBreak) {
+ var _node$label;
+ if (((_node$label = node.label) == null ? void 0 : _node$label.type) === "Placeholder") return;
+ super.verifyBreakContinue(node, isBreak);
+ }
+ parseExpressionStatement(node, expr) {
+ var _expr$extra;
+ if (expr.type !== "Placeholder" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) {
+ return super.parseExpressionStatement(node, expr);
+ }
+ if (this.match(14)) {
+ const stmt = node;
+ stmt.label = this.finishPlaceholder(expr, "Identifier");
+ this.next();
+ stmt.body = super.parseStatementOrSloppyAnnexBFunctionDeclaration();
+ return this.finishNode(stmt, "LabeledStatement");
+ }
+ this.semicolon();
+ const stmtPlaceholder = node;
+ stmtPlaceholder.name = expr.name;
+ return this.finishPlaceholder(stmtPlaceholder, "Statement");
+ }
+ parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse) {
+ return this.parsePlaceholder("BlockStatement") || super.parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse);
+ }
+ parseFunctionId(requireId) {
+ return this.parsePlaceholder("Identifier") || super.parseFunctionId(requireId);
+ }
+ parseClass(node, isStatement, optionalId) {
+ const type = isStatement ? "ClassDeclaration" : "ClassExpression";
+ this.next();
+ const oldStrict = this.state.strict;
+ const placeholder = this.parsePlaceholder("Identifier");
+ if (placeholder) {
+ if (this.match(81) || this.match(133) || this.match(5)) {
+ node.id = placeholder;
+ } else if (optionalId || !isStatement) {
+ node.id = null;
+ node.body = this.finishPlaceholder(placeholder, "ClassBody");
+ return this.finishNode(node, type);
+ } else {
+ throw this.raise(PlaceholderErrors.ClassNameIsRequired, this.state.startLoc);
+ }
+ } else {
+ this.parseClassId(node, isStatement, optionalId);
+ }
+ super.parseClassSuper(node);
+ node.body = this.parsePlaceholder("ClassBody") || super.parseClassBody(!!node.superClass, oldStrict);
+ return this.finishNode(node, type);
+ }
+ parseExport(node, decorators) {
+ const placeholder = this.parsePlaceholder("Identifier");
+ if (!placeholder) return super.parseExport(node, decorators);
+ const node2 = node;
+ if (!this.isContextual(98) && !this.match(12)) {
+ node2.specifiers = [];
+ node2.source = null;
+ node2.declaration = this.finishPlaceholder(placeholder, "Declaration");
+ return this.finishNode(node2, "ExportNamedDeclaration");
+ }
+ this.expectPlugin("exportDefaultFrom");
+ const specifier = this.startNode();
+ specifier.exported = placeholder;
+ node2.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")];
+ return super.parseExport(node2, decorators);
+ }
+ isExportDefaultSpecifier() {
+ if (this.match(65)) {
+ const next = this.nextTokenStart();
+ if (this.isUnparsedContextual(next, "from")) {
+ if (this.input.startsWith(tokenLabelName(133), this.nextTokenStartSince(next + 4))) {
+ return true;
+ }
+ }
+ }
+ return super.isExportDefaultSpecifier();
+ }
+ maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) {
+ var _specifiers;
+ if ((_specifiers = node.specifiers) != null && _specifiers.length) {
+ return true;
+ }
+ return super.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier);
+ }
+ checkExport(node) {
+ const {
+ specifiers
+ } = node;
+ if (specifiers != null && specifiers.length) {
+ node.specifiers = specifiers.filter(node => node.exported.type === "Placeholder");
+ }
+ super.checkExport(node);
+ node.specifiers = specifiers;
+ }
+ parseImport(node) {
+ const placeholder = this.parsePlaceholder("Identifier");
+ if (!placeholder) return super.parseImport(node);
+ node.specifiers = [];
+ if (!this.isContextual(98) && !this.match(12)) {
+ node.source = this.finishPlaceholder(placeholder, "StringLiteral");
+ this.semicolon();
+ return this.finishNode(node, "ImportDeclaration");
+ }
+ const specifier = this.startNodeAtNode(placeholder);
+ specifier.local = placeholder;
+ node.specifiers.push(this.finishNode(specifier, "ImportDefaultSpecifier"));
+ if (this.eat(12)) {
+ const hasStarImport = this.maybeParseStarImportSpecifier(node);
+ if (!hasStarImport) this.parseNamedImportSpecifiers(node);
+ }
+ this.expectContextual(98);
+ node.source = this.parseImportSource();
+ this.semicolon();
+ return this.finishNode(node, "ImportDeclaration");
+ }
+ parseImportSource() {
+ return this.parsePlaceholder("StringLiteral") || super.parseImportSource();
+ }
+ assertNoSpace() {
+ if (this.state.start > this.offsetToSourcePos(this.state.lastTokEndLoc.index)) {
+ this.raise(PlaceholderErrors.UnexpectedSpace, this.state.lastTokEndLoc);
+ }
+ }
+};
+var v8intrinsic = superClass => class V8IntrinsicMixin extends superClass {
+ parseV8Intrinsic() {
+ if (this.match(54)) {
+ const v8IntrinsicStartLoc = this.state.startLoc;
+ const node = this.startNode();
+ this.next();
+ if (tokenIsIdentifier(this.state.type)) {
+ const name = this.parseIdentifierName();
+ const identifier = this.createIdentifier(node, name);
+ this.castNodeTo(identifier, "V8IntrinsicIdentifier");
+ if (this.match(10)) {
+ return identifier;
+ }
+ }
+ this.unexpected(v8IntrinsicStartLoc);
+ }
+ }
+ parseExprAtom(refExpressionErrors) {
+ return this.parseV8Intrinsic() || super.parseExprAtom(refExpressionErrors);
+ }
+};
+const PIPELINE_PROPOSALS = ["minimal", "fsharp", "hack", "smart"];
+const TOPIC_TOKENS = ["^^", "@@", "^", "%", "#"];
+function validatePlugins(pluginsMap) {
+ if (pluginsMap.has("decorators")) {
+ if (pluginsMap.has("decorators-legacy")) {
+ throw new Error("Cannot use the decorators and decorators-legacy plugin together");
+ }
+ const decoratorsBeforeExport = pluginsMap.get("decorators").decoratorsBeforeExport;
+ if (decoratorsBeforeExport != null && typeof decoratorsBeforeExport !== "boolean") {
+ throw new Error("'decoratorsBeforeExport' must be a boolean, if specified.");
+ }
+ const allowCallParenthesized = pluginsMap.get("decorators").allowCallParenthesized;
+ if (allowCallParenthesized != null && typeof allowCallParenthesized !== "boolean") {
+ throw new Error("'allowCallParenthesized' must be a boolean.");
+ }
+ }
+ if (pluginsMap.has("flow") && pluginsMap.has("typescript")) {
+ throw new Error("Cannot combine flow and typescript plugins.");
+ }
+ if (pluginsMap.has("placeholders") && pluginsMap.has("v8intrinsic")) {
+ throw new Error("Cannot combine placeholders and v8intrinsic plugins.");
+ }
+ if (pluginsMap.has("pipelineOperator")) {
+ var _pluginsMap$get2;
+ const proposal = pluginsMap.get("pipelineOperator").proposal;
+ if (!PIPELINE_PROPOSALS.includes(proposal)) {
+ const proposalList = PIPELINE_PROPOSALS.map(p => `"${p}"`).join(", ");
+ throw new Error(`"pipelineOperator" requires "proposal" option whose value must be one of: ${proposalList}.`);
+ }
+ if (proposal === "hack") {
+ var _pluginsMap$get;
+ if (pluginsMap.has("placeholders")) {
+ throw new Error("Cannot combine placeholders plugin and Hack-style pipes.");
+ }
+ if (pluginsMap.has("v8intrinsic")) {
+ throw new Error("Cannot combine v8intrinsic plugin and Hack-style pipes.");
+ }
+ const topicToken = pluginsMap.get("pipelineOperator").topicToken;
+ if (!TOPIC_TOKENS.includes(topicToken)) {
+ const tokenList = TOPIC_TOKENS.map(t => `"${t}"`).join(", ");
+ throw new Error(`"pipelineOperator" in "proposal": "hack" mode also requires a "topicToken" option whose value must be one of: ${tokenList}.`);
+ }
+ if (topicToken === "#" && ((_pluginsMap$get = pluginsMap.get("recordAndTuple")) == null ? void 0 : _pluginsMap$get.syntaxType) === "hash") {
+ throw new Error(`Plugin conflict between \`["pipelineOperator", { proposal: "hack", topicToken: "#" }]\` and \`${JSON.stringify(["recordAndTuple", pluginsMap.get("recordAndTuple")])}\`.`);
+ }
+ } else if (proposal === "smart" && ((_pluginsMap$get2 = pluginsMap.get("recordAndTuple")) == null ? void 0 : _pluginsMap$get2.syntaxType) === "hash") {
+ throw new Error(`Plugin conflict between \`["pipelineOperator", { proposal: "smart" }]\` and \`${JSON.stringify(["recordAndTuple", pluginsMap.get("recordAndTuple")])}\`.`);
+ }
+ }
+ if (pluginsMap.has("moduleAttributes")) {
+ if (pluginsMap.has("deprecatedImportAssert") || pluginsMap.has("importAssertions")) {
+ throw new Error("Cannot combine importAssertions, deprecatedImportAssert and moduleAttributes plugins.");
+ }
+ const moduleAttributesVersionPluginOption = pluginsMap.get("moduleAttributes").version;
+ if (moduleAttributesVersionPluginOption !== "may-2020") {
+ throw new Error("The 'moduleAttributes' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is 'may-2020'.");
+ }
+ }
+ if (pluginsMap.has("importAssertions")) {
+ if (pluginsMap.has("deprecatedImportAssert")) {
+ throw new Error("Cannot combine importAssertions and deprecatedImportAssert plugins.");
+ }
+ }
+ if (pluginsMap.has("deprecatedImportAssert")) ;else if (pluginsMap.has("importAttributes") && pluginsMap.get("importAttributes").deprecatedAssertSyntax) {
+ pluginsMap.set("deprecatedImportAssert", {});
+ }
+ if (pluginsMap.has("recordAndTuple")) {
+ const syntaxType = pluginsMap.get("recordAndTuple").syntaxType;
+ if (syntaxType != null) {
+ const RECORD_AND_TUPLE_SYNTAX_TYPES = ["hash", "bar"];
+ if (!RECORD_AND_TUPLE_SYNTAX_TYPES.includes(syntaxType)) {
+ throw new Error("The 'syntaxType' option of the 'recordAndTuple' plugin must be one of: " + RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(", "));
+ }
+ }
+ }
+ if (pluginsMap.has("asyncDoExpressions") && !pluginsMap.has("doExpressions")) {
+ const error = new Error("'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins.");
+ error.missingPlugins = "doExpressions";
+ throw error;
+ }
+ if (pluginsMap.has("optionalChainingAssign") && pluginsMap.get("optionalChainingAssign").version !== "2023-07") {
+ throw new Error("The 'optionalChainingAssign' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is '2023-07'.");
+ }
+ if (pluginsMap.has("discardBinding") && pluginsMap.get("discardBinding").syntaxType !== "void") {
+ throw new Error("The 'discardBinding' plugin requires a 'syntaxType' option. Currently the only supported value is 'void'.");
+ }
+}
+const mixinPlugins = {
+ estree,
+ jsx,
+ flow,
+ typescript,
+ v8intrinsic,
+ placeholders
+};
+const mixinPluginNames = Object.keys(mixinPlugins);
+class ExpressionParser extends LValParser {
+ checkProto(prop, isRecord, sawProto, refExpressionErrors) {
+ if (prop.type === "SpreadElement" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) {
+ return sawProto;
+ }
+ const key = prop.key;
+ const name = key.type === "Identifier" ? key.name : key.value;
+ if (name === "__proto__") {
+ if (isRecord) {
+ this.raise(Errors.RecordNoProto, key);
+ return true;
+ }
+ if (sawProto) {
+ if (refExpressionErrors) {
+ if (refExpressionErrors.doubleProtoLoc === null) {
+ refExpressionErrors.doubleProtoLoc = key.loc.start;
+ }
+ } else {
+ this.raise(Errors.DuplicateProto, key);
+ }
+ }
+ return true;
+ }
+ return sawProto;
+ }
+ shouldExitDescending(expr, potentialArrowAt) {
+ return expr.type === "ArrowFunctionExpression" && this.offsetToSourcePos(expr.start) === potentialArrowAt;
+ }
+ getExpression() {
+ this.enterInitialScopes();
+ this.nextToken();
+ if (this.match(140)) {
+ throw this.raise(Errors.ParseExpressionEmptyInput, this.state.startLoc);
+ }
+ const expr = this.parseExpression();
+ if (!this.match(140)) {
+ throw this.raise(Errors.ParseExpressionExpectsEOF, this.state.startLoc, {
+ unexpected: this.input.codePointAt(this.state.start)
+ });
+ }
+ this.finalizeRemainingComments();
+ expr.comments = this.comments;
+ expr.errors = this.state.errors;
+ if (this.optionFlags & 256) {
+ expr.tokens = this.tokens;
+ }
+ return expr;
+ }
+ parseExpression(disallowIn, refExpressionErrors) {
+ if (disallowIn) {
+ return this.disallowInAnd(() => this.parseExpressionBase(refExpressionErrors));
+ }
+ return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors));
+ }
+ parseExpressionBase(refExpressionErrors) {
+ const startLoc = this.state.startLoc;
+ const expr = this.parseMaybeAssign(refExpressionErrors);
+ if (this.match(12)) {
+ const node = this.startNodeAt(startLoc);
+ node.expressions = [expr];
+ while (this.eat(12)) {
+ node.expressions.push(this.parseMaybeAssign(refExpressionErrors));
+ }
+ this.toReferencedList(node.expressions);
+ return this.finishNode(node, "SequenceExpression");
+ }
+ return expr;
+ }
+ parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) {
+ return this.disallowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse));
+ }
+ parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) {
+ return this.allowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse));
+ }
+ setOptionalParametersError(refExpressionErrors) {
+ refExpressionErrors.optionalParametersLoc = this.state.startLoc;
+ }
+ parseMaybeAssign(refExpressionErrors, afterLeftParse) {
+ const startLoc = this.state.startLoc;
+ const isYield = this.isContextual(108);
+ if (isYield) {
+ if (this.prodParam.hasYield) {
+ this.next();
+ let left = this.parseYield(startLoc);
+ if (afterLeftParse) {
+ left = afterLeftParse.call(this, left, startLoc);
+ }
+ return left;
+ }
+ }
+ let ownExpressionErrors;
+ if (refExpressionErrors) {
+ ownExpressionErrors = false;
+ } else {
+ refExpressionErrors = new ExpressionErrors();
+ ownExpressionErrors = true;
+ }
+ const {
+ type
+ } = this.state;
+ if (type === 10 || tokenIsIdentifier(type)) {
+ this.state.potentialArrowAt = this.state.start;
+ }
+ let left = this.parseMaybeConditional(refExpressionErrors);
+ if (afterLeftParse) {
+ left = afterLeftParse.call(this, left, startLoc);
+ }
+ if (tokenIsAssignment(this.state.type)) {
+ const node = this.startNodeAt(startLoc);
+ const operator = this.state.value;
+ node.operator = operator;
+ if (this.match(29)) {
+ this.toAssignable(left, true);
+ node.left = left;
+ const startIndex = startLoc.index;
+ if (refExpressionErrors.doubleProtoLoc != null && refExpressionErrors.doubleProtoLoc.index >= startIndex) {
+ refExpressionErrors.doubleProtoLoc = null;
+ }
+ if (refExpressionErrors.shorthandAssignLoc != null && refExpressionErrors.shorthandAssignLoc.index >= startIndex) {
+ refExpressionErrors.shorthandAssignLoc = null;
+ }
+ if (refExpressionErrors.privateKeyLoc != null && refExpressionErrors.privateKeyLoc.index >= startIndex) {
+ this.checkDestructuringPrivate(refExpressionErrors);
+ refExpressionErrors.privateKeyLoc = null;
+ }
+ if (refExpressionErrors.voidPatternLoc != null && refExpressionErrors.voidPatternLoc.index >= startIndex) {
+ refExpressionErrors.voidPatternLoc = null;
+ }
+ } else {
+ node.left = left;
+ }
+ this.next();
+ node.right = this.parseMaybeAssign();
+ this.checkLVal(left, this.finishNode(node, "AssignmentExpression"), undefined, undefined, undefined, undefined, operator === "||=" || operator === "&&=" || operator === "??=");
+ return node;
+ } else if (ownExpressionErrors) {
+ this.checkExpressionErrors(refExpressionErrors, true);
+ }
+ if (isYield) {
+ const {
+ type
+ } = this.state;
+ const startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54);
+ if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) {
+ this.raiseOverwrite(Errors.YieldNotInGeneratorFunction, startLoc);
+ return this.parseYield(startLoc);
+ }
+ }
+ return left;
+ }
+ parseMaybeConditional(refExpressionErrors) {
+ const startLoc = this.state.startLoc;
+ const potentialArrowAt = this.state.potentialArrowAt;
+ const expr = this.parseExprOps(refExpressionErrors);
+ if (this.shouldExitDescending(expr, potentialArrowAt)) {
+ return expr;
+ }
+ return this.parseConditional(expr, startLoc, refExpressionErrors);
+ }
+ parseConditional(expr, startLoc, refExpressionErrors) {
+ if (this.eat(17)) {
+ const node = this.startNodeAt(startLoc);
+ node.test = expr;
+ node.consequent = this.parseMaybeAssignAllowIn();
+ this.expect(14);
+ node.alternate = this.parseMaybeAssign();
+ return this.finishNode(node, "ConditionalExpression");
+ }
+ return expr;
+ }
+ parseMaybeUnaryOrPrivate(refExpressionErrors) {
+ return this.match(139) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors);
+ }
+ parseExprOps(refExpressionErrors) {
+ const startLoc = this.state.startLoc;
+ const potentialArrowAt = this.state.potentialArrowAt;
+ const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors);
+ if (this.shouldExitDescending(expr, potentialArrowAt)) {
+ return expr;
+ }
+ return this.parseExprOp(expr, startLoc, -1);
+ }
+ parseExprOp(left, leftStartLoc, minPrec) {
+ if (this.isPrivateName(left)) {
+ const value = this.getPrivateNameSV(left);
+ if (minPrec >= tokenOperatorPrecedence(58) || !this.prodParam.hasIn || !this.match(58)) {
+ this.raise(Errors.PrivateInExpectedIn, left, {
+ identifierName: value
+ });
+ }
+ this.classScope.usePrivateName(value, left.loc.start);
+ }
+ const op = this.state.type;
+ if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(58))) {
+ let prec = tokenOperatorPrecedence(op);
+ if (prec > minPrec) {
+ if (op === 39) {
+ this.expectPlugin("pipelineOperator");
+ if (this.state.inFSharpPipelineDirectBody) {
+ return left;
+ }
+ this.checkPipelineAtInfixOperator(left, leftStartLoc);
+ }
+ const node = this.startNodeAt(leftStartLoc);
+ node.left = left;
+ node.operator = this.state.value;
+ const logical = op === 41 || op === 42;
+ const coalesce = op === 40;
+ if (coalesce) {
+ prec = tokenOperatorPrecedence(42);
+ }
+ this.next();
+ if (op === 39 && this.hasPlugin(["pipelineOperator", {
+ proposal: "minimal"
+ }])) {
+ if (this.state.type === 96 && this.prodParam.hasAwait) {
+ throw this.raise(Errors.UnexpectedAwaitAfterPipelineBody, this.state.startLoc);
+ }
+ }
+ node.right = this.parseExprOpRightExpr(op, prec);
+ const finishedNode = this.finishNode(node, logical || coalesce ? "LogicalExpression" : "BinaryExpression");
+ const nextOp = this.state.type;
+ if (coalesce && (nextOp === 41 || nextOp === 42) || logical && nextOp === 40) {
+ throw this.raise(Errors.MixingCoalesceWithLogical, this.state.startLoc);
+ }
+ return this.parseExprOp(finishedNode, leftStartLoc, minPrec);
+ }
+ }
+ return left;
+ }
+ parseExprOpRightExpr(op, prec) {
+ const startLoc = this.state.startLoc;
+ switch (op) {
+ case 39:
+ switch (this.getPluginOption("pipelineOperator", "proposal")) {
+ case "hack":
+ return this.withTopicBindingContext(() => {
+ return this.parseHackPipeBody();
+ });
+ case "fsharp":
+ return this.withSoloAwaitPermittingContext(() => {
+ return this.parseFSharpPipelineBody(prec);
+ });
+ }
+ if (this.getPluginOption("pipelineOperator", "proposal") === "smart") {
+ return this.withTopicBindingContext(() => {
+ if (this.prodParam.hasYield && this.isContextual(108)) {
+ throw this.raise(Errors.PipeBodyIsTighter, this.state.startLoc);
+ }
+ return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(op, prec), startLoc);
+ });
+ }
+ default:
+ return this.parseExprOpBaseRightExpr(op, prec);
+ }
+ }
+ parseExprOpBaseRightExpr(op, prec) {
+ const startLoc = this.state.startLoc;
+ return this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, tokenIsRightAssociative(op) ? prec - 1 : prec);
+ }
+ parseHackPipeBody() {
+ var _body$extra;
+ const {
+ startLoc
+ } = this.state;
+ const body = this.parseMaybeAssign();
+ const requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(body.type);
+ if (requiredParentheses && !((_body$extra = body.extra) != null && _body$extra.parenthesized)) {
+ this.raise(Errors.PipeUnparenthesizedBody, startLoc, {
+ type: body.type
+ });
+ }
+ if (!this.topicReferenceWasUsedInCurrentContext()) {
+ this.raise(Errors.PipeTopicUnused, startLoc);
+ }
+ return body;
+ }
+ checkExponentialAfterUnary(node) {
+ if (this.match(57)) {
+ this.raise(Errors.UnexpectedTokenUnaryExponentiation, node.argument);
+ }
+ }
+ parseMaybeUnary(refExpressionErrors, sawUnary) {
+ const startLoc = this.state.startLoc;
+ const isAwait = this.isContextual(96);
+ if (isAwait && this.recordAwaitIfAllowed()) {
+ this.next();
+ const expr = this.parseAwait(startLoc);
+ if (!sawUnary) this.checkExponentialAfterUnary(expr);
+ return expr;
+ }
+ const update = this.match(34);
+ const node = this.startNode();
+ if (tokenIsPrefix(this.state.type)) {
+ node.operator = this.state.value;
+ node.prefix = true;
+ if (this.match(72)) {
+ this.expectPlugin("throwExpressions");
+ }
+ const isDelete = this.match(89);
+ this.next();
+ node.argument = this.parseMaybeUnary(null, true);
+ this.checkExpressionErrors(refExpressionErrors, true);
+ if (this.state.strict && isDelete) {
+ const arg = node.argument;
+ if (arg.type === "Identifier") {
+ this.raise(Errors.StrictDelete, node);
+ } else if (this.hasPropertyAsPrivateName(arg)) {
+ this.raise(Errors.DeletePrivateField, node);
+ }
+ }
+ if (!update) {
+ if (!sawUnary) {
+ this.checkExponentialAfterUnary(node);
+ }
+ return this.finishNode(node, "UnaryExpression");
+ }
+ }
+ const expr = this.parseUpdate(node, update, refExpressionErrors);
+ if (isAwait) {
+ const {
+ type
+ } = this.state;
+ const startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54);
+ if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) {
+ this.raiseOverwrite(Errors.AwaitNotInAsyncContext, startLoc);
+ return this.parseAwait(startLoc);
+ }
+ }
+ return expr;
+ }
+ parseUpdate(node, update, refExpressionErrors) {
+ if (update) {
+ const updateExpressionNode = node;
+ this.checkLVal(updateExpressionNode.argument, this.finishNode(updateExpressionNode, "UpdateExpression"));
+ return node;
+ }
+ const startLoc = this.state.startLoc;
+ let expr = this.parseExprSubscripts(refExpressionErrors);
+ if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;
+ while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) {
+ const node = this.startNodeAt(startLoc);
+ node.operator = this.state.value;
+ node.prefix = false;
+ node.argument = expr;
+ this.next();
+ this.checkLVal(expr, expr = this.finishNode(node, "UpdateExpression"));
+ }
+ return expr;
+ }
+ parseExprSubscripts(refExpressionErrors) {
+ const startLoc = this.state.startLoc;
+ const potentialArrowAt = this.state.potentialArrowAt;
+ const expr = this.parseExprAtom(refExpressionErrors);
+ if (this.shouldExitDescending(expr, potentialArrowAt)) {
+ return expr;
+ }
+ return this.parseSubscripts(expr, startLoc);
+ }
+ parseSubscripts(base, startLoc, noCalls) {
+ const state = {
+ optionalChainMember: false,
+ maybeAsyncArrow: this.atPossibleAsyncArrow(base),
+ stop: false
+ };
+ do {
+ base = this.parseSubscript(base, startLoc, noCalls, state);
+ state.maybeAsyncArrow = false;
+ } while (!state.stop);
+ return base;
+ }
+ parseSubscript(base, startLoc, noCalls, state) {
+ const {
+ type
+ } = this.state;
+ if (!noCalls && type === 15) {
+ return this.parseBind(base, startLoc, noCalls, state);
+ } else if (tokenIsTemplate(type)) {
+ return this.parseTaggedTemplateExpression(base, startLoc, state);
+ }
+ let optional = false;
+ if (type === 18) {
+ if (noCalls) {
+ this.raise(Errors.OptionalChainingNoNew, this.state.startLoc);
+ if (this.lookaheadCharCode() === 40) {
+ return this.stopParseSubscript(base, state);
+ }
+ }
+ state.optionalChainMember = optional = true;
+ this.next();
+ }
+ if (!noCalls && this.match(10)) {
+ return this.parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional);
+ } else {
+ const computed = this.eat(0);
+ if (computed || optional || this.eat(16)) {
+ return this.parseMember(base, startLoc, state, computed, optional);
+ } else {
+ return this.stopParseSubscript(base, state);
+ }
+ }
+ }
+ stopParseSubscript(base, state) {
+ state.stop = true;
+ return base;
+ }
+ parseMember(base, startLoc, state, computed, optional) {
+ const node = this.startNodeAt(startLoc);
+ node.object = base;
+ node.computed = computed;
+ if (computed) {
+ node.property = this.parseExpression();
+ this.expect(3);
+ } else if (this.match(139)) {
+ if (base.type === "Super") {
+ this.raise(Errors.SuperPrivateField, startLoc);
+ }
+ this.classScope.usePrivateName(this.state.value, this.state.startLoc);
+ node.property = this.parsePrivateName();
+ } else {
+ node.property = this.parseIdentifier(true);
+ }
+ if (state.optionalChainMember) {
+ node.optional = optional;
+ return this.finishNode(node, "OptionalMemberExpression");
+ } else {
+ return this.finishNode(node, "MemberExpression");
+ }
+ }
+ parseBind(base, startLoc, noCalls, state) {
+ const node = this.startNodeAt(startLoc);
+ node.object = base;
+ this.next();
+ node.callee = this.parseNoCallExpr();
+ state.stop = true;
+ return this.parseSubscripts(this.finishNode(node, "BindExpression"), startLoc, noCalls);
+ }
+ parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional) {
+ const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
+ let refExpressionErrors = null;
+ this.state.maybeInArrowParameters = true;
+ this.next();
+ const node = this.startNodeAt(startLoc);
+ node.callee = base;
+ const {
+ maybeAsyncArrow,
+ optionalChainMember
+ } = state;
+ if (maybeAsyncArrow) {
+ this.expressionScope.enter(newAsyncArrowScope());
+ refExpressionErrors = new ExpressionErrors();
+ }
+ if (optionalChainMember) {
+ node.optional = optional;
+ }
+ if (optional) {
+ node.arguments = this.parseCallExpressionArguments();
+ } else {
+ node.arguments = this.parseCallExpressionArguments(base.type !== "Super", node, refExpressionErrors);
+ }
+ let finishedNode = this.finishCallExpression(node, optionalChainMember);
+ if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) {
+ state.stop = true;
+ this.checkDestructuringPrivate(refExpressionErrors);
+ this.expressionScope.validateAsPattern();
+ this.expressionScope.exit();
+ finishedNode = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startLoc), finishedNode);
+ } else {
+ if (maybeAsyncArrow) {
+ this.checkExpressionErrors(refExpressionErrors, true);
+ this.expressionScope.exit();
+ }
+ this.toReferencedArguments(finishedNode);
+ }
+ this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
+ return finishedNode;
+ }
+ toReferencedArguments(node, isParenthesizedExpr) {
+ this.toReferencedListDeep(node.arguments, isParenthesizedExpr);
+ }
+ parseTaggedTemplateExpression(base, startLoc, state) {
+ const node = this.startNodeAt(startLoc);
+ node.tag = base;
+ node.quasi = this.parseTemplate(true);
+ if (state.optionalChainMember) {
+ this.raise(Errors.OptionalChainingNoTemplate, startLoc);
+ }
+ return this.finishNode(node, "TaggedTemplateExpression");
+ }
+ atPossibleAsyncArrow(base) {
+ return base.type === "Identifier" && base.name === "async" && this.state.lastTokEndLoc.index === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && this.offsetToSourcePos(base.start) === this.state.potentialArrowAt;
+ }
+ finishCallExpression(node, optional) {
+ if (node.callee.type === "Import") {
+ if (node.arguments.length === 0 || node.arguments.length > 2) {
+ this.raise(Errors.ImportCallArity, node);
+ } else {
+ for (const arg of node.arguments) {
+ if (arg.type === "SpreadElement") {
+ this.raise(Errors.ImportCallSpreadArgument, arg);
+ }
+ }
+ }
+ }
+ return this.finishNode(node, optional ? "OptionalCallExpression" : "CallExpression");
+ }
+ parseCallExpressionArguments(allowPlaceholder, nodeForExtra, refExpressionErrors) {
+ const elts = [];
+ let first = true;
+ const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
+ this.state.inFSharpPipelineDirectBody = false;
+ while (!this.eat(11)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(12);
+ if (this.match(11)) {
+ if (nodeForExtra) {
+ this.addTrailingCommaExtraToNode(nodeForExtra);
+ }
+ this.next();
+ break;
+ }
+ }
+ elts.push(this.parseExprListItem(11, false, refExpressionErrors, allowPlaceholder));
+ }
+ this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
+ return elts;
+ }
+ shouldParseAsyncArrow() {
+ return this.match(19) && !this.canInsertSemicolon();
+ }
+ parseAsyncArrowFromCallExpression(node, call) {
+ var _call$extra;
+ this.resetPreviousNodeTrailingComments(call);
+ this.expect(19);
+ this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingCommaLoc);
+ if (call.innerComments) {
+ setInnerComments(node, call.innerComments);
+ }
+ if (call.callee.trailingComments) {
+ setInnerComments(node, call.callee.trailingComments);
+ }
+ return node;
+ }
+ parseNoCallExpr() {
+ const startLoc = this.state.startLoc;
+ return this.parseSubscripts(this.parseExprAtom(), startLoc, true);
+ }
+ parseExprAtom(refExpressionErrors) {
+ let node;
+ let decorators = null;
+ const {
+ type
+ } = this.state;
+ switch (type) {
+ case 79:
+ return this.parseSuper();
+ case 83:
+ node = this.startNode();
+ this.next();
+ if (this.match(16)) {
+ return this.parseImportMetaPropertyOrPhaseCall(node);
+ }
+ if (this.match(10)) {
+ if (this.optionFlags & 512) {
+ return this.parseImportCall(node);
+ } else {
+ return this.finishNode(node, "Import");
+ }
+ } else {
+ this.raise(Errors.UnsupportedImport, this.state.lastTokStartLoc);
+ return this.finishNode(node, "Import");
+ }
+ case 78:
+ node = this.startNode();
+ this.next();
+ return this.finishNode(node, "ThisExpression");
+ case 90:
+ {
+ return this.parseDo(this.startNode(), false);
+ }
+ case 56:
+ case 31:
+ {
+ this.readRegexp();
+ return this.parseRegExpLiteral(this.state.value);
+ }
+ case 135:
+ return this.parseNumericLiteral(this.state.value);
+ case 136:
+ return this.parseBigIntLiteral(this.state.value);
+ case 134:
+ return this.parseStringLiteral(this.state.value);
+ case 84:
+ return this.parseNullLiteral();
+ case 85:
+ return this.parseBooleanLiteral(true);
+ case 86:
+ return this.parseBooleanLiteral(false);
+ case 10:
+ {
+ const canBeArrow = this.state.potentialArrowAt === this.state.start;
+ return this.parseParenAndDistinguishExpression(canBeArrow);
+ }
+ case 0:
+ {
+ return this.parseArrayLike(3, false, refExpressionErrors);
+ }
+ case 5:
+ {
+ return this.parseObjectLike(8, false, false, refExpressionErrors);
+ }
+ case 68:
+ return this.parseFunctionOrFunctionSent();
+ case 26:
+ decorators = this.parseDecorators();
+ case 80:
+ return this.parseClass(this.maybeTakeDecorators(decorators, this.startNode()), false);
+ case 77:
+ return this.parseNewOrNewTarget();
+ case 25:
+ case 24:
+ return this.parseTemplate(false);
+ case 15:
+ {
+ node = this.startNode();
+ this.next();
+ node.object = null;
+ const callee = node.callee = this.parseNoCallExpr();
+ if (callee.type === "MemberExpression") {
+ return this.finishNode(node, "BindExpression");
+ } else {
+ throw this.raise(Errors.UnsupportedBind, callee);
+ }
+ }
+ case 139:
+ {
+ this.raise(Errors.PrivateInExpectedIn, this.state.startLoc, {
+ identifierName: this.state.value
+ });
+ return this.parsePrivateName();
+ }
+ case 33:
+ {
+ return this.parseTopicReferenceThenEqualsSign(54, "%");
+ }
+ case 32:
+ {
+ return this.parseTopicReferenceThenEqualsSign(44, "^");
+ }
+ case 37:
+ case 38:
+ {
+ return this.parseTopicReference("hack");
+ }
+ case 44:
+ case 54:
+ case 27:
+ {
+ const pipeProposal = this.getPluginOption("pipelineOperator", "proposal");
+ if (pipeProposal) {
+ return this.parseTopicReference(pipeProposal);
+ }
+ throw this.unexpected();
+ }
+ case 47:
+ {
+ const lookaheadCh = this.input.codePointAt(this.nextTokenStart());
+ if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) {
+ throw this.expectOnePlugin(["jsx", "flow", "typescript"]);
+ }
+ throw this.unexpected();
+ }
+ default:
+ if (type === 137) {
+ return this.parseDecimalLiteral(this.state.value);
+ } else if (type === 2 || type === 1) {
+ return this.parseArrayLike(this.state.type === 2 ? 4 : 3, true);
+ } else if (type === 6 || type === 7) {
+ return this.parseObjectLike(this.state.type === 6 ? 9 : 8, false, true);
+ }
+ if (tokenIsIdentifier(type)) {
+ if (this.isContextual(127) && this.lookaheadInLineCharCode() === 123) {
+ return this.parseModuleExpression();
+ }
+ const canBeArrow = this.state.potentialArrowAt === this.state.start;
+ const containsEsc = this.state.containsEsc;
+ const id = this.parseIdentifier();
+ if (!containsEsc && id.name === "async" && !this.canInsertSemicolon()) {
+ const {
+ type
+ } = this.state;
+ if (type === 68) {
+ this.resetPreviousNodeTrailingComments(id);
+ this.next();
+ return this.parseAsyncFunctionExpression(this.startNodeAtNode(id));
+ } else if (tokenIsIdentifier(type)) {
+ if (this.lookaheadCharCode() === 61) {
+ return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id));
+ } else {
+ return id;
+ }
+ } else if (type === 90) {
+ this.resetPreviousNodeTrailingComments(id);
+ return this.parseDo(this.startNodeAtNode(id), true);
+ }
+ }
+ if (canBeArrow && this.match(19) && !this.canInsertSemicolon()) {
+ this.next();
+ return this.parseArrowExpression(this.startNodeAtNode(id), [id], false);
+ }
+ return id;
+ } else {
+ throw this.unexpected();
+ }
+ }
+ }
+ parseTopicReferenceThenEqualsSign(topicTokenType, topicTokenValue) {
+ const pipeProposal = this.getPluginOption("pipelineOperator", "proposal");
+ if (pipeProposal) {
+ this.state.type = topicTokenType;
+ this.state.value = topicTokenValue;
+ this.state.pos--;
+ this.state.end--;
+ this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1);
+ return this.parseTopicReference(pipeProposal);
+ }
+ throw this.unexpected();
+ }
+ parseTopicReference(pipeProposal) {
+ const node = this.startNode();
+ const startLoc = this.state.startLoc;
+ const tokenType = this.state.type;
+ this.next();
+ return this.finishTopicReference(node, startLoc, pipeProposal, tokenType);
+ }
+ finishTopicReference(node, startLoc, pipeProposal, tokenType) {
+ if (this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)) {
+ if (pipeProposal === "hack") {
+ if (!this.topicReferenceIsAllowedInCurrentContext()) {
+ this.raise(Errors.PipeTopicUnbound, startLoc);
+ }
+ this.registerTopicReference();
+ return this.finishNode(node, "TopicReference");
+ } else {
+ if (!this.topicReferenceIsAllowedInCurrentContext()) {
+ this.raise(Errors.PrimaryTopicNotAllowed, startLoc);
+ }
+ this.registerTopicReference();
+ return this.finishNode(node, "PipelinePrimaryTopicReference");
+ }
+ } else {
+ throw this.raise(Errors.PipeTopicUnconfiguredToken, startLoc, {
+ token: tokenLabelName(tokenType)
+ });
+ }
+ }
+ testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType) {
+ switch (pipeProposal) {
+ case "hack":
+ {
+ return this.hasPlugin(["pipelineOperator", {
+ topicToken: tokenLabelName(tokenType)
+ }]);
+ }
+ case "smart":
+ return tokenType === 27;
+ default:
+ throw this.raise(Errors.PipeTopicRequiresHackPipes, startLoc);
+ }
+ }
+ parseAsyncArrowUnaryFunction(node) {
+ this.prodParam.enter(functionFlags(true, this.prodParam.hasYield));
+ const params = [this.parseIdentifier()];
+ this.prodParam.exit();
+ if (this.hasPrecedingLineBreak()) {
+ this.raise(Errors.LineTerminatorBeforeArrow, this.state.curPosition());
+ }
+ this.expect(19);
+ return this.parseArrowExpression(node, params, true);
+ }
+ parseDo(node, isAsync) {
+ this.expectPlugin("doExpressions");
+ if (isAsync) {
+ this.expectPlugin("asyncDoExpressions");
+ }
+ node.async = isAsync;
+ this.next();
+ const oldLabels = this.state.labels;
+ this.state.labels = [];
+ if (isAsync) {
+ this.prodParam.enter(2);
+ node.body = this.parseBlock();
+ this.prodParam.exit();
+ } else {
+ node.body = this.parseBlock();
+ }
+ this.state.labels = oldLabels;
+ return this.finishNode(node, "DoExpression");
+ }
+ parseSuper() {
+ const node = this.startNode();
+ this.next();
+ if (this.match(10) && !this.scope.allowDirectSuper) {
+ if (!(this.optionFlags & 16)) {
+ this.raise(Errors.SuperNotAllowed, node);
+ }
+ } else if (!this.scope.allowSuper) {
+ if (!(this.optionFlags & 16)) {
+ this.raise(Errors.UnexpectedSuper, node);
+ }
+ }
+ if (!this.match(10) && !this.match(0) && !this.match(16)) {
+ this.raise(Errors.UnsupportedSuper, node);
+ }
+ return this.finishNode(node, "Super");
+ }
+ parsePrivateName() {
+ const node = this.startNode();
+ const id = this.startNodeAt(createPositionWithColumnOffset(this.state.startLoc, 1));
+ const name = this.state.value;
+ this.next();
+ node.id = this.createIdentifier(id, name);
+ return this.finishNode(node, "PrivateName");
+ }
+ parseFunctionOrFunctionSent() {
+ const node = this.startNode();
+ this.next();
+ if (this.prodParam.hasYield && this.match(16)) {
+ const meta = this.createIdentifier(this.startNodeAtNode(node), "function");
+ this.next();
+ if (this.match(103)) {
+ this.expectPlugin("functionSent");
+ } else if (!this.hasPlugin("functionSent")) {
+ this.unexpected();
+ }
+ return this.parseMetaProperty(node, meta, "sent");
+ }
+ return this.parseFunction(node);
+ }
+ parseMetaProperty(node, meta, propertyName) {
+ node.meta = meta;
+ const containsEsc = this.state.containsEsc;
+ node.property = this.parseIdentifier(true);
+ if (node.property.name !== propertyName || containsEsc) {
+ this.raise(Errors.UnsupportedMetaProperty, node.property, {
+ target: meta.name,
+ onlyValidPropertyName: propertyName
+ });
+ }
+ return this.finishNode(node, "MetaProperty");
+ }
+ parseImportMetaPropertyOrPhaseCall(node) {
+ this.next();
+ if (this.isContextual(105) || this.isContextual(97)) {
+ const isSource = this.isContextual(105);
+ this.expectPlugin(isSource ? "sourcePhaseImports" : "deferredImportEvaluation");
+ this.next();
+ node.phase = isSource ? "source" : "defer";
+ return this.parseImportCall(node);
+ } else {
+ const id = this.createIdentifierAt(this.startNodeAtNode(node), "import", this.state.lastTokStartLoc);
+ if (this.isContextual(101)) {
+ if (!this.inModule) {
+ this.raise(Errors.ImportMetaOutsideModule, id);
+ }
+ this.sawUnambiguousESM = true;
+ }
+ return this.parseMetaProperty(node, id, "meta");
+ }
+ }
+ parseLiteralAtNode(value, type, node) {
+ this.addExtra(node, "rawValue", value);
+ this.addExtra(node, "raw", this.input.slice(this.offsetToSourcePos(node.start), this.state.end));
+ node.value = value;
+ this.next();
+ return this.finishNode(node, type);
+ }
+ parseLiteral(value, type) {
+ const node = this.startNode();
+ return this.parseLiteralAtNode(value, type, node);
+ }
+ parseStringLiteral(value) {
+ return this.parseLiteral(value, "StringLiteral");
+ }
+ parseNumericLiteral(value) {
+ return this.parseLiteral(value, "NumericLiteral");
+ }
+ parseBigIntLiteral(value) {
+ return this.parseLiteral(value, "BigIntLiteral");
+ }
+ parseDecimalLiteral(value) {
+ return this.parseLiteral(value, "DecimalLiteral");
+ }
+ parseRegExpLiteral(value) {
+ const node = this.startNode();
+ this.addExtra(node, "raw", this.input.slice(this.offsetToSourcePos(node.start), this.state.end));
+ node.pattern = value.pattern;
+ node.flags = value.flags;
+ this.next();
+ return this.finishNode(node, "RegExpLiteral");
+ }
+ parseBooleanLiteral(value) {
+ const node = this.startNode();
+ node.value = value;
+ this.next();
+ return this.finishNode(node, "BooleanLiteral");
+ }
+ parseNullLiteral() {
+ const node = this.startNode();
+ this.next();
+ return this.finishNode(node, "NullLiteral");
+ }
+ parseParenAndDistinguishExpression(canBeArrow) {
+ const startLoc = this.state.startLoc;
+ let val;
+ this.next();
+ this.expressionScope.enter(newArrowHeadScope());
+ const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
+ const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
+ this.state.maybeInArrowParameters = true;
+ this.state.inFSharpPipelineDirectBody = false;
+ const innerStartLoc = this.state.startLoc;
+ const exprList = [];
+ const refExpressionErrors = new ExpressionErrors();
+ let first = true;
+ let spreadStartLoc;
+ let optionalCommaStartLoc;
+ while (!this.match(11)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(12, refExpressionErrors.optionalParametersLoc === null ? null : refExpressionErrors.optionalParametersLoc);
+ if (this.match(11)) {
+ optionalCommaStartLoc = this.state.startLoc;
+ break;
+ }
+ }
+ if (this.match(21)) {
+ const spreadNodeStartLoc = this.state.startLoc;
+ spreadStartLoc = this.state.startLoc;
+ exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartLoc));
+ if (!this.checkCommaAfterRest(41)) {
+ break;
+ }
+ } else {
+ exprList.push(this.parseMaybeAssignAllowInOrVoidPattern(11, refExpressionErrors, this.parseParenItem));
+ }
+ }
+ const innerEndLoc = this.state.lastTokEndLoc;
+ this.expect(11);
+ this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
+ this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
+ let arrowNode = this.startNodeAt(startLoc);
+ if (canBeArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) {
+ this.checkDestructuringPrivate(refExpressionErrors);
+ this.expressionScope.validateAsPattern();
+ this.expressionScope.exit();
+ this.parseArrowExpression(arrowNode, exprList, false);
+ return arrowNode;
+ }
+ this.expressionScope.exit();
+ if (!exprList.length) {
+ this.unexpected(this.state.lastTokStartLoc);
+ }
+ if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc);
+ if (spreadStartLoc) this.unexpected(spreadStartLoc);
+ this.checkExpressionErrors(refExpressionErrors, true);
+ this.toReferencedListDeep(exprList, true);
+ if (exprList.length > 1) {
+ val = this.startNodeAt(innerStartLoc);
+ val.expressions = exprList;
+ this.finishNode(val, "SequenceExpression");
+ this.resetEndLocation(val, innerEndLoc);
+ } else {
+ val = exprList[0];
+ }
+ return this.wrapParenthesis(startLoc, val);
+ }
+ wrapParenthesis(startLoc, expression) {
+ if (!(this.optionFlags & 1024)) {
+ this.addExtra(expression, "parenthesized", true);
+ this.addExtra(expression, "parenStart", startLoc.index);
+ this.takeSurroundingComments(expression, startLoc.index, this.state.lastTokEndLoc.index);
+ return expression;
+ }
+ const parenExpression = this.startNodeAt(startLoc);
+ parenExpression.expression = expression;
+ return this.finishNode(parenExpression, "ParenthesizedExpression");
+ }
+ shouldParseArrow(params) {
+ return !this.canInsertSemicolon();
+ }
+ parseArrow(node) {
+ if (this.eat(19)) {
+ return node;
+ }
+ }
+ parseParenItem(node, startLoc) {
+ return node;
+ }
+ parseNewOrNewTarget() {
+ const node = this.startNode();
+ this.next();
+ if (this.match(16)) {
+ const meta = this.createIdentifier(this.startNodeAtNode(node), "new");
+ this.next();
+ const metaProp = this.parseMetaProperty(node, meta, "target");
+ if (!this.scope.allowNewTarget) {
+ this.raise(Errors.UnexpectedNewTarget, metaProp);
+ }
+ return metaProp;
+ }
+ return this.parseNew(node);
+ }
+ parseNew(node) {
+ this.parseNewCallee(node);
+ if (this.eat(10)) {
+ const args = this.parseExprList(11);
+ this.toReferencedList(args);
+ node.arguments = args;
+ } else {
+ node.arguments = [];
+ }
+ return this.finishNode(node, "NewExpression");
+ }
+ parseNewCallee(node) {
+ const isImport = this.match(83);
+ const callee = this.parseNoCallExpr();
+ node.callee = callee;
+ if (isImport && (callee.type === "Import" || callee.type === "ImportExpression")) {
+ this.raise(Errors.ImportCallNotNewExpression, callee);
+ }
+ }
+ parseTemplateElement(isTagged) {
+ const {
+ start,
+ startLoc,
+ end,
+ value
+ } = this.state;
+ const elemStart = start + 1;
+ const elem = this.startNodeAt(createPositionWithColumnOffset(startLoc, 1));
+ if (value === null) {
+ if (!isTagged) {
+ this.raise(Errors.InvalidEscapeSequenceTemplate, createPositionWithColumnOffset(this.state.firstInvalidTemplateEscapePos, 1));
+ }
+ }
+ const isTail = this.match(24);
+ const endOffset = isTail ? -1 : -2;
+ const elemEnd = end + endOffset;
+ elem.value = {
+ raw: this.input.slice(elemStart, elemEnd).replace(/\r\n?/g, "\n"),
+ cooked: value === null ? null : value.slice(1, endOffset)
+ };
+ elem.tail = isTail;
+ this.next();
+ const finishedNode = this.finishNode(elem, "TemplateElement");
+ this.resetEndLocation(finishedNode, createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset));
+ return finishedNode;
+ }
+ parseTemplate(isTagged) {
+ const node = this.startNode();
+ let curElt = this.parseTemplateElement(isTagged);
+ const quasis = [curElt];
+ const substitutions = [];
+ while (!curElt.tail) {
+ substitutions.push(this.parseTemplateSubstitution());
+ this.readTemplateContinuation();
+ quasis.push(curElt = this.parseTemplateElement(isTagged));
+ }
+ node.expressions = substitutions;
+ node.quasis = quasis;
+ return this.finishNode(node, "TemplateLiteral");
+ }
+ parseTemplateSubstitution() {
+ return this.parseExpression();
+ }
+ parseObjectLike(close, isPattern, isRecord, refExpressionErrors) {
+ if (isRecord) {
+ this.expectPlugin("recordAndTuple");
+ }
+ const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
+ this.state.inFSharpPipelineDirectBody = false;
+ let sawProto = false;
+ let first = true;
+ const node = this.startNode();
+ node.properties = [];
+ this.next();
+ while (!this.match(close)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(12);
+ if (this.match(close)) {
+ this.addTrailingCommaExtraToNode(node);
+ break;
+ }
+ }
+ let prop;
+ if (isPattern) {
+ prop = this.parseBindingProperty();
+ } else {
+ prop = this.parsePropertyDefinition(refExpressionErrors);
+ sawProto = this.checkProto(prop, isRecord, sawProto, refExpressionErrors);
+ }
+ if (isRecord && !this.isObjectProperty(prop) && prop.type !== "SpreadElement") {
+ this.raise(Errors.InvalidRecordProperty, prop);
+ }
+ if (prop.shorthand) {
+ this.addExtra(prop, "shorthand", true);
+ }
+ node.properties.push(prop);
+ }
+ this.next();
+ this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
+ let type = "ObjectExpression";
+ if (isPattern) {
+ type = "ObjectPattern";
+ } else if (isRecord) {
+ type = "RecordExpression";
+ }
+ return this.finishNode(node, type);
+ }
+ addTrailingCommaExtraToNode(node) {
+ this.addExtra(node, "trailingComma", this.state.lastTokStartLoc.index);
+ this.addExtra(node, "trailingCommaLoc", this.state.lastTokStartLoc, false);
+ }
+ maybeAsyncOrAccessorProp(prop) {
+ return !prop.computed && prop.key.type === "Identifier" && (this.isLiteralPropertyName() || this.match(0) || this.match(55));
+ }
+ parsePropertyDefinition(refExpressionErrors) {
+ let decorators = [];
+ if (this.match(26)) {
+ if (this.hasPlugin("decorators")) {
+ this.raise(Errors.UnsupportedPropertyDecorator, this.state.startLoc);
+ }
+ while (this.match(26)) {
+ decorators.push(this.parseDecorator());
+ }
+ }
+ const prop = this.startNode();
+ let isAsync = false;
+ let isAccessor = false;
+ let startLoc;
+ if (this.match(21)) {
+ if (decorators.length) this.unexpected();
+ return this.parseSpread();
+ }
+ if (decorators.length) {
+ prop.decorators = decorators;
+ decorators = [];
+ }
+ prop.method = false;
+ if (refExpressionErrors) {
+ startLoc = this.state.startLoc;
+ }
+ let isGenerator = this.eat(55);
+ this.parsePropertyNamePrefixOperator(prop);
+ const containsEsc = this.state.containsEsc;
+ this.parsePropertyName(prop, refExpressionErrors);
+ if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) {
+ const {
+ key
+ } = prop;
+ const keyName = key.name;
+ if (keyName === "async" && !this.hasPrecedingLineBreak()) {
+ isAsync = true;
+ this.resetPreviousNodeTrailingComments(key);
+ isGenerator = this.eat(55);
+ this.parsePropertyName(prop);
+ }
+ if (keyName === "get" || keyName === "set") {
+ isAccessor = true;
+ this.resetPreviousNodeTrailingComments(key);
+ prop.kind = keyName;
+ if (this.match(55)) {
+ isGenerator = true;
+ this.raise(Errors.AccessorIsGenerator, this.state.curPosition(), {
+ kind: keyName
+ });
+ this.next();
+ }
+ this.parsePropertyName(prop);
+ }
+ }
+ return this.parseObjPropValue(prop, startLoc, isGenerator, isAsync, false, isAccessor, refExpressionErrors);
+ }
+ getGetterSetterExpectedParamCount(method) {
+ return method.kind === "get" ? 0 : 1;
+ }
+ getObjectOrClassMethodParams(method) {
+ return method.params;
+ }
+ checkGetterSetterParams(method) {
+ var _params;
+ const paramCount = this.getGetterSetterExpectedParamCount(method);
+ const params = this.getObjectOrClassMethodParams(method);
+ if (params.length !== paramCount) {
+ this.raise(method.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, method);
+ }
+ if (method.kind === "set" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === "RestElement") {
+ this.raise(Errors.BadSetterRestParameter, method);
+ }
+ }
+ parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {
+ if (isAccessor) {
+ const finishedProp = this.parseMethod(prop, isGenerator, false, false, false, "ObjectMethod");
+ this.checkGetterSetterParams(finishedProp);
+ return finishedProp;
+ }
+ if (isAsync || isGenerator || this.match(10)) {
+ if (isPattern) this.unexpected();
+ prop.kind = "method";
+ prop.method = true;
+ return this.parseMethod(prop, isGenerator, isAsync, false, false, "ObjectMethod");
+ }
+ }
+ parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) {
+ prop.shorthand = false;
+ if (this.eat(14)) {
+ prop.value = isPattern ? this.parseMaybeDefault(this.state.startLoc) : this.parseMaybeAssignAllowInOrVoidPattern(8, refExpressionErrors);
+ return this.finishObjectProperty(prop);
+ }
+ if (!prop.computed && prop.key.type === "Identifier") {
+ this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false);
+ if (isPattern) {
+ prop.value = this.parseMaybeDefault(startLoc, this.cloneIdentifier(prop.key));
+ } else if (this.match(29)) {
+ const shorthandAssignLoc = this.state.startLoc;
+ if (refExpressionErrors != null) {
+ if (refExpressionErrors.shorthandAssignLoc === null) {
+ refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc;
+ }
+ } else {
+ this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc);
+ }
+ prop.value = this.parseMaybeDefault(startLoc, this.cloneIdentifier(prop.key));
+ } else {
+ prop.value = this.cloneIdentifier(prop.key);
+ }
+ prop.shorthand = true;
+ return this.finishObjectProperty(prop);
+ }
+ }
+ finishObjectProperty(node) {
+ return this.finishNode(node, "ObjectProperty");
+ }
+ parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {
+ const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors);
+ if (!node) this.unexpected();
+ return node;
+ }
+ parsePropertyName(prop, refExpressionErrors) {
+ if (this.eat(0)) {
+ prop.computed = true;
+ prop.key = this.parseMaybeAssignAllowIn();
+ this.expect(3);
+ } else {
+ const {
+ type,
+ value
+ } = this.state;
+ let key;
+ if (tokenIsKeywordOrIdentifier(type)) {
+ key = this.parseIdentifier(true);
+ } else {
+ switch (type) {
+ case 135:
+ key = this.parseNumericLiteral(value);
+ break;
+ case 134:
+ key = this.parseStringLiteral(value);
+ break;
+ case 136:
+ key = this.parseBigIntLiteral(value);
+ break;
+ case 139:
+ {
+ const privateKeyLoc = this.state.startLoc;
+ if (refExpressionErrors != null) {
+ if (refExpressionErrors.privateKeyLoc === null) {
+ refExpressionErrors.privateKeyLoc = privateKeyLoc;
+ }
+ } else {
+ this.raise(Errors.UnexpectedPrivateField, privateKeyLoc);
+ }
+ key = this.parsePrivateName();
+ break;
+ }
+ default:
+ if (type === 137) {
+ key = this.parseDecimalLiteral(value);
+ break;
+ }
+ this.unexpected();
+ }
+ }
+ prop.key = key;
+ if (type !== 139) {
+ prop.computed = false;
+ }
+ }
+ }
+ initFunction(node, isAsync) {
+ node.id = null;
+ node.generator = false;
+ node.async = isAsync;
+ }
+ parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {
+ this.initFunction(node, isAsync);
+ node.generator = isGenerator;
+ this.scope.enter(514 | 16 | (inClassScope ? 576 : 0) | (allowDirectSuper ? 32 : 0));
+ this.prodParam.enter(functionFlags(isAsync, node.generator));
+ this.parseFunctionParams(node, isConstructor);
+ const finishedNode = this.parseFunctionBodyAndFinish(node, type, true);
+ this.prodParam.exit();
+ this.scope.exit();
+ return finishedNode;
+ }
+ parseArrayLike(close, isTuple, refExpressionErrors) {
+ if (isTuple) {
+ this.expectPlugin("recordAndTuple");
+ }
+ const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
+ this.state.inFSharpPipelineDirectBody = false;
+ const node = this.startNode();
+ this.next();
+ node.elements = this.parseExprList(close, !isTuple, refExpressionErrors, node);
+ this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
+ return this.finishNode(node, isTuple ? "TupleExpression" : "ArrayExpression");
+ }
+ parseArrowExpression(node, params, isAsync, trailingCommaLoc) {
+ this.scope.enter(514 | 4);
+ let flags = functionFlags(isAsync, false);
+ if (!this.match(5) && this.prodParam.hasIn) {
+ flags |= 8;
+ }
+ this.prodParam.enter(flags);
+ this.initFunction(node, isAsync);
+ const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
+ if (params) {
+ this.state.maybeInArrowParameters = true;
+ this.setArrowFunctionParameters(node, params, trailingCommaLoc);
+ }
+ this.state.maybeInArrowParameters = false;
+ this.parseFunctionBody(node, true);
+ this.prodParam.exit();
+ this.scope.exit();
+ this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
+ return this.finishNode(node, "ArrowFunctionExpression");
+ }
+ setArrowFunctionParameters(node, params, trailingCommaLoc) {
+ this.toAssignableList(params, trailingCommaLoc, false);
+ node.params = params;
+ }
+ parseFunctionBodyAndFinish(node, type, isMethod = false) {
+ this.parseFunctionBody(node, false, isMethod);
+ return this.finishNode(node, type);
+ }
+ parseFunctionBody(node, allowExpression, isMethod = false) {
+ const isExpression = allowExpression && !this.match(5);
+ this.expressionScope.enter(newExpressionScope());
+ if (isExpression) {
+ node.body = this.parseMaybeAssign();
+ this.checkParams(node, false, allowExpression, false);
+ } else {
+ const oldStrict = this.state.strict;
+ const oldLabels = this.state.labels;
+ this.state.labels = [];
+ this.prodParam.enter(this.prodParam.currentFlags() | 4);
+ node.body = this.parseBlock(true, false, hasStrictModeDirective => {
+ const nonSimple = !this.isSimpleParamList(node.params);
+ if (hasStrictModeDirective && nonSimple) {
+ this.raise(Errors.IllegalLanguageModeDirective, (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.loc.end : node);
+ }
+ const strictModeChanged = !oldStrict && this.state.strict;
+ this.checkParams(node, !this.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged);
+ if (this.state.strict && node.id) {
+ this.checkIdentifier(node.id, 65, strictModeChanged);
+ }
+ });
+ this.prodParam.exit();
+ this.state.labels = oldLabels;
+ }
+ this.expressionScope.exit();
+ }
+ isSimpleParameter(node) {
+ return node.type === "Identifier";
+ }
+ isSimpleParamList(params) {
+ for (let i = 0, len = params.length; i < len; i++) {
+ if (!this.isSimpleParameter(params[i])) return false;
+ }
+ return true;
+ }
+ checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) {
+ const checkClashes = !allowDuplicates && new Set();
+ const formalParameters = {
+ type: "FormalParameters"
+ };
+ for (const param of node.params) {
+ this.checkLVal(param, formalParameters, 5, checkClashes, strictModeChanged);
+ }
+ }
+ parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) {
+ const elts = [];
+ let first = true;
+ while (!this.eat(close)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(12);
+ if (this.match(close)) {
+ if (nodeForExtra) {
+ this.addTrailingCommaExtraToNode(nodeForExtra);
+ }
+ this.next();
+ break;
+ }
+ }
+ elts.push(this.parseExprListItem(close, allowEmpty, refExpressionErrors));
+ }
+ return elts;
+ }
+ parseExprListItem(close, allowEmpty, refExpressionErrors, allowPlaceholder) {
+ let elt;
+ if (this.match(12)) {
+ if (!allowEmpty) {
+ this.raise(Errors.UnexpectedToken, this.state.curPosition(), {
+ unexpected: ","
+ });
+ }
+ elt = null;
+ } else if (this.match(21)) {
+ const spreadNodeStartLoc = this.state.startLoc;
+ elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartLoc);
+ } else if (this.match(17)) {
+ this.expectPlugin("partialApplication");
+ if (!allowPlaceholder) {
+ this.raise(Errors.UnexpectedArgumentPlaceholder, this.state.startLoc);
+ }
+ const node = this.startNode();
+ this.next();
+ elt = this.finishNode(node, "ArgumentPlaceholder");
+ } else {
+ elt = this.parseMaybeAssignAllowInOrVoidPattern(close, refExpressionErrors, this.parseParenItem);
+ }
+ return elt;
+ }
+ parseIdentifier(liberal) {
+ const node = this.startNode();
+ const name = this.parseIdentifierName(liberal);
+ return this.createIdentifier(node, name);
+ }
+ createIdentifier(node, name) {
+ node.name = name;
+ node.loc.identifierName = name;
+ return this.finishNode(node, "Identifier");
+ }
+ createIdentifierAt(node, name, endLoc) {
+ node.name = name;
+ node.loc.identifierName = name;
+ return this.finishNodeAt(node, "Identifier", endLoc);
+ }
+ parseIdentifierName(liberal) {
+ let name;
+ const {
+ startLoc,
+ type
+ } = this.state;
+ if (tokenIsKeywordOrIdentifier(type)) {
+ name = this.state.value;
+ } else {
+ this.unexpected();
+ }
+ const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type);
+ if (liberal) {
+ if (tokenIsKeyword) {
+ this.replaceToken(132);
+ }
+ } else {
+ this.checkReservedWord(name, startLoc, tokenIsKeyword, false);
+ }
+ this.next();
+ return name;
+ }
+ checkReservedWord(word, startLoc, checkKeywords, isBinding) {
+ if (word.length > 10) {
+ return;
+ }
+ if (!canBeReservedWord(word)) {
+ return;
+ }
+ if (checkKeywords && isKeyword(word)) {
+ this.raise(Errors.UnexpectedKeyword, startLoc, {
+ keyword: word
+ });
+ return;
+ }
+ const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord;
+ if (reservedTest(word, this.inModule)) {
+ this.raise(Errors.UnexpectedReservedWord, startLoc, {
+ reservedWord: word
+ });
+ return;
+ } else if (word === "yield") {
+ if (this.prodParam.hasYield) {
+ this.raise(Errors.YieldBindingIdentifier, startLoc);
+ return;
+ }
+ } else if (word === "await") {
+ if (this.prodParam.hasAwait) {
+ this.raise(Errors.AwaitBindingIdentifier, startLoc);
+ return;
+ }
+ if (this.scope.inStaticBlock) {
+ this.raise(Errors.AwaitBindingIdentifierInStaticBlock, startLoc);
+ return;
+ }
+ this.expressionScope.recordAsyncArrowParametersError(startLoc);
+ } else if (word === "arguments") {
+ if (this.scope.inClassAndNotInNonArrowFunction) {
+ this.raise(Errors.ArgumentsInClass, startLoc);
+ return;
+ }
+ }
+ }
+ recordAwaitIfAllowed() {
+ const isAwaitAllowed = this.prodParam.hasAwait;
+ if (isAwaitAllowed && !this.scope.inFunction) {
+ this.state.hasTopLevelAwait = true;
+ }
+ return isAwaitAllowed;
+ }
+ parseAwait(startLoc) {
+ const node = this.startNodeAt(startLoc);
+ this.expressionScope.recordParameterInitializerError(Errors.AwaitExpressionFormalParameter, node);
+ if (this.eat(55)) {
+ this.raise(Errors.ObsoleteAwaitStar, node);
+ }
+ if (!this.scope.inFunction && !(this.optionFlags & 1)) {
+ if (this.isAmbiguousPrefixOrIdentifier()) {
+ this.ambiguousScriptDifferentAst = true;
+ } else {
+ this.sawUnambiguousESM = true;
+ }
+ }
+ if (!this.state.soloAwait) {
+ node.argument = this.parseMaybeUnary(null, true);
+ }
+ return this.finishNode(node, "AwaitExpression");
+ }
+ isAmbiguousPrefixOrIdentifier() {
+ if (this.hasPrecedingLineBreak()) return true;
+ const {
+ type
+ } = this.state;
+ return type === 53 || type === 10 || type === 0 || tokenIsTemplate(type) || type === 102 && !this.state.containsEsc || type === 138 || type === 56 || this.hasPlugin("v8intrinsic") && type === 54;
+ }
+ parseYield(startLoc) {
+ const node = this.startNodeAt(startLoc);
+ this.expressionScope.recordParameterInitializerError(Errors.YieldInParameter, node);
+ let delegating = false;
+ let argument = null;
+ if (!this.hasPrecedingLineBreak()) {
+ delegating = this.eat(55);
+ switch (this.state.type) {
+ case 13:
+ case 140:
+ case 8:
+ case 11:
+ case 3:
+ case 9:
+ case 14:
+ case 12:
+ if (!delegating) break;
+ default:
+ argument = this.parseMaybeAssign();
+ }
+ }
+ node.delegate = delegating;
+ node.argument = argument;
+ return this.finishNode(node, "YieldExpression");
+ }
+ parseImportCall(node) {
+ this.next();
+ node.source = this.parseMaybeAssignAllowIn();
+ node.options = null;
+ if (this.eat(12)) {
+ if (!this.match(11)) {
+ node.options = this.parseMaybeAssignAllowIn();
+ if (this.eat(12)) {
+ this.addTrailingCommaExtraToNode(node.options);
+ if (!this.match(11)) {
+ do {
+ this.parseMaybeAssignAllowIn();
+ } while (this.eat(12) && !this.match(11));
+ this.raise(Errors.ImportCallArity, node);
+ }
+ }
+ } else {
+ this.addTrailingCommaExtraToNode(node.source);
+ }
+ }
+ this.expect(11);
+ return this.finishNode(node, "ImportExpression");
+ }
+ checkPipelineAtInfixOperator(left, leftStartLoc) {
+ if (this.hasPlugin(["pipelineOperator", {
+ proposal: "smart"
+ }])) {
+ if (left.type === "SequenceExpression") {
+ this.raise(Errors.PipelineHeadSequenceExpression, leftStartLoc);
+ }
+ }
+ }
+ parseSmartPipelineBodyInStyle(childExpr, startLoc) {
+ if (this.isSimpleReference(childExpr)) {
+ const bodyNode = this.startNodeAt(startLoc);
+ bodyNode.callee = childExpr;
+ return this.finishNode(bodyNode, "PipelineBareFunction");
+ } else {
+ const bodyNode = this.startNodeAt(startLoc);
+ this.checkSmartPipeTopicBodyEarlyErrors(startLoc);
+ bodyNode.expression = childExpr;
+ return this.finishNode(bodyNode, "PipelineTopicExpression");
+ }
+ }
+ isSimpleReference(expression) {
+ switch (expression.type) {
+ case "MemberExpression":
+ return !expression.computed && this.isSimpleReference(expression.object);
+ case "Identifier":
+ return true;
+ default:
+ return false;
+ }
+ }
+ checkSmartPipeTopicBodyEarlyErrors(startLoc) {
+ if (this.match(19)) {
+ throw this.raise(Errors.PipelineBodyNoArrow, this.state.startLoc);
+ }
+ if (!this.topicReferenceWasUsedInCurrentContext()) {
+ this.raise(Errors.PipelineTopicUnused, startLoc);
+ }
+ }
+ withTopicBindingContext(callback) {
+ const outerContextTopicState = this.state.topicContext;
+ this.state.topicContext = {
+ maxNumOfResolvableTopics: 1,
+ maxTopicIndex: null
+ };
+ try {
+ return callback();
+ } finally {
+ this.state.topicContext = outerContextTopicState;
+ }
+ }
+ withSmartMixTopicForbiddingContext(callback) {
+ if (this.hasPlugin(["pipelineOperator", {
+ proposal: "smart"
+ }])) {
+ const outerContextTopicState = this.state.topicContext;
+ this.state.topicContext = {
+ maxNumOfResolvableTopics: 0,
+ maxTopicIndex: null
+ };
+ try {
+ return callback();
+ } finally {
+ this.state.topicContext = outerContextTopicState;
+ }
+ } else {
+ return callback();
+ }
+ }
+ withSoloAwaitPermittingContext(callback) {
+ const outerContextSoloAwaitState = this.state.soloAwait;
+ this.state.soloAwait = true;
+ try {
+ return callback();
+ } finally {
+ this.state.soloAwait = outerContextSoloAwaitState;
+ }
+ }
+ allowInAnd(callback) {
+ const flags = this.prodParam.currentFlags();
+ const prodParamToSet = 8 & ~flags;
+ if (prodParamToSet) {
+ this.prodParam.enter(flags | 8);
+ try {
+ return callback();
+ } finally {
+ this.prodParam.exit();
+ }
+ }
+ return callback();
+ }
+ disallowInAnd(callback) {
+ const flags = this.prodParam.currentFlags();
+ const prodParamToClear = 8 & flags;
+ if (prodParamToClear) {
+ this.prodParam.enter(flags & ~8);
+ try {
+ return callback();
+ } finally {
+ this.prodParam.exit();
+ }
+ }
+ return callback();
+ }
+ registerTopicReference() {
+ this.state.topicContext.maxTopicIndex = 0;
+ }
+ topicReferenceIsAllowedInCurrentContext() {
+ return this.state.topicContext.maxNumOfResolvableTopics >= 1;
+ }
+ topicReferenceWasUsedInCurrentContext() {
+ return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0;
+ }
+ parseFSharpPipelineBody(prec) {
+ const startLoc = this.state.startLoc;
+ this.state.potentialArrowAt = this.state.start;
+ const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
+ this.state.inFSharpPipelineDirectBody = true;
+ const ret = this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, prec);
+ this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
+ return ret;
+ }
+ parseModuleExpression() {
+ this.expectPlugin("moduleBlocks");
+ const node = this.startNode();
+ this.next();
+ if (!this.match(5)) {
+ this.unexpected(null, 5);
+ }
+ const program = this.startNodeAt(this.state.endLoc);
+ this.next();
+ const revertScopes = this.initializeScopes(true);
+ this.enterInitialScopes();
+ try {
+ node.body = this.parseProgram(program, 8, "module");
+ } finally {
+ revertScopes();
+ }
+ return this.finishNode(node, "ModuleExpression");
+ }
+ parseVoidPattern(refExpressionErrors) {
+ this.expectPlugin("discardBinding");
+ const node = this.startNode();
+ if (refExpressionErrors != null) {
+ refExpressionErrors.voidPatternLoc = this.state.startLoc;
+ }
+ this.next();
+ return this.finishNode(node, "VoidPattern");
+ }
+ parseMaybeAssignAllowInOrVoidPattern(close, refExpressionErrors, afterLeftParse) {
+ if (refExpressionErrors != null && this.match(88)) {
+ const nextCode = this.lookaheadCharCode();
+ if (nextCode === 44 || nextCode === (close === 3 ? 93 : close === 8 ? 125 : 41) || nextCode === 61) {
+ return this.parseMaybeDefault(this.state.startLoc, this.parseVoidPattern(refExpressionErrors));
+ }
+ }
+ return this.parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse);
+ }
+ parsePropertyNamePrefixOperator(prop) {}
+}
+const loopLabel = {
+ kind: 1
+ },
+ switchLabel = {
+ kind: 2
+ };
+const loneSurrogate = /[\uD800-\uDFFF]/u;
+const keywordRelationalOperator = /in(?:stanceof)?/y;
+function babel7CompatTokens(tokens, input, startIndex) {
+ for (let i = 0; i < tokens.length; i++) {
+ const token = tokens[i];
+ const {
+ type
+ } = token;
+ if (typeof type === "number") {
+ if (type === 139) {
+ const {
+ loc,
+ start,
+ value,
+ end
+ } = token;
+ const hashEndPos = start + 1;
+ const hashEndLoc = createPositionWithColumnOffset(loc.start, 1);
+ tokens.splice(i, 1, new Token({
+ type: getExportedToken(27),
+ value: "#",
+ start: start,
+ end: hashEndPos,
+ startLoc: loc.start,
+ endLoc: hashEndLoc
+ }), new Token({
+ type: getExportedToken(132),
+ value: value,
+ start: hashEndPos,
+ end: end,
+ startLoc: hashEndLoc,
+ endLoc: loc.end
+ }));
+ i++;
+ continue;
+ }
+ if (tokenIsTemplate(type)) {
+ const {
+ loc,
+ start,
+ value,
+ end
+ } = token;
+ const backquoteEnd = start + 1;
+ const backquoteEndLoc = createPositionWithColumnOffset(loc.start, 1);
+ let startToken;
+ if (input.charCodeAt(start - startIndex) === 96) {
+ startToken = new Token({
+ type: getExportedToken(22),
+ value: "`",
+ start: start,
+ end: backquoteEnd,
+ startLoc: loc.start,
+ endLoc: backquoteEndLoc
+ });
+ } else {
+ startToken = new Token({
+ type: getExportedToken(8),
+ value: "}",
+ start: start,
+ end: backquoteEnd,
+ startLoc: loc.start,
+ endLoc: backquoteEndLoc
+ });
+ }
+ let templateValue, templateElementEnd, templateElementEndLoc, endToken;
+ if (type === 24) {
+ templateElementEnd = end - 1;
+ templateElementEndLoc = createPositionWithColumnOffset(loc.end, -1);
+ templateValue = value === null ? null : value.slice(1, -1);
+ endToken = new Token({
+ type: getExportedToken(22),
+ value: "`",
+ start: templateElementEnd,
+ end: end,
+ startLoc: templateElementEndLoc,
+ endLoc: loc.end
+ });
+ } else {
+ templateElementEnd = end - 2;
+ templateElementEndLoc = createPositionWithColumnOffset(loc.end, -2);
+ templateValue = value === null ? null : value.slice(1, -2);
+ endToken = new Token({
+ type: getExportedToken(23),
+ value: "${",
+ start: templateElementEnd,
+ end: end,
+ startLoc: templateElementEndLoc,
+ endLoc: loc.end
+ });
+ }
+ tokens.splice(i, 1, startToken, new Token({
+ type: getExportedToken(20),
+ value: templateValue,
+ start: backquoteEnd,
+ end: templateElementEnd,
+ startLoc: backquoteEndLoc,
+ endLoc: templateElementEndLoc
+ }), endToken);
+ i += 2;
+ continue;
+ }
+ token.type = getExportedToken(type);
+ }
+ }
+ return tokens;
+}
+class StatementParser extends ExpressionParser {
+ parseTopLevel(file, program) {
+ file.program = this.parseProgram(program, 140, this.options.sourceType === "module" ? "module" : "script");
+ file.comments = this.comments;
+ if (this.optionFlags & 256) {
+ file.tokens = babel7CompatTokens(this.tokens, this.input, this.startIndex);
+ }
+ return this.finishNode(file, "File");
+ }
+ parseProgram(program, end, sourceType) {
+ program.sourceType = sourceType;
+ program.interpreter = this.parseInterpreterDirective();
+ this.parseBlockBody(program, true, true, end);
+ if (this.inModule) {
+ if (!(this.optionFlags & 64) && this.scope.undefinedExports.size > 0) {
+ for (const [localName, at] of Array.from(this.scope.undefinedExports)) {
+ this.raise(Errors.ModuleExportUndefined, at, {
+ localName
+ });
+ }
+ }
+ this.addExtra(program, "topLevelAwait", this.state.hasTopLevelAwait);
+ }
+ let finishedProgram;
+ if (end === 140) {
+ finishedProgram = this.finishNode(program, "Program");
+ } else {
+ finishedProgram = this.finishNodeAt(program, "Program", createPositionWithColumnOffset(this.state.startLoc, -1));
+ }
+ return finishedProgram;
+ }
+ stmtToDirective(stmt) {
+ const directive = this.castNodeTo(stmt, "Directive");
+ const directiveLiteral = this.castNodeTo(stmt.expression, "DirectiveLiteral");
+ const expressionValue = directiveLiteral.value;
+ const raw = this.input.slice(this.offsetToSourcePos(directiveLiteral.start), this.offsetToSourcePos(directiveLiteral.end));
+ const val = directiveLiteral.value = raw.slice(1, -1);
+ this.addExtra(directiveLiteral, "raw", raw);
+ this.addExtra(directiveLiteral, "rawValue", val);
+ this.addExtra(directiveLiteral, "expressionValue", expressionValue);
+ directive.value = directiveLiteral;
+ delete stmt.expression;
+ return directive;
+ }
+ parseInterpreterDirective() {
+ if (!this.match(28)) {
+ return null;
+ }
+ const node = this.startNode();
+ node.value = this.state.value;
+ this.next();
+ return this.finishNode(node, "InterpreterDirective");
+ }
+ isLet() {
+ if (!this.isContextual(100)) {
+ return false;
+ }
+ return this.hasFollowingBindingAtom();
+ }
+ isUsing() {
+ if (!this.isContextual(107)) {
+ return false;
+ }
+ return this.nextTokenIsIdentifierOnSameLine();
+ }
+ isForUsing() {
+ if (!this.isContextual(107)) {
+ return false;
+ }
+ const next = this.nextTokenInLineStart();
+ const nextCh = this.codePointAtPos(next);
+ if (this.isUnparsedContextual(next, "of")) {
+ const nextCharAfterOf = this.lookaheadCharCodeSince(next + 2);
+ if (nextCharAfterOf !== 61 && nextCharAfterOf !== 58 && nextCharAfterOf !== 59) {
+ return false;
+ }
+ }
+ if (this.chStartsBindingIdentifier(nextCh, next) || this.isUnparsedContextual(next, "void")) {
+ return true;
+ }
+ return false;
+ }
+ nextTokenIsIdentifierOnSameLine() {
+ const next = this.nextTokenInLineStart();
+ const nextCh = this.codePointAtPos(next);
+ return this.chStartsBindingIdentifier(nextCh, next);
+ }
+ isAwaitUsing() {
+ if (!this.isContextual(96)) {
+ return false;
+ }
+ let next = this.nextTokenInLineStart();
+ if (this.isUnparsedContextual(next, "using")) {
+ next = this.nextTokenInLineStartSince(next + 5);
+ const nextCh = this.codePointAtPos(next);
+ if (this.chStartsBindingIdentifier(nextCh, next)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ chStartsBindingIdentifier(ch, pos) {
+ if (isIdentifierStart(ch)) {
+ keywordRelationalOperator.lastIndex = pos;
+ if (keywordRelationalOperator.test(this.input)) {
+ const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex);
+ if (!isIdentifierChar(endCh) && endCh !== 92) {
+ return false;
+ }
+ }
+ return true;
+ } else if (ch === 92) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ chStartsBindingPattern(ch) {
+ return ch === 91 || ch === 123;
+ }
+ hasFollowingBindingAtom() {
+ const next = this.nextTokenStart();
+ const nextCh = this.codePointAtPos(next);
+ return this.chStartsBindingPattern(nextCh) || this.chStartsBindingIdentifier(nextCh, next);
+ }
+ hasInLineFollowingBindingIdentifierOrBrace() {
+ const next = this.nextTokenInLineStart();
+ const nextCh = this.codePointAtPos(next);
+ return nextCh === 123 || this.chStartsBindingIdentifier(nextCh, next);
+ }
+ allowsUsing() {
+ return (this.scope.inModule || !this.scope.inTopLevel) && !this.scope.inBareCaseStatement;
+ }
+ parseModuleItem() {
+ return this.parseStatementLike(1 | 2 | 4 | 8);
+ }
+ parseStatementListItem() {
+ return this.parseStatementLike(2 | 4 | (!this.options.annexB || this.state.strict ? 0 : 8));
+ }
+ parseStatementOrSloppyAnnexBFunctionDeclaration(allowLabeledFunction = false) {
+ let flags = 0;
+ if (this.options.annexB && !this.state.strict) {
+ flags |= 4;
+ if (allowLabeledFunction) {
+ flags |= 8;
+ }
+ }
+ return this.parseStatementLike(flags);
+ }
+ parseStatement() {
+ return this.parseStatementLike(0);
+ }
+ parseStatementLike(flags) {
+ let decorators = null;
+ if (this.match(26)) {
+ decorators = this.parseDecorators(true);
+ }
+ return this.parseStatementContent(flags, decorators);
+ }
+ parseStatementContent(flags, decorators) {
+ const startType = this.state.type;
+ const node = this.startNode();
+ const allowDeclaration = !!(flags & 2);
+ const allowFunctionDeclaration = !!(flags & 4);
+ const topLevel = flags & 1;
+ switch (startType) {
+ case 60:
+ return this.parseBreakContinueStatement(node, true);
+ case 63:
+ return this.parseBreakContinueStatement(node, false);
+ case 64:
+ return this.parseDebuggerStatement(node);
+ case 90:
+ return this.parseDoWhileStatement(node);
+ case 91:
+ return this.parseForStatement(node);
+ case 68:
+ if (this.lookaheadCharCode() === 46) break;
+ if (!allowFunctionDeclaration) {
+ this.raise(this.state.strict ? Errors.StrictFunction : this.options.annexB ? Errors.SloppyFunctionAnnexB : Errors.SloppyFunction, this.state.startLoc);
+ }
+ return this.parseFunctionStatement(node, false, !allowDeclaration && allowFunctionDeclaration);
+ case 80:
+ if (!allowDeclaration) this.unexpected();
+ return this.parseClass(this.maybeTakeDecorators(decorators, node), true);
+ case 69:
+ return this.parseIfStatement(node);
+ case 70:
+ return this.parseReturnStatement(node);
+ case 71:
+ return this.parseSwitchStatement(node);
+ case 72:
+ return this.parseThrowStatement(node);
+ case 73:
+ return this.parseTryStatement(node);
+ case 96:
+ if (this.isAwaitUsing()) {
+ if (!this.allowsUsing()) {
+ this.raise(Errors.UnexpectedUsingDeclaration, node);
+ } else if (!allowDeclaration) {
+ this.raise(Errors.UnexpectedLexicalDeclaration, node);
+ } else if (!this.recordAwaitIfAllowed()) {
+ this.raise(Errors.AwaitUsingNotInAsyncContext, node);
+ }
+ this.next();
+ return this.parseVarStatement(node, "await using");
+ }
+ break;
+ case 107:
+ if (this.state.containsEsc || !this.hasInLineFollowingBindingIdentifierOrBrace()) {
+ break;
+ }
+ if (!this.allowsUsing()) {
+ this.raise(Errors.UnexpectedUsingDeclaration, this.state.startLoc);
+ } else if (!allowDeclaration) {
+ this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc);
+ }
+ return this.parseVarStatement(node, "using");
+ case 100:
+ {
+ if (this.state.containsEsc) {
+ break;
+ }
+ const next = this.nextTokenStart();
+ const nextCh = this.codePointAtPos(next);
+ if (nextCh !== 91) {
+ if (!allowDeclaration && this.hasFollowingLineBreak()) break;
+ if (!this.chStartsBindingIdentifier(nextCh, next) && nextCh !== 123) {
+ break;
+ }
+ }
+ }
+ case 75:
+ {
+ if (!allowDeclaration) {
+ this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc);
+ }
+ }
+ case 74:
+ {
+ const kind = this.state.value;
+ return this.parseVarStatement(node, kind);
+ }
+ case 92:
+ return this.parseWhileStatement(node);
+ case 76:
+ return this.parseWithStatement(node);
+ case 5:
+ return this.parseBlock();
+ case 13:
+ return this.parseEmptyStatement(node);
+ case 83:
+ {
+ const nextTokenCharCode = this.lookaheadCharCode();
+ if (nextTokenCharCode === 40 || nextTokenCharCode === 46) {
+ break;
+ }
+ }
+ case 82:
+ {
+ if (!(this.optionFlags & 8) && !topLevel) {
+ this.raise(Errors.UnexpectedImportExport, this.state.startLoc);
+ }
+ this.next();
+ let result;
+ if (startType === 83) {
+ result = this.parseImport(node);
+ } else {
+ result = this.parseExport(node, decorators);
+ }
+ this.assertModuleNodeAllowed(result);
+ return result;
+ }
+ default:
+ {
+ if (this.isAsyncFunction()) {
+ if (!allowDeclaration) {
+ this.raise(Errors.AsyncFunctionInSingleStatementContext, this.state.startLoc);
+ }
+ this.next();
+ return this.parseFunctionStatement(node, true, !allowDeclaration && allowFunctionDeclaration);
+ }
+ }
+ }
+ const maybeName = this.state.value;
+ const expr = this.parseExpression();
+ if (tokenIsIdentifier(startType) && expr.type === "Identifier" && this.eat(14)) {
+ return this.parseLabeledStatement(node, maybeName, expr, flags);
+ } else {
+ return this.parseExpressionStatement(node, expr, decorators);
+ }
+ }
+ assertModuleNodeAllowed(node) {
+ if (!(this.optionFlags & 8) && !this.inModule) {
+ this.raise(Errors.ImportOutsideModule, node);
+ }
+ }
+ decoratorsEnabledBeforeExport() {
+ if (this.hasPlugin("decorators-legacy")) return true;
+ return this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") !== false;
+ }
+ maybeTakeDecorators(maybeDecorators, classNode, exportNode) {
+ if (maybeDecorators) {
+ var _classNode$decorators;
+ if ((_classNode$decorators = classNode.decorators) != null && _classNode$decorators.length) {
+ if (typeof this.getPluginOption("decorators", "decoratorsBeforeExport") !== "boolean") {
+ this.raise(Errors.DecoratorsBeforeAfterExport, classNode.decorators[0]);
+ }
+ classNode.decorators.unshift(...maybeDecorators);
+ } else {
+ classNode.decorators = maybeDecorators;
+ }
+ this.resetStartLocationFromNode(classNode, maybeDecorators[0]);
+ if (exportNode) this.resetStartLocationFromNode(exportNode, classNode);
+ }
+ return classNode;
+ }
+ canHaveLeadingDecorator() {
+ return this.match(80);
+ }
+ parseDecorators(allowExport) {
+ const decorators = [];
+ do {
+ decorators.push(this.parseDecorator());
+ } while (this.match(26));
+ if (this.match(82)) {
+ if (!allowExport) {
+ this.unexpected();
+ }
+ if (!this.decoratorsEnabledBeforeExport()) {
+ this.raise(Errors.DecoratorExportClass, this.state.startLoc);
+ }
+ } else if (!this.canHaveLeadingDecorator()) {
+ throw this.raise(Errors.UnexpectedLeadingDecorator, this.state.startLoc);
+ }
+ return decorators;
+ }
+ parseDecorator() {
+ this.expectOnePlugin(["decorators", "decorators-legacy"]);
+ const node = this.startNode();
+ this.next();
+ if (this.hasPlugin("decorators")) {
+ const startLoc = this.state.startLoc;
+ let expr;
+ if (this.match(10)) {
+ const startLoc = this.state.startLoc;
+ this.next();
+ expr = this.parseExpression();
+ this.expect(11);
+ expr = this.wrapParenthesis(startLoc, expr);
+ const paramsStartLoc = this.state.startLoc;
+ node.expression = this.parseMaybeDecoratorArguments(expr, startLoc);
+ if (this.getPluginOption("decorators", "allowCallParenthesized") === false && node.expression !== expr) {
+ this.raise(Errors.DecoratorArgumentsOutsideParentheses, paramsStartLoc);
+ }
+ } else {
+ expr = this.parseIdentifier(false);
+ while (this.eat(16)) {
+ const node = this.startNodeAt(startLoc);
+ node.object = expr;
+ if (this.match(139)) {
+ this.classScope.usePrivateName(this.state.value, this.state.startLoc);
+ node.property = this.parsePrivateName();
+ } else {
+ node.property = this.parseIdentifier(true);
+ }
+ node.computed = false;
+ expr = this.finishNode(node, "MemberExpression");
+ }
+ node.expression = this.parseMaybeDecoratorArguments(expr, startLoc);
+ }
+ } else {
+ node.expression = this.parseExprSubscripts();
+ }
+ return this.finishNode(node, "Decorator");
+ }
+ parseMaybeDecoratorArguments(expr, startLoc) {
+ if (this.eat(10)) {
+ const node = this.startNodeAt(startLoc);
+ node.callee = expr;
+ node.arguments = this.parseCallExpressionArguments();
+ this.toReferencedList(node.arguments);
+ return this.finishNode(node, "CallExpression");
+ }
+ return expr;
+ }
+ parseBreakContinueStatement(node, isBreak) {
+ this.next();
+ if (this.isLineTerminator()) {
+ node.label = null;
+ } else {
+ node.label = this.parseIdentifier();
+ this.semicolon();
+ }
+ this.verifyBreakContinue(node, isBreak);
+ return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement");
+ }
+ verifyBreakContinue(node, isBreak) {
+ let i;
+ for (i = 0; i < this.state.labels.length; ++i) {
+ const lab = this.state.labels[i];
+ if (node.label == null || lab.name === node.label.name) {
+ if (lab.kind != null && (isBreak || lab.kind === 1)) {
+ break;
+ }
+ if (node.label && isBreak) break;
+ }
+ }
+ if (i === this.state.labels.length) {
+ const type = isBreak ? "BreakStatement" : "ContinueStatement";
+ this.raise(Errors.IllegalBreakContinue, node, {
+ type
+ });
+ }
+ }
+ parseDebuggerStatement(node) {
+ this.next();
+ this.semicolon();
+ return this.finishNode(node, "DebuggerStatement");
+ }
+ parseHeaderExpression() {
+ this.expect(10);
+ const val = this.parseExpression();
+ this.expect(11);
+ return val;
+ }
+ parseDoWhileStatement(node) {
+ this.next();
+ this.state.labels.push(loopLabel);
+ node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement());
+ this.state.labels.pop();
+ this.expect(92);
+ node.test = this.parseHeaderExpression();
+ this.eat(13);
+ return this.finishNode(node, "DoWhileStatement");
+ }
+ parseForStatement(node) {
+ this.next();
+ this.state.labels.push(loopLabel);
+ let awaitAt = null;
+ if (this.isContextual(96) && this.recordAwaitIfAllowed()) {
+ awaitAt = this.state.startLoc;
+ this.next();
+ }
+ this.scope.enter(0);
+ this.expect(10);
+ if (this.match(13)) {
+ if (awaitAt !== null) {
+ this.unexpected(awaitAt);
+ }
+ return this.parseFor(node, null);
+ }
+ const startsWithLet = this.isContextual(100);
+ {
+ const startsWithAwaitUsing = this.isAwaitUsing();
+ const starsWithUsingDeclaration = startsWithAwaitUsing || this.isForUsing();
+ const isLetOrUsing = startsWithLet && this.hasFollowingBindingAtom() || starsWithUsingDeclaration;
+ if (this.match(74) || this.match(75) || isLetOrUsing) {
+ const initNode = this.startNode();
+ let kind;
+ if (startsWithAwaitUsing) {
+ kind = "await using";
+ if (!this.recordAwaitIfAllowed()) {
+ this.raise(Errors.AwaitUsingNotInAsyncContext, this.state.startLoc);
+ }
+ this.next();
+ } else {
+ kind = this.state.value;
+ }
+ this.next();
+ this.parseVar(initNode, true, kind);
+ const init = this.finishNode(initNode, "VariableDeclaration");
+ const isForIn = this.match(58);
+ if (isForIn && starsWithUsingDeclaration) {
+ this.raise(Errors.ForInUsing, init);
+ }
+ if ((isForIn || this.isContextual(102)) && init.declarations.length === 1) {
+ return this.parseForIn(node, init, awaitAt);
+ }
+ if (awaitAt !== null) {
+ this.unexpected(awaitAt);
+ }
+ return this.parseFor(node, init);
+ }
+ }
+ const startsWithAsync = this.isContextual(95);
+ const refExpressionErrors = new ExpressionErrors();
+ const init = this.parseExpression(true, refExpressionErrors);
+ const isForOf = this.isContextual(102);
+ if (isForOf) {
+ if (startsWithLet) {
+ this.raise(Errors.ForOfLet, init);
+ }
+ if (awaitAt === null && startsWithAsync && init.type === "Identifier") {
+ this.raise(Errors.ForOfAsync, init);
+ }
+ }
+ if (isForOf || this.match(58)) {
+ this.checkDestructuringPrivate(refExpressionErrors);
+ this.toAssignable(init, true);
+ const type = isForOf ? "ForOfStatement" : "ForInStatement";
+ this.checkLVal(init, {
+ type
+ });
+ return this.parseForIn(node, init, awaitAt);
+ } else {
+ this.checkExpressionErrors(refExpressionErrors, true);
+ }
+ if (awaitAt !== null) {
+ this.unexpected(awaitAt);
+ }
+ return this.parseFor(node, init);
+ }
+ parseFunctionStatement(node, isAsync, isHangingDeclaration) {
+ this.next();
+ return this.parseFunction(node, 1 | (isHangingDeclaration ? 2 : 0) | (isAsync ? 8 : 0));
+ }
+ parseIfStatement(node) {
+ this.next();
+ node.test = this.parseHeaderExpression();
+ node.consequent = this.parseStatementOrSloppyAnnexBFunctionDeclaration();
+ node.alternate = this.eat(66) ? this.parseStatementOrSloppyAnnexBFunctionDeclaration() : null;
+ return this.finishNode(node, "IfStatement");
+ }
+ parseReturnStatement(node) {
+ if (!this.prodParam.hasReturn) {
+ this.raise(Errors.IllegalReturn, this.state.startLoc);
+ }
+ this.next();
+ if (this.isLineTerminator()) {
+ node.argument = null;
+ } else {
+ node.argument = this.parseExpression();
+ this.semicolon();
+ }
+ return this.finishNode(node, "ReturnStatement");
+ }
+ parseSwitchStatement(node) {
+ this.next();
+ node.discriminant = this.parseHeaderExpression();
+ const cases = node.cases = [];
+ this.expect(5);
+ this.state.labels.push(switchLabel);
+ this.scope.enter(256);
+ let cur;
+ for (let sawDefault; !this.match(8);) {
+ if (this.match(61) || this.match(65)) {
+ const isCase = this.match(61);
+ if (cur) this.finishNode(cur, "SwitchCase");
+ cases.push(cur = this.startNode());
+ cur.consequent = [];
+ this.next();
+ if (isCase) {
+ cur.test = this.parseExpression();
+ } else {
+ if (sawDefault) {
+ this.raise(Errors.MultipleDefaultsInSwitch, this.state.lastTokStartLoc);
+ }
+ sawDefault = true;
+ cur.test = null;
+ }
+ this.expect(14);
+ } else {
+ if (cur) {
+ cur.consequent.push(this.parseStatementListItem());
+ } else {
+ this.unexpected();
+ }
+ }
+ }
+ this.scope.exit();
+ if (cur) this.finishNode(cur, "SwitchCase");
+ this.next();
+ this.state.labels.pop();
+ return this.finishNode(node, "SwitchStatement");
+ }
+ parseThrowStatement(node) {
+ this.next();
+ if (this.hasPrecedingLineBreak()) {
+ this.raise(Errors.NewlineAfterThrow, this.state.lastTokEndLoc);
+ }
+ node.argument = this.parseExpression();
+ this.semicolon();
+ return this.finishNode(node, "ThrowStatement");
+ }
+ parseCatchClauseParam() {
+ const param = this.parseBindingAtom();
+ this.scope.enter(this.options.annexB && param.type === "Identifier" ? 8 : 0);
+ this.checkLVal(param, {
+ type: "CatchClause"
+ }, 9);
+ return param;
+ }
+ parseTryStatement(node) {
+ this.next();
+ node.block = this.parseBlock();
+ node.handler = null;
+ if (this.match(62)) {
+ const clause = this.startNode();
+ this.next();
+ if (this.match(10)) {
+ this.expect(10);
+ clause.param = this.parseCatchClauseParam();
+ this.expect(11);
+ } else {
+ clause.param = null;
+ this.scope.enter(0);
+ }
+ clause.body = this.withSmartMixTopicForbiddingContext(() => this.parseBlock(false, false));
+ this.scope.exit();
+ node.handler = this.finishNode(clause, "CatchClause");
+ }
+ node.finalizer = this.eat(67) ? this.parseBlock() : null;
+ if (!node.handler && !node.finalizer) {
+ this.raise(Errors.NoCatchOrFinally, node);
+ }
+ return this.finishNode(node, "TryStatement");
+ }
+ parseVarStatement(node, kind, allowMissingInitializer = false) {
+ this.next();
+ this.parseVar(node, false, kind, allowMissingInitializer);
+ this.semicolon();
+ return this.finishNode(node, "VariableDeclaration");
+ }
+ parseWhileStatement(node) {
+ this.next();
+ node.test = this.parseHeaderExpression();
+ this.state.labels.push(loopLabel);
+ node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement());
+ this.state.labels.pop();
+ return this.finishNode(node, "WhileStatement");
+ }
+ parseWithStatement(node) {
+ if (this.state.strict) {
+ this.raise(Errors.StrictWith, this.state.startLoc);
+ }
+ this.next();
+ node.object = this.parseHeaderExpression();
+ node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement());
+ return this.finishNode(node, "WithStatement");
+ }
+ parseEmptyStatement(node) {
+ this.next();
+ return this.finishNode(node, "EmptyStatement");
+ }
+ parseLabeledStatement(node, maybeName, expr, flags) {
+ for (const label of this.state.labels) {
+ if (label.name === maybeName) {
+ this.raise(Errors.LabelRedeclaration, expr, {
+ labelName: maybeName
+ });
+ }
+ }
+ const kind = tokenIsLoop(this.state.type) ? 1 : this.match(71) ? 2 : null;
+ for (let i = this.state.labels.length - 1; i >= 0; i--) {
+ const label = this.state.labels[i];
+ if (label.statementStart === node.start) {
+ label.statementStart = this.sourceToOffsetPos(this.state.start);
+ label.kind = kind;
+ } else {
+ break;
+ }
+ }
+ this.state.labels.push({
+ name: maybeName,
+ kind: kind,
+ statementStart: this.sourceToOffsetPos(this.state.start)
+ });
+ node.body = flags & 8 ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true) : this.parseStatement();
+ this.state.labels.pop();
+ node.label = expr;
+ return this.finishNode(node, "LabeledStatement");
+ }
+ parseExpressionStatement(node, expr, decorators) {
+ node.expression = expr;
+ this.semicolon();
+ return this.finishNode(node, "ExpressionStatement");
+ }
+ parseBlock(allowDirectives = false, createNewLexicalScope = true, afterBlockParse) {
+ const node = this.startNode();
+ if (allowDirectives) {
+ this.state.strictErrors.clear();
+ }
+ this.expect(5);
+ if (createNewLexicalScope) {
+ this.scope.enter(0);
+ }
+ this.parseBlockBody(node, allowDirectives, false, 8, afterBlockParse);
+ if (createNewLexicalScope) {
+ this.scope.exit();
+ }
+ return this.finishNode(node, "BlockStatement");
+ }
+ isValidDirective(stmt) {
+ return stmt.type === "ExpressionStatement" && stmt.expression.type === "StringLiteral" && !stmt.expression.extra.parenthesized;
+ }
+ parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) {
+ const body = node.body = [];
+ const directives = node.directives = [];
+ this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse);
+ }
+ parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) {
+ const oldStrict = this.state.strict;
+ let hasStrictModeDirective = false;
+ let parsedNonDirective = false;
+ while (!this.match(end)) {
+ const stmt = topLevel ? this.parseModuleItem() : this.parseStatementListItem();
+ if (directives && !parsedNonDirective) {
+ if (this.isValidDirective(stmt)) {
+ const directive = this.stmtToDirective(stmt);
+ directives.push(directive);
+ if (!hasStrictModeDirective && directive.value.value === "use strict") {
+ hasStrictModeDirective = true;
+ this.setStrict(true);
+ }
+ continue;
+ }
+ parsedNonDirective = true;
+ this.state.strictErrors.clear();
+ }
+ body.push(stmt);
+ }
+ afterBlockParse == null || afterBlockParse.call(this, hasStrictModeDirective);
+ if (!oldStrict) {
+ this.setStrict(false);
+ }
+ this.next();
+ }
+ parseFor(node, init) {
+ node.init = init;
+ this.semicolon(false);
+ node.test = this.match(13) ? null : this.parseExpression();
+ this.semicolon(false);
+ node.update = this.match(11) ? null : this.parseExpression();
+ this.expect(11);
+ node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement());
+ this.scope.exit();
+ this.state.labels.pop();
+ return this.finishNode(node, "ForStatement");
+ }
+ parseForIn(node, init, awaitAt) {
+ const isForIn = this.match(58);
+ this.next();
+ if (isForIn) {
+ if (awaitAt !== null) this.unexpected(awaitAt);
+ } else {
+ node.await = awaitAt !== null;
+ }
+ if (init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || !this.options.annexB || this.state.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier")) {
+ this.raise(Errors.ForInOfLoopInitializer, init, {
+ type: isForIn ? "ForInStatement" : "ForOfStatement"
+ });
+ }
+ if (init.type === "AssignmentPattern") {
+ this.raise(Errors.InvalidLhs, init, {
+ ancestor: {
+ type: "ForStatement"
+ }
+ });
+ }
+ node.left = init;
+ node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn();
+ this.expect(11);
+ node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement());
+ this.scope.exit();
+ this.state.labels.pop();
+ return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement");
+ }
+ parseVar(node, isFor, kind, allowMissingInitializer = false) {
+ const declarations = node.declarations = [];
+ node.kind = kind;
+ for (;;) {
+ const decl = this.startNode();
+ this.parseVarId(decl, kind);
+ decl.init = !this.eat(29) ? null : isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn();
+ if (decl.init === null && !allowMissingInitializer) {
+ if (decl.id.type !== "Identifier" && !(isFor && (this.match(58) || this.isContextual(102)))) {
+ this.raise(Errors.DeclarationMissingInitializer, this.state.lastTokEndLoc, {
+ kind: "destructuring"
+ });
+ } else if ((kind === "const" || kind === "using" || kind === "await using") && !(this.match(58) || this.isContextual(102))) {
+ this.raise(Errors.DeclarationMissingInitializer, this.state.lastTokEndLoc, {
+ kind
+ });
+ }
+ }
+ declarations.push(this.finishNode(decl, "VariableDeclarator"));
+ if (!this.eat(12)) break;
+ }
+ return node;
+ }
+ parseVarId(decl, kind) {
+ const id = this.parseBindingAtom();
+ if (kind === "using" || kind === "await using") {
+ if (id.type === "ArrayPattern" || id.type === "ObjectPattern") {
+ this.raise(Errors.UsingDeclarationHasBindingPattern, id.loc.start);
+ }
+ } else {
+ if (id.type === "VoidPattern") {
+ this.raise(Errors.UnexpectedVoidPattern, id.loc.start);
+ }
+ }
+ this.checkLVal(id, {
+ type: "VariableDeclarator"
+ }, kind === "var" ? 5 : 8201);
+ decl.id = id;
+ }
+ parseAsyncFunctionExpression(node) {
+ return this.parseFunction(node, 8);
+ }
+ parseFunction(node, flags = 0) {
+ const hangingDeclaration = flags & 2;
+ const isDeclaration = !!(flags & 1);
+ const requireId = isDeclaration && !(flags & 4);
+ const isAsync = !!(flags & 8);
+ this.initFunction(node, isAsync);
+ if (this.match(55)) {
+ if (hangingDeclaration) {
+ this.raise(Errors.GeneratorInSingleStatementContext, this.state.startLoc);
+ }
+ this.next();
+ node.generator = true;
+ }
+ if (isDeclaration) {
+ node.id = this.parseFunctionId(requireId);
+ }
+ const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
+ this.state.maybeInArrowParameters = false;
+ this.scope.enter(514);
+ this.prodParam.enter(functionFlags(isAsync, node.generator));
+ if (!isDeclaration) {
+ node.id = this.parseFunctionId();
+ }
+ this.parseFunctionParams(node, false);
+ this.withSmartMixTopicForbiddingContext(() => {
+ this.parseFunctionBodyAndFinish(node, isDeclaration ? "FunctionDeclaration" : "FunctionExpression");
+ });
+ this.prodParam.exit();
+ this.scope.exit();
+ if (isDeclaration && !hangingDeclaration) {
+ this.registerFunctionStatementId(node);
+ }
+ this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
+ return node;
+ }
+ parseFunctionId(requireId) {
+ return requireId || tokenIsIdentifier(this.state.type) ? this.parseIdentifier() : null;
+ }
+ parseFunctionParams(node, isConstructor) {
+ this.expect(10);
+ this.expressionScope.enter(newParameterDeclarationScope());
+ node.params = this.parseBindingList(11, 41, 2 | (isConstructor ? 4 : 0));
+ this.expressionScope.exit();
+ }
+ registerFunctionStatementId(node) {
+ if (!node.id) return;
+ this.scope.declareName(node.id.name, !this.options.annexB || this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? 5 : 8201 : 17, node.id.loc.start);
+ }
+ parseClass(node, isStatement, optionalId) {
+ this.next();
+ const oldStrict = this.state.strict;
+ this.state.strict = true;
+ this.parseClassId(node, isStatement, optionalId);
+ this.parseClassSuper(node);
+ node.body = this.parseClassBody(!!node.superClass, oldStrict);
+ return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression");
+ }
+ isClassProperty() {
+ return this.match(29) || this.match(13) || this.match(8);
+ }
+ isClassMethod() {
+ return this.match(10);
+ }
+ nameIsConstructor(key) {
+ return key.type === "Identifier" && key.name === "constructor" || key.type === "StringLiteral" && key.value === "constructor";
+ }
+ isNonstaticConstructor(method) {
+ return !method.computed && !method.static && this.nameIsConstructor(method.key);
+ }
+ parseClassBody(hadSuperClass, oldStrict) {
+ this.classScope.enter();
+ const state = {
+ hadConstructor: false,
+ hadSuperClass
+ };
+ let decorators = [];
+ const classBody = this.startNode();
+ classBody.body = [];
+ this.expect(5);
+ this.withSmartMixTopicForbiddingContext(() => {
+ while (!this.match(8)) {
+ if (this.eat(13)) {
+ if (decorators.length > 0) {
+ throw this.raise(Errors.DecoratorSemicolon, this.state.lastTokEndLoc);
+ }
+ continue;
+ }
+ if (this.match(26)) {
+ decorators.push(this.parseDecorator());
+ continue;
+ }
+ const member = this.startNode();
+ if (decorators.length) {
+ member.decorators = decorators;
+ this.resetStartLocationFromNode(member, decorators[0]);
+ decorators = [];
+ }
+ this.parseClassMember(classBody, member, state);
+ if (member.kind === "constructor" && member.decorators && member.decorators.length > 0) {
+ this.raise(Errors.DecoratorConstructor, member);
+ }
+ }
+ });
+ this.state.strict = oldStrict;
+ this.next();
+ if (decorators.length) {
+ throw this.raise(Errors.TrailingDecorator, this.state.startLoc);
+ }
+ this.classScope.exit();
+ return this.finishNode(classBody, "ClassBody");
+ }
+ parseClassMemberFromModifier(classBody, member) {
+ const key = this.parseIdentifier(true);
+ if (this.isClassMethod()) {
+ const method = member;
+ method.kind = "method";
+ method.computed = false;
+ method.key = key;
+ method.static = false;
+ this.pushClassMethod(classBody, method, false, false, false, false);
+ return true;
+ } else if (this.isClassProperty()) {
+ const prop = member;
+ prop.computed = false;
+ prop.key = key;
+ prop.static = false;
+ classBody.body.push(this.parseClassProperty(prop));
+ return true;
+ }
+ this.resetPreviousNodeTrailingComments(key);
+ return false;
+ }
+ parseClassMember(classBody, member, state) {
+ const isStatic = this.isContextual(106);
+ if (isStatic) {
+ if (this.parseClassMemberFromModifier(classBody, member)) {
+ return;
+ }
+ if (this.eat(5)) {
+ this.parseClassStaticBlock(classBody, member);
+ return;
+ }
+ }
+ this.parseClassMemberWithIsStatic(classBody, member, state, isStatic);
+ }
+ parseClassMemberWithIsStatic(classBody, member, state, isStatic) {
+ const publicMethod = member;
+ const privateMethod = member;
+ const publicProp = member;
+ const privateProp = member;
+ const accessorProp = member;
+ const method = publicMethod;
+ const publicMember = publicMethod;
+ member.static = isStatic;
+ this.parsePropertyNamePrefixOperator(member);
+ if (this.eat(55)) {
+ method.kind = "method";
+ const isPrivateName = this.match(139);
+ this.parseClassElementName(method);
+ this.parsePostMemberNameModifiers(method);
+ if (isPrivateName) {
+ this.pushClassPrivateMethod(classBody, privateMethod, true, false);
+ return;
+ }
+ if (this.isNonstaticConstructor(publicMethod)) {
+ this.raise(Errors.ConstructorIsGenerator, publicMethod.key);
+ }
+ this.pushClassMethod(classBody, publicMethod, true, false, false, false);
+ return;
+ }
+ const isContextual = !this.state.containsEsc && tokenIsIdentifier(this.state.type);
+ const key = this.parseClassElementName(member);
+ const maybeContextualKw = isContextual ? key.name : null;
+ const isPrivate = this.isPrivateName(key);
+ const maybeQuestionTokenStartLoc = this.state.startLoc;
+ this.parsePostMemberNameModifiers(publicMember);
+ if (this.isClassMethod()) {
+ method.kind = "method";
+ if (isPrivate) {
+ this.pushClassPrivateMethod(classBody, privateMethod, false, false);
+ return;
+ }
+ const isConstructor = this.isNonstaticConstructor(publicMethod);
+ let allowsDirectSuper = false;
+ if (isConstructor) {
+ publicMethod.kind = "constructor";
+ if (state.hadConstructor && !this.hasPlugin("typescript")) {
+ this.raise(Errors.DuplicateConstructor, key);
+ }
+ if (isConstructor && this.hasPlugin("typescript") && member.override) {
+ this.raise(Errors.OverrideOnConstructor, key);
+ }
+ state.hadConstructor = true;
+ allowsDirectSuper = state.hadSuperClass;
+ }
+ this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper);
+ } else if (this.isClassProperty()) {
+ if (isPrivate) {
+ this.pushClassPrivateProperty(classBody, privateProp);
+ } else {
+ this.pushClassProperty(classBody, publicProp);
+ }
+ } else if (maybeContextualKw === "async" && !this.isLineTerminator()) {
+ this.resetPreviousNodeTrailingComments(key);
+ const isGenerator = this.eat(55);
+ if (publicMember.optional) {
+ this.unexpected(maybeQuestionTokenStartLoc);
+ }
+ method.kind = "method";
+ const isPrivate = this.match(139);
+ this.parseClassElementName(method);
+ this.parsePostMemberNameModifiers(publicMember);
+ if (isPrivate) {
+ this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true);
+ } else {
+ if (this.isNonstaticConstructor(publicMethod)) {
+ this.raise(Errors.ConstructorIsAsync, publicMethod.key);
+ }
+ this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false);
+ }
+ } else if ((maybeContextualKw === "get" || maybeContextualKw === "set") && !(this.match(55) && this.isLineTerminator())) {
+ this.resetPreviousNodeTrailingComments(key);
+ method.kind = maybeContextualKw;
+ const isPrivate = this.match(139);
+ this.parseClassElementName(publicMethod);
+ if (isPrivate) {
+ this.pushClassPrivateMethod(classBody, privateMethod, false, false);
+ } else {
+ if (this.isNonstaticConstructor(publicMethod)) {
+ this.raise(Errors.ConstructorIsAccessor, publicMethod.key);
+ }
+ this.pushClassMethod(classBody, publicMethod, false, false, false, false);
+ }
+ this.checkGetterSetterParams(publicMethod);
+ } else if (maybeContextualKw === "accessor" && !this.isLineTerminator()) {
+ this.expectPlugin("decoratorAutoAccessors");
+ this.resetPreviousNodeTrailingComments(key);
+ const isPrivate = this.match(139);
+ this.parseClassElementName(publicProp);
+ this.pushClassAccessorProperty(classBody, accessorProp, isPrivate);
+ } else if (this.isLineTerminator()) {
+ if (isPrivate) {
+ this.pushClassPrivateProperty(classBody, privateProp);
+ } else {
+ this.pushClassProperty(classBody, publicProp);
+ }
+ } else {
+ this.unexpected();
+ }
+ }
+ parseClassElementName(member) {
+ const {
+ type,
+ value
+ } = this.state;
+ if ((type === 132 || type === 134) && member.static && value === "prototype") {
+ this.raise(Errors.StaticPrototype, this.state.startLoc);
+ }
+ if (type === 139) {
+ if (value === "constructor") {
+ this.raise(Errors.ConstructorClassPrivateField, this.state.startLoc);
+ }
+ const key = this.parsePrivateName();
+ member.key = key;
+ return key;
+ }
+ this.parsePropertyName(member);
+ return member.key;
+ }
+ parseClassStaticBlock(classBody, member) {
+ var _member$decorators;
+ this.scope.enter(576 | 128 | 16);
+ const oldLabels = this.state.labels;
+ this.state.labels = [];
+ this.prodParam.enter(0);
+ const body = member.body = [];
+ this.parseBlockOrModuleBlockBody(body, undefined, false, 8);
+ this.prodParam.exit();
+ this.scope.exit();
+ this.state.labels = oldLabels;
+ classBody.body.push(this.finishNode(member, "StaticBlock"));
+ if ((_member$decorators = member.decorators) != null && _member$decorators.length) {
+ this.raise(Errors.DecoratorStaticBlock, member);
+ }
+ }
+ pushClassProperty(classBody, prop) {
+ if (!prop.computed && this.nameIsConstructor(prop.key)) {
+ this.raise(Errors.ConstructorClassField, prop.key);
+ }
+ classBody.body.push(this.parseClassProperty(prop));
+ }
+ pushClassPrivateProperty(classBody, prop) {
+ const node = this.parseClassPrivateProperty(prop);
+ classBody.body.push(node);
+ this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.loc.start);
+ }
+ pushClassAccessorProperty(classBody, prop, isPrivate) {
+ if (!isPrivate && !prop.computed && this.nameIsConstructor(prop.key)) {
+ this.raise(Errors.ConstructorClassField, prop.key);
+ }
+ const node = this.parseClassAccessorProperty(prop);
+ classBody.body.push(node);
+ if (isPrivate) {
+ this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.loc.start);
+ }
+ }
+ pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
+ classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true));
+ }
+ pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {
+ const node = this.parseMethod(method, isGenerator, isAsync, false, false, "ClassPrivateMethod", true);
+ classBody.body.push(node);
+ const kind = node.kind === "get" ? node.static ? 6 : 2 : node.kind === "set" ? node.static ? 5 : 1 : 0;
+ this.declareClassPrivateMethodInScope(node, kind);
+ }
+ declareClassPrivateMethodInScope(node, kind) {
+ this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.loc.start);
+ }
+ parsePostMemberNameModifiers(methodOrProp) {}
+ parseClassPrivateProperty(node) {
+ this.parseInitializer(node);
+ this.semicolon();
+ return this.finishNode(node, "ClassPrivateProperty");
+ }
+ parseClassProperty(node) {
+ this.parseInitializer(node);
+ this.semicolon();
+ return this.finishNode(node, "ClassProperty");
+ }
+ parseClassAccessorProperty(node) {
+ this.parseInitializer(node);
+ this.semicolon();
+ return this.finishNode(node, "ClassAccessorProperty");
+ }
+ parseInitializer(node) {
+ this.scope.enter(576 | 16);
+ this.expressionScope.enter(newExpressionScope());
+ this.prodParam.enter(0);
+ node.value = this.eat(29) ? this.parseMaybeAssignAllowIn() : null;
+ this.expressionScope.exit();
+ this.prodParam.exit();
+ this.scope.exit();
+ }
+ parseClassId(node, isStatement, optionalId, bindingType = 8331) {
+ if (tokenIsIdentifier(this.state.type)) {
+ node.id = this.parseIdentifier();
+ if (isStatement) {
+ this.declareNameFromIdentifier(node.id, bindingType);
+ }
+ } else {
+ if (optionalId || !isStatement) {
+ node.id = null;
+ } else {
+ throw this.raise(Errors.MissingClassName, this.state.startLoc);
+ }
+ }
+ }
+ parseClassSuper(node) {
+ node.superClass = this.eat(81) ? this.parseExprSubscripts() : null;
+ }
+ parseExport(node, decorators) {
+ const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, true);
+ const hasDefault = this.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier);
+ const parseAfterDefault = !hasDefault || this.eat(12);
+ const hasStar = parseAfterDefault && this.eatExportStar(node);
+ const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node);
+ const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(12));
+ const isFromRequired = hasDefault || hasStar;
+ if (hasStar && !hasNamespace) {
+ if (hasDefault) this.unexpected();
+ if (decorators) {
+ throw this.raise(Errors.UnsupportedDecoratorExport, node);
+ }
+ this.parseExportFrom(node, true);
+ this.sawUnambiguousESM = true;
+ return this.finishNode(node, "ExportAllDeclaration");
+ }
+ const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node);
+ if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) {
+ this.unexpected(null, 5);
+ }
+ if (hasNamespace && parseAfterNamespace) {
+ this.unexpected(null, 98);
+ }
+ let hasDeclaration;
+ if (isFromRequired || hasSpecifiers) {
+ hasDeclaration = false;
+ if (decorators) {
+ throw this.raise(Errors.UnsupportedDecoratorExport, node);
+ }
+ this.parseExportFrom(node, isFromRequired);
+ } else {
+ hasDeclaration = this.maybeParseExportDeclaration(node);
+ }
+ if (isFromRequired || hasSpecifiers || hasDeclaration) {
+ var _node2$declaration;
+ const node2 = node;
+ this.checkExport(node2, true, false, !!node2.source);
+ if (((_node2$declaration = node2.declaration) == null ? void 0 : _node2$declaration.type) === "ClassDeclaration") {
+ this.maybeTakeDecorators(decorators, node2.declaration, node2);
+ } else if (decorators) {
+ throw this.raise(Errors.UnsupportedDecoratorExport, node);
+ }
+ this.sawUnambiguousESM = true;
+ return this.finishNode(node2, "ExportNamedDeclaration");
+ }
+ if (this.eat(65)) {
+ const node2 = node;
+ const decl = this.parseExportDefaultExpression();
+ node2.declaration = decl;
+ if (decl.type === "ClassDeclaration") {
+ this.maybeTakeDecorators(decorators, decl, node2);
+ } else if (decorators) {
+ throw this.raise(Errors.UnsupportedDecoratorExport, node);
+ }
+ this.checkExport(node2, true, true);
+ this.sawUnambiguousESM = true;
+ return this.finishNode(node2, "ExportDefaultDeclaration");
+ }
+ throw this.unexpected(null, 5);
+ }
+ eatExportStar(node) {
+ return this.eat(55);
+ }
+ maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) {
+ if (maybeDefaultIdentifier || this.isExportDefaultSpecifier()) {
+ this.expectPlugin("exportDefaultFrom", maybeDefaultIdentifier == null ? void 0 : maybeDefaultIdentifier.loc.start);
+ const id = maybeDefaultIdentifier || this.parseIdentifier(true);
+ const specifier = this.startNodeAtNode(id);
+ specifier.exported = id;
+ node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")];
+ return true;
+ }
+ return false;
+ }
+ maybeParseExportNamespaceSpecifier(node) {
+ if (this.isContextual(93)) {
+ var _ref, _ref$specifiers;
+ (_ref$specifiers = (_ref = node).specifiers) != null ? _ref$specifiers : _ref.specifiers = [];
+ const specifier = this.startNodeAt(this.state.lastTokStartLoc);
+ this.next();
+ specifier.exported = this.parseModuleExportName();
+ node.specifiers.push(this.finishNode(specifier, "ExportNamespaceSpecifier"));
+ return true;
+ }
+ return false;
+ }
+ maybeParseExportNamedSpecifiers(node) {
+ if (this.match(5)) {
+ const node2 = node;
+ if (!node2.specifiers) node2.specifiers = [];
+ const isTypeExport = node2.exportKind === "type";
+ node2.specifiers.push(...this.parseExportSpecifiers(isTypeExport));
+ node2.source = null;
+ if (this.hasPlugin("importAssertions")) {
+ node2.assertions = [];
+ } else {
+ node2.attributes = [];
+ }
+ node2.declaration = null;
+ return true;
+ }
+ return false;
+ }
+ maybeParseExportDeclaration(node) {
+ if (this.shouldParseExportDeclaration()) {
+ node.specifiers = [];
+ node.source = null;
+ if (this.hasPlugin("importAssertions")) {
+ node.assertions = [];
+ } else {
+ node.attributes = [];
+ }
+ node.declaration = this.parseExportDeclaration(node);
+ return true;
+ }
+ return false;
+ }
+ isAsyncFunction() {
+ if (!this.isContextual(95)) return false;
+ const next = this.nextTokenInLineStart();
+ return this.isUnparsedContextual(next, "function");
+ }
+ parseExportDefaultExpression() {
+ const expr = this.startNode();
+ if (this.match(68)) {
+ this.next();
+ return this.parseFunction(expr, 1 | 4);
+ } else if (this.isAsyncFunction()) {
+ this.next();
+ this.next();
+ return this.parseFunction(expr, 1 | 4 | 8);
+ }
+ if (this.match(80)) {
+ return this.parseClass(expr, true, true);
+ }
+ if (this.match(26)) {
+ if (this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") === true) {
+ this.raise(Errors.DecoratorBeforeExport, this.state.startLoc);
+ }
+ return this.parseClass(this.maybeTakeDecorators(this.parseDecorators(false), this.startNode()), true, true);
+ }
+ if (this.match(75) || this.match(74) || this.isLet() || this.isUsing() || this.isAwaitUsing()) {
+ throw this.raise(Errors.UnsupportedDefaultExport, this.state.startLoc);
+ }
+ const res = this.parseMaybeAssignAllowIn();
+ this.semicolon();
+ return res;
+ }
+ parseExportDeclaration(node) {
+ if (this.match(80)) {
+ const node = this.parseClass(this.startNode(), true, false);
+ return node;
+ }
+ return this.parseStatementListItem();
+ }
+ isExportDefaultSpecifier() {
+ const {
+ type
+ } = this.state;
+ if (tokenIsIdentifier(type)) {
+ if (type === 95 && !this.state.containsEsc || type === 100) {
+ return false;
+ }
+ if ((type === 130 || type === 129) && !this.state.containsEsc) {
+ const next = this.nextTokenStart();
+ const nextChar = this.input.charCodeAt(next);
+ if (nextChar === 123 || this.chStartsBindingIdentifier(nextChar, next) && !this.input.startsWith("from", next)) {
+ this.expectOnePlugin(["flow", "typescript"]);
+ return false;
+ }
+ }
+ } else if (!this.match(65)) {
+ return false;
+ }
+ const next = this.nextTokenStart();
+ const hasFrom = this.isUnparsedContextual(next, "from");
+ if (this.input.charCodeAt(next) === 44 || tokenIsIdentifier(this.state.type) && hasFrom) {
+ return true;
+ }
+ if (this.match(65) && hasFrom) {
+ const nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4));
+ return nextAfterFrom === 34 || nextAfterFrom === 39;
+ }
+ return false;
+ }
+ parseExportFrom(node, expect) {
+ if (this.eatContextual(98)) {
+ node.source = this.parseImportSource();
+ this.checkExport(node);
+ this.maybeParseImportAttributes(node);
+ this.checkJSONModuleImport(node);
+ } else if (expect) {
+ this.unexpected();
+ }
+ this.semicolon();
+ }
+ shouldParseExportDeclaration() {
+ const {
+ type
+ } = this.state;
+ if (type === 26) {
+ this.expectOnePlugin(["decorators", "decorators-legacy"]);
+ if (this.hasPlugin("decorators")) {
+ if (this.getPluginOption("decorators", "decoratorsBeforeExport") === true) {
+ this.raise(Errors.DecoratorBeforeExport, this.state.startLoc);
+ }
+ return true;
+ }
+ }
+ if (this.isUsing()) {
+ this.raise(Errors.UsingDeclarationExport, this.state.startLoc);
+ return true;
+ }
+ if (this.isAwaitUsing()) {
+ this.raise(Errors.UsingDeclarationExport, this.state.startLoc);
+ return true;
+ }
+ return type === 74 || type === 75 || type === 68 || type === 80 || this.isLet() || this.isAsyncFunction();
+ }
+ checkExport(node, checkNames, isDefault, isFrom) {
+ if (checkNames) {
+ var _node$specifiers;
+ if (isDefault) {
+ this.checkDuplicateExports(node, "default");
+ if (this.hasPlugin("exportDefaultFrom")) {
+ var _declaration$extra;
+ const declaration = node.declaration;
+ if (declaration.type === "Identifier" && declaration.name === "from" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) {
+ this.raise(Errors.ExportDefaultFromAsIdentifier, declaration);
+ }
+ }
+ } else if ((_node$specifiers = node.specifiers) != null && _node$specifiers.length) {
+ for (const specifier of node.specifiers) {
+ const {
+ exported
+ } = specifier;
+ const exportName = exported.type === "Identifier" ? exported.name : exported.value;
+ this.checkDuplicateExports(specifier, exportName);
+ if (!isFrom && specifier.local) {
+ const {
+ local
+ } = specifier;
+ if (local.type !== "Identifier") {
+ this.raise(Errors.ExportBindingIsString, specifier, {
+ localName: local.value,
+ exportName
+ });
+ } else {
+ this.checkReservedWord(local.name, local.loc.start, true, false);
+ this.scope.checkLocalExport(local);
+ }
+ }
+ }
+ } else if (node.declaration) {
+ const decl = node.declaration;
+ if (decl.type === "FunctionDeclaration" || decl.type === "ClassDeclaration") {
+ const {
+ id
+ } = decl;
+ if (!id) throw new Error("Assertion failure");
+ this.checkDuplicateExports(node, id.name);
+ } else if (decl.type === "VariableDeclaration") {
+ for (const declaration of decl.declarations) {
+ this.checkDeclaration(declaration.id);
+ }
+ }
+ }
+ }
+ }
+ checkDeclaration(node) {
+ if (node.type === "Identifier") {
+ this.checkDuplicateExports(node, node.name);
+ } else if (node.type === "ObjectPattern") {
+ for (const prop of node.properties) {
+ this.checkDeclaration(prop);
+ }
+ } else if (node.type === "ArrayPattern") {
+ for (const elem of node.elements) {
+ if (elem) {
+ this.checkDeclaration(elem);
+ }
+ }
+ } else if (node.type === "ObjectProperty") {
+ this.checkDeclaration(node.value);
+ } else if (node.type === "RestElement") {
+ this.checkDeclaration(node.argument);
+ } else if (node.type === "AssignmentPattern") {
+ this.checkDeclaration(node.left);
+ }
+ }
+ checkDuplicateExports(node, exportName) {
+ if (this.exportedIdentifiers.has(exportName)) {
+ if (exportName === "default") {
+ this.raise(Errors.DuplicateDefaultExport, node);
+ } else {
+ this.raise(Errors.DuplicateExport, node, {
+ exportName
+ });
+ }
+ }
+ this.exportedIdentifiers.add(exportName);
+ }
+ parseExportSpecifiers(isInTypeExport) {
+ const nodes = [];
+ let first = true;
+ this.expect(5);
+ while (!this.eat(8)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(12);
+ if (this.eat(8)) break;
+ }
+ const isMaybeTypeOnly = this.isContextual(130);
+ const isString = this.match(134);
+ const node = this.startNode();
+ node.local = this.parseModuleExportName();
+ nodes.push(this.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly));
+ }
+ return nodes;
+ }
+ parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {
+ if (this.eatContextual(93)) {
+ node.exported = this.parseModuleExportName();
+ } else if (isString) {
+ node.exported = this.cloneStringLiteral(node.local);
+ } else if (!node.exported) {
+ node.exported = this.cloneIdentifier(node.local);
+ }
+ return this.finishNode(node, "ExportSpecifier");
+ }
+ parseModuleExportName() {
+ if (this.match(134)) {
+ const result = this.parseStringLiteral(this.state.value);
+ const surrogate = loneSurrogate.exec(result.value);
+ if (surrogate) {
+ this.raise(Errors.ModuleExportNameHasLoneSurrogate, result, {
+ surrogateCharCode: surrogate[0].charCodeAt(0)
+ });
+ }
+ return result;
+ }
+ return this.parseIdentifier(true);
+ }
+ isJSONModuleImport(node) {
+ if (node.assertions != null) {
+ return node.assertions.some(({
+ key,
+ value
+ }) => {
+ return value.value === "json" && (key.type === "Identifier" ? key.name === "type" : key.value === "type");
+ });
+ }
+ return false;
+ }
+ checkImportReflection(node) {
+ const {
+ specifiers
+ } = node;
+ const singleBindingType = specifiers.length === 1 ? specifiers[0].type : null;
+ if (node.phase === "source") {
+ if (singleBindingType !== "ImportDefaultSpecifier") {
+ this.raise(Errors.SourcePhaseImportRequiresDefault, specifiers[0].loc.start);
+ }
+ } else if (node.phase === "defer") {
+ if (singleBindingType !== "ImportNamespaceSpecifier") {
+ this.raise(Errors.DeferImportRequiresNamespace, specifiers[0].loc.start);
+ }
+ } else if (node.module) {
+ var _node$assertions;
+ if (singleBindingType !== "ImportDefaultSpecifier") {
+ this.raise(Errors.ImportReflectionNotBinding, specifiers[0].loc.start);
+ }
+ if (((_node$assertions = node.assertions) == null ? void 0 : _node$assertions.length) > 0) {
+ this.raise(Errors.ImportReflectionHasAssertion, specifiers[0].loc.start);
+ }
+ }
+ }
+ checkJSONModuleImport(node) {
+ if (this.isJSONModuleImport(node) && node.type !== "ExportAllDeclaration") {
+ const {
+ specifiers
+ } = node;
+ if (specifiers != null) {
+ const nonDefaultNamedSpecifier = specifiers.find(specifier => {
+ let imported;
+ if (specifier.type === "ExportSpecifier") {
+ imported = specifier.local;
+ } else if (specifier.type === "ImportSpecifier") {
+ imported = specifier.imported;
+ }
+ if (imported !== undefined) {
+ return imported.type === "Identifier" ? imported.name !== "default" : imported.value !== "default";
+ }
+ });
+ if (nonDefaultNamedSpecifier !== undefined) {
+ this.raise(Errors.ImportJSONBindingNotDefault, nonDefaultNamedSpecifier.loc.start);
+ }
+ }
+ }
+ }
+ isPotentialImportPhase(isExport) {
+ if (isExport) return false;
+ return this.isContextual(105) || this.isContextual(97) || this.isContextual(127);
+ }
+ applyImportPhase(node, isExport, phase, loc) {
+ if (isExport) {
+ return;
+ }
+ if (phase === "module") {
+ this.expectPlugin("importReflection", loc);
+ node.module = true;
+ } else if (this.hasPlugin("importReflection")) {
+ node.module = false;
+ }
+ if (phase === "source") {
+ this.expectPlugin("sourcePhaseImports", loc);
+ node.phase = "source";
+ } else if (phase === "defer") {
+ this.expectPlugin("deferredImportEvaluation", loc);
+ node.phase = "defer";
+ } else if (this.hasPlugin("sourcePhaseImports")) {
+ node.phase = null;
+ }
+ }
+ parseMaybeImportPhase(node, isExport) {
+ if (!this.isPotentialImportPhase(isExport)) {
+ this.applyImportPhase(node, isExport, null);
+ return null;
+ }
+ const phaseIdentifier = this.startNode();
+ const phaseIdentifierName = this.parseIdentifierName(true);
+ const {
+ type
+ } = this.state;
+ const isImportPhase = tokenIsKeywordOrIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12;
+ if (isImportPhase) {
+ this.applyImportPhase(node, isExport, phaseIdentifierName, phaseIdentifier.loc.start);
+ return null;
+ } else {
+ this.applyImportPhase(node, isExport, null);
+ return this.createIdentifier(phaseIdentifier, phaseIdentifierName);
+ }
+ }
+ isPrecedingIdImportPhase(phase) {
+ const {
+ type
+ } = this.state;
+ return tokenIsIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12;
+ }
+ parseImport(node) {
+ if (this.match(134)) {
+ return this.parseImportSourceAndAttributes(node);
+ }
+ return this.parseImportSpecifiersAndAfter(node, this.parseMaybeImportPhase(node, false));
+ }
+ parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier) {
+ node.specifiers = [];
+ const hasDefault = this.maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier);
+ const parseNext = !hasDefault || this.eat(12);
+ const hasStar = parseNext && this.maybeParseStarImportSpecifier(node);
+ if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node);
+ this.expectContextual(98);
+ return this.parseImportSourceAndAttributes(node);
+ }
+ parseImportSourceAndAttributes(node) {
+ var _node$specifiers2;
+ (_node$specifiers2 = node.specifiers) != null ? _node$specifiers2 : node.specifiers = [];
+ node.source = this.parseImportSource();
+ this.maybeParseImportAttributes(node);
+ this.checkImportReflection(node);
+ this.checkJSONModuleImport(node);
+ this.semicolon();
+ this.sawUnambiguousESM = true;
+ return this.finishNode(node, "ImportDeclaration");
+ }
+ parseImportSource() {
+ if (!this.match(134)) this.unexpected();
+ return this.parseExprAtom();
+ }
+ parseImportSpecifierLocal(node, specifier, type) {
+ specifier.local = this.parseIdentifier();
+ node.specifiers.push(this.finishImportSpecifier(specifier, type));
+ }
+ finishImportSpecifier(specifier, type, bindingType = 8201) {
+ this.checkLVal(specifier.local, {
+ type
+ }, bindingType);
+ return this.finishNode(specifier, type);
+ }
+ parseImportAttributes() {
+ this.expect(5);
+ const attrs = [];
+ const attrNames = new Set();
+ do {
+ if (this.match(8)) {
+ break;
+ }
+ const node = this.startNode();
+ const keyName = this.state.value;
+ if (attrNames.has(keyName)) {
+ this.raise(Errors.ModuleAttributesWithDuplicateKeys, this.state.startLoc, {
+ key: keyName
+ });
+ }
+ attrNames.add(keyName);
+ if (this.match(134)) {
+ node.key = this.parseStringLiteral(keyName);
+ } else {
+ node.key = this.parseIdentifier(true);
+ }
+ this.expect(14);
+ if (!this.match(134)) {
+ throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc);
+ }
+ node.value = this.parseStringLiteral(this.state.value);
+ attrs.push(this.finishNode(node, "ImportAttribute"));
+ } while (this.eat(12));
+ this.expect(8);
+ return attrs;
+ }
+ parseModuleAttributes() {
+ const attrs = [];
+ const attributes = new Set();
+ do {
+ const node = this.startNode();
+ node.key = this.parseIdentifier(true);
+ if (node.key.name !== "type") {
+ this.raise(Errors.ModuleAttributeDifferentFromType, node.key);
+ }
+ if (attributes.has(node.key.name)) {
+ this.raise(Errors.ModuleAttributesWithDuplicateKeys, node.key, {
+ key: node.key.name
+ });
+ }
+ attributes.add(node.key.name);
+ this.expect(14);
+ if (!this.match(134)) {
+ throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc);
+ }
+ node.value = this.parseStringLiteral(this.state.value);
+ attrs.push(this.finishNode(node, "ImportAttribute"));
+ } while (this.eat(12));
+ return attrs;
+ }
+ maybeParseImportAttributes(node) {
+ let attributes;
+ var useWith = false;
+ if (this.match(76)) {
+ if (this.hasPrecedingLineBreak() && this.lookaheadCharCode() === 40) {
+ return;
+ }
+ this.next();
+ if (this.hasPlugin("moduleAttributes")) {
+ attributes = this.parseModuleAttributes();
+ this.addExtra(node, "deprecatedWithLegacySyntax", true);
+ } else {
+ attributes = this.parseImportAttributes();
+ }
+ useWith = true;
+ } else if (this.isContextual(94) && !this.hasPrecedingLineBreak()) {
+ if (!this.hasPlugin("deprecatedImportAssert") && !this.hasPlugin("importAssertions")) {
+ this.raise(Errors.ImportAttributesUseAssert, this.state.startLoc);
+ }
+ if (!this.hasPlugin("importAssertions")) {
+ this.addExtra(node, "deprecatedAssertSyntax", true);
+ }
+ this.next();
+ attributes = this.parseImportAttributes();
+ } else {
+ attributes = [];
+ }
+ if (!useWith && this.hasPlugin("importAssertions")) {
+ node.assertions = attributes;
+ } else {
+ node.attributes = attributes;
+ }
+ }
+ maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier) {
+ if (maybeDefaultIdentifier) {
+ const specifier = this.startNodeAtNode(maybeDefaultIdentifier);
+ specifier.local = maybeDefaultIdentifier;
+ node.specifiers.push(this.finishImportSpecifier(specifier, "ImportDefaultSpecifier"));
+ return true;
+ } else if (tokenIsKeywordOrIdentifier(this.state.type)) {
+ this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier");
+ return true;
+ }
+ return false;
+ }
+ maybeParseStarImportSpecifier(node) {
+ if (this.match(55)) {
+ const specifier = this.startNode();
+ this.next();
+ this.expectContextual(93);
+ this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier");
+ return true;
+ }
+ return false;
+ }
+ parseNamedImportSpecifiers(node) {
+ let first = true;
+ this.expect(5);
+ while (!this.eat(8)) {
+ if (first) {
+ first = false;
+ } else {
+ if (this.eat(14)) {
+ throw this.raise(Errors.DestructureNamedImport, this.state.startLoc);
+ }
+ this.expect(12);
+ if (this.eat(8)) break;
+ }
+ const specifier = this.startNode();
+ const importedIsString = this.match(134);
+ const isMaybeTypeOnly = this.isContextual(130);
+ specifier.imported = this.parseModuleExportName();
+ const importSpecifier = this.parseImportSpecifier(specifier, importedIsString, node.importKind === "type" || node.importKind === "typeof", isMaybeTypeOnly, undefined);
+ node.specifiers.push(importSpecifier);
+ }
+ }
+ parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) {
+ if (this.eatContextual(93)) {
+ specifier.local = this.parseIdentifier();
+ } else {
+ const {
+ imported
+ } = specifier;
+ if (importedIsString) {
+ throw this.raise(Errors.ImportBindingIsString, specifier, {
+ importName: imported.value
+ });
+ }
+ this.checkReservedWord(imported.name, specifier.loc.start, true, true);
+ if (!specifier.local) {
+ specifier.local = this.cloneIdentifier(imported);
+ }
+ }
+ return this.finishImportSpecifier(specifier, "ImportSpecifier", bindingType);
+ }
+ isThisParam(param) {
+ return param.type === "Identifier" && param.name === "this";
+ }
+}
+class Parser extends StatementParser {
+ constructor(options, input, pluginsMap) {
+ const normalizedOptions = getOptions(options);
+ super(normalizedOptions, input);
+ this.options = normalizedOptions;
+ this.initializeScopes();
+ this.plugins = pluginsMap;
+ this.filename = normalizedOptions.sourceFilename;
+ this.startIndex = normalizedOptions.startIndex;
+ let optionFlags = 0;
+ if (normalizedOptions.allowAwaitOutsideFunction) {
+ optionFlags |= 1;
+ }
+ if (normalizedOptions.allowReturnOutsideFunction) {
+ optionFlags |= 2;
+ }
+ if (normalizedOptions.allowImportExportEverywhere) {
+ optionFlags |= 8;
+ }
+ if (normalizedOptions.allowSuperOutsideMethod) {
+ optionFlags |= 16;
+ }
+ if (normalizedOptions.allowUndeclaredExports) {
+ optionFlags |= 64;
+ }
+ if (normalizedOptions.allowNewTargetOutsideFunction) {
+ optionFlags |= 4;
+ }
+ if (normalizedOptions.allowYieldOutsideFunction) {
+ optionFlags |= 32;
+ }
+ if (normalizedOptions.ranges) {
+ optionFlags |= 128;
+ }
+ if (normalizedOptions.tokens) {
+ optionFlags |= 256;
+ }
+ if (normalizedOptions.createImportExpressions) {
+ optionFlags |= 512;
+ }
+ if (normalizedOptions.createParenthesizedExpressions) {
+ optionFlags |= 1024;
+ }
+ if (normalizedOptions.errorRecovery) {
+ optionFlags |= 2048;
+ }
+ if (normalizedOptions.attachComment) {
+ optionFlags |= 4096;
+ }
+ if (normalizedOptions.annexB) {
+ optionFlags |= 8192;
+ }
+ this.optionFlags = optionFlags;
+ }
+ getScopeHandler() {
+ return ScopeHandler;
+ }
+ parse() {
+ this.enterInitialScopes();
+ const file = this.startNode();
+ const program = this.startNode();
+ this.nextToken();
+ file.errors = null;
+ const result = this.parseTopLevel(file, program);
+ result.errors = this.state.errors;
+ result.comments.length = this.state.commentsLen;
+ return result;
+ }
+}
+function parse(input, options) {
+ var _options;
+ if (((_options = options) == null ? void 0 : _options.sourceType) === "unambiguous") {
+ options = Object.assign({}, options);
+ try {
+ options.sourceType = "module";
+ const parser = getParser(options, input);
+ const ast = parser.parse();
+ if (parser.sawUnambiguousESM) {
+ return ast;
+ }
+ if (parser.ambiguousScriptDifferentAst) {
+ try {
+ options.sourceType = "script";
+ return getParser(options, input).parse();
+ } catch (_unused) {}
+ } else {
+ ast.program.sourceType = "script";
+ }
+ return ast;
+ } catch (moduleError) {
+ try {
+ options.sourceType = "script";
+ return getParser(options, input).parse();
+ } catch (_unused2) {}
+ throw moduleError;
+ }
+ } else {
+ return getParser(options, input).parse();
+ }
+}
+function parseExpression(input, options) {
+ const parser = getParser(options, input);
+ if (parser.options.strictMode) {
+ parser.state.strict = true;
+ }
+ return parser.getExpression();
+}
+function generateExportedTokenTypes(internalTokenTypes) {
+ const tokenTypes = {};
+ for (const typeName of Object.keys(internalTokenTypes)) {
+ tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]);
+ }
+ return tokenTypes;
+}
+const tokTypes = generateExportedTokenTypes(tt);
+function getParser(options, input) {
+ let cls = Parser;
+ const pluginsMap = new Map();
+ if (options != null && options.plugins) {
+ for (const plugin of options.plugins) {
+ let name, opts;
+ if (typeof plugin === "string") {
+ name = plugin;
+ } else {
+ [name, opts] = plugin;
+ }
+ if (!pluginsMap.has(name)) {
+ pluginsMap.set(name, opts || {});
+ }
+ }
+ validatePlugins(pluginsMap);
+ cls = getParserClass(pluginsMap);
+ }
+ return new cls(options, input, pluginsMap);
+}
+const parserClassCache = new Map();
+function getParserClass(pluginsMap) {
+ const pluginList = [];
+ for (const name of mixinPluginNames) {
+ if (pluginsMap.has(name)) {
+ pluginList.push(name);
+ }
+ }
+ const key = pluginList.join("|");
+ let cls = parserClassCache.get(key);
+ if (!cls) {
+ cls = Parser;
+ for (const plugin of pluginList) {
+ cls = mixinPlugins[plugin](cls);
+ }
+ parserClassCache.set(key, cls);
+ }
+ return cls;
+}
+exports.parse = parse;
+exports.parseExpression = parseExpression;
+exports.tokTypes = tokTypes;
+//# sourceMappingURL=index.js.map
diff --git a/vanilla/node_modules/@babel/parser/lib/index.js.map b/vanilla/node_modules/@babel/parser/lib/index.js.map
new file mode 100644
index 0000000..0f73da4
--- /dev/null
+++ b/vanilla/node_modules/@babel/parser/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["../src/util/location.ts","../src/parse-error/module-errors.ts","../src/parse-error/to-node-description.ts","../src/parse-error/standard-errors.ts","../src/parse-error/strict-mode-errors.ts","../src/parse-error/parse-expression-errors.ts","../src/parse-error/pipeline-operator-errors.ts","../src/parse-error.ts","../src/options.ts","../src/plugins/estree.ts","../src/tokenizer/context.ts","../src/tokenizer/types.ts","../../babel-helper-validator-identifier/src/identifier.ts","../../babel-helper-validator-identifier/src/keyword.ts","../src/util/identifier.ts","../src/util/scope.ts","../src/plugins/flow/scope.ts","../src/plugins/flow/index.ts","../src/plugins/jsx/xhtml.ts","../src/util/whitespace.ts","../src/plugins/jsx/index.ts","../src/plugins/typescript/scope.ts","../src/util/production-parameter.ts","../src/parser/base.ts","../src/parser/comments.ts","../src/tokenizer/state.ts","../../babel-helper-string-parser/src/index.ts","../src/tokenizer/index.ts","../src/util/class-scope.ts","../src/util/expression-scope.ts","../src/parser/util.ts","../src/parser/node.ts","../src/parser/lval.ts","../src/plugins/typescript/index.ts","../src/plugins/placeholders.ts","../src/plugins/v8intrinsic.ts","../src/plugin-utils.ts","../src/parser/expression.ts","../src/parser/statement.ts","../src/parser/index.ts","../src/index.ts"],"sourcesContent":["export type Pos = {\n start: number;\n};\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nexport class Position {\n line: number;\n column: number;\n index: number;\n\n constructor(line: number, col: number, index: number) {\n this.line = line;\n this.column = col;\n this.index = index;\n }\n}\n\nexport class SourceLocation {\n start: Position;\n end: Position;\n filename: string | undefined;\n identifierName: string | undefined | null;\n\n constructor(start: Position, end?: Position) {\n this.start = start;\n // (may start as null, but initialized later)\n this.end = end!;\n }\n}\n\n/**\n * creates a new position with a non-zero column offset from the given position.\n * This function should be only be used when we create AST node out of the token\n * boundaries, such as TemplateElement ends before tt.templateNonTail. This\n * function does not skip whitespaces.\n */\nexport function createPositionWithColumnOffset(\n position: Position,\n columnOffset: number,\n) {\n const { line, column, index } = position;\n return new Position(line, column + columnOffset, index + columnOffset);\n}\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\n\nconst code = \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\";\n\nexport default {\n ImportMetaOutsideModule: {\n message: `import.meta may appear only with 'sourceType: \"module\"'`,\n code,\n },\n ImportOutsideModule: {\n message: `'import' and 'export' may appear only with 'sourceType: \"module\"'`,\n code,\n },\n} satisfies ParseErrorTemplates;\n","const NodeDescriptions = {\n ArrayPattern: \"array destructuring pattern\",\n AssignmentExpression: \"assignment expression\",\n AssignmentPattern: \"assignment expression\",\n ArrowFunctionExpression: \"arrow function expression\",\n ConditionalExpression: \"conditional expression\",\n CatchClause: \"catch clause\",\n ForOfStatement: \"for-of statement\",\n ForInStatement: \"for-in statement\",\n ForStatement: \"for-loop\",\n FormalParameters: \"function parameter list\",\n Identifier: \"identifier\",\n ImportSpecifier: \"import specifier\",\n ImportDefaultSpecifier: \"import default specifier\",\n ImportNamespaceSpecifier: \"import namespace specifier\",\n ObjectPattern: \"object destructuring pattern\",\n ParenthesizedExpression: \"parenthesized expression\",\n RestElement: \"rest element\",\n UpdateExpression: {\n true: \"prefix operation\",\n false: \"postfix operation\",\n },\n VariableDeclarator: \"variable declaration\",\n YieldExpression: \"yield expression\",\n};\n\ntype NodeTypesWithDescriptions = keyof Omit<\n typeof NodeDescriptions,\n \"UpdateExpression\"\n>;\n\ntype NodeWithDescription =\n | {\n type: \"UpdateExpression\";\n prefix: boolean;\n }\n | {\n type: NodeTypesWithDescriptions;\n };\n\nconst toNodeDescription = (node: NodeWithDescription) =>\n node.type === \"UpdateExpression\"\n ? NodeDescriptions.UpdateExpression[`${node.prefix}`]\n : NodeDescriptions[node.type];\n\nexport default toNodeDescription;\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\nimport toNodeDescription from \"./to-node-description.ts\";\n\nexport type LValAncestor =\n | { type: \"UpdateExpression\"; prefix: boolean }\n | {\n type:\n | \"ArrayPattern\"\n | \"AssignmentExpression\"\n | \"CatchClause\"\n | \"ForOfStatement\"\n | \"FormalParameters\"\n | \"ForInStatement\"\n | \"ForStatement\"\n | \"ImportSpecifier\"\n | \"ImportNamespaceSpecifier\"\n | \"ImportDefaultSpecifier\"\n | \"ParenthesizedExpression\"\n | \"ObjectPattern\"\n | \"RestElement\"\n | \"VariableDeclarator\";\n };\n\nexport default {\n AccessorIsGenerator: ({ kind }: { kind: \"get\" | \"set\" }) =>\n `A ${kind}ter cannot be a generator.`,\n ArgumentsInClass:\n \"'arguments' is only allowed in functions and class methods.\",\n AsyncFunctionInSingleStatementContext:\n \"Async functions can only be declared at the top level or inside a block.\",\n AwaitBindingIdentifier:\n \"Can not use 'await' as identifier inside an async function.\",\n AwaitBindingIdentifierInStaticBlock:\n \"Can not use 'await' as identifier inside a static block.\",\n AwaitExpressionFormalParameter:\n \"'await' is not allowed in async function parameters.\",\n AwaitUsingNotInAsyncContext:\n \"'await using' is only allowed within async functions and at the top levels of modules.\",\n AwaitNotInAsyncContext:\n \"'await' is only allowed within async functions and at the top levels of modules.\",\n BadGetterArity: \"A 'get' accessor must not have any formal parameters.\",\n BadSetterArity: \"A 'set' accessor must have exactly one formal parameter.\",\n BadSetterRestParameter:\n \"A 'set' accessor function argument must not be a rest parameter.\",\n ConstructorClassField: \"Classes may not have a field named 'constructor'.\",\n ConstructorClassPrivateField:\n \"Classes may not have a private field named '#constructor'.\",\n ConstructorIsAccessor: \"Class constructor may not be an accessor.\",\n ConstructorIsAsync: \"Constructor can't be an async function.\",\n ConstructorIsGenerator: \"Constructor can't be a generator.\",\n DeclarationMissingInitializer: ({\n kind,\n }: {\n kind: \"await using\" | \"const\" | \"destructuring\" | \"using\";\n }) => `Missing initializer in ${kind} declaration.`,\n DecoratorArgumentsOutsideParentheses:\n \"Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.\",\n DecoratorBeforeExport:\n \"Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.\",\n DecoratorsBeforeAfterExport:\n \"Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.\",\n DecoratorConstructor:\n \"Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?\",\n DecoratorExportClass:\n \"Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.\",\n DecoratorSemicolon: \"Decorators must not be followed by a semicolon.\",\n DecoratorStaticBlock: \"Decorators can't be used with a static block.\",\n DeferImportRequiresNamespace:\n 'Only `import defer * as x from \"./module\"` is valid.',\n DeletePrivateField: \"Deleting a private field is not allowed.\",\n DestructureNamedImport:\n \"ES2015 named imports do not destructure. Use another statement for destructuring after the import.\",\n DuplicateConstructor: \"Duplicate constructor in the same class.\",\n DuplicateDefaultExport: \"Only one default export allowed per module.\",\n DuplicateExport: ({ exportName }: { exportName: string }) =>\n `\\`${exportName}\\` has already been exported. Exported identifiers must be unique.`,\n DuplicateProto: \"Redefinition of __proto__ property.\",\n DuplicateRegExpFlags: \"Duplicate regular expression flag.\",\n ElementAfterRest: \"Rest element must be last element.\",\n EscapedCharNotAnIdentifier: \"Invalid Unicode escape.\",\n ExportBindingIsString: ({\n localName,\n exportName,\n }: {\n localName: string;\n exportName: string;\n }) =>\n `A string literal cannot be used as an exported binding without \\`from\\`.\\n- Did you mean \\`export { '${localName}' as '${exportName}' } from 'some-module'\\`?`,\n ExportDefaultFromAsIdentifier:\n \"'from' is not allowed as an identifier after 'export default'.\",\n\n ForInOfLoopInitializer: ({\n type,\n }: {\n type: \"ForInStatement\" | \"ForOfStatement\";\n }) =>\n `'${\n type === \"ForInStatement\" ? \"for-in\" : \"for-of\"\n }' loop variable declaration may not have an initializer.`,\n ForInUsing: \"For-in loop may not start with 'using' declaration.\",\n\n ForOfAsync: \"The left-hand side of a for-of loop may not be 'async'.\",\n ForOfLet: \"The left-hand side of a for-of loop may not start with 'let'.\",\n GeneratorInSingleStatementContext:\n \"Generators can only be declared at the top level or inside a block.\",\n\n IllegalBreakContinue: ({\n type,\n }: {\n type: \"BreakStatement\" | \"ContinueStatement\";\n }) => `Unsyntactic ${type === \"BreakStatement\" ? \"break\" : \"continue\"}.`,\n\n IllegalLanguageModeDirective:\n \"Illegal 'use strict' directive in function with non-simple parameter list.\",\n IllegalReturn: \"'return' outside of function.\",\n ImportAttributesUseAssert:\n \"The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedImportAssert` parser plugin to suppress this error.\",\n ImportBindingIsString: ({ importName }: { importName: string }) =>\n `A string literal cannot be used as an imported binding.\\n- Did you mean \\`import { \"${importName}\" as foo }\\`?`,\n ImportCallArity: `\\`import()\\` requires exactly one or two arguments.`,\n ImportCallNotNewExpression: \"Cannot use new with import(...).\",\n ImportCallSpreadArgument: \"`...` is not allowed in `import()`.\",\n ImportJSONBindingNotDefault:\n \"A JSON module can only be imported with `default`.\",\n ImportReflectionHasAssertion: \"`import module x` cannot have assertions.\",\n ImportReflectionNotBinding:\n 'Only `import module x from \"./module\"` is valid.',\n IncompatibleRegExpUVFlags:\n \"The 'u' and 'v' regular expression flags cannot be enabled at the same time.\",\n InvalidBigIntLiteral: \"Invalid BigIntLiteral.\",\n InvalidCodePoint: \"Code point out of bounds.\",\n InvalidCoverDiscardElement:\n \"'void' must be followed by an expression when not used in a binding position.\",\n InvalidCoverInitializedName: \"Invalid shorthand property initializer.\",\n InvalidDecimal: \"Invalid decimal.\",\n InvalidDigit: ({ radix }: { radix: number }) =>\n `Expected number in radix ${radix}.`,\n InvalidEscapeSequence: \"Bad character escape sequence.\",\n InvalidEscapeSequenceTemplate: \"Invalid escape sequence in template.\",\n InvalidEscapedReservedWord: ({ reservedWord }: { reservedWord: string }) =>\n `Escape sequence in keyword ${reservedWord}.`,\n InvalidIdentifier: ({ identifierName }: { identifierName: string }) =>\n `Invalid identifier ${identifierName}.`,\n InvalidLhs: ({ ancestor }: { ancestor: LValAncestor }) =>\n `Invalid left-hand side in ${toNodeDescription(ancestor)}.`,\n InvalidLhsBinding: ({ ancestor }: { ancestor: LValAncestor }) =>\n `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`,\n InvalidLhsOptionalChaining: ({ ancestor }: { ancestor: LValAncestor }) =>\n `Invalid optional chaining in the left-hand side of ${toNodeDescription(\n ancestor,\n )}.`,\n InvalidNumber: \"Invalid number.\",\n InvalidOrMissingExponent:\n \"Floating-point numbers require a valid exponent after the 'e'.\",\n InvalidOrUnexpectedToken: ({ unexpected }: { unexpected: string }) =>\n `Unexpected character '${unexpected}'.`,\n InvalidParenthesizedAssignment: \"Invalid parenthesized assignment pattern.\",\n InvalidPrivateFieldResolution: ({\n identifierName,\n }: {\n identifierName: string;\n }) => `Private name #${identifierName} is not defined.`,\n InvalidPropertyBindingPattern: \"Binding member expression.\",\n InvalidRecordProperty:\n \"Only properties and spread elements are allowed in record definitions.\",\n InvalidRestAssignmentPattern: \"Invalid rest operator's argument.\",\n LabelRedeclaration: ({ labelName }: { labelName: string }) =>\n `Label '${labelName}' is already declared.`,\n LetInLexicalBinding: \"'let' is disallowed as a lexically bound name.\",\n LineTerminatorBeforeArrow: \"No line break is allowed before '=>'.\",\n MalformedRegExpFlags: \"Invalid regular expression flag.\",\n MissingClassName: \"A class name is required.\",\n MissingEqInAssignment:\n \"Only '=' operator can be used for specifying default value.\",\n MissingSemicolon: \"Missing semicolon.\",\n MissingPlugin: ({ missingPlugin }: { missingPlugin: [string] }) =>\n `This experimental syntax requires enabling the parser plugin: ${missingPlugin\n .map(name => JSON.stringify(name))\n .join(\", \")}.`,\n // FIXME: Would be nice to make this \"missingPlugins\" instead.\n // Also, seems like we can drop the \"(s)\" from the message and just make it \"s\".\n MissingOneOfPlugins: ({ missingPlugin }: { missingPlugin: string[] }) =>\n `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin\n .map(name => JSON.stringify(name))\n .join(\", \")}.`,\n MissingUnicodeEscape: \"Expecting Unicode escape sequence \\\\uXXXX.\",\n MixingCoalesceWithLogical:\n \"Nullish coalescing operator(??) requires parens when mixing with logical operators.\",\n ModuleAttributeDifferentFromType:\n \"The only accepted module attribute is `type`.\",\n ModuleAttributeInvalidValue:\n \"Only string literals are allowed as module attribute values.\",\n ModuleAttributesWithDuplicateKeys: ({ key }: { key: string }) =>\n `Duplicate key \"${key}\" is not allowed in module attributes.`,\n ModuleExportNameHasLoneSurrogate: ({\n surrogateCharCode,\n }: {\n surrogateCharCode: number;\n }) =>\n `An export name cannot include a lone surrogate, found '\\\\u${surrogateCharCode.toString(\n 16,\n )}'.`,\n ModuleExportUndefined: ({ localName }: { localName: string }) =>\n `Export '${localName}' is not defined.`,\n MultipleDefaultsInSwitch: \"Multiple default clauses.\",\n NewlineAfterThrow: \"Illegal newline after throw.\",\n NoCatchOrFinally: \"Missing catch or finally clause.\",\n NumberIdentifier: \"Identifier directly after number.\",\n NumericSeparatorInEscapeSequence:\n \"Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.\",\n ObsoleteAwaitStar:\n \"'await*' has been removed from the async functions proposal. Use Promise.all() instead.\",\n OptionalChainingNoNew:\n \"Constructors in/after an Optional Chain are not allowed.\",\n OptionalChainingNoTemplate:\n \"Tagged Template Literals are not allowed in optionalChain.\",\n OverrideOnConstructor:\n \"'override' modifier cannot appear on a constructor declaration.\",\n ParamDupe: \"Argument name clash.\",\n PatternHasAccessor: \"Object pattern can't contain getter or setter.\",\n PatternHasMethod: \"Object pattern can't contain methods.\",\n PrivateInExpectedIn: ({ identifierName }: { identifierName: string }) =>\n `Private names are only allowed in property accesses (\\`obj.#${identifierName}\\`) or in \\`in\\` expressions (\\`#${identifierName} in obj\\`).`,\n PrivateNameRedeclaration: ({ identifierName }: { identifierName: string }) =>\n `Duplicate private name #${identifierName}.`,\n RecordExpressionBarIncorrectEndSyntaxType:\n \"Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n RecordExpressionBarIncorrectStartSyntaxType:\n \"Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n RecordExpressionHashIncorrectStartSyntaxType:\n \"Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n RecordNoProto: \"'__proto__' is not allowed in Record expressions.\",\n RestTrailingComma: \"Unexpected trailing comma after rest element.\",\n SloppyFunction:\n \"In non-strict mode code, functions can only be declared at top level or inside a block.\",\n SloppyFunctionAnnexB:\n \"In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.\",\n SourcePhaseImportRequiresDefault:\n 'Only `import source x from \"./module\"` is valid.',\n StaticPrototype: \"Classes may not have static property named prototype.\",\n SuperNotAllowed:\n \"`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?\",\n SuperPrivateField: \"Private fields can't be accessed on super.\",\n TrailingDecorator: \"Decorators must be attached to a class element.\",\n TupleExpressionBarIncorrectEndSyntaxType:\n \"Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n TupleExpressionBarIncorrectStartSyntaxType:\n \"Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n TupleExpressionHashIncorrectStartSyntaxType:\n \"Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n UnexpectedArgumentPlaceholder: \"Unexpected argument placeholder.\",\n UnexpectedAwaitAfterPipelineBody:\n 'Unexpected \"await\" after pipeline body; await must have parentheses in minimal proposal.',\n UnexpectedDigitAfterHash: \"Unexpected digit after hash token.\",\n UnexpectedImportExport:\n \"'import' and 'export' may only appear at the top level.\",\n UnexpectedKeyword: ({ keyword }: { keyword: string }) =>\n `Unexpected keyword '${keyword}'.`,\n UnexpectedLeadingDecorator:\n \"Leading decorators must be attached to a class declaration.\",\n UnexpectedLexicalDeclaration:\n \"Lexical declaration cannot appear in a single-statement context.\",\n UnexpectedNewTarget:\n \"`new.target` can only be used in functions or class properties.\",\n UnexpectedNumericSeparator:\n \"A numeric separator is only allowed between two digits.\",\n UnexpectedPrivateField: \"Unexpected private name.\",\n UnexpectedReservedWord: ({ reservedWord }: { reservedWord: string }) =>\n `Unexpected reserved word '${reservedWord}'.`,\n UnexpectedSuper: \"'super' is only allowed in object methods and classes.\",\n UnexpectedToken: ({\n expected,\n unexpected,\n }: {\n expected?: string | null;\n unexpected?: string | null;\n }) =>\n `Unexpected token${unexpected ? ` '${unexpected}'.` : \"\"}${\n expected ? `, expected \"${expected}\"` : \"\"\n }`,\n UnexpectedTokenUnaryExponentiation:\n \"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.\",\n UnexpectedUsingDeclaration:\n \"Using declaration cannot appear in the top level when source type is `script` or in the bare case statement.\",\n UnexpectedVoidPattern: \"Unexpected void binding.\",\n UnsupportedBind: \"Binding should be performed on object property.\",\n UnsupportedDecoratorExport:\n \"A decorated export must export a class declaration.\",\n UnsupportedDefaultExport:\n \"Only expressions, functions or classes are allowed as the `default` export.\",\n UnsupportedImport:\n \"`import` can only be used in `import()` or `import.meta`.\",\n UnsupportedMetaProperty: ({\n target,\n onlyValidPropertyName,\n }: {\n target: string;\n onlyValidPropertyName: string;\n }) =>\n `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`,\n UnsupportedParameterDecorator:\n \"Decorators cannot be used to decorate parameters.\",\n UnsupportedPropertyDecorator:\n \"Decorators cannot be used to decorate object literal properties.\",\n UnsupportedSuper:\n \"'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).\",\n UnterminatedComment: \"Unterminated comment.\",\n UnterminatedRegExp: \"Unterminated regular expression.\",\n UnterminatedString: \"Unterminated string constant.\",\n UnterminatedTemplate: \"Unterminated template.\",\n UsingDeclarationExport: \"Using declaration cannot be exported.\",\n UsingDeclarationHasBindingPattern:\n \"Using declaration cannot have destructuring patterns.\",\n VarRedeclaration: ({ identifierName }: { identifierName: string }) =>\n `Identifier '${identifierName}' has already been declared.`,\n VoidPatternCatchClauseParam:\n \"A void binding can not be the catch clause parameter. Use `try { ... } catch { ... }` if you want to discard the caught error.\",\n VoidPatternInitializer: \"A void binding may not have an initializer.\",\n YieldBindingIdentifier:\n \"Can not use 'yield' as identifier inside a generator.\",\n YieldInParameter: \"Yield expression is not allowed in formal parameters.\",\n YieldNotInGeneratorFunction:\n \"'yield' is only allowed within generator functions.\",\n ZeroDigitNumericSeparator:\n \"Numeric separator can not be used after leading 0.\",\n} satisfies ParseErrorTemplates;\n","import type { ParseErrorTemplates } from \"../parse-error\";\n\nexport default {\n StrictDelete: \"Deleting local variable in strict mode.\",\n\n // `referenceName` is the StringValue[1] of an IdentifierReference[2], which\n // is represented as just an `Identifier`[3] in the Babel AST.\n // 1. https://tc39.es/ecma262/#sec-static-semantics-stringvalue\n // 2. https://tc39.es/ecma262/#prod-IdentifierReference\n // 3. https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md#identifier\n StrictEvalArguments: ({ referenceName }: { referenceName: string }) =>\n `Assigning to '${referenceName}' in strict mode.`,\n\n // `bindingName` is the StringValue[1] of a BindingIdentifier[2], which is\n // represented as just an `Identifier`[3] in the Babel AST.\n // 1. https://tc39.es/ecma262/#sec-static-semantics-stringvalue\n // 2. https://tc39.es/ecma262/#prod-BindingIdentifier\n // 3. https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md#identifier\n StrictEvalArgumentsBinding: ({ bindingName }: { bindingName: string }) =>\n `Binding '${bindingName}' in strict mode.`,\n\n StrictFunction:\n \"In strict mode code, functions can only be declared at top level or inside a block.\",\n\n StrictNumericEscape: \"The only valid numeric escape in strict mode is '\\\\0'.\",\n\n StrictOctalLiteral: \"Legacy octal literals are not allowed in strict mode.\",\n\n StrictWith: \"'with' in strict mode.\",\n} satisfies ParseErrorTemplates;\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\n\nexport default {\n ParseExpressionEmptyInput:\n \"Unexpected parseExpression() input: The input is empty or contains only comments.\",\n ParseExpressionExpectsEOF: ({ unexpected }: { unexpected: number }) =>\n `Unexpected parseExpression() input: The input should contain exactly one expression, but the first expression is followed by the unexpected character \\`${String.fromCodePoint(unexpected)}\\`.`,\n} satisfies ParseErrorTemplates;\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\nimport toNodeDescription from \"./to-node-description.ts\";\n\nexport const UnparenthesizedPipeBodyDescriptions = new Set([\n \"ArrowFunctionExpression\",\n \"AssignmentExpression\",\n \"ConditionalExpression\",\n \"YieldExpression\",\n] as const);\n\ntype GetSetMemberType<T extends Set<any>> =\n T extends Set<infer M> ? M : unknown;\n\nexport type UnparenthesizedPipeBodyTypes = GetSetMemberType<\n typeof UnparenthesizedPipeBodyDescriptions\n>;\n\nexport default {\n // This error is only used by the smart-mix proposal\n PipeBodyIsTighter:\n \"Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.\",\n PipeTopicRequiresHackPipes: process.env.BABEL_8_BREAKING\n ? 'Topic references are only supported when using the `\"proposal\": \"hack\"` version of the pipeline proposal.'\n : 'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n PipeTopicUnbound:\n \"Topic reference is unbound; it must be inside a pipe body.\",\n PipeTopicUnconfiguredToken: ({ token }: { token: string }) =>\n `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { \"proposal\": \"hack\", \"topicToken\": \"${token}\" }.`,\n PipeTopicUnused:\n \"Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.\",\n PipeUnparenthesizedBody: ({ type }: { type: UnparenthesizedPipeBodyTypes }) =>\n `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({\n type,\n })}; please wrap it in parentheses.`,\n\n ...(process.env.BABEL_8_BREAKING\n ? {}\n : {\n // Messages whose codes start with “Pipeline” or “PrimaryTopic”\n // are retained for backwards compatibility\n // with the deprecated smart-mix pipe operator proposal plugin.\n // They are subject to removal in a future major version.\n PipelineBodyNoArrow:\n 'Unexpected arrow \"=>\" after pipeline body; arrow function in pipeline body must be parenthesized.',\n PipelineBodySequenceExpression:\n \"Pipeline body may not be a comma-separated sequence expression.\",\n PipelineHeadSequenceExpression:\n \"Pipeline head should not be a comma-separated sequence expression.\",\n PipelineTopicUnused:\n \"Pipeline is in topic style but does not use topic reference.\",\n PrimaryTopicNotAllowed:\n \"Topic reference was used in a lexical context without topic binding.\",\n PrimaryTopicRequiresSmartPipeline:\n 'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n }),\n} satisfies ParseErrorTemplates;\n","import { Position } from \"./util/location.ts\";\n\ntype SyntaxPlugin =\n | \"flow\"\n | \"typescript\"\n | \"jsx\"\n | \"pipelineOperator\"\n | \"placeholders\";\n\ntype ParseErrorCode =\n | \"BABEL_PARSER_SYNTAX_ERROR\"\n | \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\";\n\n// Babel uses \"normal\" SyntaxErrors for it's errors, but adds some extra\n// functionality. This functionality is defined in the\n// `ParseErrorSpecification` interface below. We may choose to change to someday\n// give our errors their own full-blown class, but until then this allow us to\n// keep all the desirable properties of SyntaxErrors (like their name in stack\n// traces, etc.), and also allows us to punt on any publicly facing\n// class-hierarchy decisions until Babel 8.\ninterface ParseErrorSpecification<ErrorDetails> {\n // Look, these *could* be readonly, but then Flow complains when we initially\n // set them. We could do a whole dance and make a special interface that's not\n // readonly for when we create the error, then cast it to the readonly\n // interface for public use, but the previous implementation didn't have them\n // as readonly, so let's just not worry about it for now.\n code: ParseErrorCode;\n reasonCode: string;\n syntaxPlugin?: SyntaxPlugin;\n missingPlugin?: string | string[];\n loc: Position;\n details: ErrorDetails;\n\n // We should consider removing this as it now just contains the same\n // information as `loc.index`.\n pos: number;\n}\n\nexport type ParseError<ErrorDetails> = SyntaxError &\n ParseErrorSpecification<ErrorDetails>;\n\n// By `ParseErrorConstructor`, we mean something like the new-less style\n// `ErrorConstructor`[1], since `ParseError`'s are not themselves actually\n// separate classes from `SyntaxError`'s.\n//\n// 1. https://github.com/microsoft/TypeScript/blob/v4.5.5/lib/lib.es5.d.ts#L1027\nexport type ParseErrorConstructor<ErrorDetails> = (\n loc: Position,\n details: ErrorDetails,\n) => ParseError<ErrorDetails>;\n\ntype ToMessage<ErrorDetails> = (self: ErrorDetails) => string;\n\ntype ParseErrorCredentials<ErrorDetails> = {\n code: string;\n reasonCode: string;\n syntaxPlugin?: SyntaxPlugin;\n toMessage: ToMessage<ErrorDetails>;\n};\n\nfunction defineHidden(obj: object, key: string, value: unknown) {\n Object.defineProperty(obj, key, {\n enumerable: false,\n configurable: true,\n value,\n });\n}\n\nfunction toParseErrorConstructor<ErrorDetails extends object>({\n toMessage,\n code,\n reasonCode,\n syntaxPlugin,\n}: ParseErrorCredentials<ErrorDetails>): ParseErrorConstructor<ErrorDetails> {\n const hasMissingPlugin =\n reasonCode === \"MissingPlugin\" || reasonCode === \"MissingOneOfPlugins\";\n\n if (!process.env.BABEL_8_BREAKING) {\n const oldReasonCodes: Record<string, string> = {\n AccessorCannotDeclareThisParameter: \"AccesorCannotDeclareThisParameter\",\n AccessorCannotHaveTypeParameters: \"AccesorCannotHaveTypeParameters\",\n ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference:\n \"ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference\",\n SetAccessorCannotHaveOptionalParameter:\n \"SetAccesorCannotHaveOptionalParameter\",\n SetAccessorCannotHaveRestParameter: \"SetAccesorCannotHaveRestParameter\",\n SetAccessorCannotHaveReturnType: \"SetAccesorCannotHaveReturnType\",\n };\n if (oldReasonCodes[reasonCode]) {\n reasonCode = oldReasonCodes[reasonCode];\n }\n }\n\n return function constructor(loc: Position, details: ErrorDetails) {\n const error: ParseError<ErrorDetails> = new SyntaxError() as any;\n\n error.code = code as ParseErrorCode;\n error.reasonCode = reasonCode;\n error.loc = loc;\n error.pos = loc.index;\n\n error.syntaxPlugin = syntaxPlugin;\n if (hasMissingPlugin) {\n error.missingPlugin = (details as any).missingPlugin;\n }\n\n type Overrides = {\n loc?: Position;\n details?: ErrorDetails;\n };\n defineHidden(error, \"clone\", function clone(overrides: Overrides = {}) {\n const { line, column, index } = overrides.loc ?? loc;\n return constructor(new Position(line, column, index), {\n ...details,\n ...overrides.details,\n });\n });\n\n defineHidden(error, \"details\", details);\n\n Object.defineProperty(error, \"message\", {\n configurable: true,\n get(this: ParseError<ErrorDetails>): string {\n const message = `${toMessage(details)} (${loc.line}:${loc.column})`;\n this.message = message;\n return message;\n },\n set(value: string) {\n Object.defineProperty(this, \"message\", { value, writable: true });\n },\n });\n\n return error;\n };\n}\n\ntype ParseErrorTemplate =\n | string\n | ToMessage<any>\n | { message: string | ToMessage<any>; code?: ParseErrorCode };\n\nexport type ParseErrorTemplates = Record<string, ParseErrorTemplate>;\n\n// This is the templated form of `ParseErrorEnum`.\n//\n// Note: We could factor out the return type calculation into something like\n// `ParseErrorConstructor<T extends ParseErrorTemplates>`, and then we could\n// reuse it in the non-templated form of `ParseErrorEnum`, but TypeScript\n// doesn't seem to drill down that far when showing you the computed type of\n// an object in an editor, so we'll leave it inlined for now.\nexport function ParseErrorEnum(a: TemplateStringsArray): <\n T extends ParseErrorTemplates,\n>(\n parseErrorTemplates: T,\n) => {\n [K in keyof T]: ParseErrorConstructor<\n T[K] extends { message: string | ToMessage<any> }\n ? T[K][\"message\"] extends ToMessage<any>\n ? Parameters<T[K][\"message\"]>[0]\n : object\n : T[K] extends ToMessage<any>\n ? Parameters<T[K]>[0]\n : object\n >;\n};\n\nexport function ParseErrorEnum<T extends ParseErrorTemplates>(\n parseErrorTemplates: T,\n syntaxPlugin?: SyntaxPlugin,\n): {\n [K in keyof T]: ParseErrorConstructor<\n T[K] extends { message: string | ToMessage<any> }\n ? T[K][\"message\"] extends ToMessage<any>\n ? Parameters<T[K][\"message\"]>[0]\n : object\n : T[K] extends ToMessage<any>\n ? Parameters<T[K]>[0]\n : object\n >;\n};\n\n// You call `ParseErrorEnum` with a mapping from `ReasonCode`'s to either:\n//\n// 1. a static error message,\n// 2. `toMessage` functions that define additional necessary `details` needed by\n// the `ParseError`, or\n// 3. Objects that contain a `message` of one of the above and overridden `code`\n// and/or `reasonCode`:\n//\n// ParseErrorEnum `optionalSyntaxPlugin` ({\n// ErrorWithStaticMessage: \"message\",\n// ErrorWithDynamicMessage: ({ type } : { type: string }) => `${type}`),\n// ErrorWithOverriddenCodeAndOrReasonCode: {\n// message: ({ type }: { type: string }) => `${type}`),\n// code: \"AN_ERROR_CODE\",\n// ...(BABEL_8_BREAKING ? { } : { reasonCode: \"CustomErrorReasonCode\" })\n// }\n// });\n//\nexport function ParseErrorEnum(\n argument: TemplateStringsArray | ParseErrorTemplates,\n syntaxPlugin?: SyntaxPlugin,\n) {\n // If the first parameter is an array, that means we were called with a tagged\n // template literal. Extract the syntaxPlugin from this, and call again in\n // the \"normalized\" form.\n if (Array.isArray(argument)) {\n return (parseErrorTemplates: ParseErrorTemplates) =>\n ParseErrorEnum(parseErrorTemplates, argument[0]);\n }\n\n const ParseErrorConstructors = {} as Record<\n string,\n ParseErrorConstructor<unknown>\n >;\n\n for (const reasonCode of Object.keys(argument)) {\n const template = (argument as ParseErrorTemplates)[reasonCode];\n const { message, ...rest } =\n typeof template === \"string\"\n ? { message: () => template }\n : typeof template === \"function\"\n ? { message: template }\n : template;\n const toMessage = typeof message === \"string\" ? () => message : message;\n\n ParseErrorConstructors[reasonCode] = toParseErrorConstructor({\n code: \"BABEL_PARSER_SYNTAX_ERROR\",\n reasonCode,\n toMessage,\n ...(syntaxPlugin ? { syntaxPlugin } : {}),\n ...rest,\n });\n }\n\n return ParseErrorConstructors;\n}\n\nimport ModuleErrors from \"./parse-error/module-errors.ts\";\nimport StandardErrors from \"./parse-error/standard-errors.ts\";\nimport StrictModeErrors from \"./parse-error/strict-mode-errors.ts\";\nimport ParseExpressionErrors from \"./parse-error/parse-expression-errors.ts\";\nimport PipelineOperatorErrors from \"./parse-error/pipeline-operator-errors.ts\";\n\nexport const Errors = {\n ...ParseErrorEnum(ModuleErrors),\n ...ParseErrorEnum(StandardErrors),\n ...ParseErrorEnum(StrictModeErrors),\n ...ParseErrorEnum(ParseExpressionErrors),\n ...ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors),\n};\n\nexport type { LValAncestor } from \"./parse-error/standard-errors.ts\";\n","import type { Plugin } from \"./plugin-utils.ts\";\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nexport type SourceType = \"script\" | \"commonjs\" | \"module\" | \"unambiguous\";\n\nexport interface Options {\n /**\n * By default, import and export declarations can only appear at a program's top level.\n * Setting this option to true allows them anywhere where a statement is allowed.\n */\n allowImportExportEverywhere?: boolean;\n\n /**\n * By default, await use is not allowed outside of an async function.\n * Set this to true to accept such code.\n */\n allowAwaitOutsideFunction?: boolean;\n\n /**\n * By default, a return statement at the top level raises an error.\n * Set this to true to accept such code.\n */\n allowReturnOutsideFunction?: boolean;\n\n /**\n * By default, new.target use is not allowed outside of a function or class.\n * Set this to true to accept such code.\n */\n allowNewTargetOutsideFunction?: boolean;\n\n /**\n * By default, super calls are not allowed outside of a method.\n * Set this to true to accept such code.\n */\n allowSuperOutsideMethod?: boolean;\n\n /**\n * By default, exported identifiers must refer to a declared variable.\n * Set this to true to allow export statements to reference undeclared variables.\n */\n allowUndeclaredExports?: boolean;\n\n /**\n * By default, yield use is not allowed outside of a generator function.\n * Set this to true to accept such code.\n */\n\n allowYieldOutsideFunction?: boolean;\n\n /**\n * By default, Babel parser JavaScript code according to Annex B syntax.\n * Set this to `false` to disable such behavior.\n */\n annexB?: boolean;\n\n /**\n * By default, Babel attaches comments to adjacent AST nodes.\n * When this option is set to false, comments are not attached.\n * It can provide up to 30% performance improvement when the input code has many comments.\n * @babel/eslint-parser will set it for you.\n * It is not recommended to use attachComment: false with Babel transform,\n * as doing so removes all the comments in output code, and renders annotations such as\n * /* istanbul ignore next *\\/ nonfunctional.\n */\n attachComment?: boolean;\n\n /**\n * By default, Babel always throws an error when it finds some invalid code.\n * When this option is set to true, it will store the parsing error and\n * try to continue parsing the invalid input file.\n */\n errorRecovery?: boolean;\n\n /**\n * Indicate the mode the code should be parsed in.\n * Can be one of \"script\", \"commonjs\", \"module\", or \"unambiguous\". Defaults to \"script\".\n * \"unambiguous\" will make @babel/parser attempt to guess, based on the presence\n * of ES6 import or export statements.\n * Files with ES6 imports and exports are considered \"module\" and are otherwise \"script\".\n *\n * Use \"commonjs\" to parse code that is intended to be run in a CommonJS environment such as Node.js.\n */\n sourceType?: SourceType;\n\n /**\n * Correlate output AST nodes with their source filename.\n * Useful when generating code and source maps from the ASTs of multiple input files.\n */\n sourceFilename?: string;\n\n /**\n * By default, all source indexes start from 0.\n * You can provide a start index to alternatively start with.\n * Useful for integration with other source tools.\n */\n startIndex?: number;\n\n /**\n * By default, the first line of code parsed is treated as line 1.\n * You can provide a line number to alternatively start with.\n * Useful for integration with other source tools.\n */\n startLine?: number;\n\n /**\n * By default, the parsed code is treated as if it starts from line 1, column 0.\n * You can provide a column number to alternatively start with.\n * Useful for integration with other source tools.\n */\n startColumn?: number;\n\n /**\n * Array containing the plugins that you want to enable.\n */\n plugins?: Plugin[];\n\n /**\n * Should the parser work in strict mode.\n * Defaults to true if sourceType === 'module'. Otherwise, false.\n */\n strictMode?: boolean;\n\n /**\n * Adds a ranges property to each node: [node.start, node.end]\n */\n ranges?: boolean;\n\n /**\n * Adds all parsed tokens to a tokens property on the File node.\n */\n tokens?: boolean;\n\n /**\n * By default, the parser adds information about parentheses by setting\n * `extra.parenthesized` to `true` as needed.\n * When this option is `true` the parser creates `ParenthesizedExpression`\n * AST nodes instead of using the `extra` property.\n */\n createParenthesizedExpressions?: boolean;\n\n /**\n * The default is false in Babel 7 and true in Babel 8\n * Set this to true to parse it as an `ImportExpression` node.\n * Otherwise `import(foo)` is parsed as `CallExpression(Import, [Identifier(foo)])`.\n */\n createImportExpressions?: boolean;\n}\n\nexport const enum OptionFlags {\n AllowAwaitOutsideFunction = 1 << 0,\n AllowReturnOutsideFunction = 1 << 1,\n AllowNewTargetOutsideFunction = 1 << 2,\n AllowImportExportEverywhere = 1 << 3,\n AllowSuperOutsideMethod = 1 << 4,\n AllowYieldOutsideFunction = 1 << 5,\n AllowUndeclaredExports = 1 << 6,\n Ranges = 1 << 7,\n Tokens = 1 << 8,\n CreateImportExpressions = 1 << 9,\n CreateParenthesizedExpressions = 1 << 10,\n ErrorRecovery = 1 << 11,\n AttachComment = 1 << 12,\n AnnexB = 1 << 13,\n}\n\ntype KeepOptionalKeys = \"sourceFilename\" | \"strictMode\";\nexport type OptionsWithDefaults = Omit<Required<Options>, KeepOptionalKeys> &\n Pick<Options, KeepOptionalKeys>;\n\nfunction createDefaultOptions(): OptionsWithDefaults {\n return {\n // Source type (\"script\" or \"module\") for different semantics\n sourceType: \"script\",\n // Source filename.\n sourceFilename: undefined,\n // Index (0-based) from which to start counting source. Useful for\n // integration with other tools.\n startIndex: 0,\n // Column (0-based) from which to start counting source. Useful for\n // integration with other tools.\n startColumn: 0,\n // Line (1-based) from which to start counting source. Useful for\n // integration with other tools.\n startLine: 1,\n // When enabled, await at the top level is not considered an\n // error.\n allowAwaitOutsideFunction: false,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, new.target outside a function or class is not\n // considered an error.\n allowNewTargetOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program.\n allowImportExportEverywhere: false,\n // When enabled, super outside a method is not considered an error.\n allowSuperOutsideMethod: false,\n // When enabled, export statements can reference undeclared variables.\n allowUndeclaredExports: false,\n allowYieldOutsideFunction: false,\n // An array of plugins to enable\n plugins: [],\n // TODO\n strictMode: undefined,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // Adds all parsed tokens to a `tokens` property on the `File` node\n tokens: false,\n // Whether to create ImportExpression AST nodes (if false\n // `import(foo)` will be parsed as CallExpression(Import, [Identifier(foo)])\n createImportExpressions: process.env.BABEL_8_BREAKING ? true : false,\n // Whether to create ParenthesizedExpression AST nodes (if false\n // the parser sets extra.parenthesized on the expression nodes instead).\n createParenthesizedExpressions: false,\n // When enabled, errors are attached to the AST instead of being directly thrown.\n // Some errors will still throw, because @babel/parser can't always recover.\n errorRecovery: false,\n // When enabled, comments will be attached to adjacent AST nodes as one of\n // `leadingComments`, `trailingComments` and `innerComments`. The comment attachment\n // is vital to preserve comments after transform. If you don't print AST back,\n // consider set this option to `false` for performance\n attachComment: true,\n // When enabled, the parser will support Annex B syntax.\n // https://tc39.es/ecma262/#sec-additional-ecmascript-features-for-web-browsers\n annexB: true,\n };\n}\n\n// Interpret and default an options object\n\nexport function getOptions(opts?: Options | null): OptionsWithDefaults {\n // https://github.com/babel/babel/pull/16918\n // `options` is accessed frequently, please make sure it is a fast object.\n // `%ToFastProperties` can make it a fast object, but the performance is the same as the slow object.\n const options: any = createDefaultOptions();\n\n if (opts == null) {\n return options;\n }\n if (opts.annexB != null && opts.annexB !== false) {\n throw new Error(\"The `annexB` option can only be set to `false`.\");\n }\n\n for (const key of Object.keys(options) as (keyof Options)[]) {\n if (opts[key] != null) options[key] = opts[key];\n }\n\n if (options.startLine === 1) {\n if (opts.startIndex == null && options.startColumn > 0) {\n options.startIndex = options.startColumn;\n } else if (opts.startColumn == null && options.startIndex > 0) {\n options.startColumn = options.startIndex;\n }\n } else if (opts.startColumn == null || opts.startIndex == null) {\n if (opts.startIndex != null || process.env.BABEL_8_BREAKING) {\n throw new Error(\n \"With a `startLine > 1` you must also specify `startIndex` and `startColumn`.\",\n );\n }\n }\n\n if (options.sourceType === \"commonjs\") {\n if (opts.allowAwaitOutsideFunction != null) {\n throw new Error(\n \"The `allowAwaitOutsideFunction` option cannot be used with `sourceType: 'commonjs'`.\",\n );\n }\n if (opts.allowReturnOutsideFunction != null) {\n throw new Error(\n \"`sourceType: 'commonjs'` implies `allowReturnOutsideFunction: true`, please remove the `allowReturnOutsideFunction` option or use `sourceType: 'script'`.\",\n );\n }\n if (opts.allowNewTargetOutsideFunction != null) {\n throw new Error(\n \"`sourceType: 'commonjs'` implies `allowNewTargetOutsideFunction: true`, please remove the `allowNewTargetOutsideFunction` option or use `sourceType: 'script'`.\",\n );\n }\n }\n\n return options;\n}\n","import type { TokenType } from \"../tokenizer/types.ts\";\nimport type Parser from \"../parser/index.ts\";\nimport type * as N from \"../types.ts\";\nimport type { Node as NodeType, NodeBase } from \"../types.ts\";\nimport type { Position } from \"../util/location.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport type { Undone } from \"../parser/node.ts\";\nimport type { BindingFlag } from \"../util/scopeflags.ts\";\nimport { OptionFlags } from \"../options.ts\";\nimport type { ExpressionErrors } from \"../parser/util.ts\";\nimport type { ParseResult, File } from \"../index.ts\";\n\nconst { defineProperty } = Object;\nconst toUnenumerable = (object: any, key: string) => {\n if (object) {\n defineProperty(object, key, { enumerable: false, value: object[key] });\n }\n};\n\nfunction toESTreeLocation(node: any) {\n toUnenumerable(node.loc.start, \"index\");\n toUnenumerable(node.loc.end, \"index\");\n\n return node;\n}\n\nexport default (superClass: typeof Parser) =>\n class ESTreeParserMixin extends superClass implements Parser {\n parse(): ParseResult<File> {\n const file = toESTreeLocation(super.parse());\n\n if (this.optionFlags & OptionFlags.Tokens) {\n file.tokens = file.tokens.map(toESTreeLocation);\n }\n\n return file;\n }\n\n // @ts-expect-error ESTree plugin changes node types\n parseRegExpLiteral({ pattern, flags }): N.EstreeRegExpLiteral {\n let regex: RegExp | null = null;\n try {\n regex = new RegExp(pattern, flags);\n } catch (_) {\n // In environments that don't support these flags value will\n // be null as the regex can't be represented natively.\n }\n const node = this.estreeParseLiteral<N.EstreeRegExpLiteral>(regex);\n node.regex = { pattern, flags };\n\n return node;\n }\n\n // @ts-expect-error ESTree plugin changes node types\n parseBigIntLiteral(value: any): N.Node {\n // https://github.com/estree/estree/blob/master/es2020.md#bigintliteral\n let bigInt: bigint | null;\n try {\n bigInt = BigInt(value);\n } catch {\n bigInt = null;\n }\n const node = this.estreeParseLiteral<N.EstreeBigIntLiteral>(bigInt);\n node.bigint = String(node.value || value);\n\n return node;\n }\n\n // @ts-expect-error ESTree plugin changes node types\n parseDecimalLiteral(value: any): N.Node {\n // https://github.com/estree/estree/blob/master/experimental/decimal.md\n // todo: use BigDecimal when node supports it.\n const decimal: null = null;\n const node = this.estreeParseLiteral(decimal);\n node.decimal = String(node.value || value);\n\n return node;\n }\n\n estreeParseLiteral<T extends N.EstreeLiteral>(value: any) {\n // @ts-expect-error ESTree plugin changes node types\n return this.parseLiteral<T>(value, \"Literal\");\n }\n\n // @ts-expect-error ESTree plugin changes node types\n parseStringLiteral(value: any): N.Node {\n return this.estreeParseLiteral(value);\n }\n\n parseNumericLiteral(value: any): any {\n return this.estreeParseLiteral(value);\n }\n\n // @ts-expect-error ESTree plugin changes node types\n parseNullLiteral(): N.Node {\n return this.estreeParseLiteral(null);\n }\n\n parseBooleanLiteral(value: boolean): N.BooleanLiteral {\n // @ts-expect-error ESTree plugin changes node types\n return this.estreeParseLiteral(value);\n }\n\n // https://github.com/estree/estree/blob/master/es2020.md#chainexpression\n estreeParseChainExpression(\n node: N.Expression,\n endLoc: Position,\n ): N.EstreeChainExpression {\n const chain = this.startNodeAtNode<N.EstreeChainExpression>(node);\n chain.expression = node;\n return this.finishNodeAt(chain, \"ChainExpression\", endLoc);\n }\n\n // Cast a Directive to an ExpressionStatement. Mutates the input Directive.\n directiveToStmt(directive: N.Directive): N.ExpressionStatement {\n const expression = directive.value as any as N.EstreeLiteral;\n // @ts-expect-error delete non-optional properties\n delete directive.value;\n\n this.castNodeTo(expression, \"Literal\");\n expression.raw = expression.extra!.raw;\n expression.value = expression.extra!.expressionValue;\n\n const stmt = this.castNodeTo(directive, \"ExpressionStatement\");\n stmt.expression = expression;\n stmt.directive = expression.extra!.rawValue;\n\n delete expression.extra;\n\n return stmt;\n }\n\n /**\n * The TS-ESLint always define optional AST properties, here we provide the\n * default value for such properties immediately after `finishNode` was invoked.\n * This hook will be implemented by the typescript plugin.\n *\n * Note: This hook should be manually invoked when we change the `type` of a given AST\n * node, to ensure that the optional properties are correctly filled.\n * @param node The AST node finished by finishNode\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n fillOptionalPropertiesForTSESLint(node: NodeType) {}\n\n cloneEstreeStringLiteral(node: N.EstreeLiteral): N.EstreeLiteral {\n const { start, end, loc, range, raw, value } = node;\n const cloned = Object.create(node.constructor.prototype);\n cloned.type = \"Literal\";\n cloned.start = start;\n cloned.end = end;\n cloned.loc = loc;\n cloned.range = range;\n cloned.raw = raw;\n cloned.value = value;\n return cloned;\n }\n\n // ==================================\n // Overrides\n // ==================================\n\n initFunction(node: N.BodilessFunctionOrMethodBase, isAsync: boolean): void {\n super.initFunction(node, isAsync);\n node.expression = false;\n }\n\n checkDeclaration(node: N.Pattern | N.ObjectProperty): void {\n if (node != null && this.isObjectProperty(node)) {\n // @ts-expect-error plugin typings\n this.checkDeclaration((node as unknown as N.EstreeProperty).value);\n } else {\n super.checkDeclaration(node);\n }\n }\n\n getObjectOrClassMethodParams(method: N.ObjectMethod | N.ClassMethod) {\n return (method as unknown as N.EstreeMethodDefinition).value.params;\n }\n\n isValidDirective(stmt: N.Statement): stmt is N.ExpressionStatement {\n return (\n stmt.type === \"ExpressionStatement\" &&\n stmt.expression.type === \"Literal\" &&\n typeof stmt.expression.value === \"string\" &&\n !stmt.expression.extra?.parenthesized\n );\n }\n\n parseBlockBody(\n node: N.BlockStatementLike,\n allowDirectives: boolean | undefined | null,\n topLevel: boolean,\n end: TokenType,\n afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n ): void {\n super.parseBlockBody(\n node,\n allowDirectives,\n topLevel,\n end,\n afterBlockParse,\n );\n\n const directiveStatements = node.directives.map(d =>\n this.directiveToStmt(d),\n );\n // @ts-expect-error estree plugin typings\n node.body = directiveStatements.concat(node.body);\n // @ts-expect-error delete non-optional properties\n delete node.directives;\n }\n\n parsePrivateName(): any {\n const node = super.parsePrivateName();\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return node;\n }\n }\n return this.convertPrivateNameToPrivateIdentifier(node);\n }\n\n convertPrivateNameToPrivateIdentifier(\n node: N.PrivateName,\n ): N.EstreePrivateIdentifier {\n const name = super.getPrivateNameSV(node);\n // @ts-expect-error delete non-optional properties\n delete node.id;\n // @ts-expect-error mutate AST types\n node.name = name;\n return this.castNodeTo(node, \"PrivateIdentifier\");\n }\n\n // @ts-expect-error ESTree plugin changes node types\n isPrivateName(node: N.Node): node is N.EstreePrivateIdentifier {\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return super.isPrivateName(node);\n }\n }\n return node.type === \"PrivateIdentifier\";\n }\n\n // @ts-expect-error ESTree plugin changes node types\n getPrivateNameSV(node: N.EstreePrivateIdentifier): string {\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return super.getPrivateNameSV(node as unknown as N.PrivateName);\n }\n }\n return node.name;\n }\n\n // @ts-expect-error plugin may override interfaces\n parseLiteral<T extends N.Literal>(value: any, type: T[\"type\"]): T {\n const node = super.parseLiteral<T>(value, type);\n // @ts-expect-error mutating AST types\n node.raw = node.extra.raw;\n delete node.extra;\n\n return node;\n }\n\n parseFunctionBody(\n node: N.Function,\n allowExpression?: boolean | null,\n isMethod: boolean = false,\n ): void {\n super.parseFunctionBody(node, allowExpression, isMethod);\n node.expression = node.body.type !== \"BlockStatement\";\n }\n\n // @ts-expect-error plugin may override interfaces\n parseMethod<\n T extends N.ClassPrivateMethod | N.ObjectMethod | N.ClassMethod,\n >(\n node: Undone<T>,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowDirectSuper: boolean,\n type: T[\"type\"],\n inClassScope: boolean = false,\n ):\n | N.EstreeProperty\n | N.EstreeMethodDefinition\n | N.EstreeTSAbstractMethodDefinition {\n let funcNode = this.startNode<N.MethodLike>();\n funcNode.kind = node.kind; // provide kind, so super method correctly sets state\n funcNode = super.parseMethod(\n funcNode,\n isGenerator,\n isAsync,\n isConstructor,\n allowDirectSuper,\n type,\n inClassScope,\n );\n // @ts-expect-error delete non-optional properties\n delete funcNode.kind;\n const { typeParameters } = node;\n if (typeParameters) {\n delete node.typeParameters;\n funcNode.typeParameters = typeParameters;\n this.resetStartLocationFromNode(funcNode, typeParameters);\n }\n const valueNode = this.castNodeTo(\n funcNode as N.MethodLike,\n process.env.BABEL_8_BREAKING &&\n this.hasPlugin(\"typescript\") &&\n !funcNode.body\n ? \"TSEmptyBodyFunctionExpression\"\n : \"FunctionExpression\",\n );\n (\n node as unknown as Undone<\n | N.EstreeProperty\n | N.EstreeMethodDefinition\n | N.EstreeTSAbstractMethodDefinition\n >\n ).value = valueNode;\n if (type === \"ClassPrivateMethod\") {\n node.computed = false;\n }\n if (process.env.BABEL_8_BREAKING && this.hasPlugin(\"typescript\")) {\n // @ts-expect-error todo(flow->ts) property not defined for all types in union\n if (node.abstract) {\n // @ts-expect-error remove abstract from TSAbstractMethodDefinition\n delete node.abstract;\n return this.finishNode(\n // @ts-expect-error cast methods to estree types\n node as Undone<N.EstreeTSAbstractMethodDefinition>,\n \"TSAbstractMethodDefinition\",\n );\n }\n }\n if (type === \"ObjectMethod\") {\n if ((node as any as N.ObjectMethod).kind === \"method\") {\n (node as any as N.EstreeProperty).kind = \"init\";\n }\n (node as any as N.EstreeProperty).shorthand = false;\n return this.finishNode(\n // @ts-expect-error cast methods to estree types\n node as Undone<N.EstreeProperty>,\n \"Property\",\n );\n } else {\n return this.finishNode(\n // @ts-expect-error cast methods to estree types\n node as Undone<N.EstreeMethodDefinition>,\n \"MethodDefinition\",\n );\n }\n }\n\n nameIsConstructor(key: N.Expression | N.PrivateName): boolean {\n if (key.type === \"Literal\") return key.value === \"constructor\";\n return super.nameIsConstructor(key);\n }\n\n parseClassProperty(...args: [N.ClassProperty]): any {\n const propertyNode = super.parseClassProperty(...args);\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return propertyNode as unknown as N.EstreePropertyDefinition;\n }\n }\n if (\n process.env.BABEL_8_BREAKING &&\n propertyNode.abstract &&\n this.hasPlugin(\"typescript\")\n ) {\n delete propertyNode.abstract;\n this.castNodeTo(propertyNode, \"TSAbstractPropertyDefinition\");\n } else {\n this.castNodeTo(propertyNode, \"PropertyDefinition\");\n }\n return propertyNode;\n }\n\n parseClassPrivateProperty(...args: [N.ClassPrivateProperty]): any {\n const propertyNode = super.parseClassPrivateProperty(...args);\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return propertyNode as unknown as N.EstreePropertyDefinition;\n }\n }\n if (\n process.env.BABEL_8_BREAKING &&\n propertyNode.abstract &&\n this.hasPlugin(\"typescript\")\n ) {\n this.castNodeTo(propertyNode, \"TSAbstractPropertyDefinition\");\n } else {\n this.castNodeTo(propertyNode, \"PropertyDefinition\");\n }\n propertyNode.computed = false;\n return propertyNode;\n }\n\n parseClassAccessorProperty(\n this: Parser,\n node: N.ClassAccessorProperty,\n ): any {\n const accessorPropertyNode = super.parseClassAccessorProperty(node);\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return accessorPropertyNode;\n }\n }\n if (accessorPropertyNode.abstract && this.hasPlugin(\"typescript\")) {\n delete accessorPropertyNode.abstract;\n this.castNodeTo(accessorPropertyNode, \"TSAbstractAccessorProperty\");\n } else {\n this.castNodeTo(accessorPropertyNode, \"AccessorProperty\");\n }\n return accessorPropertyNode;\n }\n\n parseObjectProperty(\n prop: N.ObjectProperty,\n startLoc: Position | undefined | null,\n isPattern: boolean,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.ObjectProperty | undefined | null {\n const node: N.EstreeProperty = super.parseObjectProperty(\n prop,\n startLoc,\n isPattern,\n refExpressionErrors,\n ) as any;\n\n if (node) {\n node.kind = \"init\";\n this.castNodeTo(node, \"Property\");\n }\n\n return node as any;\n }\n\n finishObjectProperty(node: Undone<N.ObjectProperty>): N.ObjectProperty {\n (node as unknown as Undone<N.EstreeProperty>).kind = \"init\";\n return this.finishNode(\n node as unknown as Undone<N.EstreeProperty>,\n \"Property\",\n ) as any;\n }\n\n isValidLVal(\n type: string,\n disallowCallExpression: boolean,\n isUnparenthesizedInAssign: boolean,\n binding: BindingFlag,\n ) {\n return type === \"Property\"\n ? \"value\"\n : super.isValidLVal(\n type,\n disallowCallExpression,\n isUnparenthesizedInAssign,\n binding,\n );\n }\n\n isAssignable(node: N.Node, isBinding?: boolean): boolean {\n if (node != null && this.isObjectProperty(node)) {\n return this.isAssignable(node.value, isBinding);\n }\n return super.isAssignable(node, isBinding);\n }\n\n toAssignable(node: N.Node, isLHS: boolean = false): void {\n if (node != null && this.isObjectProperty(node)) {\n const { key, value } = node;\n if (this.isPrivateName(key)) {\n this.classScope.usePrivateName(\n this.getPrivateNameSV(key),\n key.loc.start,\n );\n }\n this.toAssignable(value, isLHS);\n } else {\n super.toAssignable(node, isLHS);\n }\n }\n\n toAssignableObjectExpressionProp(\n prop: N.Node,\n isLast: boolean,\n isLHS: boolean,\n ) {\n if (\n prop.type === \"Property\" &&\n (prop.kind === \"get\" || prop.kind === \"set\")\n ) {\n this.raise(Errors.PatternHasAccessor, prop.key);\n } else if (prop.type === \"Property\" && prop.method) {\n this.raise(Errors.PatternHasMethod, prop.key);\n } else {\n super.toAssignableObjectExpressionProp(prop, isLast, isLHS);\n }\n }\n\n finishCallExpression<T extends N.CallExpression | N.OptionalCallExpression>(\n unfinished: Undone<T>,\n optional: boolean,\n ): T {\n const node = super.finishCallExpression(unfinished, optional);\n\n if (node.callee.type === \"Import\") {\n this.castNodeTo(node, \"ImportExpression\");\n (node as N.Node as N.EstreeImportExpression).source = node\n .arguments[0] as N.Expression;\n (node as N.Node as N.EstreeImportExpression).options =\n (node.arguments[1] as N.Expression) ?? null;\n if (!process.env.BABEL_8_BREAKING) {\n // compatibility with previous ESTree AST\n (node as N.Node as N.EstreeImportExpression).attributes =\n (node.arguments[1] as N.Expression) ?? null;\n }\n // arguments isn't optional in the type definition\n // @ts-expect-error delete non-optional properties\n delete node.arguments;\n // callee isn't optional in the type definition\n // @ts-expect-error delete non-optional properties\n delete node.callee;\n } else if (node.type === \"OptionalCallExpression\") {\n this.castNodeTo(node, \"CallExpression\");\n } else {\n node.optional = false;\n }\n\n return node;\n }\n\n toReferencedArguments(\n node:\n | N.CallExpression\n | N.OptionalCallExpression\n | N.EstreeImportExpression,\n /* isParenthesizedExpr?: boolean, */\n ) {\n // ImportExpressions do not have an arguments array.\n if (node.type === \"ImportExpression\") {\n return;\n }\n\n super.toReferencedArguments(node);\n }\n\n parseExport(\n unfinished: Undone<N.AnyExport>,\n decorators: N.Decorator[] | null,\n ) {\n const exportStartLoc = this.state.lastTokStartLoc!;\n const node = super.parseExport(unfinished, decorators);\n\n switch (node.type) {\n case \"ExportAllDeclaration\":\n // @ts-expect-error mutating AST types\n node.exported = null;\n break;\n\n case \"ExportNamedDeclaration\":\n if (\n node.specifiers.length === 1 &&\n node.specifiers[0].type === \"ExportNamespaceSpecifier\"\n ) {\n this.castNodeTo(node, \"ExportAllDeclaration\");\n // @ts-expect-error mutating AST types\n node.exported = node.specifiers[0].exported;\n // @ts-expect-error The ESTree AST shape differs from the Babel AST\n delete node.specifiers;\n }\n\n // fallthrough\n case \"ExportDefaultDeclaration\":\n {\n const { declaration } = node;\n if (\n declaration?.type === \"ClassDeclaration\" &&\n // @ts-expect-error comparing undefined and number\n declaration.decorators?.length > 0 &&\n // decorator comes before export\n declaration.start === node.start\n ) {\n this.resetStartLocation(\n node,\n // For compatibility with ESLint's keyword-spacing rule, which assumes that an\n // export declaration must start with export.\n // https://github.com/babel/babel/issues/15085\n // Here we reset export declaration's start to be the start of the export token\n exportStartLoc,\n );\n }\n }\n\n break;\n }\n\n return node;\n }\n\n stopParseSubscript(base: N.Expression, state: N.ParseSubscriptState) {\n const node = super.stopParseSubscript(base, state);\n if (state.optionalChainMember) {\n return this.estreeParseChainExpression(node, base.loc.end);\n }\n return node;\n }\n\n parseMember(\n base: N.Expression,\n startLoc: Position,\n state: N.ParseSubscriptState,\n computed: boolean,\n optional: boolean,\n ) {\n const node = super.parseMember(base, startLoc, state, computed, optional);\n if (node.type === \"OptionalMemberExpression\") {\n this.castNodeTo(node, \"MemberExpression\");\n } else {\n node.optional = false;\n }\n return node;\n }\n\n isOptionalMemberExpression(node: N.Node) {\n if (node.type === \"ChainExpression\") {\n return node.expression.type === \"MemberExpression\";\n }\n return super.isOptionalMemberExpression(node);\n }\n\n hasPropertyAsPrivateName(node: N.Node): boolean {\n if (node.type === \"ChainExpression\") {\n node = node.expression;\n }\n return super.hasPropertyAsPrivateName(node);\n }\n\n // @ts-expect-error ESTree plugin changes node types\n isObjectProperty(node: N.Node): node is N.EstreeProperty {\n return node.type === \"Property\" && node.kind === \"init\" && !node.method;\n }\n\n // @ts-expect-error ESTree plugin changes node types\n isObjectMethod(node: N.Node): node is N.EstreeProperty {\n return (\n node.type === \"Property\" &&\n (node.method || node.kind === \"get\" || node.kind === \"set\")\n );\n }\n\n /* ============================================================ *\n * parser/node.ts *\n * ============================================================ */\n\n castNodeTo<T extends N.Node[\"type\"]>(\n node: N.Node,\n type: T,\n ): Extract<N.Node, { type: T }> {\n const result = super.castNodeTo(node, type);\n this.fillOptionalPropertiesForTSESLint(result);\n return result;\n }\n\n cloneIdentifier<T extends N.Identifier | N.Placeholder>(node: T): T {\n const cloned = super.cloneIdentifier(node);\n this.fillOptionalPropertiesForTSESLint(cloned);\n return cloned;\n }\n\n cloneStringLiteral<\n T extends N.EstreeLiteral | N.StringLiteral | N.Placeholder,\n >(node: T): T {\n if (node.type === \"Literal\") {\n return this.cloneEstreeStringLiteral(node) as T;\n }\n return super.cloneStringLiteral(node);\n }\n\n finishNodeAt<T extends NodeType>(\n node: Undone<T>,\n type: T[\"type\"],\n endLoc: Position,\n ): T {\n return toESTreeLocation(super.finishNodeAt(node, type, endLoc));\n }\n\n // Override for TS-ESLint that does not allow optional AST properties\n finishNode<T extends NodeType>(node: Undone<T>, type: T[\"type\"]): T {\n const result = super.finishNode(node, type);\n this.fillOptionalPropertiesForTSESLint(result);\n return result;\n }\n\n resetStartLocation(node: N.Node, startLoc: Position) {\n super.resetStartLocation(node, startLoc);\n toESTreeLocation(node);\n }\n\n resetEndLocation(\n node: NodeBase,\n endLoc: Position = this.state.lastTokEndLoc!,\n ): void {\n super.resetEndLocation(node, endLoc);\n toESTreeLocation(node);\n }\n };\n","// The token context is used in JSX plugin to track\n// jsx tag / jsx text / normal JavaScript expression\n\nexport class TokContext {\n constructor(token: string, preserveSpace?: boolean) {\n this.token = token;\n this.preserveSpace = !!preserveSpace;\n }\n\n token: string;\n preserveSpace: boolean;\n}\n\nconst types: Record<string, TokContext> = {\n brace: new TokContext(\"{\"), // normal JavaScript expression\n j_oTag: new TokContext(\"<tag\"), // JSX opening tag\n j_cTag: new TokContext(\"</tag\"), // JSX closing tag\n j_expr: new TokContext(\"<tag>...</tag>\", true), // JSX expressions\n};\n\nif (!process.env.BABEL_8_BREAKING) {\n types.template = new TokContext(\"`\", true);\n}\n\nexport { types };\n","import { types as tc, type TokContext } from \"./context.ts\";\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between 1) binary\n// expression (<) and JSX Tag start (<name>); 2) object literal and JSX\n// texts. It is set on the `updateContext` function in the JSX plugin.\n\n// The `startsExpr` property is used to determine whether an expression\n// may be the “argument” subexpression of a `yield` expression or\n// `yield` statement. It is set on all token types that may be at the\n// start of a subexpression.\n\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nconst beforeExpr = true;\nconst startsExpr = true;\nconst isLoop = true;\nconst isAssign = true;\nconst prefix = true;\nconst postfix = true;\n\ntype TokenOptions = {\n keyword?: string;\n beforeExpr?: boolean;\n startsExpr?: boolean;\n rightAssociative?: boolean;\n isLoop?: boolean;\n isAssign?: boolean;\n prefix?: boolean;\n postfix?: boolean;\n binop?: number | null;\n};\n\n// Internally the tokenizer stores token as a number\nexport type TokenType = number;\n\n// The `ExportedTokenType` is exported via `tokTypes` and accessible\n// when `tokens: true` is enabled. Unlike internal token type, it provides\n// metadata of the tokens.\nexport class ExportedTokenType {\n label: string;\n keyword: string | undefined | null;\n beforeExpr: boolean;\n startsExpr: boolean;\n rightAssociative: boolean;\n isLoop: boolean;\n isAssign: boolean;\n prefix: boolean;\n postfix: boolean;\n binop: number | undefined | null;\n // todo(Babel 8): remove updateContext from exposed token layout\n declare updateContext: ((context: TokContext[]) => void) | undefined | null;\n\n constructor(label: string, conf: TokenOptions = {}) {\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.rightAssociative = !!conf.rightAssociative;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop != null ? conf.binop : null;\n if (!process.env.BABEL_8_BREAKING) {\n this.updateContext = null;\n }\n }\n}\n\n// A map from keyword/keyword-like string value to the token type\nexport const keywords = new Map<string, TokenType>();\n\nfunction createKeyword(name: string, options: TokenOptions = {}): TokenType {\n options.keyword = name;\n const token = createToken(name, options);\n keywords.set(name, token);\n return token;\n}\n\nfunction createBinop(name: string, binop: number) {\n return createToken(name, { beforeExpr, binop });\n}\n\nlet tokenTypeCounter = -1;\nexport const tokenTypes: ExportedTokenType[] = [];\nconst tokenLabels: string[] = [];\nconst tokenBinops: number[] = [];\nconst tokenBeforeExprs: boolean[] = [];\nconst tokenStartsExprs: boolean[] = [];\nconst tokenPrefixes: boolean[] = [];\n\nfunction createToken(name: string, options: TokenOptions = {}): TokenType {\n ++tokenTypeCounter;\n tokenLabels.push(name);\n tokenBinops.push(options.binop ?? -1);\n tokenBeforeExprs.push(options.beforeExpr ?? false);\n tokenStartsExprs.push(options.startsExpr ?? false);\n tokenPrefixes.push(options.prefix ?? false);\n tokenTypes.push(new ExportedTokenType(name, options));\n\n return tokenTypeCounter;\n}\n\nfunction createKeywordLike(\n name: string,\n options: TokenOptions = {},\n): TokenType {\n ++tokenTypeCounter;\n keywords.set(name, tokenTypeCounter);\n tokenLabels.push(name);\n tokenBinops.push(options.binop ?? -1);\n tokenBeforeExprs.push(options.beforeExpr ?? false);\n tokenStartsExprs.push(options.startsExpr ?? false);\n tokenPrefixes.push(options.prefix ?? false);\n // In the exported token type, we set the label as \"name\" for backward compatibility with Babel 7\n tokenTypes.push(new ExportedTokenType(\"name\", options));\n\n return tokenTypeCounter;\n}\n\n// For performance the token type helpers depend on the following declarations order.\n// When adding new token types, please also check if the token helpers need update.\n\nexport type InternalTokenTypes = typeof tt;\n\nexport const tt = {\n // Punctuation token types.\n bracketL: createToken(\"[\", { beforeExpr, startsExpr }),\n // TODO: Remove this in Babel 8\n bracketHashL: createToken(\"#[\", { beforeExpr, startsExpr }),\n // TODO: Remove this in Babel 8\n bracketBarL: createToken(\"[|\", { beforeExpr, startsExpr }),\n bracketR: createToken(\"]\"),\n // TODO: Remove this in Babel 8\n bracketBarR: createToken(\"|]\"),\n braceL: createToken(\"{\", { beforeExpr, startsExpr }),\n // TODO: Remove this in Babel 8\n braceBarL: createToken(\"{|\", { beforeExpr, startsExpr }),\n // TODO: Remove this in Babel 8\n braceHashL: createToken(\"#{\", { beforeExpr, startsExpr }),\n braceR: createToken(\"}\"),\n braceBarR: createToken(\"|}\"),\n parenL: createToken(\"(\", { beforeExpr, startsExpr }),\n parenR: createToken(\")\"),\n comma: createToken(\",\", { beforeExpr }),\n semi: createToken(\";\", { beforeExpr }),\n colon: createToken(\":\", { beforeExpr }),\n doubleColon: createToken(\"::\", { beforeExpr }),\n dot: createToken(\".\"),\n question: createToken(\"?\", { beforeExpr }),\n questionDot: createToken(\"?.\"),\n arrow: createToken(\"=>\", { beforeExpr }),\n template: createToken(\"template\"),\n ellipsis: createToken(\"...\", { beforeExpr }),\n backQuote: createToken(\"`\", { startsExpr }),\n dollarBraceL: createToken(\"${\", { beforeExpr, startsExpr }),\n // start: isTemplate\n templateTail: createToken(\"...`\", { startsExpr }),\n templateNonTail: createToken(\"...${\", { beforeExpr, startsExpr }),\n // end: isTemplate\n at: createToken(\"@\"),\n hash: createToken(\"#\", { startsExpr }),\n\n // Special hashbang token.\n interpreterDirective: createToken(\"#!...\"),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n // start: isAssign\n eq: createToken(\"=\", { beforeExpr, isAssign }),\n assign: createToken(\"_=\", { beforeExpr, isAssign }),\n slashAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n // These are only needed to support % and ^ as a Hack-pipe topic token.\n // When the proposal settles on a token, the others can be merged with\n // tt.assign.\n xorAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n moduloAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n // end: isAssign\n\n incDec: createToken(\"++/--\", { prefix, postfix, startsExpr }),\n bang: createToken(\"!\", { beforeExpr, prefix, startsExpr }),\n tilde: createToken(\"~\", { beforeExpr, prefix, startsExpr }),\n\n // More possible topic tokens.\n // When the proposal settles on a token, at least one of these may be removed.\n doubleCaret: createToken(\"^^\", { startsExpr }),\n doubleAt: createToken(\"@@\", { startsExpr }),\n\n // start: isBinop\n pipeline: createBinop(\"|>\", 0),\n nullishCoalescing: createBinop(\"??\", 1),\n logicalOR: createBinop(\"||\", 1),\n logicalAND: createBinop(\"&&\", 2),\n bitwiseOR: createBinop(\"|\", 3),\n bitwiseXOR: createBinop(\"^\", 4),\n bitwiseAND: createBinop(\"&\", 5),\n equality: createBinop(\"==/!=/===/!==\", 6),\n lt: createBinop(\"</>/<=/>=\", 7),\n gt: createBinop(\"</>/<=/>=\", 7),\n relational: createBinop(\"</>/<=/>=\", 7),\n bitShift: createBinop(\"<</>>/>>>\", 8),\n bitShiftL: createBinop(\"<</>>/>>>\", 8),\n bitShiftR: createBinop(\"<</>>/>>>\", 8),\n plusMin: createToken(\"+/-\", { beforeExpr, binop: 9, prefix, startsExpr }),\n // startsExpr: required by v8intrinsic plugin\n modulo: createToken(\"%\", { binop: 10, startsExpr }),\n // unset `beforeExpr` as it can be `function *`\n star: createToken(\"*\", { binop: 10 }),\n slash: createBinop(\"/\", 10),\n exponent: createToken(\"**\", {\n beforeExpr,\n binop: 11,\n rightAssociative: true,\n }),\n\n // Keywords\n // Don't forget to update packages/babel-helper-validator-identifier/src/keyword.js\n // when new keywords are added\n // start: isLiteralPropertyName\n // start: isKeyword\n _in: createKeyword(\"in\", { beforeExpr, binop: 7 }),\n _instanceof: createKeyword(\"instanceof\", { beforeExpr, binop: 7 }),\n // end: isBinop\n _break: createKeyword(\"break\"),\n _case: createKeyword(\"case\", { beforeExpr }),\n _catch: createKeyword(\"catch\"),\n _continue: createKeyword(\"continue\"),\n _debugger: createKeyword(\"debugger\"),\n _default: createKeyword(\"default\", { beforeExpr }),\n _else: createKeyword(\"else\", { beforeExpr }),\n _finally: createKeyword(\"finally\"),\n _function: createKeyword(\"function\", { startsExpr }),\n _if: createKeyword(\"if\"),\n _return: createKeyword(\"return\", { beforeExpr }),\n _switch: createKeyword(\"switch\"),\n _throw: createKeyword(\"throw\", { beforeExpr, prefix, startsExpr }),\n _try: createKeyword(\"try\"),\n _var: createKeyword(\"var\"),\n _const: createKeyword(\"const\"),\n _with: createKeyword(\"with\"),\n _new: createKeyword(\"new\", { beforeExpr, startsExpr }),\n _this: createKeyword(\"this\", { startsExpr }),\n _super: createKeyword(\"super\", { startsExpr }),\n _class: createKeyword(\"class\", { startsExpr }),\n _extends: createKeyword(\"extends\", { beforeExpr }),\n _export: createKeyword(\"export\"),\n _import: createKeyword(\"import\", { startsExpr }),\n _null: createKeyword(\"null\", { startsExpr }),\n _true: createKeyword(\"true\", { startsExpr }),\n _false: createKeyword(\"false\", { startsExpr }),\n _typeof: createKeyword(\"typeof\", { beforeExpr, prefix, startsExpr }),\n _void: createKeyword(\"void\", { beforeExpr, prefix, startsExpr }),\n _delete: createKeyword(\"delete\", { beforeExpr, prefix, startsExpr }),\n // start: isLoop\n _do: createKeyword(\"do\", { isLoop, beforeExpr }),\n _for: createKeyword(\"for\", { isLoop }),\n _while: createKeyword(\"while\", { isLoop }),\n // end: isLoop\n // end: isKeyword\n\n // Primary literals\n // start: isIdentifier\n _as: createKeywordLike(\"as\", { startsExpr }),\n _assert: createKeywordLike(\"assert\", { startsExpr }),\n _async: createKeywordLike(\"async\", { startsExpr }),\n _await: createKeywordLike(\"await\", { startsExpr }),\n _defer: createKeywordLike(\"defer\", { startsExpr }),\n _from: createKeywordLike(\"from\", { startsExpr }),\n _get: createKeywordLike(\"get\", { startsExpr }),\n _let: createKeywordLike(\"let\", { startsExpr }),\n _meta: createKeywordLike(\"meta\", { startsExpr }),\n _of: createKeywordLike(\"of\", { startsExpr }),\n _sent: createKeywordLike(\"sent\", { startsExpr }),\n _set: createKeywordLike(\"set\", { startsExpr }),\n _source: createKeywordLike(\"source\", { startsExpr }),\n _static: createKeywordLike(\"static\", { startsExpr }),\n _using: createKeywordLike(\"using\", { startsExpr }),\n _yield: createKeywordLike(\"yield\", { startsExpr }),\n\n // Flow and TypeScript Keywordlike\n _asserts: createKeywordLike(\"asserts\", { startsExpr }),\n _checks: createKeywordLike(\"checks\", { startsExpr }),\n _exports: createKeywordLike(\"exports\", { startsExpr }),\n _global: createKeywordLike(\"global\", { startsExpr }),\n _implements: createKeywordLike(\"implements\", { startsExpr }),\n _intrinsic: createKeywordLike(\"intrinsic\", { startsExpr }),\n _infer: createKeywordLike(\"infer\", { startsExpr }),\n _is: createKeywordLike(\"is\", { startsExpr }),\n _mixins: createKeywordLike(\"mixins\", { startsExpr }),\n _proto: createKeywordLike(\"proto\", { startsExpr }),\n _require: createKeywordLike(\"require\", { startsExpr }),\n _satisfies: createKeywordLike(\"satisfies\", { startsExpr }),\n // start: isTSTypeOperator\n _keyof: createKeywordLike(\"keyof\", { startsExpr }),\n _readonly: createKeywordLike(\"readonly\", { startsExpr }),\n _unique: createKeywordLike(\"unique\", { startsExpr }),\n // end: isTSTypeOperator\n // start: isTSDeclarationStart\n _abstract: createKeywordLike(\"abstract\", { startsExpr }),\n _declare: createKeywordLike(\"declare\", { startsExpr }),\n _enum: createKeywordLike(\"enum\", { startsExpr }),\n _module: createKeywordLike(\"module\", { startsExpr }),\n _namespace: createKeywordLike(\"namespace\", { startsExpr }),\n // start: isFlowInterfaceOrTypeOrOpaque\n _interface: createKeywordLike(\"interface\", { startsExpr }),\n _type: createKeywordLike(\"type\", { startsExpr }),\n // end: isTSDeclarationStart\n _opaque: createKeywordLike(\"opaque\", { startsExpr }),\n // end: isFlowInterfaceOrTypeOrOpaque\n name: createToken(\"name\", { startsExpr }),\n\n // placeholder plugin\n placeholder: createToken(\"%%\", { startsExpr }),\n // end: isIdentifier\n\n string: createToken(\"string\", { startsExpr }),\n num: createToken(\"num\", { startsExpr }),\n bigint: createToken(\"bigint\", { startsExpr }),\n // TODO: Remove this in Babel 8\n decimal: createToken(\"decimal\", { startsExpr }),\n // end: isLiteralPropertyName\n regexp: createToken(\"regexp\", { startsExpr }),\n privateName: createToken(\"#name\", { startsExpr }),\n eof: createToken(\"eof\"),\n\n // jsx plugin\n jsxName: createToken(\"jsxName\"),\n jsxText: createToken(\"jsxText\", { beforeExpr }),\n jsxTagStart: createToken(\"jsxTagStart\", { startsExpr }),\n jsxTagEnd: createToken(\"jsxTagEnd\"),\n} as const;\n\nexport function tokenIsIdentifier(token: TokenType): boolean {\n return token >= tt._as && token <= tt.placeholder;\n}\n\nexport function tokenKeywordOrIdentifierIsKeyword(token: TokenType): boolean {\n // we can remove the token >= tt._in check when we\n // know a token is either keyword or identifier\n return token <= tt._while;\n}\n\nexport function tokenIsKeywordOrIdentifier(token: TokenType): boolean {\n return token >= tt._in && token <= tt.placeholder;\n}\n\nexport function tokenIsLiteralPropertyName(token: TokenType): boolean {\n return token >= tt._in && token <= tt.decimal;\n}\n\nexport function tokenComesBeforeExpression(token: TokenType): boolean {\n return tokenBeforeExprs[token];\n}\n\nexport function tokenCanStartExpression(token: TokenType): boolean {\n return tokenStartsExprs[token];\n}\n\nexport function tokenIsAssignment(token: TokenType): boolean {\n return token >= tt.eq && token <= tt.moduloAssign;\n}\n\nexport function tokenIsFlowInterfaceOrTypeOrOpaque(token: TokenType): boolean {\n return token >= tt._interface && token <= tt._opaque;\n}\n\nexport function tokenIsLoop(token: TokenType): boolean {\n return token >= tt._do && token <= tt._while;\n}\n\nexport function tokenIsKeyword(token: TokenType): boolean {\n return token >= tt._in && token <= tt._while;\n}\n\nexport function tokenIsOperator(token: TokenType): boolean {\n return token >= tt.pipeline && token <= tt._instanceof;\n}\n\nexport function tokenIsPostfix(token: TokenType): boolean {\n return token === tt.incDec;\n}\n\nexport function tokenIsPrefix(token: TokenType): boolean {\n return tokenPrefixes[token];\n}\n\nexport function tokenIsTSTypeOperator(token: TokenType): boolean {\n return token >= tt._keyof && token <= tt._unique;\n}\n\nexport function tokenIsTSDeclarationStart(token: TokenType): boolean {\n return token >= tt._abstract && token <= tt._type;\n}\n\nexport function tokenLabelName(token: TokenType): string {\n return tokenLabels[token];\n}\n\nexport function tokenOperatorPrecedence(token: TokenType): number {\n return tokenBinops[token];\n}\n\nexport function tokenIsBinaryOperator(token: TokenType): boolean {\n return tokenBinops[token] !== -1;\n}\n\nexport function tokenIsRightAssociative(token: TokenType): boolean {\n return token === tt.exponent;\n}\n\nexport function tokenIsTemplate(token: TokenType): boolean {\n return token >= tt.templateTail && token <= tt.templateNonTail;\n}\n\nexport function getExportedToken(token: TokenType): ExportedTokenType {\n return tokenTypes[token];\n}\n\nexport function isTokenType(obj: any): boolean {\n return typeof obj === \"number\";\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n tokenTypes[tt.braceR].updateContext = context => {\n context.pop();\n };\n\n tokenTypes[tt.braceL].updateContext =\n tokenTypes[tt.braceHashL].updateContext =\n tokenTypes[tt.dollarBraceL].updateContext =\n context => {\n context.push(tc.brace);\n };\n\n tokenTypes[tt.backQuote].updateContext = context => {\n if (context[context.length - 1] === tc.template) {\n context.pop();\n } else {\n context.push(tc.template);\n }\n };\n\n tokenTypes[tt.jsxTagStart].updateContext = context => {\n context.push(tc.j_expr, tc.j_oTag);\n };\n}\n","// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point between 0x80 and 0xffff.\n// Generated by `scripts/generate-identifier-regex.cjs`.\n\n/* prettier-ignore */\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088f\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5c\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdc-\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7dc\\ua7f1-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n/* prettier-ignore */\nlet nonASCIIidentifierChars = \"\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1add\\u1ae0-\\u1aeb\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\nconst nonASCIIidentifierStart = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset-encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by `scripts/generate-identifier-regex.cjs`.\n/* prettier-ignore */\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,4,51,13,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,7,25,39,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,39,27,10,22,251,41,7,1,17,5,57,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,31,9,2,0,3,0,2,37,2,0,26,0,2,0,45,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,200,32,32,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,24,43,261,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,26,3994,6,582,6842,29,1763,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,433,44,212,63,33,24,3,24,45,74,6,0,67,12,65,1,2,0,15,4,10,7381,42,31,98,114,8702,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,229,29,3,0,208,30,2,2,2,1,2,6,3,4,10,1,225,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4381,3,5773,3,7472,16,621,2467,541,1507,4938,6,8489];\n/* prettier-ignore */\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,7,9,32,4,318,1,78,5,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,68,8,2,0,3,0,2,3,2,4,2,0,15,1,83,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,7,19,58,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,199,7,137,9,54,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,55,9,266,3,10,1,2,0,49,6,4,4,14,10,5350,0,7,14,11465,27,2343,9,87,9,39,4,60,6,26,9,535,9,470,0,2,54,8,3,82,0,12,1,19628,1,4178,9,519,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,245,1,2,9,233,0,3,0,8,1,6,0,475,6,110,6,6,9,4759,9,787719,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code: number, set: readonly number[]): boolean {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code: number): boolean {\n if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return (\n code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n );\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n if (code < charCodes.digit0) return code === charCodes.dollarSign;\n if (code < charCodes.colon) return true;\n if (code < charCodes.uppercaseA) return false;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return (\n isInAstralSet(code, astralIdentifierStartCodes) ||\n isInAstralSet(code, astralIdentifierCodes)\n );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n // The implementation is based on\n // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n","const reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n","import * as charCodes from \"charcodes\";\nimport { isIdentifierStart } from \"@babel/helper-validator-identifier\";\n\nexport {\n isIdentifierStart,\n isIdentifierChar,\n isReservedWord,\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n isStrictReservedWord,\n isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\nexport const keywordRelationalOperator = /^in(stanceof)?$/;\n\n// Test whether a current state character code and next character code is @\n\nexport function isIteratorStart(\n current: number,\n next: number,\n next2: number,\n): boolean {\n return (\n current === charCodes.atSign &&\n next === charCodes.atSign &&\n isIdentifierStart(next2)\n );\n}\n\n// This is the comprehensive set of JavaScript reserved words\n// If a word is in this set, it could be a reserved word,\n// depending on sourceType/strictMode/binding info. In other words\n// if a word is not in this set, it is not a reserved word under\n// any circumstance.\nconst reservedWordLikeSet = new Set([\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n // strict\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n // strictBind\n \"eval\",\n \"arguments\",\n // reservedWorkLike\n \"enum\",\n \"await\",\n]);\n\nexport function canBeReservedWord(word: string): boolean {\n return reservedWordLikeSet.has(word);\n}\n","import { ScopeFlag, BindingFlag } from \"./scopeflags.ts\";\nimport type { Position } from \"./location.ts\";\nimport type * as N from \"../types.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport type Tokenizer from \"../tokenizer/index.ts\";\n\nexport const enum NameType {\n // var-declared names in the current lexical scope\n Var = 1 << 0,\n // lexically-declared names in the current lexical scope\n Lexical = 1 << 1,\n // lexically-declared FunctionDeclaration names in the current lexical scope\n Function = 1 << 2,\n}\n\n// Start an AST node, attaching a start offset.\nexport class Scope {\n flags: ScopeFlag = 0;\n names = new Map<string, NameType>();\n firstLexicalName = \"\";\n\n constructor(flags: ScopeFlag) {\n this.flags = flags;\n }\n}\n\n// The functions in this module keep track of declared variables in the\n// current scope in order to detect duplicate variable names.\nexport default class ScopeHandler<IScope extends Scope = Scope> {\n parser: Tokenizer;\n scopeStack: IScope[] = [];\n inModule: boolean;\n undefinedExports = new Map<string, Position>();\n\n constructor(parser: Tokenizer, inModule: boolean) {\n this.parser = parser;\n this.inModule = inModule;\n }\n\n get inTopLevel() {\n return (this.currentScope().flags & ScopeFlag.PROGRAM) > 0;\n }\n get inFunction() {\n return (this.currentVarScopeFlags() & ScopeFlag.FUNCTION_BASE) > 0;\n }\n get allowSuper() {\n return (this.currentThisScopeFlags() & ScopeFlag.SUPER) > 0;\n }\n get allowDirectSuper() {\n return (this.currentThisScopeFlags() & ScopeFlag.DIRECT_SUPER) > 0;\n }\n get allowNewTarget() {\n return (this.currentThisScopeFlags() & ScopeFlag.NEW_TARGET) > 0;\n }\n get inClass() {\n return (this.currentThisScopeFlags() & ScopeFlag.CLASS_BASE) > 0;\n }\n get inClassAndNotInNonArrowFunction() {\n const flags = this.currentThisScopeFlags();\n return (\n (flags & ScopeFlag.CLASS_BASE) > 0 &&\n (flags & ScopeFlag.FUNCTION_BASE) === 0\n );\n }\n get inStaticBlock() {\n for (let i = this.scopeStack.length - 1; ; i--) {\n const { flags } = this.scopeStack[i];\n if (flags & ScopeFlag.STATIC_BLOCK) {\n return true;\n }\n if (flags & (ScopeFlag.VAR | ScopeFlag.CLASS_BASE)) {\n // function body, module body, class property initializers\n return false;\n }\n }\n }\n get inNonArrowFunction() {\n return (this.currentThisScopeFlags() & ScopeFlag.FUNCTION_BASE) > 0;\n }\n get inBareCaseStatement() {\n return (this.currentScope().flags & ScopeFlag.SWITCH) > 0;\n }\n get treatFunctionsAsVar() {\n return this.treatFunctionsAsVarInScope(this.currentScope());\n }\n\n createScope(flags: ScopeFlag): Scope {\n return new Scope(flags);\n }\n\n enter(flags: ScopeFlag) {\n /*:: +createScope: (flags:ScopeFlag) => IScope; */\n // @ts-expect-error This method will be overwritten by subclasses\n this.scopeStack.push(this.createScope(flags));\n }\n\n exit(): ScopeFlag {\n const scope = this.scopeStack.pop()!;\n return scope.flags;\n }\n\n // The spec says:\n // > At the top level of a function, or script, function declarations are\n // > treated like var declarations rather than like lexical declarations.\n treatFunctionsAsVarInScope(scope: IScope): boolean {\n return !!(\n scope.flags & (ScopeFlag.FUNCTION_BASE | ScopeFlag.STATIC_BLOCK) ||\n (!this.parser.inModule && scope.flags & ScopeFlag.PROGRAM)\n );\n }\n\n declareName(name: string, bindingType: BindingFlag, loc: Position) {\n let scope = this.currentScope();\n if (\n bindingType & BindingFlag.SCOPE_LEXICAL ||\n bindingType & BindingFlag.SCOPE_FUNCTION\n ) {\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n\n let type = scope.names.get(name) || 0;\n\n if (bindingType & BindingFlag.SCOPE_FUNCTION) {\n type = type | NameType.Function;\n } else {\n if (!scope.firstLexicalName) {\n scope.firstLexicalName = name;\n }\n type = type | NameType.Lexical;\n }\n\n scope.names.set(name, type);\n\n if (bindingType & BindingFlag.SCOPE_LEXICAL) {\n this.maybeExportDefined(scope, name);\n }\n } else if (bindingType & BindingFlag.SCOPE_VAR) {\n for (let i = this.scopeStack.length - 1; i >= 0; --i) {\n scope = this.scopeStack[i];\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n scope.names.set(name, (scope.names.get(name) || 0) | NameType.Var);\n this.maybeExportDefined(scope, name);\n\n if (scope.flags & ScopeFlag.VAR) break;\n }\n }\n if (this.parser.inModule && scope.flags & ScopeFlag.PROGRAM) {\n this.undefinedExports.delete(name);\n }\n }\n\n maybeExportDefined(scope: IScope, name: string) {\n if (this.parser.inModule && scope.flags & ScopeFlag.PROGRAM) {\n this.undefinedExports.delete(name);\n }\n }\n\n checkRedeclarationInScope(\n scope: IScope,\n name: string,\n bindingType: BindingFlag,\n loc: Position,\n ) {\n if (this.isRedeclaredInScope(scope, name, bindingType)) {\n this.parser.raise(Errors.VarRedeclaration, loc, {\n identifierName: name,\n });\n }\n }\n\n isRedeclaredInScope(\n scope: IScope,\n name: string,\n bindingType: BindingFlag,\n ): boolean {\n if (!(bindingType & BindingFlag.KIND_VALUE)) return false;\n\n if (bindingType & BindingFlag.SCOPE_LEXICAL) {\n return scope.names.has(name);\n }\n\n const type = scope.names.get(name) || 0;\n\n if (bindingType & BindingFlag.SCOPE_FUNCTION) {\n return (\n (type & NameType.Lexical) > 0 ||\n (!this.treatFunctionsAsVarInScope(scope) && (type & NameType.Var) > 0)\n );\n }\n\n return (\n ((type & NameType.Lexical) > 0 &&\n // Annex B.3.4\n // https://tc39.es/ecma262/#sec-variablestatements-in-catch-blocks\n !(\n scope.flags & ScopeFlag.SIMPLE_CATCH &&\n scope.firstLexicalName === name\n )) ||\n (!this.treatFunctionsAsVarInScope(scope) &&\n (type & NameType.Function) > 0)\n );\n }\n\n checkLocalExport(id: N.Identifier) {\n const { name } = id;\n const topLevelScope = this.scopeStack[0];\n if (!topLevelScope.names.has(name)) {\n this.undefinedExports.set(name, id.loc.start);\n }\n }\n\n currentScope(): IScope {\n return this.scopeStack[this.scopeStack.length - 1];\n }\n\n currentVarScopeFlags(): ScopeFlag {\n for (let i = this.scopeStack.length - 1; ; i--) {\n const { flags } = this.scopeStack[i];\n if (flags & ScopeFlag.VAR) {\n return flags;\n }\n }\n }\n\n // Could be useful for `arguments`, `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\n currentThisScopeFlags(): ScopeFlag {\n for (let i = this.scopeStack.length - 1; ; i--) {\n const { flags } = this.scopeStack[i];\n if (\n flags & (ScopeFlag.VAR | ScopeFlag.CLASS_BASE) &&\n !(flags & ScopeFlag.ARROW)\n ) {\n return flags;\n }\n }\n }\n}\n","import type { Position } from \"../../util/location.ts\";\nimport ScopeHandler, { NameType, Scope } from \"../../util/scope.ts\";\nimport { BindingFlag, type ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type * as N from \"../../types.ts\";\n\n// Reference implementation: https://github.com/facebook/flow/blob/23aeb2a2ef6eb4241ce178fde5d8f17c5f747fb5/src/typing/env.ml#L536-L584\nclass FlowScope extends Scope {\n // declare function foo(): type;\n declareFunctions = new Set<string>();\n}\n\nexport default class FlowScopeHandler extends ScopeHandler<FlowScope> {\n createScope(flags: ScopeFlag): FlowScope {\n return new FlowScope(flags);\n }\n\n declareName(name: string, bindingType: BindingFlag, loc: Position) {\n const scope = this.currentScope();\n if (bindingType & BindingFlag.FLAG_FLOW_DECLARE_FN) {\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n this.maybeExportDefined(scope, name);\n scope.declareFunctions.add(name);\n return;\n }\n\n super.declareName(name, bindingType, loc);\n }\n\n isRedeclaredInScope(\n scope: FlowScope,\n name: string,\n bindingType: BindingFlag,\n ): boolean {\n if (super.isRedeclaredInScope(scope, name, bindingType)) return true;\n\n if (\n bindingType & BindingFlag.FLAG_FLOW_DECLARE_FN &&\n !scope.declareFunctions.has(name)\n ) {\n const type = scope.names.get(name)!;\n return (type & NameType.Function) > 0 || (type & NameType.Lexical) > 0;\n }\n\n return false;\n }\n\n checkLocalExport(id: N.Identifier) {\n if (!this.scopeStack[0].declareFunctions.has(id.name)) {\n super.checkLocalExport(id);\n }\n }\n}\n","/*:: declare var invariant; */\n\nimport type Parser from \"../../parser/index.ts\";\nimport {\n tokenIsIdentifier,\n tokenIsKeyword,\n tokenIsKeywordOrIdentifier,\n tokenIsLiteralPropertyName,\n tokenLabelName,\n tt,\n type TokenType,\n tokenIsFlowInterfaceOrTypeOrOpaque,\n} from \"../../tokenizer/types.ts\";\nimport type * as N from \"../../types.ts\";\nimport type { Position } from \"../../util/location.ts\";\nimport { types as tc } from \"../../tokenizer/context.ts\";\nimport * as charCodes from \"charcodes\";\nimport { isIteratorStart } from \"../../util/identifier.ts\";\nimport FlowScopeHandler from \"./scope.ts\";\nimport { BindingFlag, ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type { ExpressionErrors } from \"../../parser/util.ts\";\nimport type { ParseStatementFlag } from \"../../parser/statement.ts\";\nimport { Errors, ParseErrorEnum } from \"../../parse-error.ts\";\nimport type { Undone } from \"../../parser/node.ts\";\nimport type { ClassWithMixin, IJSXParserMixin } from \"../jsx/index.ts\";\n\nconst reservedTypes = new Set([\n \"_\",\n \"any\",\n \"bool\",\n \"boolean\",\n \"empty\",\n \"extends\",\n \"false\",\n \"interface\",\n \"mixed\",\n \"null\",\n \"number\",\n \"static\",\n \"string\",\n \"true\",\n \"typeof\",\n \"void\",\n]);\n\n/* eslint sort-keys: \"error\" */\n// The Errors key follows https://github.com/facebook/flow/blob/master/src/parser/parse_error.ml unless it does not exist\nconst FlowErrors = ParseErrorEnum`flow`({\n AmbiguousConditionalArrow:\n \"Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.\",\n AmbiguousDeclareModuleKind:\n \"Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.\",\n // TODO: When we get proper string enums in typescript make this ReservedType.\n // Not really worth it to do the whole $Values dance with reservedTypes set.\n AssignReservedType: ({ reservedType }: { reservedType: string }) =>\n `Cannot overwrite reserved type ${reservedType}.`,\n DeclareClassElement:\n \"The `declare` modifier can only appear on class fields.\",\n DeclareClassFieldInitializer:\n \"Initializers are not allowed in fields with the `declare` modifier.\",\n DuplicateDeclareModuleExports:\n \"Duplicate `declare module.exports` statement.\",\n EnumBooleanMemberNotInitialized: ({\n memberName,\n enumName,\n }: {\n memberName: string;\n enumName: string;\n }) =>\n `Boolean enum members need to be initialized. Use either \\`${memberName} = true,\\` or \\`${memberName} = false,\\` in enum \\`${enumName}\\`.`,\n EnumDuplicateMemberName: ({\n memberName,\n enumName,\n }: {\n memberName: string;\n enumName: string;\n }) =>\n `Enum member names need to be unique, but the name \\`${memberName}\\` has already been used before in enum \\`${enumName}\\`.`,\n EnumInconsistentMemberValues: ({ enumName }: { enumName: string }) =>\n `Enum \\`${enumName}\\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`,\n EnumInvalidExplicitType: ({\n invalidEnumType,\n enumName,\n }: {\n invalidEnumType: string;\n enumName: string;\n }) =>\n `Enum type \\`${invalidEnumType}\\` is not valid. Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in enum \\`${enumName}\\`.`,\n EnumInvalidExplicitTypeUnknownSupplied: ({\n enumName,\n }: {\n enumName: string;\n }) =>\n `Supplied enum type is not valid. Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in enum \\`${enumName}\\`.`,\n\n // TODO: When moving to typescript, we should either have each of the\n // following errors only accept the specific strings they want:\n //\n // ...PrimaryType: explicitType: \"string\" | \"number\" | \"boolean\"\n // ...SymbolType: explicitType: \"symbol\"\n // ...UnknownType: explicitType: null\n //\n // Or, alternatively, merge these three errors together into one\n // `EnumInvalidMemberInitializer` error that can accept `EnumExplicitType`\n // without alteration, and then just have its message change based on the\n // explicitType.\n EnumInvalidMemberInitializerPrimaryType: ({\n enumName,\n memberName,\n explicitType,\n }: {\n enumName: string;\n memberName: string;\n explicitType: EnumExplicitType;\n }) =>\n `Enum \\`${enumName}\\` has type \\`${explicitType}\\`, so the initializer of \\`${memberName}\\` needs to be a ${explicitType} literal.`,\n EnumInvalidMemberInitializerSymbolType: ({\n enumName,\n memberName,\n }: {\n enumName: string;\n memberName: string;\n explicitType: EnumExplicitType;\n }) =>\n `Symbol enum members cannot be initialized. Use \\`${memberName},\\` in enum \\`${enumName}\\`.`,\n EnumInvalidMemberInitializerUnknownType: ({\n enumName,\n memberName,\n }: {\n enumName: string;\n memberName: string;\n explicitType: EnumExplicitType;\n }) =>\n `The enum member initializer for \\`${memberName}\\` needs to be a literal (either a boolean, number, or string) in enum \\`${enumName}\\`.`,\n EnumInvalidMemberName: ({\n enumName,\n memberName,\n suggestion,\n }: {\n enumName: string;\n memberName: string;\n suggestion: string;\n }) =>\n `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \\`${memberName}\\`, consider using \\`${suggestion}\\`, in enum \\`${enumName}\\`.`,\n EnumNumberMemberNotInitialized: ({\n enumName,\n memberName,\n }: {\n enumName: string;\n memberName: string;\n }) =>\n `Number enum members need to be initialized, e.g. \\`${memberName} = 1\\` in enum \\`${enumName}\\`.`,\n EnumStringMemberInconsistentlyInitialized: ({\n enumName,\n }: {\n enumName: string;\n }) =>\n `String enum members need to consistently either all use initializers, or use no initializers, in enum \\`${enumName}\\`.`,\n GetterMayNotHaveThisParam: \"A getter cannot have a `this` parameter.\",\n ImportReflectionHasImportType:\n \"An `import module` declaration can not use `type` or `typeof` keyword.\",\n ImportTypeShorthandOnlyInPureImport:\n \"The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.\",\n InexactInsideExact:\n \"Explicit inexact syntax cannot appear inside an explicit exact object type.\",\n InexactInsideNonObject:\n \"Explicit inexact syntax cannot appear in class or interface definitions.\",\n InexactVariance: \"Explicit inexact syntax cannot have variance.\",\n InvalidNonTypeImportInDeclareModule:\n \"Imports within a `declare module` body must always be `import type` or `import typeof`.\",\n MissingTypeParamDefault:\n \"Type parameter declaration needs a default, since a preceding type parameter declaration has a default.\",\n NestedDeclareModule:\n \"`declare module` cannot be used inside another `declare module`.\",\n NestedFlowComment: \"Cannot have a flow comment inside another flow comment.\",\n PatternIsOptional: {\n message:\n \"A binding pattern parameter cannot be optional in an implementation signature.\",\n // For consistency in TypeScript and Flow error codes\n ...(!process.env.BABEL_8_BREAKING\n ? { reasonCode: \"OptionalBindingPattern\" }\n : {}),\n },\n SetterMayNotHaveThisParam: \"A setter cannot have a `this` parameter.\",\n SpreadVariance: \"Spread properties cannot have variance.\",\n ThisParamAnnotationRequired:\n \"A type annotation is required for the `this` parameter.\",\n ThisParamBannedInConstructor:\n \"Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.\",\n ThisParamMayNotBeOptional: \"The `this` parameter cannot be optional.\",\n ThisParamMustBeFirst:\n \"The `this` parameter must be the first function parameter.\",\n ThisParamNoDefault: \"The `this` parameter may not have a default value.\",\n TypeBeforeInitializer:\n \"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\",\n TypeCastInPattern:\n \"The type cast expression is expected to be wrapped with parenthesis.\",\n UnexpectedExplicitInexactInObject:\n \"Explicit inexact syntax must appear at the end of an inexact object.\",\n UnexpectedReservedType: ({ reservedType }: { reservedType: string }) =>\n `Unexpected reserved type ${reservedType}.`,\n UnexpectedReservedUnderscore:\n \"`_` is only allowed as a type argument to call or new.\",\n UnexpectedSpaceBetweenModuloChecks:\n \"Spaces between `%` and `checks` are not allowed here.\",\n UnexpectedSpreadType:\n \"Spread operator cannot appear in class or interface definitions.\",\n UnexpectedSubtractionOperand:\n 'Unexpected token, expected \"number\" or \"bigint\".',\n UnexpectedTokenAfterTypeParameter:\n \"Expected an arrow function after this type parameter declaration.\",\n UnexpectedTypeParameterBeforeAsyncArrowFunction:\n \"Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.\",\n UnsupportedDeclareExportKind: ({\n unsupportedExportKind,\n suggestion,\n }: {\n unsupportedExportKind: string;\n suggestion: string;\n }) =>\n `\\`declare export ${unsupportedExportKind}\\` is not supported. Use \\`${suggestion}\\` instead.`,\n UnsupportedStatementInDeclareModule:\n \"Only declares and type imports are allowed inside declare module.\",\n UnterminatedFlowComment: \"Unterminated flow-comment.\",\n});\n/* eslint-disable sort-keys */\n\nfunction isEsModuleType(bodyElement: N.Node): boolean {\n return (\n bodyElement.type === \"DeclareExportAllDeclaration\" ||\n (bodyElement.type === \"DeclareExportDeclaration\" &&\n (!bodyElement.declaration ||\n (bodyElement.declaration.type !== \"TypeAlias\" &&\n bodyElement.declaration.type !== \"InterfaceDeclaration\")))\n );\n}\n\nfunction hasTypeImportKind(\n node: Undone<N.ImportSpecifier | N.ImportDeclaration>,\n): boolean {\n return node.importKind === \"type\" || node.importKind === \"typeof\";\n}\n\nconst exportSuggestions = {\n const: \"declare export var\",\n let: \"declare export var\",\n type: \"export type\",\n interface: \"export interface\",\n};\n\n// Like Array#filter, but returns a tuple [ acceptedElements, discardedElements ]\nfunction partition<T>(\n list: T[],\n test: (c: T, b: number, a: T[]) => boolean | undefined | null,\n): [T[], T[]] {\n const list1: T[] = [];\n const list2: T[] = [];\n for (let i = 0; i < list.length; i++) {\n (test(list[i], i, list) ? list1 : list2).push(list[i]);\n }\n return [list1, list2];\n}\n\nconst FLOW_PRAGMA_REGEX = /\\*?\\s*@((?:no)?flow)\\b/;\n\n// Flow enums types\ntype EnumExplicitType = null | \"boolean\" | \"number\" | \"string\" | \"symbol\";\n\ntype EnumContext = {\n enumName: string;\n explicitType: EnumExplicitType;\n memberName: string;\n};\n\ntype EnumMemberInit =\n | {\n type: \"number\";\n loc: Position;\n value: N.Node;\n }\n | {\n type: \"string\";\n loc: Position;\n value: N.Node;\n }\n | {\n type: \"boolean\";\n loc: Position;\n value: N.Node;\n }\n | {\n type: \"invalid\";\n loc: Position;\n }\n | {\n type: \"none\";\n loc: Position;\n };\n\nexport default (superClass: ClassWithMixin<typeof Parser, IJSXParserMixin>) =>\n class FlowParserMixin extends superClass implements Parser {\n // The value of the @flow/@noflow pragma. Initially undefined, transitions\n // to \"@flow\" or \"@noflow\" if we see a pragma. Transitions to null if we are\n // past the initial comment.\n flowPragma: void | null | \"flow\" | \"noflow\" = undefined;\n\n getScopeHandler(): new (...args: any) => FlowScopeHandler {\n return FlowScopeHandler;\n }\n\n shouldParseTypes(): boolean {\n return this.getPluginOption(\"flow\", \"all\") || this.flowPragma === \"flow\";\n }\n\n finishToken(type: TokenType, val: any): void {\n if (\n type !== tt.string &&\n type !== tt.semi &&\n type !== tt.interpreterDirective\n ) {\n if (this.flowPragma === undefined) {\n this.flowPragma = null;\n }\n }\n super.finishToken(type, val);\n }\n\n addComment(comment: N.Comment): void {\n if (this.flowPragma === undefined) {\n // Try to parse a flow pragma.\n const matches = FLOW_PRAGMA_REGEX.exec(comment.value);\n if (!matches) {\n // do nothing\n } else if (matches[1] === \"flow\") {\n this.flowPragma = \"flow\";\n } else if (matches[1] === \"noflow\") {\n this.flowPragma = \"noflow\";\n } else {\n throw new Error(\"Unexpected flow pragma\");\n }\n }\n super.addComment(comment);\n }\n\n flowParseTypeInitialiser(tok?: TokenType): N.FlowType {\n const oldInType = this.state.inType;\n this.state.inType = true;\n this.expect(tok || tt.colon);\n\n const type = this.flowParseType();\n this.state.inType = oldInType;\n return type;\n }\n\n flowParsePredicate(): N.FlowPredicate {\n const node = this.startNode<N.FlowPredicate>();\n const moduloLoc = this.state.startLoc;\n this.next(); // eat `%`\n this.expectContextual(tt._checks);\n // Force '%' and 'checks' to be adjacent\n if (this.state.lastTokStartLoc!.index > moduloLoc.index + 1) {\n this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, moduloLoc);\n }\n if (this.eat(tt.parenL)) {\n node.value = super.parseExpression();\n this.expect(tt.parenR);\n return this.finishNode(node, \"DeclaredPredicate\");\n } else {\n return this.finishNode(node, \"InferredPredicate\");\n }\n }\n\n flowParseTypeAndPredicateInitialiser(): [\n N.FlowType | null,\n N.FlowPredicate | null,\n ] {\n const oldInType = this.state.inType;\n this.state.inType = true;\n this.expect(tt.colon);\n let type = null;\n let predicate = null;\n if (this.match(tt.modulo)) {\n this.state.inType = oldInType;\n predicate = this.flowParsePredicate();\n } else {\n type = this.flowParseType();\n this.state.inType = oldInType;\n if (this.match(tt.modulo)) {\n predicate = this.flowParsePredicate();\n }\n }\n return [type, predicate];\n }\n\n flowParseDeclareClass(\n node: Undone<N.FlowDeclareClass>,\n ): N.FlowDeclareClass {\n this.next();\n this.flowParseInterfaceish(node, /*isClass*/ true);\n return this.finishNode(node, \"DeclareClass\");\n }\n\n flowParseDeclareFunction(\n node: Undone<N.FlowDeclareFunction>,\n ): N.FlowDeclareFunction {\n this.next();\n\n const id = (node.id = this.parseIdentifier());\n\n const typeNode = this.startNode<N.FlowFunctionTypeAnnotation>();\n const typeContainer = this.startNode<N.TypeAnnotation>();\n\n if (this.match(tt.lt)) {\n typeNode.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n typeNode.typeParameters = null;\n }\n\n this.expect(tt.parenL);\n const tmp = this.flowParseFunctionTypeParams();\n typeNode.params = tmp.params;\n typeNode.rest = tmp.rest;\n typeNode.this = tmp._this;\n this.expect(tt.parenR);\n\n [typeNode.returnType, node.predicate] =\n this.flowParseTypeAndPredicateInitialiser();\n\n typeContainer.typeAnnotation = this.finishNode(\n typeNode,\n \"FunctionTypeAnnotation\",\n );\n\n id.typeAnnotation = this.finishNode(typeContainer, \"TypeAnnotation\");\n\n this.resetEndLocation(id);\n this.semicolon();\n\n this.scope.declareName(\n node.id.name,\n BindingFlag.TYPE_FLOW_DECLARE_FN,\n node.id.loc.start,\n );\n\n return this.finishNode(node, \"DeclareFunction\");\n }\n\n flowParseDeclare(\n node: Undone<N.FlowDeclare>,\n insideModule?: boolean,\n ): N.FlowDeclare {\n if (this.match(tt._class)) {\n return this.flowParseDeclareClass(node);\n } else if (this.match(tt._function)) {\n return this.flowParseDeclareFunction(node);\n } else if (this.match(tt._var)) {\n return this.flowParseDeclareVariable(node);\n } else if (this.eatContextual(tt._module)) {\n if (this.match(tt.dot)) {\n return this.flowParseDeclareModuleExports(node);\n } else {\n if (insideModule) {\n this.raise(\n FlowErrors.NestedDeclareModule,\n this.state.lastTokStartLoc!,\n );\n }\n return this.flowParseDeclareModule(node);\n }\n } else if (this.isContextual(tt._type)) {\n return this.flowParseDeclareTypeAlias(node);\n } else if (this.isContextual(tt._opaque)) {\n return this.flowParseDeclareOpaqueType(node);\n } else if (this.isContextual(tt._interface)) {\n return this.flowParseDeclareInterface(node);\n } else if (this.match(tt._export)) {\n return this.flowParseDeclareExportDeclaration(node, insideModule);\n }\n throw this.unexpected();\n }\n\n flowParseDeclareVariable(\n node: Undone<N.FlowDeclareVariable>,\n ): N.FlowDeclareVariable {\n this.next();\n node.id = this.flowParseTypeAnnotatableIdentifier(\n /*allowPrimitiveOverride*/ true,\n );\n this.scope.declareName(\n node.id.name,\n BindingFlag.TYPE_VAR,\n node.id.loc.start,\n );\n this.semicolon();\n return this.finishNode(node, \"DeclareVariable\");\n }\n\n flowParseDeclareModule(\n node: Undone<N.FlowDeclareModule>,\n ): N.FlowDeclareModule {\n this.scope.enter(ScopeFlag.OTHER);\n\n if (this.match(tt.string)) {\n node.id = super.parseExprAtom();\n } else {\n node.id = this.parseIdentifier();\n }\n\n const bodyNode = (node.body = this.startNode<N.BlockStatement>());\n const body: N.Statement[] = (bodyNode.body = []);\n this.expect(tt.braceL);\n while (!this.match(tt.braceR)) {\n const bodyNode = this.startNode<N.ImportDeclaration>();\n\n if (this.match(tt._import)) {\n this.next();\n if (!this.isContextual(tt._type) && !this.match(tt._typeof)) {\n this.raise(\n FlowErrors.InvalidNonTypeImportInDeclareModule,\n this.state.lastTokStartLoc!,\n );\n }\n body.push(super.parseImport(bodyNode));\n } else {\n this.expectContextual(\n tt._declare,\n FlowErrors.UnsupportedStatementInDeclareModule,\n );\n body.push(this.flowParseDeclare(bodyNode, true));\n }\n }\n\n this.scope.exit();\n\n this.expect(tt.braceR);\n\n this.finishNode(bodyNode, \"BlockStatement\");\n\n let kind: \"CommonJS\" | \"ES\" | null = null;\n let hasModuleExport = false;\n body.forEach(bodyElement => {\n if (isEsModuleType(bodyElement)) {\n if (kind === \"CommonJS\") {\n this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);\n }\n kind = \"ES\";\n } else if (bodyElement.type === \"DeclareModuleExports\") {\n if (hasModuleExport) {\n this.raise(FlowErrors.DuplicateDeclareModuleExports, bodyElement);\n }\n if (kind === \"ES\") {\n this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);\n }\n kind = \"CommonJS\";\n hasModuleExport = true;\n }\n });\n\n node.kind = kind || \"CommonJS\";\n return this.finishNode(node, \"DeclareModule\");\n }\n\n flowParseDeclareExportDeclaration(\n node: Undone<N.FlowDeclareExportDeclaration>,\n insideModule?: boolean | null,\n ): N.FlowDeclareExportDeclaration {\n this.expect(tt._export);\n\n if (this.eat(tt._default)) {\n if (this.match(tt._function) || this.match(tt._class)) {\n // declare export default class ...\n // declare export default function ...\n node.declaration = this.flowParseDeclare(this.startNode());\n } else {\n // declare export default [type];\n node.declaration = this.flowParseType();\n this.semicolon();\n }\n node.default = true;\n\n return this.finishNode(node, \"DeclareExportDeclaration\");\n } else {\n if (\n this.match(tt._const) ||\n this.isLet() ||\n ((this.isContextual(tt._type) || this.isContextual(tt._interface)) &&\n !insideModule)\n ) {\n const label = this.state.value as\n | \"const\"\n | \"let\"\n | \"type\"\n | \"interface\";\n throw this.raise(\n FlowErrors.UnsupportedDeclareExportKind,\n this.state.startLoc,\n {\n unsupportedExportKind: label,\n suggestion: exportSuggestions[label],\n },\n );\n }\n\n if (\n this.match(tt._var) || // declare export var ...\n this.match(tt._function) || // declare export function ...\n this.match(tt._class) || // declare export class ...\n this.isContextual(tt._opaque) // declare export opaque ..\n ) {\n node.declaration = this.flowParseDeclare(this.startNode());\n node.default = false;\n\n return this.finishNode(node, \"DeclareExportDeclaration\");\n } else if (\n this.match(tt.star) || // declare export * from ''\n this.match(tt.braceL) || // declare export {} ...\n this.isContextual(tt._interface) || // declare export interface ...\n this.isContextual(tt._type) || // declare export type ...\n this.isContextual(tt._opaque) // declare export opaque type ...\n ) {\n node = this.parseExport(\n node as Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>,\n /* decorators */ null,\n );\n if (node.type === \"ExportNamedDeclaration\") {\n node.default = false;\n delete node.exportKind;\n return this.castNodeTo(\n node as N.ExportNamedDeclaration,\n \"DeclareExportDeclaration\",\n );\n } else {\n return this.castNodeTo(\n node as N.ExportAllDeclaration,\n \"DeclareExportAllDeclaration\",\n );\n }\n }\n }\n\n throw this.unexpected();\n }\n\n flowParseDeclareModuleExports(\n node: Undone<N.FlowDeclareModuleExports>,\n ): N.FlowDeclareModuleExports {\n this.next();\n this.expectContextual(tt._exports);\n node.typeAnnotation = this.flowParseTypeAnnotation();\n this.semicolon();\n\n return this.finishNode(node, \"DeclareModuleExports\");\n }\n\n flowParseDeclareTypeAlias(\n node: Undone<N.FlowDeclareTypeAlias>,\n ): N.FlowDeclareTypeAlias {\n this.next();\n const finished = this.flowParseTypeAlias(\n node,\n ) as unknown as N.FlowDeclareTypeAlias;\n // Don't do finishNode as we don't want to process comments twice\n this.castNodeTo(finished, \"DeclareTypeAlias\");\n return finished;\n }\n\n flowParseDeclareOpaqueType(\n node: Undone<N.FlowDeclareOpaqueType>,\n ): N.FlowDeclareOpaqueType {\n this.next();\n const finished = this.flowParseOpaqueType(\n node,\n true,\n ) as unknown as N.FlowDeclareOpaqueType;\n // Don't do finishNode as we don't want to process comments twice\n this.castNodeTo(finished, \"DeclareOpaqueType\");\n return finished;\n }\n\n flowParseDeclareInterface(\n node: Undone<N.FlowDeclareInterface>,\n ): N.FlowDeclareInterface {\n this.next();\n this.flowParseInterfaceish(node, /* isClass */ false);\n return this.finishNode(node, \"DeclareInterface\");\n }\n\n // Interfaces\n\n flowParseInterfaceish(node: Undone<N.FlowDeclare>, isClass: boolean): void {\n node.id = this.flowParseRestrictedIdentifier(\n /* liberal */ !isClass,\n /* declaration */ true,\n );\n\n this.scope.declareName(\n node.id.name,\n isClass ? BindingFlag.TYPE_FUNCTION : BindingFlag.TYPE_LEXICAL,\n node.id.loc.start,\n );\n\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n node.extends = [];\n\n if (this.eat(tt._extends)) {\n do {\n node.extends.push(this.flowParseInterfaceExtends());\n } while (!isClass && this.eat(tt.comma));\n }\n\n if (isClass) {\n node.implements = [];\n node.mixins = [];\n\n if (this.eatContextual(tt._mixins)) {\n do {\n node.mixins.push(this.flowParseInterfaceExtends());\n } while (this.eat(tt.comma));\n }\n\n if (this.eatContextual(tt._implements)) {\n do {\n node.implements.push(this.flowParseInterfaceExtends());\n } while (this.eat(tt.comma));\n }\n }\n\n node.body = this.flowParseObjectType({\n allowStatic: isClass,\n allowExact: false,\n allowSpread: false,\n allowProto: isClass,\n allowInexact: false,\n });\n }\n\n flowParseInterfaceExtends(): N.FlowInterfaceExtends {\n const node = this.startNode<N.FlowInterfaceExtends>();\n\n node.id = this.flowParseQualifiedTypeIdentifier();\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n } else {\n node.typeParameters = null;\n }\n\n return this.finishNode(node, \"InterfaceExtends\");\n }\n\n flowParseInterface(node: Undone<N.FlowInterface>): N.FlowInterface {\n this.flowParseInterfaceish(node, /* isClass */ false);\n return this.finishNode(node, \"InterfaceDeclaration\");\n }\n\n checkNotUnderscore(word: string) {\n if (word === \"_\") {\n this.raise(\n FlowErrors.UnexpectedReservedUnderscore,\n this.state.startLoc,\n );\n }\n }\n\n checkReservedType(word: string, startLoc: Position, declaration?: boolean) {\n if (!reservedTypes.has(word)) return;\n\n this.raise(\n declaration\n ? FlowErrors.AssignReservedType\n : FlowErrors.UnexpectedReservedType,\n startLoc,\n {\n reservedType: word,\n },\n );\n }\n\n flowParseRestrictedIdentifier(\n liberal?: boolean,\n declaration?: boolean,\n ): N.Identifier {\n this.checkReservedType(\n this.state.value,\n this.state.startLoc,\n declaration,\n );\n return this.parseIdentifier(liberal);\n }\n\n // Type aliases\n\n flowParseTypeAlias(node: Undone<N.FlowTypeAlias>): N.FlowTypeAlias {\n node.id = this.flowParseRestrictedIdentifier(\n /* liberal */ false,\n /* declaration */ true,\n );\n this.scope.declareName(\n node.id.name,\n BindingFlag.TYPE_LEXICAL,\n node.id.loc.start,\n );\n\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n node.right = this.flowParseTypeInitialiser(tt.eq);\n this.semicolon();\n\n return this.finishNode(node, \"TypeAlias\");\n }\n\n flowParseOpaqueType(\n node: Undone<N.FlowOpaqueType>,\n declare: boolean,\n ): N.FlowOpaqueType {\n this.expectContextual(tt._type);\n node.id = this.flowParseRestrictedIdentifier(\n /* liberal */ true,\n /* declaration */ true,\n );\n this.scope.declareName(\n node.id.name,\n BindingFlag.TYPE_LEXICAL,\n node.id.loc.start,\n );\n\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n // Parse the supertype\n node.supertype = null;\n if (this.match(tt.colon)) {\n node.supertype = this.flowParseTypeInitialiser(tt.colon);\n }\n\n node.impltype = null;\n if (!declare) {\n node.impltype = this.flowParseTypeInitialiser(tt.eq);\n }\n this.semicolon();\n\n return this.finishNode(node, \"OpaqueType\");\n }\n\n // Type annotations\n\n flowParseTypeParameter(requireDefault: boolean = false): N.TypeParameter {\n const nodeStartLoc = this.state.startLoc;\n\n const node = this.startNode<N.TypeParameter>();\n\n const variance = this.flowParseVariance();\n\n const ident = this.flowParseTypeAnnotatableIdentifier();\n node.name = ident.name;\n // @ts-expect-error migrate to Babel types\n node.variance = variance;\n // @ts-expect-error migrate to Babel types\n node.bound = ident.typeAnnotation;\n\n if (this.match(tt.eq)) {\n this.eat(tt.eq);\n // @ts-expect-error migrate to Babel types\n node.default = this.flowParseType();\n } else {\n if (requireDefault) {\n this.raise(FlowErrors.MissingTypeParamDefault, nodeStartLoc);\n }\n }\n\n return this.finishNode(node, \"TypeParameter\");\n }\n\n flowParseTypeParameterDeclaration(): N.TypeParameterDeclaration {\n const oldInType = this.state.inType;\n const node = this.startNode<N.TypeParameterDeclaration>();\n node.params = [];\n\n this.state.inType = true;\n\n // istanbul ignore else: this condition is already checked at all call sites\n if (this.match(tt.lt) || this.match(tt.jsxTagStart)) {\n this.next();\n } else {\n this.unexpected();\n }\n\n let defaultRequired = false;\n\n do {\n const typeParameter = this.flowParseTypeParameter(defaultRequired);\n\n node.params.push(typeParameter);\n\n if (typeParameter.default) {\n defaultRequired = true;\n }\n\n if (!this.match(tt.gt)) {\n this.expect(tt.comma);\n }\n } while (!this.match(tt.gt));\n this.expect(tt.gt);\n\n this.state.inType = oldInType;\n\n return this.finishNode(node, \"TypeParameterDeclaration\");\n }\n\n // Parse in top level normal context if we are in a JSX context\n flowInTopLevelContext<T>(cb: () => T): T {\n if (this.curContext() !== tc.brace) {\n const oldContext = this.state.context;\n this.state.context = [oldContext[0]];\n try {\n return cb();\n } finally {\n this.state.context = oldContext;\n }\n } else {\n return cb();\n }\n }\n\n // Used when parsing type arguments from ES or JSX productions, where the first token\n // has been created without state.inType. Thus we need to re-scan the lt token.\n flowParseTypeParameterInstantiationInExpression():\n | N.TypeParameterInstantiation\n | undefined {\n if (this.reScan_lt() !== tt.lt) return;\n return this.flowParseTypeParameterInstantiation();\n }\n\n flowParseTypeParameterInstantiation(): N.TypeParameterInstantiation {\n const node = this.startNode<N.TypeParameterInstantiation>();\n const oldInType = this.state.inType;\n\n this.state.inType = true;\n node.params = [];\n this.flowInTopLevelContext(() => {\n this.expect(tt.lt);\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = false;\n while (!this.match(tt.gt)) {\n node.params.push(this.flowParseType());\n if (!this.match(tt.gt)) {\n this.expect(tt.comma);\n }\n }\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n });\n\n this.state.inType = oldInType;\n if (!this.state.inType && this.curContext() === tc.brace) {\n // rescan `>` when we are no longer in type context and JSX parsing context\n // since it was tokenized when `inType` is `true`.\n this.reScan_lt_gt();\n }\n this.expect(tt.gt);\n\n return this.finishNode(node, \"TypeParameterInstantiation\");\n }\n\n flowParseTypeParameterInstantiationCallOrNew(): N.TypeParameterInstantiation | null {\n if (this.reScan_lt() !== tt.lt) return null;\n const node = this.startNode<N.TypeParameterInstantiation>();\n const oldInType = this.state.inType;\n node.params = [];\n\n this.state.inType = true;\n\n this.expect(tt.lt);\n while (!this.match(tt.gt)) {\n node.params.push(this.flowParseTypeOrImplicitInstantiation());\n if (!this.match(tt.gt)) {\n this.expect(tt.comma);\n }\n }\n this.expect(tt.gt);\n\n this.state.inType = oldInType;\n\n return this.finishNode(node, \"TypeParameterInstantiation\");\n }\n\n flowParseInterfaceType(): N.FlowInterfaceType {\n const node = this.startNode<N.FlowInterfaceType>();\n this.expectContextual(tt._interface);\n\n node.extends = [];\n if (this.eat(tt._extends)) {\n do {\n node.extends.push(this.flowParseInterfaceExtends());\n } while (this.eat(tt.comma));\n }\n\n node.body = this.flowParseObjectType({\n allowStatic: false,\n allowExact: false,\n allowSpread: false,\n allowProto: false,\n allowInexact: false,\n });\n\n return this.finishNode(node, \"InterfaceTypeAnnotation\");\n }\n\n flowParseObjectPropertyKey(): N.Expression {\n return this.match(tt.num) || this.match(tt.string)\n ? super.parseExprAtom()\n : this.parseIdentifier(true);\n }\n\n flowParseObjectTypeIndexer(\n node: Undone<N.FlowObjectTypeIndexer>,\n isStatic: boolean,\n variance?: N.FlowVariance | null,\n ): N.FlowObjectTypeIndexer {\n node.static = isStatic;\n\n // Note: bracketL has already been consumed\n if (this.lookahead().type === tt.colon) {\n node.id = this.flowParseObjectPropertyKey();\n node.key = this.flowParseTypeInitialiser();\n } else {\n node.id = null;\n node.key = this.flowParseType();\n }\n this.expect(tt.bracketR);\n node.value = this.flowParseTypeInitialiser();\n node.variance = variance;\n\n return this.finishNode(node, \"ObjectTypeIndexer\");\n }\n\n flowParseObjectTypeInternalSlot(\n node: Undone<N.FlowObjectTypeInternalSlot>,\n isStatic: boolean,\n ): N.FlowObjectTypeInternalSlot {\n node.static = isStatic;\n // Note: both bracketL have already been consumed\n node.id = this.flowParseObjectPropertyKey();\n this.expect(tt.bracketR);\n this.expect(tt.bracketR);\n if (this.match(tt.lt) || this.match(tt.parenL)) {\n node.method = true;\n node.optional = false;\n node.value = this.flowParseObjectTypeMethodish(\n this.startNodeAt(node.loc.start),\n );\n } else {\n node.method = false;\n if (this.eat(tt.question)) {\n node.optional = true;\n }\n node.value = this.flowParseTypeInitialiser();\n }\n return this.finishNode(node, \"ObjectTypeInternalSlot\");\n }\n\n flowParseObjectTypeMethodish(\n node: Undone<N.FlowFunctionTypeAnnotation>,\n ): N.FlowFunctionTypeAnnotation {\n node.params = [];\n node.rest = null;\n node.typeParameters = null;\n node.this = null;\n\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n this.expect(tt.parenL);\n if (this.match(tt._this)) {\n node.this = this.flowParseFunctionTypeParam(/* first */ true);\n // match Flow parser behavior\n node.this.name = null;\n if (!this.match(tt.parenR)) {\n this.expect(tt.comma);\n }\n }\n while (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n node.params.push(this.flowParseFunctionTypeParam(false));\n if (!this.match(tt.parenR)) {\n this.expect(tt.comma);\n }\n }\n\n if (this.eat(tt.ellipsis)) {\n node.rest = this.flowParseFunctionTypeParam(false);\n }\n this.expect(tt.parenR);\n node.returnType = this.flowParseTypeInitialiser();\n\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n\n flowParseObjectTypeCallProperty(\n node: Undone<N.FlowObjectTypeCallProperty>,\n isStatic: boolean,\n ): N.FlowObjectTypeCallProperty {\n const valueNode = this.startNode();\n node.static = isStatic;\n node.value = this.flowParseObjectTypeMethodish(valueNode);\n return this.finishNode(node, \"ObjectTypeCallProperty\");\n }\n\n flowParseObjectType({\n allowStatic,\n allowExact,\n allowSpread,\n allowProto,\n allowInexact,\n }: {\n allowStatic: boolean;\n allowExact: boolean;\n allowSpread: boolean;\n allowProto: boolean;\n allowInexact: boolean;\n }): N.FlowObjectTypeAnnotation {\n const oldInType = this.state.inType;\n this.state.inType = true;\n\n const nodeStart = this.startNode<N.FlowObjectTypeAnnotation>();\n\n nodeStart.callProperties = [];\n nodeStart.properties = [];\n nodeStart.indexers = [];\n nodeStart.internalSlots = [];\n\n let endDelim;\n let exact;\n let inexact = false;\n if (allowExact && this.match(tt.braceBarL)) {\n this.expect(tt.braceBarL);\n endDelim = tt.braceBarR;\n exact = true;\n } else {\n this.expect(tt.braceL);\n endDelim = tt.braceR;\n exact = false;\n }\n\n nodeStart.exact = exact;\n\n while (!this.match(endDelim)) {\n let isStatic = false;\n let protoStartLoc: Position | undefined | null = null;\n let inexactStartLoc: Position | undefined | null = null;\n const node = this.startNode();\n\n if (allowProto && this.isContextual(tt._proto)) {\n const lookahead = this.lookahead();\n\n if (lookahead.type !== tt.colon && lookahead.type !== tt.question) {\n this.next();\n protoStartLoc = this.state.startLoc;\n allowStatic = false;\n }\n }\n\n if (allowStatic && this.isContextual(tt._static)) {\n const lookahead = this.lookahead();\n\n // static is a valid identifier name\n if (lookahead.type !== tt.colon && lookahead.type !== tt.question) {\n this.next();\n isStatic = true;\n }\n }\n\n const variance = this.flowParseVariance();\n\n if (this.eat(tt.bracketL)) {\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n if (this.eat(tt.bracketL)) {\n if (variance) {\n this.unexpected(variance.loc.start);\n }\n nodeStart.internalSlots.push(\n this.flowParseObjectTypeInternalSlot(node, isStatic),\n );\n } else {\n nodeStart.indexers.push(\n this.flowParseObjectTypeIndexer(node, isStatic, variance),\n );\n }\n } else if (this.match(tt.parenL) || this.match(tt.lt)) {\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n if (variance) {\n this.unexpected(variance.loc.start);\n }\n nodeStart.callProperties.push(\n this.flowParseObjectTypeCallProperty(node, isStatic),\n );\n } else {\n let kind = \"init\";\n\n if (this.isContextual(tt._get) || this.isContextual(tt._set)) {\n const lookahead = this.lookahead();\n if (tokenIsLiteralPropertyName(lookahead.type)) {\n kind = this.state.value;\n this.next();\n }\n }\n\n const propOrInexact = this.flowParseObjectTypeProperty(\n node,\n isStatic,\n protoStartLoc,\n variance,\n kind,\n allowSpread,\n allowInexact ?? !exact,\n );\n\n if (propOrInexact === null) {\n inexact = true;\n inexactStartLoc = this.state.lastTokStartLoc;\n } else {\n nodeStart.properties.push(propOrInexact);\n }\n }\n\n this.flowObjectTypeSemicolon();\n\n if (\n inexactStartLoc &&\n !this.match(tt.braceR) &&\n !this.match(tt.braceBarR)\n ) {\n this.raise(\n FlowErrors.UnexpectedExplicitInexactInObject,\n inexactStartLoc,\n );\n }\n }\n\n this.expect(endDelim);\n\n /* The inexact flag should only be added on ObjectTypeAnnotations that\n * are not the body of an interface, declare interface, or declare class.\n * Since spreads are only allowed in object types, checking that is\n * sufficient here.\n */\n if (allowSpread) {\n nodeStart.inexact = inexact;\n }\n\n const out = this.finishNode(nodeStart, \"ObjectTypeAnnotation\");\n\n this.state.inType = oldInType;\n\n return out;\n }\n\n flowParseObjectTypeProperty(\n node: Undone<N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty>,\n isStatic: boolean,\n protoStartLoc: Position | undefined | null,\n variance: N.FlowVariance | undefined | null,\n kind: string,\n allowSpread: boolean,\n allowInexact: boolean,\n ): N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty | null {\n if (this.eat(tt.ellipsis)) {\n const isInexactToken =\n this.match(tt.comma) ||\n this.match(tt.semi) ||\n this.match(tt.braceR) ||\n this.match(tt.braceBarR);\n\n if (isInexactToken) {\n if (!allowSpread) {\n this.raise(\n FlowErrors.InexactInsideNonObject,\n this.state.lastTokStartLoc!,\n );\n } else if (!allowInexact) {\n this.raise(\n FlowErrors.InexactInsideExact,\n this.state.lastTokStartLoc!,\n );\n }\n if (variance) {\n this.raise(FlowErrors.InexactVariance, variance);\n }\n\n return null;\n }\n\n if (!allowSpread) {\n this.raise(\n FlowErrors.UnexpectedSpreadType,\n this.state.lastTokStartLoc!,\n );\n }\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n if (variance) {\n this.raise(FlowErrors.SpreadVariance, variance);\n }\n\n node.argument = this.flowParseType();\n return this.finishNode(node, \"ObjectTypeSpreadProperty\");\n } else {\n node.key = this.flowParseObjectPropertyKey();\n node.static = isStatic;\n node.proto = protoStartLoc != null;\n node.kind = kind;\n\n let optional = false;\n if (this.match(tt.lt) || this.match(tt.parenL)) {\n // This is a method property\n node.method = true;\n\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n if (variance) {\n this.unexpected(variance.loc.start);\n }\n\n node.value = this.flowParseObjectTypeMethodish(\n this.startNodeAt(node.loc.start),\n );\n if (kind === \"get\" || kind === \"set\") {\n this.flowCheckGetterSetterParams(node);\n }\n /** Declared classes/interfaces do not allow spread */\n if (\n !allowSpread &&\n node.key.name === \"constructor\" &&\n node.value.this\n ) {\n this.raise(\n FlowErrors.ThisParamBannedInConstructor,\n node.value.this,\n );\n }\n } else {\n if (kind !== \"init\") this.unexpected();\n\n node.method = false;\n\n if (this.eat(tt.question)) {\n optional = true;\n }\n node.value = this.flowParseTypeInitialiser();\n node.variance = variance;\n }\n\n node.optional = optional;\n\n return this.finishNode(node, \"ObjectTypeProperty\");\n }\n }\n\n // This is similar to checkGetterSetterParams, but as\n // @babel/parser uses non estree properties we cannot reuse it here\n flowCheckGetterSetterParams(\n property: Undone<\n N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty\n >,\n ): void {\n const paramCount = property.kind === \"get\" ? 0 : 1;\n const length =\n property.value.params.length + (property.value.rest ? 1 : 0);\n\n if (property.value.this) {\n this.raise(\n property.kind === \"get\"\n ? FlowErrors.GetterMayNotHaveThisParam\n : FlowErrors.SetterMayNotHaveThisParam,\n property.value.this,\n );\n }\n\n if (length !== paramCount) {\n this.raise(\n property.kind === \"get\"\n ? Errors.BadGetterArity\n : Errors.BadSetterArity,\n property,\n );\n }\n\n if (property.kind === \"set\" && property.value.rest) {\n this.raise(Errors.BadSetterRestParameter, property);\n }\n }\n\n flowObjectTypeSemicolon(): void {\n if (\n !this.eat(tt.semi) &&\n !this.eat(tt.comma) &&\n !this.match(tt.braceR) &&\n !this.match(tt.braceBarR)\n ) {\n this.unexpected();\n }\n }\n\n flowParseQualifiedTypeIdentifier(\n startLoc?: Position,\n id?: N.Identifier,\n ): N.FlowQualifiedTypeIdentifier | N.Identifier {\n startLoc ??= this.state.startLoc;\n let node: N.Identifier | N.FlowQualifiedTypeIdentifier =\n id || this.flowParseRestrictedIdentifier(true);\n\n while (this.eat(tt.dot)) {\n const node2 = this.startNodeAt<N.FlowQualifiedTypeIdentifier>(startLoc);\n node2.qualification = node;\n node2.id = this.flowParseRestrictedIdentifier(true);\n node = this.finishNode(node2, \"QualifiedTypeIdentifier\");\n }\n\n return node;\n }\n\n flowParseGenericType(\n startLoc: Position,\n id: N.Identifier,\n ): N.FlowGenericTypeAnnotation {\n const node = this.startNodeAt<N.FlowGenericTypeAnnotation>(startLoc);\n\n node.typeParameters = null;\n node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id);\n\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n }\n\n return this.finishNode(node, \"GenericTypeAnnotation\");\n }\n\n flowParseTypeofType(): N.FlowTypeofTypeAnnotation {\n const node = this.startNode<N.FlowTypeofTypeAnnotation>();\n this.expect(tt._typeof);\n node.argument = this.flowParsePrimaryType();\n return this.finishNode(node, \"TypeofTypeAnnotation\");\n }\n\n flowParseTupleType(): N.FlowTupleTypeAnnotation {\n const node = this.startNode<N.FlowTupleTypeAnnotation>();\n node.types = [];\n this.expect(tt.bracketL);\n // We allow trailing commas\n while (this.state.pos < this.length && !this.match(tt.bracketR)) {\n node.types.push(this.flowParseType());\n if (this.match(tt.bracketR)) break;\n this.expect(tt.comma);\n }\n this.expect(tt.bracketR);\n return this.finishNode(node, \"TupleTypeAnnotation\");\n }\n\n flowParseFunctionTypeParam(first: boolean): N.FlowFunctionTypeParam {\n let name = null;\n let optional = false;\n let typeAnnotation = null;\n const node = this.startNode<N.FlowFunctionTypeParam>();\n const lh = this.lookahead();\n const isThis = this.state.type === tt._this;\n\n if (lh.type === tt.colon || lh.type === tt.question) {\n if (isThis && !first) {\n this.raise(FlowErrors.ThisParamMustBeFirst, node);\n }\n name = this.parseIdentifier(isThis);\n if (this.eat(tt.question)) {\n optional = true;\n if (isThis) {\n this.raise(FlowErrors.ThisParamMayNotBeOptional, node);\n }\n }\n typeAnnotation = this.flowParseTypeInitialiser();\n } else {\n typeAnnotation = this.flowParseType();\n }\n node.name = name;\n node.optional = optional;\n node.typeAnnotation = typeAnnotation;\n return this.finishNode(node, \"FunctionTypeParam\");\n }\n\n reinterpretTypeAsFunctionTypeParam(\n type: N.FlowType,\n ): N.FlowFunctionTypeParam {\n const node = this.startNodeAt<N.FlowFunctionTypeParam>(type.loc.start);\n node.name = null;\n node.optional = false;\n node.typeAnnotation = type;\n return this.finishNode(node, \"FunctionTypeParam\");\n }\n\n flowParseFunctionTypeParams(params: N.FlowFunctionTypeParam[] = []): {\n params: N.FlowFunctionTypeParam[];\n rest: N.FlowFunctionTypeParam | undefined | null;\n _this: N.FlowFunctionTypeParam | undefined | null;\n } {\n let rest: N.FlowFunctionTypeParam | undefined | null = null;\n let _this: N.FlowFunctionTypeParam | undefined | null = null;\n if (this.match(tt._this)) {\n _this = this.flowParseFunctionTypeParam(/* first */ true);\n // match Flow parser behavior\n _this.name = null;\n if (!this.match(tt.parenR)) {\n this.expect(tt.comma);\n }\n }\n while (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n params.push(this.flowParseFunctionTypeParam(false));\n if (!this.match(tt.parenR)) {\n this.expect(tt.comma);\n }\n }\n if (this.eat(tt.ellipsis)) {\n rest = this.flowParseFunctionTypeParam(false);\n }\n return { params, rest, _this };\n }\n\n flowIdentToTypeAnnotation(\n startLoc: Position,\n node: Undone<N.FlowType>,\n id: N.Identifier,\n ): N.FlowType {\n switch (id.name) {\n case \"any\":\n return this.finishNode(node, \"AnyTypeAnnotation\");\n\n case \"bool\":\n case \"boolean\":\n return this.finishNode(node, \"BooleanTypeAnnotation\");\n\n case \"mixed\":\n return this.finishNode(node, \"MixedTypeAnnotation\");\n\n case \"empty\":\n return this.finishNode(node, \"EmptyTypeAnnotation\");\n\n case \"number\":\n return this.finishNode(node, \"NumberTypeAnnotation\");\n\n case \"string\":\n return this.finishNode(node, \"StringTypeAnnotation\");\n\n case \"symbol\":\n return this.finishNode(node, \"SymbolTypeAnnotation\");\n\n default:\n this.checkNotUnderscore(id.name);\n return this.flowParseGenericType(startLoc, id);\n }\n }\n\n // The parsing of types roughly parallels the parsing of expressions, and\n // primary types are kind of like primary expressions...they're the\n // primitives with which other types are constructed.\n flowParsePrimaryType(): N.FlowType {\n const startLoc = this.state.startLoc;\n const node = this.startNode<N.FlowOtherTypeAnnotation>();\n let tmp;\n let type;\n let isGroupedType = false;\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n\n switch (this.state.type) {\n case tt.braceL:\n return this.flowParseObjectType({\n allowStatic: false,\n allowExact: false,\n allowSpread: true,\n allowProto: false,\n allowInexact: true,\n });\n\n case tt.braceBarL:\n return this.flowParseObjectType({\n allowStatic: false,\n allowExact: true,\n allowSpread: true,\n allowProto: false,\n allowInexact: false,\n });\n\n case tt.bracketL:\n this.state.noAnonFunctionType = false;\n type = this.flowParseTupleType();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n return type;\n\n case tt.lt: {\n const node = this.startNode<N.FlowFunctionTypeAnnotation>();\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n this.expect(tt.parenL);\n tmp = this.flowParseFunctionTypeParams();\n node.params = tmp.params;\n node.rest = tmp.rest;\n node.this = tmp._this;\n this.expect(tt.parenR);\n\n this.expect(tt.arrow);\n\n node.returnType = this.flowParseType();\n\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n\n case tt.parenL: {\n const node = this.startNode<N.FlowFunctionTypeAnnotation>();\n this.next();\n\n // Check to see if this is actually a grouped type\n if (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n if (tokenIsIdentifier(this.state.type) || this.match(tt._this)) {\n const token = this.lookahead().type;\n isGroupedType = token !== tt.question && token !== tt.colon;\n } else {\n isGroupedType = true;\n }\n }\n\n if (isGroupedType) {\n this.state.noAnonFunctionType = false;\n type = this.flowParseType();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n // A `,` or a `) =>` means this is an anonymous function type\n if (\n this.state.noAnonFunctionType ||\n !(\n this.match(tt.comma) ||\n (this.match(tt.parenR) && this.lookahead().type === tt.arrow)\n )\n ) {\n this.expect(tt.parenR);\n return type;\n } else {\n // Eat a comma if there is one\n this.eat(tt.comma);\n }\n }\n\n if (type) {\n tmp = this.flowParseFunctionTypeParams([\n this.reinterpretTypeAsFunctionTypeParam(type),\n ]);\n } else {\n tmp = this.flowParseFunctionTypeParams();\n }\n\n node.params = tmp.params;\n node.rest = tmp.rest;\n node.this = tmp._this;\n\n this.expect(tt.parenR);\n\n this.expect(tt.arrow);\n\n node.returnType = this.flowParseType();\n\n node.typeParameters = null;\n\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n\n case tt.string:\n return this.parseLiteral<N.StringLiteralTypeAnnotation>(\n this.state.value,\n \"StringLiteralTypeAnnotation\",\n );\n\n case tt._true:\n case tt._false:\n node.value = this.match(tt._true);\n this.next();\n return this.finishNode(\n node as Undone<N.BooleanLiteralTypeAnnotation>,\n \"BooleanLiteralTypeAnnotation\",\n );\n\n case tt.plusMin:\n if (this.state.value === \"-\") {\n this.next();\n if (this.match(tt.num)) {\n return this.parseLiteralAtNode<N.NumberLiteralTypeAnnotation>(\n -this.state.value,\n \"NumberLiteralTypeAnnotation\",\n node,\n );\n }\n\n if (this.match(tt.bigint)) {\n return this.parseLiteralAtNode<N.BigIntLiteralTypeAnnotation>(\n -this.state.value,\n \"BigIntLiteralTypeAnnotation\",\n node,\n );\n }\n\n throw this.raise(\n FlowErrors.UnexpectedSubtractionOperand,\n this.state.startLoc,\n );\n }\n throw this.unexpected();\n case tt.num:\n return this.parseLiteral(\n this.state.value,\n \"NumberLiteralTypeAnnotation\",\n );\n\n case tt.bigint:\n return this.parseLiteral(\n this.state.value,\n \"BigIntLiteralTypeAnnotation\",\n );\n\n case tt._void:\n this.next();\n return this.finishNode(node, \"VoidTypeAnnotation\");\n\n case tt._null:\n this.next();\n return this.finishNode(node, \"NullLiteralTypeAnnotation\");\n\n case tt._this:\n this.next();\n return this.finishNode(node, \"ThisTypeAnnotation\");\n\n case tt.star:\n this.next();\n return this.finishNode(node, \"ExistsTypeAnnotation\");\n\n case tt._typeof:\n return this.flowParseTypeofType();\n\n default:\n if (tokenIsKeyword(this.state.type)) {\n const label = tokenLabelName(this.state.type);\n this.next();\n return super.createIdentifier(node as Undone<N.Identifier>, label);\n } else if (tokenIsIdentifier(this.state.type)) {\n if (this.isContextual(tt._interface)) {\n return this.flowParseInterfaceType();\n }\n\n return this.flowIdentToTypeAnnotation(\n startLoc,\n node,\n this.parseIdentifier(),\n );\n }\n }\n\n throw this.unexpected();\n }\n\n flowParsePostfixType(): N.FlowType {\n const startLoc = this.state.startLoc;\n let type = this.flowParsePrimaryType();\n let seenOptionalIndexedAccess = false;\n while (\n (this.match(tt.bracketL) || this.match(tt.questionDot)) &&\n !this.canInsertSemicolon()\n ) {\n const node = this.startNodeAt<N.FlowOtherTypeAnnotation>(startLoc);\n const optional = this.eat(tt.questionDot);\n seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional;\n this.expect(tt.bracketL);\n if (!optional && this.match(tt.bracketR)) {\n node.elementType = type;\n this.next(); // eat `]`\n type = this.finishNode(node, \"ArrayTypeAnnotation\");\n } else {\n node.objectType = type;\n node.indexType = this.flowParseType();\n this.expect(tt.bracketR);\n if (seenOptionalIndexedAccess) {\n node.optional = optional;\n type = this.finishNode<N.FlowOptionalIndexedAccessType>(\n // @ts-expect-error todo(flow->ts)\n node,\n \"OptionalIndexedAccessType\",\n );\n } else {\n type = this.finishNode<N.FlowIndexedAccessType>(\n // @ts-expect-error todo(flow->ts)\n node,\n \"IndexedAccessType\",\n );\n }\n }\n }\n return type;\n }\n\n flowParsePrefixType(): N.FlowType {\n const node = this.startNode<N.FlowOtherTypeAnnotation>();\n if (this.eat(tt.question)) {\n node.typeAnnotation = this.flowParsePrefixType();\n return this.finishNode(node, \"NullableTypeAnnotation\");\n } else {\n return this.flowParsePostfixType();\n }\n }\n\n flowParseAnonFunctionWithoutParens(): N.FlowType {\n const param = this.flowParsePrefixType();\n if (!this.state.noAnonFunctionType && this.eat(tt.arrow)) {\n // TODO: This should be a type error. Passing in a SourceLocation, and it expects a Position.\n const node = this.startNodeAt<N.FlowFunctionTypeAnnotation>(\n param.loc.start,\n );\n node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];\n node.rest = null;\n node.this = null;\n node.returnType = this.flowParseType();\n node.typeParameters = null;\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n return param;\n }\n\n flowParseIntersectionType(): N.FlowType {\n const node = this.startNode<N.FlowOtherTypeAnnotation>();\n this.eat(tt.bitwiseAND);\n const type = this.flowParseAnonFunctionWithoutParens();\n node.types = [type];\n while (this.eat(tt.bitwiseAND)) {\n node.types.push(this.flowParseAnonFunctionWithoutParens());\n }\n return node.types.length === 1\n ? type\n : this.finishNode(node, \"IntersectionTypeAnnotation\");\n }\n\n flowParseUnionType(): N.FlowType {\n const node = this.startNode<N.FlowOtherTypeAnnotation>();\n this.eat(tt.bitwiseOR);\n const type = this.flowParseIntersectionType();\n node.types = [type];\n while (this.eat(tt.bitwiseOR)) {\n node.types.push(this.flowParseIntersectionType());\n }\n return node.types.length === 1\n ? type\n : this.finishNode(node, \"UnionTypeAnnotation\");\n }\n\n flowParseType(): N.FlowType {\n const oldInType = this.state.inType;\n this.state.inType = true;\n const type = this.flowParseUnionType();\n this.state.inType = oldInType;\n return type;\n }\n\n flowParseTypeOrImplicitInstantiation(): N.FlowType {\n if (this.state.type === tt.name && this.state.value === \"_\") {\n const startLoc = this.state.startLoc;\n const node = this.parseIdentifier();\n return this.flowParseGenericType(startLoc, node);\n } else {\n return this.flowParseType();\n }\n }\n\n flowParseTypeAnnotation(): N.TypeAnnotation {\n const node = this.startNode<N.TypeAnnotation>();\n node.typeAnnotation = this.flowParseTypeInitialiser();\n return this.finishNode(node, \"TypeAnnotation\");\n }\n\n flowParseTypeAnnotatableIdentifier(\n allowPrimitiveOverride?: boolean,\n ): N.Identifier {\n const ident = allowPrimitiveOverride\n ? this.parseIdentifier()\n : this.flowParseRestrictedIdentifier();\n if (this.match(tt.colon)) {\n ident.typeAnnotation = this.flowParseTypeAnnotation();\n this.resetEndLocation(ident);\n }\n return ident;\n }\n\n typeCastToParameter(node: N.TypeCastExpression): N.Expression {\n (node.expression as N.Identifier).typeAnnotation = node.typeAnnotation;\n\n this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);\n\n return node.expression;\n }\n\n flowParseVariance(): N.FlowVariance | undefined | null {\n let variance = null;\n if (this.match(tt.plusMin)) {\n variance = this.startNode<N.FlowVariance>();\n if (this.state.value === \"+\") {\n variance.kind = \"plus\";\n } else {\n variance.kind = \"minus\";\n }\n this.next();\n return this.finishNode(variance, \"Variance\");\n }\n return variance;\n }\n\n // ==================================\n // Overrides\n // ==================================\n\n parseFunctionBody(\n node: N.Function,\n allowExpressionBody?: boolean | null,\n isMethod: boolean = false,\n ): void {\n if (allowExpressionBody) {\n this.forwardNoArrowParamsConversionAt(node, () =>\n super.parseFunctionBody(node, true, isMethod),\n );\n return;\n }\n\n super.parseFunctionBody(node, false, isMethod);\n }\n\n parseFunctionBodyAndFinish<\n T extends\n | N.Function\n | N.TSDeclareMethod\n | N.TSDeclareFunction\n | N.ClassPrivateMethod,\n >(node: Undone<T>, type: T[\"type\"], isMethod: boolean = false): T {\n if (this.match(tt.colon)) {\n const typeNode = this.startNode<N.TypeAnnotation>();\n\n [\n typeNode.typeAnnotation,\n // @ts-expect-error predicate may not exist\n node.predicate,\n ] = this.flowParseTypeAndPredicateInitialiser() as [\n N.FlowType,\n N.FlowPredicate,\n ];\n\n node.returnType = typeNode.typeAnnotation\n ? this.finishNode(typeNode, \"TypeAnnotation\")\n : null;\n }\n\n return super.parseFunctionBodyAndFinish(node, type, isMethod);\n }\n\n // interfaces and enums\n parseStatementLike(flags: ParseStatementFlag): N.Statement {\n // strict mode handling of `interface` since it's a reserved word\n if (this.state.strict && this.isContextual(tt._interface)) {\n const lookahead = this.lookahead();\n if (tokenIsKeywordOrIdentifier(lookahead.type)) {\n const node = this.startNode<N.FlowInterface>();\n this.next();\n return this.flowParseInterface(node);\n }\n } else if (this.isContextual(tt._enum)) {\n const node = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(node);\n }\n const stmt = super.parseStatementLike(flags);\n // We will parse a flow pragma in any comment before the first statement.\n if (this.flowPragma === undefined && !this.isValidDirective(stmt)) {\n this.flowPragma = null;\n }\n return stmt;\n }\n\n // declares, interfaces and type aliases\n parseExpressionStatement(\n node: N.ExpressionStatement,\n expr: N.Expression,\n decorators: N.Decorator[] | null,\n ): N.ExpressionStatement {\n if (expr.type === \"Identifier\") {\n if (expr.name === \"declare\") {\n if (\n this.match(tt._class) ||\n tokenIsIdentifier(this.state.type) ||\n this.match(tt._function) ||\n this.match(tt._var) ||\n this.match(tt._export)\n ) {\n // @ts-expect-error: refine typings\n return this.flowParseDeclare(node);\n }\n } else if (tokenIsIdentifier(this.state.type)) {\n if (expr.name === \"interface\") {\n // @ts-expect-error: refine typings\n return this.flowParseInterface(node);\n } else if (expr.name === \"type\") {\n // @ts-expect-error: refine typings\n return this.flowParseTypeAlias(node);\n } else if (expr.name === \"opaque\") {\n // @ts-expect-error: refine typings\n return this.flowParseOpaqueType(node, false);\n }\n }\n }\n\n return super.parseExpressionStatement(node, expr, decorators);\n }\n\n // export type\n shouldParseExportDeclaration(): boolean {\n const { type } = this.state;\n if (type === tt._enum || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {\n return !this.state.containsEsc;\n }\n return super.shouldParseExportDeclaration();\n }\n\n isExportDefaultSpecifier(): boolean {\n const { type } = this.state;\n if (type === tt._enum || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {\n return this.state.containsEsc;\n }\n\n return super.isExportDefaultSpecifier();\n }\n\n parseExportDefaultExpression() {\n if (this.isContextual(tt._enum)) {\n const node = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(node);\n }\n return super.parseExportDefaultExpression();\n }\n\n parseConditional(\n expr: N.Expression,\n\n startLoc: Position,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.Expression {\n if (!this.match(tt.question)) return expr;\n\n if (this.state.maybeInArrowParameters) {\n const nextCh = this.lookaheadCharCode();\n // These tokens cannot start an expression, so if one of them follows\n // ? then we are probably in an arrow function parameters list and we\n // don't parse the conditional expression.\n if (\n nextCh === charCodes.comma || // (a?, b) => c\n nextCh === charCodes.equalsTo || // (a? = b) => c\n nextCh === charCodes.colon || // (a?: b) => c\n nextCh === charCodes.rightParenthesis // (a?) => c\n ) {\n /*:: invariant(refExpressionErrors != null) */\n this.setOptionalParametersError(refExpressionErrors!);\n return expr;\n }\n }\n\n this.expect(tt.question);\n const state = this.state.clone();\n const originalNoArrowAt = this.state.noArrowAt;\n const node = this.startNodeAt<N.ConditionalExpression>(startLoc);\n let { consequent, failed } = this.tryParseConditionalConsequent();\n let [valid, invalid] = this.getArrowLikeExpressions(consequent);\n\n if (failed || invalid.length > 0) {\n const noArrowAt = [...originalNoArrowAt];\n\n if (invalid.length > 0) {\n this.state = state;\n this.state.noArrowAt = noArrowAt;\n\n for (let i = 0; i < invalid.length; i++) {\n noArrowAt.push(invalid[i].start);\n }\n\n ({ consequent, failed } = this.tryParseConditionalConsequent());\n [valid, invalid] = this.getArrowLikeExpressions(consequent);\n }\n\n if (failed && valid.length > 1) {\n // if there are two or more possible correct ways of parsing, throw an\n // error.\n // e.g. Source: a ? (b): c => (d): e => f\n // Result 1: a ? b : (c => ((d): e => f))\n // Result 2: a ? ((b): c => d) : (e => f)\n this.raise(FlowErrors.AmbiguousConditionalArrow, state.startLoc);\n }\n\n if (failed && valid.length === 1) {\n this.state = state;\n noArrowAt.push(valid[0].start);\n this.state.noArrowAt = noArrowAt;\n ({ consequent, failed } = this.tryParseConditionalConsequent());\n }\n }\n\n this.getArrowLikeExpressions(consequent, true);\n\n this.state.noArrowAt = originalNoArrowAt;\n this.expect(tt.colon);\n\n node.test = expr;\n node.consequent = consequent;\n node.alternate = this.forwardNoArrowParamsConversionAt(node, () =>\n this.parseMaybeAssign(undefined, undefined),\n );\n\n return this.finishNode(node, \"ConditionalExpression\");\n }\n\n tryParseConditionalConsequent(): {\n consequent: N.Expression;\n failed: boolean;\n } {\n this.state.noArrowParamsConversionAt.push(this.state.start);\n\n const consequent = this.parseMaybeAssignAllowIn();\n const failed = !this.match(tt.colon);\n\n this.state.noArrowParamsConversionAt.pop();\n\n return { consequent, failed };\n }\n\n // Given an expression, walks through out its arrow functions whose body is\n // an expression and through out conditional expressions. It returns every\n // function which has been parsed with a return type but could have been\n // parenthesized expressions.\n // These functions are separated into two arrays: one containing the ones\n // whose parameters can be converted to assignable lists, one containing the\n // others.\n getArrowLikeExpressions(\n node: N.Expression,\n disallowInvalid?: boolean,\n ): [N.ArrowFunctionExpression[], N.ArrowFunctionExpression[]] {\n const stack = [node];\n const arrows: N.ArrowFunctionExpression[] = [];\n\n while (stack.length !== 0) {\n const node = stack.pop()!;\n if (\n node.type === \"ArrowFunctionExpression\" &&\n node.body.type !== \"BlockStatement\"\n ) {\n if (node.typeParameters || !node.returnType) {\n // This is an arrow expression without ambiguity, so check its parameters\n this.finishArrowValidation(node);\n } else {\n arrows.push(node);\n }\n stack.push(node.body);\n } else if (node.type === \"ConditionalExpression\") {\n stack.push(node.consequent);\n stack.push(node.alternate);\n }\n }\n\n if (disallowInvalid) {\n arrows.forEach(node => this.finishArrowValidation(node));\n return [arrows, []];\n }\n\n return partition(arrows, node =>\n node.params.every(param => this.isAssignable(param, true)),\n );\n }\n\n finishArrowValidation(node: N.ArrowFunctionExpression) {\n this.toAssignableList(\n // node.params is Expression[] instead of $ReadOnlyArray<Pattern> because it\n // has not been converted yet.\n node.params as any as N.Expression[],\n node.extra?.trailingCommaLoc,\n /* isLHS */ false,\n );\n // Enter scope, as checkParams defines bindings\n this.scope.enter(ScopeFlag.FUNCTION | ScopeFlag.ARROW);\n // Use super's method to force the parameters to be checked\n super.checkParams(node, false, true);\n this.scope.exit();\n }\n\n forwardNoArrowParamsConversionAt<T>(\n node: Undone<N.Node>,\n parse: () => T,\n ): T {\n let result: T;\n if (\n this.state.noArrowParamsConversionAt.includes(\n this.offsetToSourcePos(node.start),\n )\n ) {\n this.state.noArrowParamsConversionAt.push(this.state.start);\n result = parse();\n this.state.noArrowParamsConversionAt.pop();\n } else {\n result = parse();\n }\n\n return result;\n }\n\n parseParenItem<T extends N.Expression | N.RestElement | N.SpreadElement>(\n node: T,\n startLoc: Position,\n ): T | N.TypeCastExpression | N.TsTypeCastExpression {\n const newNode = super.parseParenItem(node, startLoc);\n if (this.eat(tt.question)) {\n (newNode as N.Identifier).optional = true;\n // Include questionmark in location of node\n // Don't use this.finishNode() as otherwise we might process comments twice and\n // include already consumed parens\n this.resetEndLocation(node);\n }\n\n if (this.match(tt.colon)) {\n const typeCastNode = this.startNodeAt<N.TypeCastExpression>(startLoc);\n typeCastNode.expression = newNode as N.Expression;\n typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();\n\n return this.finishNode(typeCastNode, \"TypeCastExpression\");\n }\n\n return newNode;\n }\n\n assertModuleNodeAllowed(node: N.Node) {\n if (\n (node.type === \"ImportDeclaration\" &&\n (node.importKind === \"type\" || node.importKind === \"typeof\")) ||\n (node.type === \"ExportNamedDeclaration\" &&\n node.exportKind === \"type\") ||\n (node.type === \"ExportAllDeclaration\" && node.exportKind === \"type\")\n ) {\n // Allow Flowtype imports and exports in all conditions because\n // Flow itself does not care about 'sourceType'.\n return;\n }\n\n super.assertModuleNodeAllowed(node);\n }\n\n parseExportDeclaration(\n node: N.ExportNamedDeclaration,\n ): N.Declaration | undefined | null {\n if (this.isContextual(tt._type)) {\n node.exportKind = \"type\";\n\n const declarationNode = this.startNode();\n this.next();\n\n if (this.match(tt.braceL)) {\n // export type { foo, bar };\n node.specifiers = this.parseExportSpecifiers(\n /* isInTypeExport */ true,\n );\n super.parseExportFrom(node);\n return null;\n } else {\n // export type Foo = Bar;\n // @ts-expect-error: refine typings\n return this.flowParseTypeAlias(declarationNode);\n }\n } else if (this.isContextual(tt._opaque)) {\n node.exportKind = \"type\";\n\n const declarationNode = this.startNode();\n this.next();\n // export opaque type Foo = Bar;\n // @ts-expect-error: refine typings\n return this.flowParseOpaqueType(declarationNode, false);\n } else if (this.isContextual(tt._interface)) {\n node.exportKind = \"type\";\n const declarationNode = this.startNode();\n this.next();\n // @ts-expect-error: refine typings\n return this.flowParseInterface(declarationNode);\n } else if (this.isContextual(tt._enum)) {\n node.exportKind = \"value\";\n const declarationNode = this.startNode();\n this.next();\n // @ts-expect-error: refine typings\n return this.flowParseEnumDeclaration(declarationNode);\n } else {\n return super.parseExportDeclaration(node);\n }\n }\n\n eatExportStar(\n node: Undone<N.Node>,\n ): node is Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration> {\n if (super.eatExportStar(node)) return true;\n\n if (this.isContextual(tt._type) && this.lookahead().type === tt.star) {\n (\n node as Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>\n ).exportKind = \"type\";\n this.next();\n this.next();\n return true;\n }\n\n return false;\n }\n\n maybeParseExportNamespaceSpecifier(\n node: Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>,\n ): node is Undone<N.ExportNamedDeclaration> {\n const { startLoc } = this.state;\n const hasNamespace = super.maybeParseExportNamespaceSpecifier(node);\n if (hasNamespace && node.exportKind === \"type\") {\n this.unexpected(startLoc);\n }\n return hasNamespace;\n }\n\n parseClassId(\n node: N.Class,\n isStatement: boolean,\n optionalId?: boolean | null,\n ) {\n super.parseClassId(node, isStatement, optionalId);\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n }\n\n parseClassMember(\n classBody: N.ClassBody,\n member: any,\n state: N.ParseClassMemberState,\n ): void {\n const { startLoc } = this.state;\n if (this.isContextual(tt._declare)) {\n if (super.parseClassMemberFromModifier(classBody, member)) {\n // 'declare' is a class element name\n return;\n }\n\n member.declare = true;\n }\n\n super.parseClassMember(classBody, member, state);\n\n if (member.declare) {\n if (\n member.type !== \"ClassProperty\" &&\n member.type !== \"ClassPrivateProperty\" &&\n member.type !== \"PropertyDefinition\" // Used by estree plugin\n ) {\n this.raise(FlowErrors.DeclareClassElement, startLoc);\n } else if (member.value) {\n this.raise(FlowErrors.DeclareClassFieldInitializer, member.value);\n }\n }\n }\n\n isIterator(word: string): boolean {\n return word === \"iterator\" || word === \"asyncIterator\";\n }\n\n readIterator(): void {\n const word = super.readWord1();\n const fullWord = \"@@\" + word;\n\n // Allow @@iterator and @@asyncIterator as a identifier only inside type\n if (!this.isIterator(word) || !this.state.inType) {\n this.raise(Errors.InvalidIdentifier, this.state.curPosition(), {\n identifierName: fullWord,\n });\n }\n\n this.finishToken(tt.name, fullWord);\n }\n\n // ensure that inside flow types, we bypass the jsx parser plugin\n getTokenFromCode(code: number): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (code === charCodes.leftCurlyBrace && next === charCodes.verticalBar) {\n this.finishOp(tt.braceBarL, 2);\n } else if (\n this.state.inType &&\n (code === charCodes.greaterThan || code === charCodes.lessThan)\n ) {\n this.finishOp(code === charCodes.greaterThan ? tt.gt : tt.lt, 1);\n } else if (this.state.inType && code === charCodes.questionMark) {\n if (next === charCodes.dot) {\n this.finishOp(tt.questionDot, 2);\n } else {\n // allow double nullable types in Flow: ??string\n this.finishOp(tt.question, 1);\n }\n } else if (\n isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))\n ) {\n this.state.pos += 2; // eat \"@@\"\n this.readIterator();\n } else {\n super.getTokenFromCode(code);\n }\n }\n\n isAssignable(node: N.Node, isBinding?: boolean): boolean {\n if (node.type === \"TypeCastExpression\") {\n return this.isAssignable(node.expression, isBinding);\n } else {\n return super.isAssignable(node, isBinding);\n }\n }\n\n toAssignable(node: N.Node, isLHS: boolean = false): void {\n if (\n !isLHS &&\n node.type === \"AssignmentExpression\" &&\n node.left.type === \"TypeCastExpression\"\n ) {\n node.left = this.typeCastToParameter(node.left) as N.Assignable;\n }\n super.toAssignable(node, isLHS);\n }\n\n // turn type casts that we found in function parameter head into type annotated params\n toAssignableList(\n exprList: N.Expression[],\n trailingCommaLoc: Position | undefined | null,\n isLHS: boolean,\n ): void {\n for (let i = 0; i < exprList.length; i++) {\n const expr = exprList[i];\n if (expr?.type === \"TypeCastExpression\") {\n exprList[i] = this.typeCastToParameter(expr);\n }\n }\n super.toAssignableList(exprList, trailingCommaLoc, isLHS);\n }\n\n // this is a list of nodes, from something like a call expression, we need to filter the\n // type casts that we've found that are illegal in this context\n toReferencedList(\n exprList:\n | readonly (N.Expression | N.SpreadElement | null)[]\n | readonly (N.Expression | N.RestElement)[],\n isParenthesizedExpr?: boolean,\n ):\n | readonly (N.Expression | N.SpreadElement | null)[]\n | readonly (N.Expression | N.RestElement)[] {\n for (let i = 0; i < exprList.length; i++) {\n const expr = exprList[i];\n if (\n expr &&\n expr.type === \"TypeCastExpression\" &&\n !expr.extra?.parenthesized &&\n (exprList.length > 1 || !isParenthesizedExpr)\n ) {\n this.raise(FlowErrors.TypeCastInPattern, expr.typeAnnotation);\n }\n }\n\n return exprList;\n }\n\n parseArrayLike(\n close: TokenType,\n isTuple: boolean,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.ArrayExpression | N.TupleExpression {\n const node = super.parseArrayLike(close, isTuple, refExpressionErrors);\n\n // This could be an array pattern:\n // ([a: string, b: string]) => {}\n // In this case, we don't have to call toReferencedList. We will\n // call it, if needed, when we are sure that it is a parenthesized\n // expression by calling toReferencedListDeep.\n if (refExpressionErrors != null && !this.state.maybeInArrowParameters) {\n this.toReferencedList(node.elements);\n }\n\n return node;\n }\n\n isValidLVal(\n type: string,\n disallowCallExpression: boolean,\n isParenthesized: boolean,\n binding: BindingFlag,\n ) {\n return (\n type === \"TypeCastExpression\" ||\n super.isValidLVal(\n type,\n disallowCallExpression,\n isParenthesized,\n binding,\n )\n );\n }\n\n // parse class property type annotations\n parseClassProperty(node: N.ClassProperty): N.ClassProperty {\n if (this.match(tt.colon)) {\n node.typeAnnotation = this.flowParseTypeAnnotation();\n }\n return super.parseClassProperty(node);\n }\n\n parseClassPrivateProperty(\n node: N.ClassPrivateProperty,\n ): N.ClassPrivateProperty {\n if (this.match(tt.colon)) {\n node.typeAnnotation = this.flowParseTypeAnnotation();\n }\n return super.parseClassPrivateProperty(node);\n }\n\n // determine whether or not we're currently in the position where a class method would appear\n isClassMethod(): boolean {\n return this.match(tt.lt) || super.isClassMethod();\n }\n\n // determine whether or not we're currently in the position where a class property would appear\n isClassProperty(): boolean {\n return this.match(tt.colon) || super.isClassProperty();\n }\n\n isNonstaticConstructor(method: N.ClassMethod | N.ClassProperty): boolean {\n return !this.match(tt.colon) && super.isNonstaticConstructor(method);\n }\n\n // parse type parameters for class methods\n pushClassMethod(\n classBody: N.ClassBody,\n method: N.ClassMethod,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowsDirectSuper: boolean,\n ): void {\n if ((method as any).variance) {\n this.unexpected((method as any).variance.loc.start);\n }\n delete (method as any).variance;\n if (this.match(tt.lt)) {\n method.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n super.pushClassMethod(\n classBody,\n method,\n isGenerator,\n isAsync,\n isConstructor,\n allowsDirectSuper,\n );\n\n if (method.params && isConstructor) {\n const params = method.params;\n if (params.length > 0 && this.isThisParam(params[0])) {\n this.raise(FlowErrors.ThisParamBannedInConstructor, method);\n }\n // estree support\n } else if (\n // @ts-expect-error TS does not know about the fact that estree can replace ClassMethod with MethodDefinition\n method.type === \"MethodDefinition\" &&\n isConstructor &&\n // @ts-expect-error estree\n method.value.params\n ) {\n // @ts-expect-error estree\n const params = method.value.params;\n if (params.length > 0 && this.isThisParam(params[0])) {\n this.raise(FlowErrors.ThisParamBannedInConstructor, method);\n }\n }\n }\n\n pushClassPrivateMethod(\n classBody: N.ClassBody,\n method: N.ClassPrivateMethod,\n isGenerator: boolean,\n isAsync: boolean,\n ): void {\n if ((method as any).variance) {\n this.unexpected((method as any).variance.loc.start);\n }\n delete (method as any).variance;\n if (this.match(tt.lt)) {\n method.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n }\n\n // parse a the super class type parameters and implements\n parseClassSuper(node: N.Class): void {\n super.parseClassSuper(node);\n if (\n node.superClass &&\n (this.match(tt.lt) ||\n // handles `class extends C<<T>`\n this.match(tt.bitShiftL))\n ) {\n if (process.env.BABEL_8_BREAKING) {\n node.superTypeArguments =\n this.flowParseTypeParameterInstantiationInExpression();\n } else {\n node.superTypeParameters =\n this.flowParseTypeParameterInstantiationInExpression();\n }\n }\n if (this.isContextual(tt._implements)) {\n this.next();\n const implemented: N.FlowClassImplements[] = (node.implements = []);\n do {\n const node = this.startNode<N.FlowClassImplements>();\n node.id = this.flowParseRestrictedIdentifier(/*liberal*/ true);\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n } else {\n node.typeParameters = null;\n }\n implemented.push(this.finishNode(node, \"ClassImplements\"));\n } while (this.eat(tt.comma));\n }\n }\n\n checkGetterSetterParams(method: N.ObjectMethod | N.ClassMethod): void {\n super.checkGetterSetterParams(method);\n const params = this.getObjectOrClassMethodParams(method);\n if (params.length > 0) {\n const param = params[0];\n if (this.isThisParam(param) && method.kind === \"get\") {\n this.raise(FlowErrors.GetterMayNotHaveThisParam, param);\n } else if (this.isThisParam(param)) {\n this.raise(FlowErrors.SetterMayNotHaveThisParam, param);\n }\n }\n }\n\n parsePropertyNamePrefixOperator(\n node: N.ObjectOrClassMember | N.ClassMember,\n ): void {\n node.variance = this.flowParseVariance();\n }\n\n // parse type parameters for object method shorthand\n parseObjPropValue<T extends N.ObjectMember>(\n prop: Undone<T>,\n startLoc: Position | undefined | null,\n isGenerator: boolean,\n isAsync: boolean,\n isPattern: boolean,\n isAccessor: boolean,\n refExpressionErrors?: ExpressionErrors | null,\n ): T {\n if ((prop as any).variance) {\n this.unexpected((prop as any).variance.loc.start);\n }\n delete (prop as any).variance;\n\n let typeParameters;\n\n // method shorthand\n if (this.match(tt.lt) && !isAccessor) {\n typeParameters = this.flowParseTypeParameterDeclaration();\n if (!this.match(tt.parenL)) this.unexpected();\n }\n\n const result = super.parseObjPropValue(\n prop,\n startLoc,\n isGenerator,\n isAsync,\n isPattern,\n isAccessor,\n refExpressionErrors,\n );\n\n // add typeParameters if we found them\n if (typeParameters) {\n // @ts-expect-error: refine typings\n (result.value || result).typeParameters = typeParameters;\n }\n return result;\n }\n\n parseFunctionParamType(param: N.Pattern): N.Pattern {\n if (this.eat(tt.question)) {\n if (param.type !== \"Identifier\") {\n this.raise(FlowErrors.PatternIsOptional, param);\n }\n if (this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamMayNotBeOptional, param);\n }\n\n (param as any as N.Identifier).optional = true;\n }\n if (this.match(tt.colon)) {\n param.typeAnnotation = this.flowParseTypeAnnotation();\n } else if (this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamAnnotationRequired, param);\n }\n\n if (this.match(tt.eq) && this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamNoDefault, param);\n }\n\n this.resetEndLocation(param);\n return param;\n }\n\n parseMaybeDefault<P extends N.Pattern>(\n startLoc?: Position | null,\n left?: P | null,\n ): P | N.AssignmentPattern {\n const node = super.parseMaybeDefault(startLoc, left);\n\n if (\n node.type === \"AssignmentPattern\" &&\n node.typeAnnotation &&\n node.right.start < node.typeAnnotation.start\n ) {\n this.raise(FlowErrors.TypeBeforeInitializer, node.typeAnnotation);\n }\n\n return node;\n }\n\n checkImportReflection(node: Undone<N.ImportDeclaration>) {\n super.checkImportReflection(node);\n if (node.module && node.importKind !== \"value\") {\n this.raise(\n FlowErrors.ImportReflectionHasImportType,\n node.specifiers[0].loc.start,\n );\n }\n }\n\n parseImportSpecifierLocal<\n T extends\n | N.ImportSpecifier\n | N.ImportDefaultSpecifier\n | N.ImportNamespaceSpecifier,\n >(node: N.ImportDeclaration, specifier: Undone<T>, type: T[\"type\"]): void {\n specifier.local = hasTypeImportKind(node)\n ? this.flowParseRestrictedIdentifier(\n /* liberal */ true,\n /* declaration */ true,\n )\n : this.parseIdentifier();\n\n node.specifiers.push(this.finishImportSpecifier(specifier, type));\n }\n\n isPotentialImportPhase(isExport: boolean): boolean {\n if (super.isPotentialImportPhase(isExport)) return true;\n if (this.isContextual(tt._type)) {\n if (!isExport) return true;\n const ch = this.lookaheadCharCode();\n return ch === charCodes.leftCurlyBrace || ch === charCodes.asterisk;\n }\n return !isExport && this.isContextual(tt._typeof);\n }\n\n applyImportPhase(\n node: Undone<N.ImportDeclaration | N.ExportNamedDeclaration>,\n isExport: boolean,\n phase: string | null,\n loc?: Position,\n ): void {\n super.applyImportPhase(node, isExport, phase, loc);\n if (isExport) {\n if (!phase && this.match(tt._default)) {\n // TODO: Align with our TS AST and always add .exportKind\n return;\n }\n (node as N.ExportNamedDeclaration).exportKind =\n phase === \"type\" ? phase : \"value\";\n } else {\n if (phase === \"type\" && this.match(tt.star)) this.unexpected();\n (node as N.ImportDeclaration).importKind =\n phase === \"type\" || phase === \"typeof\" ? phase : \"value\";\n }\n }\n\n // parse import-type/typeof shorthand\n parseImportSpecifier(\n specifier: any,\n importedIsString: boolean,\n isInTypeOnlyImport: boolean,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isMaybeTypeOnly: boolean,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n bindingType: BindingFlag | undefined,\n ): N.ImportSpecifier {\n const firstIdent = specifier.imported;\n\n let specifierTypeKind = null;\n if (firstIdent.type === \"Identifier\") {\n if (firstIdent.name === \"type\") {\n specifierTypeKind = \"type\";\n } else if (firstIdent.name === \"typeof\") {\n specifierTypeKind = \"typeof\";\n }\n }\n\n let isBinding = false;\n if (this.isContextual(tt._as) && !this.isLookaheadContextual(\"as\")) {\n const as_ident = this.parseIdentifier(true);\n if (\n specifierTypeKind !== null &&\n !tokenIsKeywordOrIdentifier(this.state.type)\n ) {\n // `import {type as ,` or `import {type as }`\n specifier.imported = as_ident;\n specifier.importKind = specifierTypeKind;\n specifier.local = this.cloneIdentifier(as_ident);\n } else {\n // `import {type as foo`\n specifier.imported = firstIdent;\n specifier.importKind = null;\n specifier.local = this.parseIdentifier();\n }\n } else {\n if (\n specifierTypeKind !== null &&\n tokenIsKeywordOrIdentifier(this.state.type)\n ) {\n // `import {type foo`\n specifier.imported = this.parseIdentifier(true);\n specifier.importKind = specifierTypeKind;\n } else {\n if (importedIsString) {\n /*:: invariant(firstIdent instanceof N.StringLiteral) */\n throw this.raise(Errors.ImportBindingIsString, specifier, {\n importName: firstIdent.value,\n });\n }\n /*:: invariant(firstIdent instanceof N.Node) */\n specifier.imported = firstIdent;\n specifier.importKind = null;\n }\n\n if (this.eatContextual(tt._as)) {\n specifier.local = this.parseIdentifier();\n } else {\n isBinding = true;\n specifier.local = this.cloneIdentifier(specifier.imported);\n }\n }\n\n const specifierIsTypeImport = hasTypeImportKind(specifier);\n\n if (isInTypeOnlyImport && specifierIsTypeImport) {\n this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, specifier);\n }\n\n if (isInTypeOnlyImport || specifierIsTypeImport) {\n this.checkReservedType(\n specifier.local.name,\n specifier.local.loc.start,\n /* declaration */ true,\n );\n }\n\n if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) {\n this.checkReservedWord(\n specifier.local.name,\n specifier.loc.start,\n true,\n true,\n );\n }\n\n return this.finishImportSpecifier(specifier, \"ImportSpecifier\");\n }\n\n parseBindingAtom(): N.Pattern {\n switch (this.state.type) {\n case tt._this:\n // \"this\" may be the name of a parameter, so allow it.\n return this.parseIdentifier(/* liberal */ true);\n default:\n return super.parseBindingAtom();\n }\n }\n\n // parse function type parameters - function foo<T>() {}\n parseFunctionParams(\n node: Undone<N.Function>,\n isConstructor: boolean,\n ): void {\n // @ts-expect-error kind may not index node\n const kind = node.kind;\n if (kind !== \"get\" && kind !== \"set\" && this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n super.parseFunctionParams(node, isConstructor);\n }\n\n // parse flow type annotations on variable declarator heads - let foo: string = bar\n parseVarId(\n decl: N.VariableDeclarator,\n kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n ): void {\n super.parseVarId(decl, kind);\n if (this.match(tt.colon)) {\n decl.id.typeAnnotation = this.flowParseTypeAnnotation();\n this.resetEndLocation(decl.id); // set end position to end of type\n }\n }\n\n // parse the return type of an async arrow function - let foo = (async (): number => {});\n parseAsyncArrowFromCallExpression(\n node: N.ArrowFunctionExpression,\n call: N.CallExpression,\n ): N.ArrowFunctionExpression {\n if (this.match(tt.colon)) {\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = true;\n node.returnType = this.flowParseTypeAnnotation();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n }\n\n return super.parseAsyncArrowFromCallExpression(node, call);\n }\n\n // todo description\n shouldParseAsyncArrow(): boolean {\n return this.match(tt.colon) || super.shouldParseAsyncArrow();\n }\n\n // We need to support type parameter declarations for arrow functions. This\n // is tricky. There are three situations we need to handle\n //\n // 1. This is either JSX or an arrow function. We'll try JSX first. If that\n // fails, we'll try an arrow function. If that fails, we'll throw the JSX\n // error.\n // 2. This is an arrow function. We'll parse the type parameter declaration,\n // parse the rest, make sure the rest is an arrow function, and go from\n // there\n // 3. This is neither. Just call the super method\n parseMaybeAssign(\n refExpressionErrors?: ExpressionErrors | null,\n afterLeftParse?: Function,\n ): N.Expression {\n let state = null;\n\n let jsx;\n\n if (\n this.hasPlugin(\"jsx\") &&\n (this.match(tt.jsxTagStart) || this.match(tt.lt))\n ) {\n state = this.state.clone();\n\n jsx = this.tryParse(\n () => super.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n state,\n );\n\n /*:: invariant(!jsx.aborted) */\n /*:: invariant(jsx.node != null) */\n if (!jsx.error) return jsx.node!;\n\n // Remove `tc.j_expr` and `tc.j_oTag` from context added\n // by parsing `jsxTagStart` to stop the JSX plugin from\n // messing with the tokens\n const { context } = this.state;\n const currentContext = context[context.length - 1];\n if (currentContext === tc.j_oTag || currentContext === tc.j_expr) {\n context.pop();\n }\n }\n\n if (jsx?.error || this.match(tt.lt)) {\n state = state || this.state.clone();\n\n let typeParameters: N.TypeParameterDeclaration;\n\n const arrow = this.tryParse((abort: () => never) => {\n typeParameters = this.flowParseTypeParameterDeclaration();\n\n const arrowExpression = this.forwardNoArrowParamsConversionAt(\n typeParameters,\n () => {\n const result = super.parseMaybeAssign(\n refExpressionErrors,\n afterLeftParse,\n );\n\n this.resetStartLocationFromNode(result, typeParameters);\n\n return result;\n },\n );\n\n // <T>(() => {});\n // <T>(() => {}: any);\n if (arrowExpression.extra?.parenthesized) abort();\n\n // The above can return a TypeCastExpression when the arrow\n // expression is not wrapped in parens. See also `this.parseParenItem`.\n // (<T>() => {}: any);\n const expr = this.maybeUnwrapTypeCastExpression(arrowExpression);\n\n if (expr.type !== \"ArrowFunctionExpression\") abort();\n\n expr.typeParameters = typeParameters;\n this.resetStartLocationFromNode(expr, typeParameters);\n\n return arrowExpression;\n }, state);\n\n let arrowExpression:\n | N.ArrowFunctionExpression\n | N.TypeCastExpression\n | undefined\n | null = null;\n\n if (\n arrow.node &&\n this.maybeUnwrapTypeCastExpression(arrow.node).type ===\n \"ArrowFunctionExpression\"\n ) {\n if (!arrow.error && !arrow.aborted) {\n // <T> async () => {}\n // @ts-expect-error: refine tryParse typings\n if (arrow.node.async) {\n /*:: invariant(typeParameters) */\n this.raise(\n FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction,\n typeParameters!,\n );\n }\n return arrow.node;\n }\n\n // @ts-expect-error: refine typings\n arrowExpression = arrow.node;\n }\n\n // If we are here, both JSX and Flow parsing attempts failed.\n // Give the precedence to the JSX error, except if JSX had an\n // unrecoverable error while Flow didn't.\n // If the error is recoverable, we can only re-report it if there is\n // a node we can return.\n\n if (jsx?.node) {\n /*:: invariant(jsx.failState) */\n this.state = jsx.failState;\n return jsx.node;\n }\n\n if (arrowExpression) {\n /*:: invariant(arrow.failState) */\n this.state = arrow.failState!;\n return arrowExpression;\n }\n\n if (jsx?.thrown) throw jsx.error;\n if (arrow.thrown) throw arrow.error;\n\n /*:: invariant(typeParameters) */\n throw this.raise(\n FlowErrors.UnexpectedTokenAfterTypeParameter,\n typeParameters!,\n );\n }\n\n return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n }\n\n // handle return types for arrow functions\n parseArrow(\n node: Undone<N.ArrowFunctionExpression>,\n ): Undone<N.ArrowFunctionExpression> | undefined | null {\n if (this.match(tt.colon)) {\n // @ts-expect-error todo(flow->ts)\n const result = this.tryParse<N.TypeAnnotation>(() => {\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = true;\n\n const typeNode = this.startNode<N.TypeAnnotation>();\n\n [\n typeNode.typeAnnotation,\n // @ts-expect-error (destructuring not supported yet)\n node.predicate,\n ] = this.flowParseTypeAndPredicateInitialiser() as [\n N.FlowType,\n N.FlowPredicate,\n ];\n\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n if (this.canInsertSemicolon()) this.unexpected();\n if (!this.match(tt.arrow)) this.unexpected();\n\n return typeNode;\n });\n\n if (result.thrown) return null;\n /*:: invariant(result.node) */\n\n if (result.error) this.state = result.failState;\n\n // assign after it is clear it is an arrow\n // @ts-expect-error todo(flow->ts)\n node.returnType = result.node.typeAnnotation\n ? this.finishNode(result.node!, \"TypeAnnotation\")\n : null;\n }\n\n return super.parseArrow(node);\n }\n\n shouldParseArrow(params: N.Node[]): boolean {\n return this.match(tt.colon) || super.shouldParseArrow(params);\n }\n\n setArrowFunctionParameters(\n node: Undone<N.ArrowFunctionExpression>,\n params:\n | (N.Expression | N.SpreadElement)[]\n | (N.Expression | N.RestElement)[],\n ): void {\n if (\n this.state.noArrowParamsConversionAt.includes(\n this.offsetToSourcePos(node.start),\n )\n ) {\n node.params = params as N.ArrowFunctionExpression[\"params\"];\n } else {\n super.setArrowFunctionParameters(node, params);\n }\n }\n\n checkParams(\n node: N.Function,\n allowDuplicates: boolean,\n isArrowFunction?: boolean | null,\n strictModeChanged: boolean = true,\n ): void {\n if (\n isArrowFunction &&\n this.state.noArrowParamsConversionAt.includes(\n this.offsetToSourcePos(node.start),\n )\n ) {\n return;\n }\n\n // ensure the `this` param is first, if it exists\n for (let i = 0; i < node.params.length; i++) {\n if (this.isThisParam(node.params[i]) && i > 0) {\n this.raise(FlowErrors.ThisParamMustBeFirst, node.params[i]);\n }\n }\n\n super.checkParams(\n node,\n allowDuplicates,\n isArrowFunction,\n strictModeChanged,\n );\n }\n\n parseParenAndDistinguishExpression(canBeArrow: boolean): N.Expression {\n return super.parseParenAndDistinguishExpression(\n canBeArrow &&\n !this.state.noArrowAt.includes(\n this.sourceToOffsetPos(this.state.start),\n ),\n );\n }\n\n parseSubscripts(\n base: N.Expression,\n startLoc: Position,\n noCalls?: boolean | null,\n ): N.Expression {\n if (\n base.type === \"Identifier\" &&\n base.name === \"async\" &&\n this.state.noArrowAt.includes(startLoc.index)\n ) {\n this.next();\n\n const node = this.startNodeAt<N.CallExpression>(startLoc);\n node.callee = base;\n node.arguments = super.parseCallExpressionArguments();\n base = this.finishNode(node, \"CallExpression\");\n } else if (\n base.type === \"Identifier\" &&\n base.name === \"async\" &&\n this.match(tt.lt)\n ) {\n const state = this.state.clone();\n const arrow = this.tryParse(\n abort => this.parseAsyncArrowWithTypeParameters(startLoc) || abort(),\n state,\n );\n\n /*:: invariant(arrow.node != null) */\n // @ts-expect-error: refine tryParse typings\n if (!arrow.error && !arrow.aborted) return arrow.node;\n\n const result = this.tryParse(\n () => super.parseSubscripts(base, startLoc, noCalls),\n state,\n );\n\n if (result.node && !result.error) return result.node;\n\n if (arrow.node) {\n this.state = arrow.failState;\n // @ts-expect-error: refine tryParse typings\n return arrow.node;\n }\n\n if (result.node) {\n this.state = result.failState!;\n return result.node;\n }\n\n throw arrow.error || result.error!;\n }\n\n return super.parseSubscripts(base, startLoc, noCalls);\n }\n\n parseSubscript(\n base: N.Expression,\n startLoc: Position,\n noCalls: boolean | undefined | null,\n subscriptState: N.ParseSubscriptState,\n ): N.Expression {\n if (this.match(tt.questionDot) && this.isLookaheadToken_lt()) {\n subscriptState.optionalChainMember = true;\n if (noCalls) {\n subscriptState.stop = true;\n return base;\n }\n this.next();\n const node = this.startNodeAt<N.OptionalCallExpression>(startLoc);\n node.callee = base;\n node.typeArguments =\n this.flowParseTypeParameterInstantiationInExpression();\n this.expect(tt.parenL);\n node.arguments = this.parseCallExpressionArguments();\n node.optional = true;\n return this.finishCallExpression(node, /* optional */ true);\n } else if (\n !noCalls &&\n this.shouldParseTypes() &&\n (this.match(tt.lt) ||\n // also handles `new C<<T>`\n this.match(tt.bitShiftL))\n ) {\n const node = this.startNodeAt<\n N.OptionalCallExpression | N.CallExpression\n >(startLoc);\n node.callee = base;\n\n const result = this.tryParse(() => {\n node.typeArguments =\n this.flowParseTypeParameterInstantiationCallOrNew();\n this.expect(tt.parenL);\n node.arguments = super.parseCallExpressionArguments();\n if (subscriptState.optionalChainMember) {\n (node as Undone<N.OptionalCallExpression>).optional = false;\n }\n return this.finishCallExpression(\n node,\n subscriptState.optionalChainMember,\n );\n });\n\n if (result.node) {\n if (result.error) this.state = result.failState;\n return result.node;\n }\n }\n\n return super.parseSubscript(base, startLoc, noCalls, subscriptState);\n }\n\n parseNewCallee(node: N.NewExpression): void {\n super.parseNewCallee(node);\n\n let targs = null;\n if (this.shouldParseTypes() && this.match(tt.lt)) {\n targs = this.tryParse(() =>\n this.flowParseTypeParameterInstantiationCallOrNew(),\n ).node;\n }\n node.typeArguments = targs;\n }\n\n parseAsyncArrowWithTypeParameters(\n startLoc: Position,\n ): N.ArrowFunctionExpression | undefined | null {\n const node = this.startNodeAt<N.ArrowFunctionExpression>(startLoc);\n this.parseFunctionParams(node, false);\n if (!this.parseArrow(node)) return;\n return super.parseArrowExpression(\n node,\n /* params */ undefined,\n /* isAsync */ true,\n );\n }\n\n readToken_mult_modulo(code: number): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (\n code === charCodes.asterisk &&\n next === charCodes.slash &&\n this.state.hasFlowComment\n ) {\n this.state.hasFlowComment = false;\n this.state.pos += 2;\n this.nextToken();\n return;\n }\n\n super.readToken_mult_modulo(code);\n }\n\n readToken_pipe_amp(code: number): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (\n code === charCodes.verticalBar &&\n next === charCodes.rightCurlyBrace\n ) {\n // '|}'\n this.finishOp(tt.braceBarR, 2);\n return;\n }\n\n super.readToken_pipe_amp(code);\n }\n\n parseTopLevel(file: N.File, program: N.Program): N.File {\n const fileNode = super.parseTopLevel(file, program);\n if (this.state.hasFlowComment) {\n this.raise(\n FlowErrors.UnterminatedFlowComment,\n this.state.curPosition(),\n );\n }\n return fileNode;\n }\n\n skipBlockComment(): N.CommentBlock | undefined {\n if (this.hasPlugin(\"flowComments\") && this.skipFlowComment()) {\n if (this.state.hasFlowComment) {\n throw this.raise(FlowErrors.NestedFlowComment, this.state.startLoc);\n }\n this.hasFlowCommentCompletion();\n const commentSkip = this.skipFlowComment();\n if (commentSkip) {\n this.state.pos += commentSkip;\n this.state.hasFlowComment = true;\n }\n return;\n }\n\n return super.skipBlockComment(this.state.hasFlowComment ? \"*-/\" : \"*/\");\n }\n\n skipFlowComment(): number | false {\n const { pos } = this.state;\n let shiftToFirstNonWhiteSpace = 2;\n while (\n [charCodes.space, charCodes.tab].includes(\n // @ts-expect-error testing whether a number is included\n this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace),\n )\n ) {\n shiftToFirstNonWhiteSpace++;\n }\n\n const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos);\n const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1);\n\n if (ch2 === charCodes.colon && ch3 === charCodes.colon) {\n return shiftToFirstNonWhiteSpace + 2; // check for /*::\n }\n if (\n this.input.slice(\n shiftToFirstNonWhiteSpace + pos,\n shiftToFirstNonWhiteSpace + pos + 12,\n ) === \"flow-include\"\n ) {\n return shiftToFirstNonWhiteSpace + 12; // check for /*flow-include\n }\n if (ch2 === charCodes.colon && ch3 !== charCodes.colon) {\n return shiftToFirstNonWhiteSpace; // check for /*:, advance up to :\n }\n return false;\n }\n\n hasFlowCommentCompletion(): void {\n const end = this.input.indexOf(\"*/\", this.state.pos);\n if (end === -1) {\n throw this.raise(Errors.UnterminatedComment, this.state.curPosition());\n }\n }\n\n // Flow enum parsing\n\n flowEnumErrorBooleanMemberNotInitialized(\n loc: Position,\n {\n enumName,\n memberName,\n }: {\n enumName: string;\n memberName: string;\n },\n ): void {\n this.raise(FlowErrors.EnumBooleanMemberNotInitialized, loc, {\n memberName,\n enumName,\n });\n }\n\n flowEnumErrorInvalidMemberInitializer(\n loc: Position,\n enumContext: EnumContext,\n ) {\n return this.raise(\n !enumContext.explicitType\n ? FlowErrors.EnumInvalidMemberInitializerUnknownType\n : enumContext.explicitType === \"symbol\"\n ? FlowErrors.EnumInvalidMemberInitializerSymbolType\n : FlowErrors.EnumInvalidMemberInitializerPrimaryType,\n loc,\n enumContext,\n );\n }\n\n flowEnumErrorNumberMemberNotInitialized(\n loc: Position,\n details: {\n enumName: string;\n memberName: string;\n },\n ): void {\n this.raise(FlowErrors.EnumNumberMemberNotInitialized, loc, details);\n }\n\n flowEnumErrorStringMemberInconsistentlyInitialized(\n node: N.Node,\n details: {\n enumName: string;\n },\n ): void {\n this.raise(\n FlowErrors.EnumStringMemberInconsistentlyInitialized,\n node,\n details,\n );\n }\n\n flowEnumMemberInit(): EnumMemberInit {\n const startLoc = this.state.startLoc;\n const endOfInit = () => this.match(tt.comma) || this.match(tt.braceR);\n switch (this.state.type) {\n case tt.num: {\n const literal = this.parseNumericLiteral(this.state.value);\n if (endOfInit()) {\n return { type: \"number\", loc: literal.loc.start, value: literal };\n }\n return { type: \"invalid\", loc: startLoc };\n }\n case tt.string: {\n const literal = this.parseStringLiteral(this.state.value);\n if (endOfInit()) {\n return { type: \"string\", loc: literal.loc.start, value: literal };\n }\n return { type: \"invalid\", loc: startLoc };\n }\n case tt._true:\n case tt._false: {\n const literal = this.parseBooleanLiteral(this.match(tt._true));\n if (endOfInit()) {\n return {\n type: \"boolean\",\n loc: literal.loc.start,\n value: literal,\n };\n }\n return { type: \"invalid\", loc: startLoc };\n }\n default:\n return { type: \"invalid\", loc: startLoc };\n }\n }\n\n flowEnumMemberRaw(): {\n id: N.Identifier;\n init: EnumMemberInit;\n } {\n const loc = this.state.startLoc;\n const id = this.parseIdentifier(true);\n const init = this.eat(tt.eq)\n ? this.flowEnumMemberInit()\n : { type: \"none\" as const, loc };\n return { id, init };\n }\n\n flowEnumCheckExplicitTypeMismatch(\n loc: Position,\n context: EnumContext,\n expectedType: EnumExplicitType,\n ): void {\n const { explicitType } = context;\n if (explicitType === null) {\n return;\n }\n if (explicitType !== expectedType) {\n this.flowEnumErrorInvalidMemberInitializer(loc, context);\n }\n }\n\n flowEnumMembers({\n enumName,\n explicitType,\n }: {\n enumName: string;\n explicitType: EnumExplicitType;\n }): {\n members: {\n booleanMembers: Extract<\n N.FlowEnumMember,\n { type: \"EnumBooleanMember\" }\n >[];\n numberMembers: Extract<\n N.FlowEnumMember,\n { type: \"EnumNumberMember\" }\n >[];\n stringMembers: Extract<\n N.FlowEnumMember,\n { type: \"EnumStringMember\" }\n >[];\n defaultedMembers: Extract<\n N.FlowEnumMember,\n { type: \"EnumDefaultedMember\" }\n >[];\n };\n hasUnknownMembers: boolean;\n } {\n const seenNames = new Set();\n const members = {\n booleanMembers: [],\n numberMembers: [],\n stringMembers: [],\n defaultedMembers: [],\n };\n let hasUnknownMembers = false;\n while (!this.match(tt.braceR)) {\n if (this.eat(tt.ellipsis)) {\n hasUnknownMembers = true;\n break;\n }\n const memberNode = this.startNode<N.FlowEnumMember>();\n const { id, init } = this.flowEnumMemberRaw();\n const memberName = id.name;\n if (memberName === \"\") {\n continue;\n }\n if (/^[a-z]/.test(memberName)) {\n this.raise(FlowErrors.EnumInvalidMemberName, id, {\n memberName,\n suggestion: memberName[0].toUpperCase() + memberName.slice(1),\n enumName,\n });\n }\n if (seenNames.has(memberName)) {\n this.raise(FlowErrors.EnumDuplicateMemberName, id, {\n memberName,\n enumName,\n });\n }\n seenNames.add(memberName);\n const context = { enumName, explicitType, memberName };\n memberNode.id = id;\n switch (init.type) {\n case \"boolean\": {\n this.flowEnumCheckExplicitTypeMismatch(\n init.loc,\n context,\n \"boolean\",\n );\n memberNode.init = init.value;\n members.booleanMembers.push(\n // @ts-expect-error NodeAny not supported\n this.finishNode(memberNode, \"EnumBooleanMember\"),\n );\n break;\n }\n case \"number\": {\n this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"number\");\n memberNode.init = init.value;\n members.numberMembers.push(\n // @ts-expect-error NodeAny not supported\n this.finishNode(memberNode, \"EnumNumberMember\"),\n );\n break;\n }\n case \"string\": {\n this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"string\");\n memberNode.init = init.value;\n members.stringMembers.push(\n // @ts-expect-error NodeAny not supported\n this.finishNode(memberNode, \"EnumStringMember\"),\n );\n break;\n }\n case \"invalid\": {\n throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context);\n }\n case \"none\": {\n switch (explicitType) {\n case \"boolean\":\n this.flowEnumErrorBooleanMemberNotInitialized(\n init.loc,\n context,\n );\n break;\n case \"number\":\n this.flowEnumErrorNumberMemberNotInitialized(init.loc, context);\n break;\n default:\n members.defaultedMembers.push(\n // @ts-expect-error NodeAny not supported\n this.finishNode(memberNode, \"EnumDefaultedMember\"),\n );\n }\n }\n }\n\n if (!this.match(tt.braceR)) {\n this.expect(tt.comma);\n }\n }\n return { members, hasUnknownMembers };\n }\n\n flowEnumStringMembers(\n initializedMembers: N.Node[],\n defaultedMembers: N.Node[],\n {\n enumName,\n }: {\n enumName: string;\n },\n ): N.Node[] {\n if (initializedMembers.length === 0) {\n return defaultedMembers;\n } else if (defaultedMembers.length === 0) {\n return initializedMembers;\n } else if (defaultedMembers.length > initializedMembers.length) {\n for (const member of initializedMembers) {\n this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {\n enumName,\n });\n }\n return defaultedMembers;\n } else {\n for (const member of defaultedMembers) {\n this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {\n enumName,\n });\n }\n return initializedMembers;\n }\n }\n\n flowEnumParseExplicitType({\n enumName,\n }: {\n enumName: string;\n }): EnumExplicitType {\n if (!this.eatContextual(tt._of)) return null;\n\n if (!tokenIsIdentifier(this.state.type)) {\n throw this.raise(\n FlowErrors.EnumInvalidExplicitTypeUnknownSupplied,\n this.state.startLoc,\n {\n enumName,\n },\n );\n }\n\n const { value } = this.state;\n this.next();\n\n if (\n value !== \"boolean\" &&\n value !== \"number\" &&\n value !== \"string\" &&\n value !== \"symbol\"\n ) {\n this.raise(FlowErrors.EnumInvalidExplicitType, this.state.startLoc, {\n enumName,\n invalidEnumType: value,\n });\n }\n\n return value;\n }\n\n flowEnumBody(node: Undone<N.FlowEnumBody>, id: N.Identifier): N.Node {\n const enumName = id.name;\n const nameLoc = id.loc.start;\n const explicitType = this.flowEnumParseExplicitType({ enumName });\n this.expect(tt.braceL);\n const { members, hasUnknownMembers } = this.flowEnumMembers({\n enumName,\n explicitType,\n });\n node.hasUnknownMembers = hasUnknownMembers;\n\n switch (explicitType) {\n case \"boolean\":\n node.explicitType = true;\n node.members = members.booleanMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumBooleanBody\");\n case \"number\":\n node.explicitType = true;\n node.members = members.numberMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumNumberBody\");\n case \"string\":\n node.explicitType = true;\n node.members = this.flowEnumStringMembers(\n members.stringMembers,\n members.defaultedMembers,\n { enumName },\n );\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumStringBody\");\n case \"symbol\":\n node.members = members.defaultedMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumSymbolBody\");\n default: {\n // `explicitType` is `null`\n const empty = () => {\n node.members = [];\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumStringBody\");\n };\n node.explicitType = false;\n\n const boolsLen = members.booleanMembers.length;\n const numsLen = members.numberMembers.length;\n const strsLen = members.stringMembers.length;\n const defaultedLen = members.defaultedMembers.length;\n\n if (!boolsLen && !numsLen && !strsLen && !defaultedLen) {\n return empty();\n } else if (!boolsLen && !numsLen) {\n node.members = this.flowEnumStringMembers(\n members.stringMembers,\n members.defaultedMembers,\n { enumName },\n );\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumStringBody\");\n } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {\n for (const member of members.defaultedMembers) {\n this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, {\n enumName,\n memberName: member.id.name,\n });\n }\n node.members = members.booleanMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumBooleanBody\");\n } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {\n for (const member of members.defaultedMembers) {\n this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, {\n enumName,\n memberName: member.id.name,\n });\n }\n node.members = members.numberMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumNumberBody\");\n } else {\n this.raise(FlowErrors.EnumInconsistentMemberValues, nameLoc, {\n enumName,\n });\n return empty();\n }\n }\n }\n }\n\n flowParseEnumDeclaration(\n node: Undone<N.FlowEnumDeclaration>,\n ): N.FlowEnumDeclaration {\n const id = this.parseIdentifier();\n node.id = id;\n node.body = this.flowEnumBody(this.startNode(), id);\n return this.finishNode(node, \"EnumDeclaration\");\n }\n\n jsxParseOpeningElementAfterName(\n node: N.JSXOpeningElement,\n ): N.JSXOpeningElement {\n if (this.shouldParseTypes()) {\n if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n node.typeArguments =\n this.flowParseTypeParameterInstantiationInExpression();\n }\n }\n\n return super.jsxParseOpeningElementAfterName(node);\n }\n\n // check if the next token is a tt.lt\n isLookaheadToken_lt(): boolean {\n const next = this.nextTokenStart();\n if (this.input.charCodeAt(next) === charCodes.lessThan) {\n const afterNext = this.input.charCodeAt(next + 1);\n return (\n afterNext !== charCodes.lessThan && afterNext !== charCodes.equalsTo\n );\n }\n return false;\n }\n\n // used after we have finished parsing types\n reScan_lt_gt() {\n const { type } = this.state;\n if (type === tt.lt) {\n this.state.pos -= 1;\n this.readToken_lt();\n } else if (type === tt.gt) {\n this.state.pos -= 1;\n this.readToken_gt();\n }\n }\n\n reScan_lt() {\n const { type } = this.state;\n if (type === tt.bitShiftL) {\n this.state.pos -= 2;\n this.finishOp(tt.lt, 1);\n return tt.lt;\n }\n return type;\n }\n\n maybeUnwrapTypeCastExpression(node: N.Node) {\n return node.type === \"TypeCastExpression\" ? node.expression : node;\n }\n };\n","const entities: Record<string, string> = {\n // @ts-expect-error __proto__ is not an actual property: https://github.com/microsoft/TypeScript/issues/38385\n __proto__: null,\n quot: \"\\u0022\",\n amp: \"&\",\n apos: \"\\u0027\",\n lt: \"<\",\n gt: \">\",\n nbsp: \"\\u00A0\",\n iexcl: \"\\u00A1\",\n cent: \"\\u00A2\",\n pound: \"\\u00A3\",\n curren: \"\\u00A4\",\n yen: \"\\u00A5\",\n brvbar: \"\\u00A6\",\n sect: \"\\u00A7\",\n uml: \"\\u00A8\",\n copy: \"\\u00A9\",\n ordf: \"\\u00AA\",\n laquo: \"\\u00AB\",\n not: \"\\u00AC\",\n shy: \"\\u00AD\",\n reg: \"\\u00AE\",\n macr: \"\\u00AF\",\n deg: \"\\u00B0\",\n plusmn: \"\\u00B1\",\n sup2: \"\\u00B2\",\n sup3: \"\\u00B3\",\n acute: \"\\u00B4\",\n micro: \"\\u00B5\",\n para: \"\\u00B6\",\n middot: \"\\u00B7\",\n cedil: \"\\u00B8\",\n sup1: \"\\u00B9\",\n ordm: \"\\u00BA\",\n raquo: \"\\u00BB\",\n frac14: \"\\u00BC\",\n frac12: \"\\u00BD\",\n frac34: \"\\u00BE\",\n iquest: \"\\u00BF\",\n Agrave: \"\\u00C0\",\n Aacute: \"\\u00C1\",\n Acirc: \"\\u00C2\",\n Atilde: \"\\u00C3\",\n Auml: \"\\u00C4\",\n Aring: \"\\u00C5\",\n AElig: \"\\u00C6\",\n Ccedil: \"\\u00C7\",\n Egrave: \"\\u00C8\",\n Eacute: \"\\u00C9\",\n Ecirc: \"\\u00CA\",\n Euml: \"\\u00CB\",\n Igrave: \"\\u00CC\",\n Iacute: \"\\u00CD\",\n Icirc: \"\\u00CE\",\n Iuml: \"\\u00CF\",\n ETH: \"\\u00D0\",\n Ntilde: \"\\u00D1\",\n Ograve: \"\\u00D2\",\n Oacute: \"\\u00D3\",\n Ocirc: \"\\u00D4\",\n Otilde: \"\\u00D5\",\n Ouml: \"\\u00D6\",\n times: \"\\u00D7\",\n Oslash: \"\\u00D8\",\n Ugrave: \"\\u00D9\",\n Uacute: \"\\u00DA\",\n Ucirc: \"\\u00DB\",\n Uuml: \"\\u00DC\",\n Yacute: \"\\u00DD\",\n THORN: \"\\u00DE\",\n szlig: \"\\u00DF\",\n agrave: \"\\u00E0\",\n aacute: \"\\u00E1\",\n acirc: \"\\u00E2\",\n atilde: \"\\u00E3\",\n auml: \"\\u00E4\",\n aring: \"\\u00E5\",\n aelig: \"\\u00E6\",\n ccedil: \"\\u00E7\",\n egrave: \"\\u00E8\",\n eacute: \"\\u00E9\",\n ecirc: \"\\u00EA\",\n euml: \"\\u00EB\",\n igrave: \"\\u00EC\",\n iacute: \"\\u00ED\",\n icirc: \"\\u00EE\",\n iuml: \"\\u00EF\",\n eth: \"\\u00F0\",\n ntilde: \"\\u00F1\",\n ograve: \"\\u00F2\",\n oacute: \"\\u00F3\",\n ocirc: \"\\u00F4\",\n otilde: \"\\u00F5\",\n ouml: \"\\u00F6\",\n divide: \"\\u00F7\",\n oslash: \"\\u00F8\",\n ugrave: \"\\u00F9\",\n uacute: \"\\u00FA\",\n ucirc: \"\\u00FB\",\n uuml: \"\\u00FC\",\n yacute: \"\\u00FD\",\n thorn: \"\\u00FE\",\n yuml: \"\\u00FF\",\n OElig: \"\\u0152\",\n oelig: \"\\u0153\",\n Scaron: \"\\u0160\",\n scaron: \"\\u0161\",\n Yuml: \"\\u0178\",\n fnof: \"\\u0192\",\n circ: \"\\u02C6\",\n tilde: \"\\u02DC\",\n Alpha: \"\\u0391\",\n Beta: \"\\u0392\",\n Gamma: \"\\u0393\",\n Delta: \"\\u0394\",\n Epsilon: \"\\u0395\",\n Zeta: \"\\u0396\",\n Eta: \"\\u0397\",\n Theta: \"\\u0398\",\n Iota: \"\\u0399\",\n Kappa: \"\\u039A\",\n Lambda: \"\\u039B\",\n Mu: \"\\u039C\",\n Nu: \"\\u039D\",\n Xi: \"\\u039E\",\n Omicron: \"\\u039F\",\n Pi: \"\\u03A0\",\n Rho: \"\\u03A1\",\n Sigma: \"\\u03A3\",\n Tau: \"\\u03A4\",\n Upsilon: \"\\u03A5\",\n Phi: \"\\u03A6\",\n Chi: \"\\u03A7\",\n Psi: \"\\u03A8\",\n Omega: \"\\u03A9\",\n alpha: \"\\u03B1\",\n beta: \"\\u03B2\",\n gamma: \"\\u03B3\",\n delta: \"\\u03B4\",\n epsilon: \"\\u03B5\",\n zeta: \"\\u03B6\",\n eta: \"\\u03B7\",\n theta: \"\\u03B8\",\n iota: \"\\u03B9\",\n kappa: \"\\u03BA\",\n lambda: \"\\u03BB\",\n mu: \"\\u03BC\",\n nu: \"\\u03BD\",\n xi: \"\\u03BE\",\n omicron: \"\\u03BF\",\n pi: \"\\u03C0\",\n rho: \"\\u03C1\",\n sigmaf: \"\\u03C2\",\n sigma: \"\\u03C3\",\n tau: \"\\u03C4\",\n upsilon: \"\\u03C5\",\n phi: \"\\u03C6\",\n chi: \"\\u03C7\",\n psi: \"\\u03C8\",\n omega: \"\\u03C9\",\n thetasym: \"\\u03D1\",\n upsih: \"\\u03D2\",\n piv: \"\\u03D6\",\n ensp: \"\\u2002\",\n emsp: \"\\u2003\",\n thinsp: \"\\u2009\",\n zwnj: \"\\u200C\",\n zwj: \"\\u200D\",\n lrm: \"\\u200E\",\n rlm: \"\\u200F\",\n ndash: \"\\u2013\",\n mdash: \"\\u2014\",\n lsquo: \"\\u2018\",\n rsquo: \"\\u2019\",\n sbquo: \"\\u201A\",\n ldquo: \"\\u201C\",\n rdquo: \"\\u201D\",\n bdquo: \"\\u201E\",\n dagger: \"\\u2020\",\n Dagger: \"\\u2021\",\n bull: \"\\u2022\",\n hellip: \"\\u2026\",\n permil: \"\\u2030\",\n prime: \"\\u2032\",\n Prime: \"\\u2033\",\n lsaquo: \"\\u2039\",\n rsaquo: \"\\u203A\",\n oline: \"\\u203E\",\n frasl: \"\\u2044\",\n euro: \"\\u20AC\",\n image: \"\\u2111\",\n weierp: \"\\u2118\",\n real: \"\\u211C\",\n trade: \"\\u2122\",\n alefsym: \"\\u2135\",\n larr: \"\\u2190\",\n uarr: \"\\u2191\",\n rarr: \"\\u2192\",\n darr: \"\\u2193\",\n harr: \"\\u2194\",\n crarr: \"\\u21B5\",\n lArr: \"\\u21D0\",\n uArr: \"\\u21D1\",\n rArr: \"\\u21D2\",\n dArr: \"\\u21D3\",\n hArr: \"\\u21D4\",\n forall: \"\\u2200\",\n part: \"\\u2202\",\n exist: \"\\u2203\",\n empty: \"\\u2205\",\n nabla: \"\\u2207\",\n isin: \"\\u2208\",\n notin: \"\\u2209\",\n ni: \"\\u220B\",\n prod: \"\\u220F\",\n sum: \"\\u2211\",\n minus: \"\\u2212\",\n lowast: \"\\u2217\",\n radic: \"\\u221A\",\n prop: \"\\u221D\",\n infin: \"\\u221E\",\n ang: \"\\u2220\",\n and: \"\\u2227\",\n or: \"\\u2228\",\n cap: \"\\u2229\",\n cup: \"\\u222A\",\n int: \"\\u222B\",\n there4: \"\\u2234\",\n sim: \"\\u223C\",\n cong: \"\\u2245\",\n asymp: \"\\u2248\",\n ne: \"\\u2260\",\n equiv: \"\\u2261\",\n le: \"\\u2264\",\n ge: \"\\u2265\",\n sub: \"\\u2282\",\n sup: \"\\u2283\",\n nsub: \"\\u2284\",\n sube: \"\\u2286\",\n supe: \"\\u2287\",\n oplus: \"\\u2295\",\n otimes: \"\\u2297\",\n perp: \"\\u22A5\",\n sdot: \"\\u22C5\",\n lceil: \"\\u2308\",\n rceil: \"\\u2309\",\n lfloor: \"\\u230A\",\n rfloor: \"\\u230B\",\n lang: \"\\u2329\",\n rang: \"\\u232A\",\n loz: \"\\u25CA\",\n spades: \"\\u2660\",\n clubs: \"\\u2663\",\n hearts: \"\\u2665\",\n diams: \"\\u2666\",\n} as const;\nexport default entities;\n","import * as charCodes from \"charcodes\";\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\nexport const lineBreak = /\\r\\n|[\\r\\n\\u2028\\u2029]/;\nexport const lineBreakG = new RegExp(lineBreak.source, \"g\");\n\n// https://tc39.github.io/ecma262/#sec-line-terminators\nexport function isNewLine(code: number): boolean {\n switch (code) {\n case charCodes.lineFeed:\n case charCodes.carriageReturn:\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n return true;\n\n default:\n return false;\n }\n}\n\nexport function hasNewLine(input: string, start: number, end: number): boolean {\n for (let i = start; i < end; i++) {\n if (isNewLine(input.charCodeAt(i))) {\n return true;\n }\n }\n return false;\n}\n\nexport const skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nexport const skipWhiteSpaceInLine =\n /(?:[^\\S\\n\\r\\u2028\\u2029]|\\/\\/.*|\\/\\*.*?\\*\\/)*/g;\n\n// https://tc39.github.io/ecma262/#sec-white-space\nexport function isWhitespace(code: number): boolean {\n switch (code) {\n case 0x0009: // CHARACTER TABULATION\n case 0x000b: // LINE TABULATION\n case 0x000c: // FORM FEED\n case charCodes.space:\n case charCodes.nonBreakingSpace:\n case charCodes.oghamSpaceMark:\n case 0x2000: // EN QUAD\n case 0x2001: // EM QUAD\n case 0x2002: // EN SPACE\n case 0x2003: // EM SPACE\n case 0x2004: // THREE-PER-EM SPACE\n case 0x2005: // FOUR-PER-EM SPACE\n case 0x2006: // SIX-PER-EM SPACE\n case 0x2007: // FIGURE SPACE\n case 0x2008: // PUNCTUATION SPACE\n case 0x2009: // THIN SPACE\n case 0x200a: // HAIR SPACE\n case 0x202f: // NARROW NO-BREAK SPACE\n case 0x205f: // MEDIUM MATHEMATICAL SPACE\n case 0x3000: // IDEOGRAPHIC SPACE\n case 0xfeff: // ZERO WIDTH NO-BREAK SPACE\n return true;\n\n default:\n return false;\n }\n}\n","import * as charCodes from \"charcodes\";\n\nimport XHTMLEntities from \"./xhtml.ts\";\nimport type Parser from \"../../parser/index.ts\";\nimport type { ExpressionErrors } from \"../../parser/util.ts\";\nimport {\n tokenComesBeforeExpression,\n tokenIsKeyword,\n tokenLabelName,\n type TokenType,\n tt,\n} from \"../../tokenizer/types.ts\";\nimport type { TokContext } from \"../../tokenizer/context.ts\";\nimport { types as tc } from \"../../tokenizer/context.ts\";\nimport type * as N from \"../../types.ts\";\nimport { isIdentifierChar, isIdentifierStart } from \"../../util/identifier.ts\";\nimport type { Position } from \"../../util/location.ts\";\nimport { isNewLine } from \"../../util/whitespace.ts\";\nimport { Errors, ParseErrorEnum } from \"../../parse-error.ts\";\nimport type { Undone } from \"../../parser/node.ts\";\n\n/* eslint sort-keys: \"error\" */\nconst JsxErrors = ParseErrorEnum`jsx`({\n AttributeIsEmpty:\n \"JSX attributes must only be assigned a non-empty expression.\",\n MissingClosingTagElement: ({ openingTagName }: { openingTagName: string }) =>\n `Expected corresponding JSX closing tag for <${openingTagName}>.`,\n MissingClosingTagFragment: \"Expected corresponding JSX closing tag for <>.\",\n UnexpectedSequenceExpression:\n \"Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?\",\n // FIXME: Unify with Errors.UnexpectedToken\n UnexpectedToken: ({\n unexpected,\n HTMLEntity,\n }: {\n unexpected: string;\n HTMLEntity: string;\n }) =>\n `Unexpected token \\`${unexpected}\\`. Did you mean \\`${HTMLEntity}\\` or \\`{'${unexpected}'}\\`?`,\n UnsupportedJsxValue:\n \"JSX value should be either an expression or a quoted JSX text.\",\n UnterminatedJsxContent: \"Unterminated JSX contents.\",\n UnwrappedAdjacentJSXElements:\n \"Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?\",\n});\n\n/* eslint-disable sort-keys */\n\nfunction isFragment(object?: N.JSXTag | null): object is N.JSXFragmentTag {\n return object\n ? object.type === \"JSXOpeningFragment\" ||\n object.type === \"JSXClosingFragment\"\n : false;\n}\n\n// Transforms JSX element name to string.\n\nfunction getQualifiedJSXName(\n object: N.JSXIdentifier | N.JSXNamespacedName | N.JSXMemberExpression,\n): string {\n if (object.type === \"JSXIdentifier\") {\n return object.name;\n }\n\n if (object.type === \"JSXNamespacedName\") {\n return object.namespace.name + \":\" + object.name.name;\n }\n\n if (object.type === \"JSXMemberExpression\") {\n return (\n getQualifiedJSXName(object.object) +\n \".\" +\n getQualifiedJSXName(object.property)\n );\n }\n\n // istanbul ignore next\n // @ts-expect-error - object is 'never'\n throw new Error(\"Node had unexpected type: \" + object.type);\n}\n\nexport interface IJSXParserMixin {\n jsxParseOpeningElementAfterName(\n node: N.JSXOpeningElement,\n ): N.JSXOpeningElement;\n}\n\nexport type ClassWithMixin<\n T extends new (...args: any) => any,\n M extends object,\n> = T extends new (...args: infer P) => infer I\n ? new (...args: P) => I & M\n : never;\n\nexport default (superClass: typeof Parser) =>\n class JSXParserMixin extends superClass implements Parser, IJSXParserMixin {\n // Reads inline JSX contents token.\n\n jsxReadToken(): void {\n let out = \"\";\n let chunkStart = this.state.pos;\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(\n JsxErrors.UnterminatedJsxContent,\n this.state.startLoc,\n );\n }\n\n const ch = this.input.charCodeAt(this.state.pos);\n\n switch (ch) {\n case charCodes.lessThan:\n case charCodes.leftCurlyBrace:\n if (this.state.pos === this.state.start) {\n if (ch === charCodes.lessThan && this.state.canStartJSXElement) {\n ++this.state.pos;\n this.finishToken(tt.jsxTagStart);\n } else {\n super.getTokenFromCode(ch);\n }\n return;\n }\n out += this.input.slice(chunkStart, this.state.pos);\n this.finishToken(tt.jsxText, out);\n return;\n\n case charCodes.ampersand:\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadEntity();\n chunkStart = this.state.pos;\n break;\n\n case charCodes.greaterThan:\n case charCodes.rightCurlyBrace:\n if (process.env.BABEL_8_BREAKING) {\n this.raise(JsxErrors.UnexpectedToken, this.state.curPosition(), {\n unexpected: this.input[this.state.pos],\n HTMLEntity:\n ch === charCodes.rightCurlyBrace ? \"&rbrace;\" : \"&gt;\",\n });\n }\n /* falls through */\n\n default:\n if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadNewLine(true);\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n }\n }\n }\n\n jsxReadNewLine(normalizeCRLF: boolean): string {\n const ch = this.input.charCodeAt(this.state.pos);\n let out;\n ++this.state.pos;\n if (\n ch === charCodes.carriageReturn &&\n this.input.charCodeAt(this.state.pos) === charCodes.lineFeed\n ) {\n ++this.state.pos;\n out = normalizeCRLF ? \"\\n\" : \"\\r\\n\";\n } else {\n out = String.fromCharCode(ch);\n }\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n\n return out;\n }\n\n jsxReadString(quote: number): void {\n let out = \"\";\n let chunkStart = ++this.state.pos;\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(Errors.UnterminatedString, this.state.startLoc);\n }\n\n const ch = this.input.charCodeAt(this.state.pos);\n if (ch === quote) break;\n if (ch === charCodes.ampersand) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadEntity();\n chunkStart = this.state.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadNewLine(false);\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n }\n out += this.input.slice(chunkStart, this.state.pos++);\n this.finishToken(tt.string, out);\n }\n\n jsxReadEntity(): string {\n const startPos = ++this.state.pos;\n if (this.codePointAtPos(this.state.pos) === charCodes.numberSign) {\n ++this.state.pos;\n\n let radix = 10;\n if (this.codePointAtPos(this.state.pos) === charCodes.lowercaseX) {\n radix = 16;\n ++this.state.pos;\n }\n\n const codePoint = this.readInt(\n radix,\n /* len */ undefined,\n /* forceLen */ false,\n /* allowNumSeparator */ \"bail\",\n );\n if (\n codePoint !== null &&\n this.codePointAtPos(this.state.pos) === charCodes.semicolon\n ) {\n ++this.state.pos;\n return String.fromCodePoint(codePoint);\n }\n } else {\n let count = 0;\n let semi = false;\n while (\n count++ < 10 &&\n this.state.pos < this.length &&\n !(semi = this.codePointAtPos(this.state.pos) === charCodes.semicolon)\n ) {\n ++this.state.pos;\n }\n\n if (semi) {\n const desc = this.input.slice(startPos, this.state.pos);\n const entity = XHTMLEntities[desc];\n ++this.state.pos;\n\n if (entity) {\n return entity;\n }\n }\n }\n\n // Not a valid entity\n this.state.pos = startPos;\n return \"&\";\n }\n\n // Read a JSX identifier (valid tag or attribute name).\n //\n // Optimized version since JSX identifiers can\"t contain\n // escape characters and so can be read as single slice.\n // Also assumes that first character was already checked\n // by isIdentifierStart in readToken.\n\n jsxReadWord(): void {\n let ch;\n const start = this.state.pos;\n do {\n ch = this.input.charCodeAt(++this.state.pos);\n } while (isIdentifierChar(ch) || ch === charCodes.dash);\n this.finishToken(tt.jsxName, this.input.slice(start, this.state.pos));\n }\n\n // Parse next token as JSX identifier\n\n jsxParseIdentifier(): N.JSXIdentifier {\n const node = this.startNode<N.JSXIdentifier>();\n if (this.match(tt.jsxName)) {\n node.name = this.state.value;\n } else if (tokenIsKeyword(this.state.type)) {\n node.name = tokenLabelName(this.state.type);\n } else {\n this.unexpected();\n }\n this.next();\n return this.finishNode(node, \"JSXIdentifier\");\n }\n\n // Parse namespaced identifier.\n\n jsxParseNamespacedName(): N.JSXNamespacedName | N.JSXIdentifier {\n const startLoc = this.state.startLoc;\n const name = this.jsxParseIdentifier();\n if (!this.eat(tt.colon)) return name;\n\n const node = this.startNodeAt<N.JSXNamespacedName>(startLoc);\n node.namespace = name;\n node.name = this.jsxParseIdentifier();\n return this.finishNode(node, \"JSXNamespacedName\");\n }\n\n // Parses element name in any form - namespaced, member\n // or single identifier.\n\n jsxParseElementName():\n | N.JSXIdentifier\n | N.JSXNamespacedName\n | N.JSXMemberExpression {\n const startLoc = this.state.startLoc;\n let node: N.JSXIdentifier | N.JSXNamespacedName | N.JSXMemberExpression =\n this.jsxParseNamespacedName();\n if (node.type === \"JSXNamespacedName\") {\n return node;\n }\n while (this.eat(tt.dot)) {\n const newNode = this.startNodeAt<N.JSXMemberExpression>(startLoc);\n newNode.object = node;\n newNode.property = this.jsxParseIdentifier();\n node = this.finishNode(newNode, \"JSXMemberExpression\");\n }\n return node;\n }\n\n // Parses any type of JSX attribute value.\n\n jsxParseAttributeValue():\n | N.JSXExpressionContainer\n | N.JSXElement\n | N.StringLiteral {\n let node;\n switch (this.state.type) {\n case tt.braceL:\n node = this.startNode();\n this.setContext(tc.brace);\n this.next();\n node = this.jsxParseExpressionContainer(node, tc.j_oTag);\n if (node.expression.type === \"JSXEmptyExpression\") {\n this.raise(JsxErrors.AttributeIsEmpty, node);\n }\n return node;\n\n case tt.jsxTagStart:\n case tt.string:\n return this.parseExprAtom() as N.JSXElement | N.StringLiteral;\n\n default:\n throw this.raise(JsxErrors.UnsupportedJsxValue, this.state.startLoc);\n }\n }\n\n // JSXEmptyExpression is unique type since it doesn't actually parse anything,\n // and so it should start at the end of last read token (left brace) and finish\n // at the beginning of the next one (right brace).\n\n jsxParseEmptyExpression(): N.JSXEmptyExpression {\n const node = this.startNodeAt(this.state.lastTokEndLoc!);\n return this.finishNodeAt(node, \"JSXEmptyExpression\", this.state.startLoc);\n }\n\n // Parse JSX spread child\n\n jsxParseSpreadChild(node: Undone<N.JSXSpreadChild>): N.JSXSpreadChild {\n this.next(); // ellipsis\n node.expression = this.parseExpression();\n this.setContext(tc.j_expr);\n this.state.canStartJSXElement = true;\n this.expect(tt.braceR);\n\n return this.finishNode(node, \"JSXSpreadChild\");\n }\n\n // Parses JSX expression enclosed into curly brackets.\n\n jsxParseExpressionContainer(\n node: Undone<N.JSXExpressionContainer>,\n previousContext: TokContext,\n ): N.JSXExpressionContainer {\n if (this.match(tt.braceR)) {\n node.expression = this.jsxParseEmptyExpression();\n } else {\n const expression = this.parseExpression();\n\n if (process.env.BABEL_8_BREAKING) {\n if (\n expression.type === \"SequenceExpression\" &&\n !expression.extra?.parenthesized\n ) {\n this.raise(\n JsxErrors.UnexpectedSequenceExpression,\n expression.expressions[1],\n );\n }\n }\n\n node.expression = expression;\n }\n this.setContext(previousContext);\n this.state.canStartJSXElement = true;\n this.expect(tt.braceR);\n\n return this.finishNode(node, \"JSXExpressionContainer\");\n }\n\n // Parses following JSX attribute name-value pair.\n\n jsxParseAttribute(): N.JSXAttribute | N.JSXSpreadAttribute {\n const node = this.startNode<N.JSXAttribute | N.JSXSpreadAttribute>();\n if (this.match(tt.braceL)) {\n this.setContext(tc.brace);\n this.next();\n this.expect(tt.ellipsis);\n node.argument = this.parseMaybeAssignAllowIn();\n this.setContext(tc.j_oTag);\n this.state.canStartJSXElement = true;\n this.expect(tt.braceR);\n return this.finishNode(node, \"JSXSpreadAttribute\");\n }\n node.name = this.jsxParseNamespacedName();\n node.value = this.eat(tt.eq) ? this.jsxParseAttributeValue() : null;\n return this.finishNode(node, \"JSXAttribute\");\n }\n\n // Parses JSX opening tag starting after \"<\".\n\n jsxParseOpeningElementAt(\n startLoc: Position,\n ): N.JSXOpeningElement | N.JSXOpeningFragment {\n const node = this.startNodeAt<N.JSXOpeningElement | N.JSXOpeningFragment>(\n startLoc,\n );\n if (this.eat(tt.jsxTagEnd)) {\n return this.finishNode(node, \"JSXOpeningFragment\");\n }\n node.name = this.jsxParseElementName();\n return this.jsxParseOpeningElementAfterName(\n node as Undone<N.JSXOpeningElement>,\n );\n }\n\n jsxParseOpeningElementAfterName(\n node: Undone<N.JSXOpeningElement>,\n ): N.JSXOpeningElement {\n const attributes: (N.JSXAttribute | N.JSXSpreadAttribute)[] = [];\n while (!this.match(tt.slash) && !this.match(tt.jsxTagEnd)) {\n attributes.push(this.jsxParseAttribute());\n }\n node.attributes = attributes;\n node.selfClosing = this.eat(tt.slash);\n this.expect(tt.jsxTagEnd);\n return this.finishNode(node, \"JSXOpeningElement\");\n }\n\n // Parses JSX closing tag starting after \"</\".\n\n jsxParseClosingElementAt(\n startLoc: Position,\n ): N.JSXClosingElement | N.JSXClosingFragment {\n const node = this.startNodeAt<N.JSXClosingFragment | N.JSXClosingElement>(\n startLoc,\n );\n if (this.eat(tt.jsxTagEnd)) {\n return this.finishNode(node, \"JSXClosingFragment\");\n }\n node.name = this.jsxParseElementName();\n this.expect(tt.jsxTagEnd);\n return this.finishNode(node, \"JSXClosingElement\");\n }\n\n // Parses entire JSX element, including it\"s opening tag\n // (starting after \"<\"), attributes, contents and closing tag.\n\n jsxParseElementAt(startLoc: Position): N.JSXElement | N.JSXFragment {\n const node = this.startNodeAt<N.JSXElement | N.JSXFragment>(startLoc);\n const children = [];\n const openingElement = this.jsxParseOpeningElementAt(startLoc);\n let closingElement = null;\n\n if (!openingElement.selfClosing) {\n contents: for (;;) {\n switch (this.state.type) {\n case tt.jsxTagStart:\n startLoc = this.state.startLoc;\n this.next();\n if (this.eat(tt.slash)) {\n closingElement = this.jsxParseClosingElementAt(startLoc);\n break contents;\n }\n children.push(this.jsxParseElementAt(startLoc));\n break;\n\n case tt.jsxText:\n children.push(this.parseLiteral(this.state.value, \"JSXText\"));\n break;\n\n case tt.braceL: {\n const node = this.startNode<\n N.JSXSpreadChild | N.JSXExpressionContainer\n >();\n this.setContext(tc.brace);\n this.next();\n if (this.match(tt.ellipsis)) {\n children.push(this.jsxParseSpreadChild(node));\n } else {\n children.push(\n this.jsxParseExpressionContainer(node, tc.j_expr),\n );\n }\n\n break;\n }\n // istanbul ignore next - should never happen\n default:\n this.unexpected();\n }\n }\n\n if (\n isFragment(openingElement) &&\n !isFragment(closingElement) &&\n closingElement !== null\n ) {\n this.raise(JsxErrors.MissingClosingTagFragment, closingElement);\n } else if (!isFragment(openingElement) && isFragment(closingElement)) {\n this.raise(JsxErrors.MissingClosingTagElement, closingElement, {\n openingTagName: getQualifiedJSXName(openingElement.name),\n });\n } else if (!isFragment(openingElement) && !isFragment(closingElement)) {\n if (\n getQualifiedJSXName(closingElement.name) !==\n getQualifiedJSXName(openingElement.name)\n ) {\n this.raise(JsxErrors.MissingClosingTagElement, closingElement, {\n openingTagName: getQualifiedJSXName(openingElement.name),\n });\n }\n }\n }\n\n if (isFragment(openingElement)) {\n node.openingFragment = openingElement;\n node.closingFragment = closingElement;\n } else {\n node.openingElement = openingElement;\n node.closingElement = closingElement;\n }\n node.children = children;\n if (this.match(tt.lt)) {\n throw this.raise(\n JsxErrors.UnwrappedAdjacentJSXElements,\n this.state.startLoc,\n );\n }\n\n return isFragment(openingElement)\n ? this.finishNode(node, \"JSXFragment\")\n : this.finishNode(node, \"JSXElement\");\n }\n\n // Parses entire JSX element from current position.\n\n jsxParseElement(): N.JSXElement | N.JSXFragment {\n const startLoc = this.state.startLoc;\n this.next();\n return this.jsxParseElementAt(startLoc);\n }\n\n setContext(newContext: TokContext) {\n const { context } = this.state;\n context[context.length - 1] = newContext;\n }\n\n // ==================================\n // Overrides\n // ==================================\n\n parseExprAtom(refExpressionErrors?: ExpressionErrors | null): N.Expression {\n if (this.match(tt.jsxTagStart)) {\n return this.jsxParseElement();\n } else if (\n this.match(tt.lt) &&\n this.input.charCodeAt(this.state.pos) !== charCodes.exclamationMark\n ) {\n // In case we encounter an lt token here it will always be the start of\n // jsx as the lt sign is not allowed in places that expect an expression\n this.replaceToken(tt.jsxTagStart);\n return this.jsxParseElement();\n } else {\n return super.parseExprAtom(refExpressionErrors);\n }\n }\n\n skipSpace() {\n const curContext = this.curContext();\n if (!curContext.preserveSpace) super.skipSpace();\n }\n\n getTokenFromCode(code: number): void {\n const context = this.curContext();\n\n if (context === tc.j_expr) {\n this.jsxReadToken();\n return;\n }\n\n if (context === tc.j_oTag || context === tc.j_cTag) {\n if (isIdentifierStart(code)) {\n this.jsxReadWord();\n return;\n }\n\n if (code === charCodes.greaterThan) {\n ++this.state.pos;\n this.finishToken(tt.jsxTagEnd);\n return;\n }\n\n if (\n (code === charCodes.quotationMark || code === charCodes.apostrophe) &&\n context === tc.j_oTag\n ) {\n this.jsxReadString(code);\n return;\n }\n }\n\n if (\n code === charCodes.lessThan &&\n this.state.canStartJSXElement &&\n this.input.charCodeAt(this.state.pos + 1) !== charCodes.exclamationMark\n ) {\n ++this.state.pos;\n this.finishToken(tt.jsxTagStart);\n return;\n }\n\n super.getTokenFromCode(code);\n }\n\n updateContext(prevType: TokenType): void {\n const { context, type } = this.state;\n if (type === tt.slash && prevType === tt.jsxTagStart) {\n // do not consider JSX expr -> JSX open tag -> ... anymore\n // reconsider as closing tag context\n context.splice(-2, 2, tc.j_cTag);\n this.state.canStartJSXElement = false;\n } else if (type === tt.jsxTagStart) {\n // start opening tag context\n context.push(tc.j_oTag);\n } else if (type === tt.jsxTagEnd) {\n const out = context[context.length - 1];\n if ((out === tc.j_oTag && prevType === tt.slash) || out === tc.j_cTag) {\n context.pop();\n this.state.canStartJSXElement =\n context[context.length - 1] === tc.j_expr;\n } else {\n this.setContext(tc.j_expr);\n this.state.canStartJSXElement = true;\n }\n } else {\n this.state.canStartJSXElement = tokenComesBeforeExpression(type);\n }\n }\n };\n","import type { Position } from \"../../util/location.ts\";\nimport ScopeHandler, { NameType, Scope } from \"../../util/scope.ts\";\nimport { BindingFlag, ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type * as N from \"../../types.ts\";\nimport { Errors } from \"../../parse-error.ts\";\n\nconst enum TsNameType {\n Types = 1 << 0,\n // enums (which are also in .types)\n Enums = 1 << 1,\n // const enums (which are also in .enums and .types)\n ConstEnums = 1 << 2,\n // classes (which are also in .lexical) and interface (which are also in .types)\n Classes = 1 << 3,\n // namespaces and ambient functions (or classes) are too difficult to track,\n // especially without type analysis.\n // We need to track them anyway, to avoid \"X is not defined\" errors\n // when exporting them.\n ExportOnlyBindings = 1 << 4,\n}\n\nclass TypeScriptScope extends Scope {\n tsNames = new Map<string, TsNameType>();\n}\n\n// See https://github.com/babel/babel/pull/9766#discussion_r268920730 for an\n// explanation of how typescript handles scope.\n\nexport default class TypeScriptScopeHandler extends ScopeHandler<TypeScriptScope> {\n importsStack: Set<string>[] = [];\n\n createScope(flags: ScopeFlag): TypeScriptScope {\n this.importsStack.push(new Set()); // Always keep the top-level scope for export checks.\n\n return new TypeScriptScope(flags);\n }\n\n enter(flags: ScopeFlag): void {\n if (flags === ScopeFlag.TS_MODULE) {\n this.importsStack.push(new Set());\n }\n\n super.enter(flags);\n }\n\n exit() {\n const flags = super.exit();\n\n if (flags === ScopeFlag.TS_MODULE) {\n this.importsStack.pop();\n }\n\n return flags;\n }\n\n hasImport(name: string, allowShadow?: boolean) {\n const len = this.importsStack.length;\n if (this.importsStack[len - 1].has(name)) {\n return true;\n }\n if (!allowShadow && len > 1) {\n for (let i = 0; i < len - 1; i++) {\n if (this.importsStack[i].has(name)) return true;\n }\n }\n return false;\n }\n\n declareName(name: string, bindingType: BindingFlag, loc: Position) {\n if (bindingType & BindingFlag.FLAG_TS_IMPORT) {\n if (this.hasImport(name, true)) {\n this.parser.raise(Errors.VarRedeclaration, loc, {\n identifierName: name,\n });\n }\n this.importsStack[this.importsStack.length - 1].add(name);\n return;\n }\n\n const scope = this.currentScope();\n let type = scope.tsNames.get(name) || 0;\n\n if (bindingType & BindingFlag.FLAG_TS_EXPORT_ONLY) {\n this.maybeExportDefined(scope, name);\n scope.tsNames.set(name, type | TsNameType.ExportOnlyBindings);\n return;\n }\n\n super.declareName(name, bindingType, loc);\n\n if (bindingType & BindingFlag.KIND_TYPE) {\n if (!(bindingType & BindingFlag.KIND_VALUE)) {\n // \"Value\" bindings have already been registered by the superclass.\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n this.maybeExportDefined(scope, name);\n }\n type = type | TsNameType.Types;\n }\n if (bindingType & BindingFlag.FLAG_TS_ENUM) {\n type = type | TsNameType.Enums;\n }\n if (bindingType & BindingFlag.FLAG_TS_CONST_ENUM) {\n type = type | TsNameType.ConstEnums;\n }\n if (bindingType & BindingFlag.FLAG_CLASS) {\n type = type | TsNameType.Classes;\n }\n if (type) scope.tsNames.set(name, type);\n }\n\n isRedeclaredInScope(\n scope: TypeScriptScope,\n name: string,\n bindingType: BindingFlag,\n ): boolean {\n const type = scope.tsNames.get(name)!;\n if ((type & TsNameType.Enums) > 0) {\n if (bindingType & BindingFlag.FLAG_TS_ENUM) {\n // Enums can be merged with other enums if they are both\n // const or both non-const.\n const isConst = !!(bindingType & BindingFlag.FLAG_TS_CONST_ENUM);\n const wasConst = (type & TsNameType.ConstEnums) > 0;\n return isConst !== wasConst;\n }\n return true;\n }\n if (\n bindingType & BindingFlag.FLAG_CLASS &&\n (type & TsNameType.Classes) > 0\n ) {\n if (scope.names.get(name)! & NameType.Lexical) {\n // Classes can be merged with interfaces\n return !!(bindingType & BindingFlag.KIND_VALUE);\n } else {\n // Interface can be merged with other classes or interfaces\n return false;\n }\n }\n if (bindingType & BindingFlag.KIND_TYPE && (type & TsNameType.Types) > 0) {\n return true;\n }\n\n return super.isRedeclaredInScope(scope, name, bindingType);\n }\n\n checkLocalExport(id: N.Identifier) {\n const { name } = id;\n\n if (this.hasImport(name)) return;\n\n const len = this.scopeStack.length;\n for (let i = len - 1; i >= 0; i--) {\n const scope = this.scopeStack[i];\n const type = scope.tsNames.get(name)!;\n if (\n (type & TsNameType.Types) > 0 ||\n (type & TsNameType.ExportOnlyBindings) > 0\n ) {\n return;\n }\n }\n\n super.checkLocalExport(id);\n }\n}\n","// ProductionParameterHandler is a stack fashioned production parameter tracker\n// https://tc39.es/ecma262/#sec-grammar-notation\n// The tracked parameters are defined above.\n//\n// Whenever [+Await]/[+Yield] appears in the right-hand sides of a production,\n// we must enter a new tracking stack. For example when parsing\n//\n// AsyncFunctionDeclaration [Yield, Await]:\n// async [no LineTerminator here] function BindingIdentifier[?Yield, ?Await]\n// ( FormalParameters[~Yield, +Await] ) { AsyncFunctionBody }\n//\n// we must follow such process:\n//\n// 1. parse async keyword\n// 2. parse function keyword\n// 3. parse bindingIdentifier <= inherit current parameters: [?Await]\n// 4. enter new stack with (PARAM_AWAIT)\n// 5. parse formal parameters <= must have [Await] parameter [+Await]\n// 6. parse function body\n// 7. exit current stack\n\nexport const enum ParamKind {\n // Initial Parameter flags\n PARAM = 0b0000,\n // track [Yield] production parameter\n PARAM_YIELD = 0b0001,\n // track [Await] production parameter\n PARAM_AWAIT = 0b0010,\n // track [Return] production parameter\n PARAM_RETURN = 0b0100,\n // track [In] production parameter\n PARAM_IN = 0b1000,\n}\n\n// todo(flow->ts) - check if more granular type can be used,\n// type below is not good because things like PARAM_AWAIT|PARAM_YIELD are not included\n// export type ParamKind =\n// | typeof PARAM\n// | typeof PARAM_AWAIT\n// | typeof PARAM_IN\n// | typeof PARAM_RETURN\n// | typeof PARAM_YIELD;\n\nexport default class ProductionParameterHandler {\n stacks: ParamKind[] = [];\n enter(flags: ParamKind) {\n this.stacks.push(flags);\n }\n\n exit() {\n this.stacks.pop();\n }\n\n currentFlags(): ParamKind {\n return this.stacks[this.stacks.length - 1];\n }\n\n get hasAwait(): boolean {\n return (this.currentFlags() & ParamKind.PARAM_AWAIT) > 0;\n }\n\n get hasYield(): boolean {\n return (this.currentFlags() & ParamKind.PARAM_YIELD) > 0;\n }\n\n get hasReturn(): boolean {\n return (this.currentFlags() & ParamKind.PARAM_RETURN) > 0;\n }\n\n get hasIn(): boolean {\n return (this.currentFlags() & ParamKind.PARAM_IN) > 0;\n }\n}\n\nexport function functionFlags(\n isAsync: boolean,\n isGenerator: boolean,\n): ParamKind {\n return (\n (isAsync ? ParamKind.PARAM_AWAIT : 0) |\n (isGenerator ? ParamKind.PARAM_YIELD : 0)\n );\n}\n","import type { OptionFlags, Options } from \"../options.ts\";\nimport type State from \"../tokenizer/state.ts\";\nimport type { PluginsMap } from \"./index.ts\";\nimport type ScopeHandler from \"../util/scope.ts\";\nimport type ExpressionScopeHandler from \"../util/expression-scope.ts\";\nimport type ClassScopeHandler from \"../util/class-scope.ts\";\nimport type ProductionParameterHandler from \"../util/production-parameter.ts\";\nimport type {\n ParserPluginWithOptions,\n PluginConfig,\n PluginOptions,\n} from \"../typings.ts\";\nimport type * as N from \"../types.ts\";\n\nexport default class BaseParser {\n // Properties set by constructor in index.js\n declare options: Options;\n declare optionFlags: OptionFlags;\n declare inModule: boolean;\n declare scope: ScopeHandler<any>;\n declare classScope: ClassScopeHandler;\n declare prodParam: ProductionParameterHandler;\n declare expressionScope: ExpressionScopeHandler;\n declare plugins: PluginsMap;\n declare filename: string | undefined | null;\n declare startIndex: number;\n // Names of exports store. `default` is stored as a name for both\n // `export default foo;` and `export { foo as default };`.\n declare exportedIdentifiers: Set<string>;\n sawUnambiguousESM: boolean = false;\n ambiguousScriptDifferentAst: boolean = false;\n\n // Initialized by Tokenizer\n declare state: State;\n // input and length are not in state as they are constant and we do\n // not want to ever copy them, which happens if state gets cloned\n declare input: string;\n declare length: number;\n // Comment store for Program.comments\n declare comments: N.Comment[];\n\n sourceToOffsetPos(sourcePos: number) {\n return sourcePos + this.startIndex;\n }\n\n offsetToSourcePos(offsetPos: number) {\n return offsetPos - this.startIndex;\n }\n\n // This method accepts either a string (plugin name) or an array pair\n // (plugin name and options object). If an options object is given,\n // then each value is non-recursively checked for identity with that\n // plugin’s actual option value.\n hasPlugin(pluginConfig: PluginConfig): boolean {\n if (typeof pluginConfig === \"string\") {\n return this.plugins.has(pluginConfig);\n } else {\n const [pluginName, pluginOptions] = pluginConfig;\n if (!this.hasPlugin(pluginName)) {\n return false;\n }\n const actualOptions = this.plugins.get(pluginName);\n for (const key of Object.keys(\n pluginOptions,\n ) as (keyof typeof pluginOptions)[]) {\n if (actualOptions?.[key] !== pluginOptions[key]) {\n return false;\n }\n }\n return true;\n }\n }\n\n getPluginOption<\n PluginName extends ParserPluginWithOptions[0],\n OptionName extends keyof PluginOptions<PluginName>,\n >(plugin: PluginName, name: OptionName) {\n return (this.plugins.get(plugin) as null | PluginOptions<PluginName>)?.[\n name\n ];\n }\n}\n","/*:: declare var invariant; */\n\nimport BaseParser from \"./base.ts\";\nimport type { Comment, Node } from \"../types.ts\";\nimport * as charCodes from \"charcodes\";\nimport type { Undone } from \"./node.ts\";\n\n/**\n * A whitespace token containing comments\n */\nexport type CommentWhitespace = {\n /**\n * the start of the whitespace token.\n */\n start: number;\n /**\n * the end of the whitespace token.\n */\n end: number;\n /**\n * the containing comments\n */\n comments: Comment[];\n /**\n * the immediately preceding AST node of the whitespace token\n */\n leadingNode: Node | null;\n /**\n * the immediately following AST node of the whitespace token\n */\n trailingNode: Node | null;\n /**\n * the innermost AST node containing the whitespace with minimal size (|end - start|)\n */\n containingNode: Node | null;\n};\n\n/**\n * Merge comments with node's trailingComments or assign comments to be\n * trailingComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nfunction setTrailingComments(node: Undone<Node>, comments: Comment[]) {\n if (node.trailingComments === undefined) {\n node.trailingComments = comments;\n } else {\n node.trailingComments.unshift(...comments);\n }\n}\n\n/**\n * Merge comments with node's leadingComments or assign comments to be\n * leadingComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nfunction setLeadingComments(node: Undone<Node>, comments: Comment[]) {\n if (node.leadingComments === undefined) {\n node.leadingComments = comments;\n } else {\n node.leadingComments.unshift(...comments);\n }\n}\n\n/**\n * Merge comments with node's innerComments or assign comments to be\n * innerComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nexport function setInnerComments(node: Undone<Node>, comments: Comment[]) {\n if (node.innerComments === undefined) {\n node.innerComments = comments;\n } else {\n node.innerComments.unshift(...comments);\n }\n}\n\n/**\n * Given node and elements array, if elements has non-null element,\n * merge comments to its trailingComments, otherwise merge comments\n * to node's innerComments\n */\nfunction adjustInnerComments(\n node: Undone<Node>,\n elements: (Node | null)[],\n commentWS: CommentWhitespace,\n) {\n let lastElement = null;\n let i = elements.length;\n while (lastElement === null && i > 0) {\n lastElement = elements[--i];\n }\n if (lastElement === null || lastElement.start > commentWS.start) {\n setInnerComments(node, commentWS.comments);\n } else {\n setTrailingComments(lastElement, commentWS.comments);\n }\n}\n\nexport default class CommentsParser extends BaseParser {\n addComment(comment: Comment): void {\n if (this.filename) comment.loc.filename = this.filename;\n const { commentsLen } = this.state;\n if (this.comments.length !== commentsLen) {\n this.comments.length = commentsLen;\n }\n this.comments.push(comment);\n this.state.commentsLen++;\n }\n\n /**\n * Given a newly created AST node _n_, attach _n_ to a comment whitespace _w_ if applicable\n * {@see {@link CommentWhitespace}}\n */\n processComment(node: Node): void {\n const { commentStack } = this.state;\n const commentStackLength = commentStack.length;\n if (commentStackLength === 0) return;\n let i = commentStackLength - 1;\n const lastCommentWS = commentStack[i];\n\n if (lastCommentWS.start === node.end) {\n lastCommentWS.leadingNode = node;\n i--;\n }\n\n const { start: nodeStart } = node;\n // invariant: for all 0 <= j <= i, let c = commentStack[j], c must satisfy c.end < node.end\n for (; i >= 0; i--) {\n const commentWS = commentStack[i];\n const commentEnd = commentWS.end;\n if (commentEnd > nodeStart) {\n // by definition of commentWhiteSpace, this implies commentWS.start > nodeStart\n // so node can be a containingNode candidate. At this time we can finalize the comment\n // whitespace, because\n // 1) its leadingNode or trailingNode, if exists, will not change\n // 2) its containingNode have been assigned and will not change because it is the\n // innermost minimal-sized AST node\n commentWS.containingNode = node;\n this.finalizeComment(commentWS);\n commentStack.splice(i, 1);\n } else {\n if (commentEnd === nodeStart) {\n commentWS.trailingNode = node;\n }\n // stop the loop when commentEnd <= nodeStart\n break;\n }\n }\n }\n\n /**\n * Assign the comments of comment whitespaces to related AST nodes.\n * Also adjust innerComments following trailing comma.\n */\n finalizeComment(commentWS: CommentWhitespace) {\n const { comments } = commentWS;\n if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {\n if (commentWS.leadingNode !== null) {\n setTrailingComments(commentWS.leadingNode, comments);\n }\n if (commentWS.trailingNode !== null) {\n setLeadingComments(commentWS.trailingNode, comments);\n }\n } else {\n /*:: invariant(commentWS.containingNode !== null) */\n const node = commentWS.containingNode!;\n const commentStart = commentWS.start;\n if (\n this.input.charCodeAt(this.offsetToSourcePos(commentStart) - 1) ===\n charCodes.comma\n ) {\n // If a commentWhitespace follows a comma and the containingNode allows\n // list structures with trailing comma, merge it to the trailingComment\n // of the last non-null list element\n switch (node.type) {\n case \"ObjectExpression\":\n case \"ObjectPattern\":\n adjustInnerComments(node, node.properties, commentWS);\n break;\n case \"CallExpression\":\n case \"OptionalCallExpression\":\n adjustInnerComments(node, node.arguments, commentWS);\n break;\n case \"ImportExpression\":\n adjustInnerComments(\n node,\n [node.source, node.options ?? null],\n commentWS,\n );\n break;\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ArrowFunctionExpression\":\n case \"ObjectMethod\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n adjustInnerComments(node, node.params, commentWS);\n break;\n case \"ArrayExpression\":\n case \"ArrayPattern\":\n adjustInnerComments(node, node.elements, commentWS);\n break;\n case \"ExportNamedDeclaration\":\n case \"ImportDeclaration\":\n adjustInnerComments(node, node.specifiers, commentWS);\n break;\n case \"TSEnumDeclaration\":\n if (!process.env.BABEL_8_BREAKING) {\n adjustInnerComments(node, node.members!, commentWS);\n } else {\n setInnerComments(node, comments);\n }\n break;\n case \"TSEnumBody\":\n adjustInnerComments(node, node.members, commentWS);\n break;\n default: {\n if (!process.env.BABEL_8_BREAKING) {\n if (node.type === \"RecordExpression\") {\n adjustInnerComments(node, node.properties, commentWS);\n break;\n }\n if (node.type === \"TupleExpression\") {\n adjustInnerComments(node, node.elements, commentWS);\n break;\n }\n }\n setInnerComments(node, comments);\n }\n }\n } else {\n setInnerComments(node, comments);\n }\n }\n }\n\n /**\n * Drains remaining commentStack and applies finalizeComment\n * to each comment whitespace. Used only in parseExpression\n * where the top level AST node is _not_ Program\n * {@see {@link CommentsParser#finalizeComment}}\n */\n finalizeRemainingComments() {\n const { commentStack } = this.state;\n for (let i = commentStack.length - 1; i >= 0; i--) {\n this.finalizeComment(commentStack[i]);\n }\n this.state.commentStack = [];\n }\n\n /* eslint-disable no-irregular-whitespace */\n /**\n * Reset previous node trailing comments. Used in object / class\n * property parsing. We parse `async`, `static`, `set` and `get`\n * as an identifier but may reinterpret it into an async/static/accessor\n * method later. In this case the identifier is not part of the AST and we\n * should sync the knowledge to commentStacks\n *\n * For example, when parsing\n * ```\n * async /* 1 *​/ function f() {}\n * ```\n * the comment whitespace `/* 1 *​/` has leading node Identifier(async). When\n * we see the function token, we create a Function node and mark `/* 1 *​/` as\n * inner comments. So `/* 1 *​/` should be detached from the Identifier node.\n *\n * @param node the last finished AST node _before_ current token\n */\n /* eslint-enable no-irregular-whitespace */\n resetPreviousNodeTrailingComments(node: Node) {\n const { commentStack } = this.state;\n const { length } = commentStack;\n if (length === 0) return;\n const commentWS = commentStack[length - 1];\n if (commentWS.leadingNode === node) {\n commentWS.leadingNode = null;\n }\n }\n\n /**\n * Attach a node to the comment whitespaces right before/after\n * the given range.\n *\n * This is used to properly attach comments around parenthesized\n * expressions as leading/trailing comments of the inner expression.\n */\n takeSurroundingComments(node: Node, start: number, end: number) {\n const { commentStack } = this.state;\n const commentStackLength = commentStack.length;\n if (commentStackLength === 0) return;\n let i = commentStackLength - 1;\n\n for (; i >= 0; i--) {\n const commentWS = commentStack[i];\n const commentEnd = commentWS.end;\n const commentStart = commentWS.start;\n\n if (commentStart === end) {\n commentWS.leadingNode = node;\n } else if (commentEnd === start) {\n commentWS.trailingNode = node;\n } else if (commentEnd < start) {\n break;\n }\n }\n }\n}\n","import type { OptionsWithDefaults } from \"../options.ts\";\nimport type { CommentWhitespace } from \"../parser/comments\";\nimport { Position } from \"../util/location.ts\";\n\nimport { types as ct, type TokContext } from \"./context.ts\";\nimport { tt, type TokenType } from \"./types.ts\";\nimport type { Errors } from \"../parse-error.ts\";\nimport type { ParseError } from \"../parse-error.ts\";\n\nexport type DeferredStrictError =\n | typeof Errors.StrictNumericEscape\n | typeof Errors.StrictOctalLiteral;\n\ntype TopicContextState = {\n // When a topic binding has been currently established,\n // then this is 1. Otherwise, it is 0. This is forwards compatible\n // with a future plugin for multiple lexical topics.\n maxNumOfResolvableTopics: number;\n // When a topic binding has been currently established, and if that binding\n // has been used as a topic reference `#`, then this is 0. Otherwise, it is\n // `null`. This is forwards compatible with a future plugin for multiple\n // lexical topics.\n maxTopicIndex: null | 0;\n};\n\nexport const enum LoopLabelKind {\n Loop = 1,\n Switch = 2,\n}\n\ndeclare const bit: import(\"../../../../scripts/babel-plugin-bit-decorator/types.d.ts\").BitDecorator<State>;\n\nexport default class State {\n @bit.storage flags: number = 0;\n\n @bit accessor strict = false;\n\n startIndex!: number;\n curLine!: number;\n lineStart!: number;\n\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n startLoc!: Position;\n endLoc!: Position;\n\n init({\n strictMode,\n sourceType,\n startIndex,\n startLine,\n startColumn,\n }: OptionsWithDefaults): void {\n this.strict =\n strictMode === false\n ? false\n : strictMode === true\n ? true\n : sourceType === \"module\";\n\n this.startIndex = startIndex;\n this.curLine = startLine;\n this.lineStart = -startColumn;\n this.startLoc = this.endLoc = new Position(\n startLine,\n startColumn,\n startIndex,\n );\n }\n\n errors: ParseError<any>[] = [];\n\n // Used to signify the start of a potential arrow function\n potentialArrowAt: number = -1;\n\n // Used to signify the start of an expression which looks like a\n // typed arrow function, but it isn't\n // e.g. a ? (b) : c => d\n // ^\n noArrowAt: number[] = [];\n\n // Used to signify the start of an expression whose params, if it looks like\n // an arrow function, shouldn't be converted to assignable nodes.\n // This is used to defer the validation of typed arrow functions inside\n // conditional expressions.\n // e.g. a ? (b) : c => d\n // ^\n noArrowParamsConversionAt: number[] = [];\n\n // Flags to track\n @bit accessor maybeInArrowParameters = false;\n @bit accessor inType = false;\n @bit accessor noAnonFunctionType = false;\n @bit accessor hasFlowComment = false;\n @bit accessor isAmbientContext = false;\n @bit accessor inAbstractClass = false;\n @bit accessor inDisallowConditionalTypesContext = false;\n\n // For the Hack-style pipelines plugin\n topicContext: TopicContextState = {\n maxNumOfResolvableTopics: 0,\n maxTopicIndex: null,\n };\n\n // For the F#-style pipelines plugin\n @bit accessor soloAwait = false;\n @bit accessor inFSharpPipelineDirectBody = false;\n\n // Labels in scope.\n labels: {\n kind: LoopLabelKind | null;\n name?: string | null;\n statementStart?: number;\n }[] = [];\n\n commentsLen = 0;\n // Comment attachment store\n commentStack: CommentWhitespace[] = [];\n\n // The current position of the tokenizer in the input.\n pos: number = 0;\n\n // Properties of the current token:\n // Its type\n type: TokenType = tt.eof;\n\n // For tokens that include more information than their type, the value\n value: any = null;\n\n // Its start and end offset\n start: number = 0;\n end: number = 0;\n\n // Position information for the previous token\n // this is initialized when generating the second token.\n lastTokEndLoc: Position | null = null;\n // this is initialized when generating the second token.\n lastTokStartLoc: Position | null = null;\n\n // The context stack is used to track whether the apostrophe \"`\" starts\n // or ends a string template\n context: TokContext[] = [ct.brace];\n\n // Used to track whether a JSX element is allowed to form\n @bit accessor canStartJSXElement = true;\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n @bit accessor containsEsc = false;\n\n // Used to track invalid escape sequences in template literals,\n // that must be reported if the template is not tagged.\n firstInvalidTemplateEscapePos: null | Position = null;\n\n @bit accessor hasTopLevelAwait = false;\n\n // This property is used to track the following errors\n // - StrictNumericEscape\n // - StrictOctalLiteral\n //\n // in a literal that occurs prior to/immediately after a \"use strict\" directive.\n\n // todo(JLHwung): set strictErrors to null and avoid recording string errors\n // after a non-directive is parsed\n strictErrors = new Map<number, [DeferredStrictError, Position]>();\n\n // Tokens length in token store\n tokensLength: number = 0;\n\n /**\n * When we add a new property, we must manually update the `clone` method\n * @see State#clone\n */\n\n curPosition(): Position {\n return new Position(\n this.curLine,\n this.pos - this.lineStart,\n this.pos + this.startIndex,\n );\n }\n\n clone(): State {\n const state = new State();\n state.flags = this.flags;\n state.startIndex = this.startIndex;\n state.curLine = this.curLine;\n state.lineStart = this.lineStart;\n state.startLoc = this.startLoc;\n state.endLoc = this.endLoc;\n state.errors = this.errors.slice();\n state.potentialArrowAt = this.potentialArrowAt;\n state.noArrowAt = this.noArrowAt.slice();\n state.noArrowParamsConversionAt = this.noArrowParamsConversionAt.slice();\n state.topicContext = this.topicContext;\n state.labels = this.labels.slice();\n state.commentsLen = this.commentsLen;\n state.commentStack = this.commentStack.slice();\n state.pos = this.pos;\n state.type = this.type;\n state.value = this.value;\n state.start = this.start;\n state.end = this.end;\n state.lastTokEndLoc = this.lastTokEndLoc;\n state.lastTokStartLoc = this.lastTokStartLoc;\n state.context = this.context.slice();\n state.firstInvalidTemplateEscapePos = this.firstInvalidTemplateEscapePos;\n state.strictErrors = this.strictErrors;\n state.tokensLength = this.tokensLength;\n\n return state;\n }\n}\n\nexport type LookaheadState = {\n pos: number;\n value: any;\n type: TokenType;\n start: number;\n end: number;\n context: TokContext[];\n startLoc: Position;\n lastTokEndLoc: Position | null;\n curLine: number;\n lineStart: number;\n curPosition: State[\"curPosition\"];\n /* Used only in readToken_mult_modulo */\n inType: boolean;\n // These boolean properties are not initialized in createLookaheadState()\n // instead they will only be set by the tokenizer\n containsEsc?: boolean;\n};\n","// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// The following character codes are forbidden from being\n// an immediate sibling of NumericLiteralSeparator _\nconst forbiddenNumericSeparatorSiblings = {\n decBinOct: new Set<number>([\n charCodes.dot,\n charCodes.uppercaseB,\n charCodes.uppercaseE,\n charCodes.uppercaseO,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseB,\n charCodes.lowercaseE,\n charCodes.lowercaseO,\n ]),\n hex: new Set<number>([\n charCodes.dot,\n charCodes.uppercaseX,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseX,\n ]),\n};\n\nconst isAllowedNumericSeparatorSibling = {\n // 0 - 1\n bin: (ch: number) => ch === charCodes.digit0 || ch === charCodes.digit1,\n\n // 0 - 7\n oct: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit7,\n\n // 0 - 9\n dec: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit9,\n\n // 0 - 9, A - F, a - f,\n hex: (ch: number) =>\n (ch >= charCodes.digit0 && ch <= charCodes.digit9) ||\n (ch >= charCodes.uppercaseA && ch <= charCodes.uppercaseF) ||\n (ch >= charCodes.lowercaseA && ch <= charCodes.lowercaseF),\n};\n\nexport type StringContentsErrorHandlers = EscapedCharErrorHandlers & {\n unterminated(\n initialPos: number,\n initialLineStart: number,\n initialCurLine: number,\n ): void;\n};\n\nexport function readStringContents(\n type: \"single\" | \"double\" | \"template\",\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n errors: StringContentsErrorHandlers,\n) {\n const initialPos = pos;\n const initialLineStart = lineStart;\n const initialCurLine = curLine;\n\n let out = \"\";\n let firstInvalidLoc = null;\n let chunkStart = pos;\n const { length } = input;\n for (;;) {\n if (pos >= length) {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n out += input.slice(chunkStart, pos);\n break;\n }\n const ch = input.charCodeAt(pos);\n if (isStringEnd(type, ch, input, pos)) {\n out += input.slice(chunkStart, pos);\n break;\n }\n if (ch === charCodes.backslash) {\n out += input.slice(chunkStart, pos);\n const res = readEscapedChar(\n input,\n pos,\n lineStart,\n curLine,\n type === \"template\",\n errors,\n );\n if (res.ch === null && !firstInvalidLoc) {\n firstInvalidLoc = { pos, lineStart, curLine };\n } else {\n out += res.ch;\n }\n ({ pos, lineStart, curLine } = res);\n chunkStart = pos;\n } else if (\n ch === charCodes.lineSeparator ||\n ch === charCodes.paragraphSeparator\n ) {\n ++pos;\n ++curLine;\n lineStart = pos;\n } else if (ch === charCodes.lineFeed || ch === charCodes.carriageReturn) {\n if (type === \"template\") {\n out += input.slice(chunkStart, pos) + \"\\n\";\n ++pos;\n if (\n ch === charCodes.carriageReturn &&\n input.charCodeAt(pos) === charCodes.lineFeed\n ) {\n ++pos;\n }\n ++curLine;\n chunkStart = lineStart = pos;\n } else {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n }\n } else {\n ++pos;\n }\n }\n return process.env.BABEL_8_BREAKING\n ? { pos, str: out, firstInvalidLoc, lineStart, curLine }\n : {\n pos,\n str: out,\n firstInvalidLoc,\n lineStart,\n curLine,\n containsInvalid: !!firstInvalidLoc,\n };\n}\n\nfunction isStringEnd(\n type: \"single\" | \"double\" | \"template\",\n ch: number,\n input: string,\n pos: number,\n) {\n if (type === \"template\") {\n return (\n ch === charCodes.graveAccent ||\n (ch === charCodes.dollarSign &&\n input.charCodeAt(pos + 1) === charCodes.leftCurlyBrace)\n );\n }\n return (\n ch === (type === \"double\" ? charCodes.quotationMark : charCodes.apostrophe)\n );\n}\n\ntype EscapedCharErrorHandlers = HexCharErrorHandlers &\n CodePointErrorHandlers & {\n strictNumericEscape(pos: number, lineStart: number, curLine: number): void;\n };\n\nfunction readEscapedChar(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n inTemplate: boolean,\n errors: EscapedCharErrorHandlers,\n) {\n const throwOnInvalid = !inTemplate;\n pos++; // skip '\\'\n\n const res = (ch: string | null) => ({ pos, ch, lineStart, curLine });\n\n const ch = input.charCodeAt(pos++);\n switch (ch) {\n case charCodes.lowercaseN:\n return res(\"\\n\");\n case charCodes.lowercaseR:\n return res(\"\\r\");\n case charCodes.lowercaseX: {\n let code;\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n 2,\n false,\n throwOnInvalid,\n errors,\n ));\n return res(code === null ? null : String.fromCharCode(code));\n }\n case charCodes.lowercaseU: {\n let code;\n ({ code, pos } = readCodePoint(\n input,\n pos,\n lineStart,\n curLine,\n throwOnInvalid,\n errors,\n ));\n return res(code === null ? null : String.fromCodePoint(code));\n }\n case charCodes.lowercaseT:\n return res(\"\\t\");\n case charCodes.lowercaseB:\n return res(\"\\b\");\n case charCodes.lowercaseV:\n return res(\"\\u000b\");\n case charCodes.lowercaseF:\n return res(\"\\f\");\n case charCodes.carriageReturn:\n if (input.charCodeAt(pos) === charCodes.lineFeed) {\n ++pos;\n }\n // fall through\n case charCodes.lineFeed:\n lineStart = pos;\n ++curLine;\n // fall through\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n return res(\"\");\n case charCodes.digit8:\n case charCodes.digit9:\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(pos - 1, lineStart, curLine);\n }\n // fall through\n default:\n if (ch >= charCodes.digit0 && ch <= charCodes.digit7) {\n const startPos = pos - 1;\n const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));\n\n let octalStr = match[0];\n\n let octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n pos += octalStr.length - 1;\n const next = input.charCodeAt(pos);\n if (\n octalStr !== \"0\" ||\n next === charCodes.digit8 ||\n next === charCodes.digit9\n ) {\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(startPos, lineStart, curLine);\n }\n }\n\n return res(String.fromCharCode(octal));\n }\n\n return res(String.fromCharCode(ch));\n }\n}\n\ntype HexCharErrorHandlers = IntErrorHandlers & {\n invalidEscapeSequence(pos: number, lineStart: number, curLine: number): void;\n};\n\n// Used to read character escape sequences ('\\x', '\\u').\nfunction readHexChar(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n len: number,\n forceLen: boolean,\n throwOnInvalid: boolean,\n errors: HexCharErrorHandlers,\n) {\n const initialPos = pos;\n let n;\n ({ n, pos } = readInt(\n input,\n pos,\n lineStart,\n curLine,\n 16,\n len,\n forceLen,\n false,\n errors,\n /* bailOnError */ !throwOnInvalid,\n ));\n if (n === null) {\n if (throwOnInvalid) {\n errors.invalidEscapeSequence(initialPos, lineStart, curLine);\n } else {\n pos = initialPos - 1;\n }\n }\n return { code: n, pos };\n}\n\nexport type IntErrorHandlers = {\n numericSeparatorInEscapeSequence(\n pos: number,\n lineStart: number,\n curLine: number,\n ): void;\n unexpectedNumericSeparator(\n pos: number,\n lineStart: number,\n curLine: number,\n ): void;\n // It can return \"true\" to indicate that the error was handled\n // and the int parsing should continue.\n invalidDigit(\n pos: number,\n lineStart: number,\n curLine: number,\n radix: number,\n ): boolean;\n};\n\nexport function readInt(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n radix: number,\n len: number | undefined,\n forceLen: boolean,\n allowNumSeparator: boolean | \"bail\",\n errors: IntErrorHandlers,\n bailOnError: boolean,\n) {\n const start = pos;\n const forbiddenSiblings =\n radix === 16\n ? forbiddenNumericSeparatorSiblings.hex\n : forbiddenNumericSeparatorSiblings.decBinOct;\n const isAllowedSibling =\n radix === 16\n ? isAllowedNumericSeparatorSibling.hex\n : radix === 10\n ? isAllowedNumericSeparatorSibling.dec\n : radix === 8\n ? isAllowedNumericSeparatorSibling.oct\n : isAllowedNumericSeparatorSibling.bin;\n\n let invalid = false;\n let total = 0;\n\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n const code = input.charCodeAt(pos);\n let val;\n\n if (code === charCodes.underscore && allowNumSeparator !== \"bail\") {\n const prev = input.charCodeAt(pos - 1);\n const next = input.charCodeAt(pos + 1);\n\n if (!allowNumSeparator) {\n if (bailOnError) return { n: null, pos };\n errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);\n } else if (\n Number.isNaN(next) ||\n !isAllowedSibling(next) ||\n forbiddenSiblings.has(prev) ||\n forbiddenSiblings.has(next)\n ) {\n if (bailOnError) return { n: null, pos };\n errors.unexpectedNumericSeparator(pos, lineStart, curLine);\n }\n\n // Ignore this _ character\n ++pos;\n continue;\n }\n\n if (code >= charCodes.lowercaseA) {\n val = code - charCodes.lowercaseA + charCodes.lineFeed;\n } else if (code >= charCodes.uppercaseA) {\n val = code - charCodes.uppercaseA + charCodes.lineFeed;\n } else if (charCodes.isDigit(code)) {\n val = code - charCodes.digit0; // 0-9\n } else {\n val = Infinity;\n }\n if (val >= radix) {\n // If we found a digit which is too big, errors.invalidDigit can return true to avoid\n // breaking the loop (this is used for error recovery).\n if (val <= 9 && bailOnError) {\n return { n: null, pos };\n } else if (\n val <= 9 &&\n errors.invalidDigit(pos, lineStart, curLine, radix)\n ) {\n val = 0;\n } else if (forceLen) {\n val = 0;\n invalid = true;\n } else {\n break;\n }\n }\n ++pos;\n total = total * radix + val;\n }\n if (pos === start || (len != null && pos - start !== len) || invalid) {\n return { n: null, pos };\n }\n\n return { n: total, pos };\n}\n\nexport type CodePointErrorHandlers = HexCharErrorHandlers & {\n invalidCodePoint(pos: number, lineStart: number, curLine: number): void;\n};\n\nexport function readCodePoint(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n throwOnInvalid: boolean,\n errors: CodePointErrorHandlers,\n) {\n const ch = input.charCodeAt(pos);\n let code;\n\n if (ch === charCodes.leftCurlyBrace) {\n ++pos;\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n input.indexOf(\"}\", pos) - pos,\n true,\n throwOnInvalid,\n errors,\n ));\n ++pos;\n if (code !== null && code > 0x10ffff) {\n if (throwOnInvalid) {\n errors.invalidCodePoint(pos, lineStart, curLine);\n } else {\n return { code: null, pos };\n }\n }\n } else {\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n 4,\n false,\n throwOnInvalid,\n errors,\n ));\n }\n return { code, pos };\n}\n","/*:: declare var invariant; */\n\nimport type { OptionsWithDefaults } from \"../options.ts\";\nimport { OptionFlags } from \"../options.ts\";\nimport {\n Position,\n SourceLocation,\n createPositionWithColumnOffset,\n} from \"../util/location.ts\";\nimport CommentsParser, { type CommentWhitespace } from \"../parser/comments.ts\";\nimport type * as N from \"../types.ts\";\nimport * as charCodes from \"charcodes\";\nimport { isIdentifierStart, isIdentifierChar } from \"../util/identifier.ts\";\nimport {\n tokenIsKeyword,\n tokenLabelName,\n tt,\n keywords as keywordTypes,\n type TokenType,\n} from \"./types.ts\";\nimport type { TokContext } from \"./context.ts\";\nimport {\n Errors,\n type ParseError,\n type ParseErrorConstructor,\n} from \"../parse-error.ts\";\nimport {\n lineBreakG,\n isNewLine,\n isWhitespace,\n skipWhiteSpace,\n skipWhiteSpaceInLine,\n} from \"../util/whitespace.ts\";\nimport State from \"./state.ts\";\nimport type { LookaheadState, DeferredStrictError } from \"./state.ts\";\nimport type { Undone } from \"../parser/node.ts\";\nimport type { Node } from \"../types.ts\";\n\nimport {\n readInt,\n readCodePoint,\n readStringContents,\n type IntErrorHandlers,\n type CodePointErrorHandlers,\n type StringContentsErrorHandlers,\n} from \"@babel/helper-string-parser\";\n\nimport type { Plugin } from \"../typings.ts\";\n\nfunction buildPosition(pos: number, lineStart: number, curLine: number) {\n return new Position(curLine, pos - lineStart, pos);\n}\n\nconst VALID_REGEX_FLAGS = new Set([\n charCodes.lowercaseG,\n charCodes.lowercaseM,\n charCodes.lowercaseS,\n charCodes.lowercaseI,\n charCodes.lowercaseY,\n charCodes.lowercaseU,\n charCodes.lowercaseD,\n charCodes.lowercaseV,\n]);\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nexport class Token {\n constructor(state: State) {\n const startIndex = state.startIndex || 0;\n this.type = state.type;\n this.value = state.value;\n this.start = startIndex + state.start;\n this.end = startIndex + state.end;\n this.loc = new SourceLocation(state.startLoc, state.endLoc);\n }\n\n declare type: TokenType;\n declare value: any;\n declare start: number;\n declare end: number;\n declare loc: SourceLocation;\n}\n\n// ## Tokenizer\n\nexport default abstract class Tokenizer extends CommentsParser {\n isLookahead: boolean;\n\n // Token store.\n tokens: (Token | N.Comment)[] = [];\n\n constructor(options: OptionsWithDefaults, input: string) {\n super();\n this.state = new State();\n this.state.init(options);\n this.input = input;\n this.length = input.length;\n this.comments = [];\n this.isLookahead = false;\n }\n\n pushToken(token: Token | N.Comment) {\n // Pop out invalid tokens trapped by try-catch parsing.\n // Those parsing branches are mainly created by typescript and flow plugins.\n this.tokens.length = this.state.tokensLength;\n this.tokens.push(token);\n ++this.state.tokensLength;\n }\n\n // Move to the next token\n\n next(): void {\n this.checkKeywordEscapes();\n if (this.optionFlags & OptionFlags.Tokens) {\n this.pushToken(new Token(this.state));\n }\n\n this.state.lastTokEndLoc = this.state.endLoc;\n this.state.lastTokStartLoc = this.state.startLoc;\n this.nextToken();\n }\n\n eat(type: TokenType): boolean {\n if (this.match(type)) {\n this.next();\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Whether current token matches given type\n */\n match(type: TokenType): boolean {\n return this.state.type === type;\n }\n\n /**\n * Create a LookaheadState from current parser state\n */\n createLookaheadState(state: State): LookaheadState {\n return {\n pos: state.pos,\n value: null,\n type: state.type,\n start: state.start,\n end: state.end,\n context: [this.curContext()],\n inType: state.inType,\n startLoc: state.startLoc,\n lastTokEndLoc: state.lastTokEndLoc,\n curLine: state.curLine,\n lineStart: state.lineStart,\n curPosition: state.curPosition,\n };\n }\n\n /**\n * lookahead peeks the next token, skipping changes to token context and\n * comment stack. For performance it returns a limited LookaheadState\n * instead of full parser state.\n *\n * The { column, line } Loc info is not included in lookahead since such usage\n * is rare. Although it may return other location properties e.g. `curLine` and\n * `lineStart`, these properties are not listed in the LookaheadState interface\n * and thus the returned value is _NOT_ reliable.\n *\n * The tokenizer should make best efforts to avoid using any parser state\n * other than those defined in LookaheadState\n */\n lookahead(): LookaheadState {\n const old = this.state;\n // @ts-expect-error For performance we use a simplified tokenizer state structure\n this.state = this.createLookaheadState(old);\n\n this.isLookahead = true;\n this.nextToken();\n this.isLookahead = false;\n\n const curr = this.state;\n this.state = old;\n return curr;\n }\n\n nextTokenStart(): number {\n return this.nextTokenStartSince(this.state.pos);\n }\n\n nextTokenStartSince(pos: number): number {\n skipWhiteSpace.lastIndex = pos;\n return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos;\n }\n\n lookaheadCharCode(): number {\n return this.lookaheadCharCodeSince(this.state.pos);\n }\n\n lookaheadCharCodeSince(pos: number): number {\n return this.input.charCodeAt(this.nextTokenStartSince(pos));\n }\n\n /**\n * Similar to nextToken, but it will stop at line break when it is seen before the next token\n *\n * @returns {number} position of the next token start or line break, whichever is seen first.\n * @memberof Tokenizer\n */\n nextTokenInLineStart(): number {\n return this.nextTokenInLineStartSince(this.state.pos);\n }\n\n nextTokenInLineStartSince(pos: number): number {\n skipWhiteSpaceInLine.lastIndex = pos;\n return skipWhiteSpaceInLine.test(this.input)\n ? skipWhiteSpaceInLine.lastIndex\n : pos;\n }\n\n /**\n * Similar to lookaheadCharCode, but it will return the char code of line break if it is\n * seen before the next token\n *\n * @returns {number} char code of the next token start or line break, whichever is seen first.\n * @memberof Tokenizer\n */\n lookaheadInLineCharCode(): number {\n return this.input.charCodeAt(this.nextTokenInLineStart());\n }\n\n codePointAtPos(pos: number): number {\n // The implementation is based on\n // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n // since `input` is mostly ASCII, an inlined `charCodeAt` wins here\n let cp = this.input.charCodeAt(pos);\n if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) {\n const trail = this.input.charCodeAt(pos);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n return cp;\n }\n\n // Toggle strict mode. Re-reads the next number or string to please\n // pedantic tests (`\"use strict\"; 010;` should fail).\n\n setStrict(strict: boolean): void {\n this.state.strict = strict;\n if (strict) {\n // Throw an error for any string decimal escape found before/immediately\n // after a \"use strict\" directive. Strict mode will be set at parse\n // time for any literals that occur after the next node of the strict\n // directive.\n this.state.strictErrors.forEach(([toParseError, at]) =>\n this.raise(toParseError, at),\n );\n this.state.strictErrors.clear();\n }\n }\n\n curContext(): TokContext {\n return this.state.context[this.state.context.length - 1];\n }\n\n // Read a single token, updating the parser object's token-related properties.\n nextToken(): void {\n this.skipSpace();\n this.state.start = this.state.pos;\n if (!this.isLookahead) this.state.startLoc = this.state.curPosition();\n if (this.state.pos >= this.length) {\n this.finishToken(tt.eof);\n return;\n }\n\n this.getTokenFromCode(this.codePointAtPos(this.state.pos));\n }\n\n // Skips a block comment, whose end is marked by commentEnd.\n // *-/ is used by the Flow plugin, when parsing block comments nested\n // inside Flow comments.\n skipBlockComment(commentEnd: \"*/\" | \"*-/\"): N.CommentBlock | undefined {\n let startLoc;\n if (!this.isLookahead) startLoc = this.state.curPosition();\n const start = this.state.pos;\n const end = this.input.indexOf(commentEnd, start + 2);\n if (end === -1) {\n // We have to call this again here because startLoc may not be set...\n // This seems to be for performance reasons:\n // https://github.com/babel/babel/commit/acf2a10899f696a8aaf34df78bf9725b5ea7f2da\n throw this.raise(Errors.UnterminatedComment, this.state.curPosition());\n }\n\n this.state.pos = end + commentEnd.length;\n lineBreakG.lastIndex = start + 2;\n while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) {\n ++this.state.curLine;\n this.state.lineStart = lineBreakG.lastIndex;\n }\n\n // If we are doing a lookahead right now we need to advance the position (above code)\n // but we do not want to push the comment to the state.\n if (this.isLookahead) return;\n /*:: invariant(startLoc) */\n\n const comment: N.CommentBlock = {\n type: \"CommentBlock\",\n value: this.input.slice(start + 2, end),\n start: this.sourceToOffsetPos(start),\n end: this.sourceToOffsetPos(end + commentEnd.length),\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n loc: new SourceLocation(startLoc!, this.state.curPosition()),\n };\n if (this.optionFlags & OptionFlags.Tokens) this.pushToken(comment);\n return comment;\n }\n\n skipLineComment(startSkip: number): N.CommentLine | undefined {\n const start = this.state.pos;\n let startLoc;\n if (!this.isLookahead) startLoc = this.state.curPosition();\n let ch = this.input.charCodeAt((this.state.pos += startSkip));\n if (this.state.pos < this.length) {\n while (!isNewLine(ch) && ++this.state.pos < this.length) {\n ch = this.input.charCodeAt(this.state.pos);\n }\n }\n\n // If we are doing a lookahead right now we need to advance the position (above code)\n // but we do not want to push the comment to the state.\n if (this.isLookahead) return;\n\n const end = this.state.pos;\n const value = this.input.slice(start + startSkip, end);\n\n const comment: N.CommentLine = {\n type: \"CommentLine\",\n value,\n start: this.sourceToOffsetPos(start),\n end: this.sourceToOffsetPos(end),\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n loc: new SourceLocation(startLoc!, this.state.curPosition()),\n };\n if (this.optionFlags & OptionFlags.Tokens) this.pushToken(comment);\n return comment;\n }\n\n // Called at the start of the parse and after every token. Skips\n // whitespace and comments, and.\n\n skipSpace(): void {\n const spaceStart = this.state.pos;\n const comments: N.Comment[] | null =\n this.optionFlags & OptionFlags.AttachComment ? [] : null;\n loop: while (this.state.pos < this.length) {\n const ch = this.input.charCodeAt(this.state.pos);\n switch (ch) {\n case charCodes.space:\n case charCodes.nonBreakingSpace:\n case charCodes.tab:\n ++this.state.pos;\n break;\n case charCodes.carriageReturn:\n if (\n this.input.charCodeAt(this.state.pos + 1) === charCodes.lineFeed\n ) {\n ++this.state.pos;\n }\n // fall through\n case charCodes.lineFeed:\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n ++this.state.pos;\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n break;\n\n case charCodes.slash:\n switch (this.input.charCodeAt(this.state.pos + 1)) {\n case charCodes.asterisk: {\n const comment = this.skipBlockComment(\"*/\");\n if (comment !== undefined) {\n this.addComment(comment);\n comments?.push(comment);\n }\n break;\n }\n\n case charCodes.slash: {\n const comment = this.skipLineComment(2);\n if (comment !== undefined) {\n this.addComment(comment);\n comments?.push(comment);\n }\n break;\n }\n\n default:\n break loop;\n }\n break;\n\n default:\n if (isWhitespace(ch)) {\n ++this.state.pos;\n } else if (\n ch === charCodes.dash &&\n !this.inModule &&\n this.optionFlags & OptionFlags.AnnexB\n ) {\n const pos = this.state.pos;\n if (\n this.input.charCodeAt(pos + 1) === charCodes.dash &&\n this.input.charCodeAt(pos + 2) === charCodes.greaterThan &&\n (spaceStart === 0 || this.state.lineStart > spaceStart)\n ) {\n // A `-->` line comment\n const comment = this.skipLineComment(3);\n if (comment !== undefined) {\n this.addComment(comment);\n comments?.push(comment);\n }\n } else {\n break loop;\n }\n } else if (\n ch === charCodes.lessThan &&\n !this.inModule &&\n this.optionFlags & OptionFlags.AnnexB\n ) {\n const pos = this.state.pos;\n if (\n this.input.charCodeAt(pos + 1) === charCodes.exclamationMark &&\n this.input.charCodeAt(pos + 2) === charCodes.dash &&\n this.input.charCodeAt(pos + 3) === charCodes.dash\n ) {\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n const comment = this.skipLineComment(4);\n if (comment !== undefined) {\n this.addComment(comment);\n comments?.push(comment);\n }\n } else {\n break loop;\n }\n } else {\n break loop;\n }\n }\n }\n\n // @ts-expect-error comparing undefined and number\n if (comments?.length > 0) {\n const end = this.state.pos;\n const commentWhitespace: CommentWhitespace = {\n start: this.sourceToOffsetPos(spaceStart),\n end: this.sourceToOffsetPos(end),\n comments: comments!,\n leadingNode: null,\n trailingNode: null,\n containingNode: null,\n };\n this.state.commentStack.push(commentWhitespace);\n }\n }\n\n // Called at the end of every token. Sets `end`, `val`, and\n // maintains `context` and `canStartJSXElement`, and skips the space after\n // the token, so that the next one's `start` will point at the\n // right position.\n\n finishToken(type: TokenType, val?: any): void {\n this.state.end = this.state.pos;\n this.state.endLoc = this.state.curPosition();\n const prevType = this.state.type;\n this.state.type = type;\n this.state.value = val;\n\n if (!this.isLookahead) {\n this.updateContext(prevType);\n }\n }\n\n replaceToken(type: TokenType): void {\n this.state.type = type;\n // @ts-expect-error the prevType of updateContext is required\n // only when the new type is tt.slash/tt.jsxTagEnd\n this.updateContext();\n }\n\n // ### Token reading\n\n // This is the function that is called to fetch the next token. It\n // is somewhat obscure, because it works in character codes rather\n // than characters, and because operator parsing has been inlined\n // into it.\n //\n // All in the name of speed.\n\n // number sign is \"#\"\n readToken_numberSign(): void {\n if (this.state.pos === 0 && this.readToken_interpreter()) {\n return;\n }\n\n const nextPos = this.state.pos + 1;\n const next = this.codePointAtPos(nextPos);\n if (next >= charCodes.digit0 && next <= charCodes.digit9) {\n throw this.raise(\n Errors.UnexpectedDigitAfterHash,\n this.state.curPosition(),\n );\n }\n\n if (\n !process.env.BABEL_8_BREAKING &&\n (next === charCodes.leftCurlyBrace ||\n (next === charCodes.leftSquareBracket &&\n this.hasPlugin(\"recordAndTuple\")))\n ) {\n // When we see `#{`, it is likely to be a hash record.\n // However we don't yell at `#[` since users may intend to use \"computed private fields\",\n // which is not allowed in the spec. Throwing expecting recordAndTuple is\n // misleading\n this.expectPlugin(\"recordAndTuple\");\n if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") === \"bar\") {\n throw this.raise(\n next === charCodes.leftCurlyBrace\n ? Errors.RecordExpressionHashIncorrectStartSyntaxType\n : Errors.TupleExpressionHashIncorrectStartSyntaxType,\n this.state.curPosition(),\n );\n }\n\n this.state.pos += 2;\n if (next === charCodes.leftCurlyBrace) {\n // #{\n this.finishToken(tt.braceHashL);\n } else {\n // #[\n this.finishToken(tt.bracketHashL);\n }\n } else if (isIdentifierStart(next)) {\n ++this.state.pos;\n this.finishToken(tt.privateName, this.readWord1(next));\n } else if (next === charCodes.backslash) {\n ++this.state.pos;\n this.finishToken(tt.privateName, this.readWord1());\n } else {\n this.finishOp(tt.hash, 1);\n }\n }\n\n readToken_dot(): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next >= charCodes.digit0 && next <= charCodes.digit9) {\n this.readNumber(true);\n return;\n }\n\n if (\n next === charCodes.dot &&\n this.input.charCodeAt(this.state.pos + 2) === charCodes.dot\n ) {\n this.state.pos += 3;\n this.finishToken(tt.ellipsis);\n } else {\n ++this.state.pos;\n this.finishToken(tt.dot);\n }\n }\n\n readToken_slash(): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === charCodes.equalsTo) {\n this.finishOp(tt.slashAssign, 2);\n } else {\n this.finishOp(tt.slash, 1);\n }\n }\n\n readToken_interpreter(): boolean {\n if (this.state.pos !== 0 || this.length < 2) return false;\n\n let ch = this.input.charCodeAt(this.state.pos + 1);\n if (ch !== charCodes.exclamationMark) return false;\n\n const start = this.state.pos;\n this.state.pos += 1;\n\n while (!isNewLine(ch) && ++this.state.pos < this.length) {\n ch = this.input.charCodeAt(this.state.pos);\n }\n\n const value = this.input.slice(start + 2, this.state.pos);\n\n this.finishToken(tt.interpreterDirective, value);\n\n return true;\n }\n\n readToken_mult_modulo(code: number): void {\n // '%' or '*'\n let type = code === charCodes.asterisk ? tt.star : tt.modulo;\n let width = 1;\n let next = this.input.charCodeAt(this.state.pos + 1);\n\n // Exponentiation operator '**'\n if (code === charCodes.asterisk && next === charCodes.asterisk) {\n width++;\n next = this.input.charCodeAt(this.state.pos + 2);\n type = tt.exponent;\n }\n\n // '%=' or '*='\n if (next === charCodes.equalsTo && !this.state.inType) {\n width++;\n // `tt.moduloAssign` is only needed to support % as a Hack-pipe topic token.\n // If the proposal ends up choosing a different token,\n // it can be merged with tt.assign.\n type = code === charCodes.percentSign ? tt.moduloAssign : tt.assign;\n }\n\n this.finishOp(type, width);\n }\n\n readToken_pipe_amp(code: number): void {\n // '||' '&&' '||=' '&&='\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next === code) {\n if (this.input.charCodeAt(this.state.pos + 2) === charCodes.equalsTo) {\n this.finishOp(tt.assign, 3);\n } else {\n this.finishOp(\n code === charCodes.verticalBar ? tt.logicalOR : tt.logicalAND,\n 2,\n );\n }\n return;\n }\n\n if (code === charCodes.verticalBar) {\n // '|>'\n if (next === charCodes.greaterThan) {\n this.finishOp(tt.pipeline, 2);\n return;\n }\n // '|}'\n if (\n !process.env.BABEL_8_BREAKING &&\n this.hasPlugin(\"recordAndTuple\") &&\n next === charCodes.rightCurlyBrace\n ) {\n if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n throw this.raise(\n Errors.RecordExpressionBarIncorrectEndSyntaxType,\n this.state.curPosition(),\n );\n }\n this.state.pos += 2;\n this.finishToken(tt.braceBarR);\n return;\n }\n\n // '|]'\n if (\n !process.env.BABEL_8_BREAKING &&\n this.hasPlugin(\"recordAndTuple\") &&\n next === charCodes.rightSquareBracket\n ) {\n if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n throw this.raise(\n Errors.TupleExpressionBarIncorrectEndSyntaxType,\n this.state.curPosition(),\n );\n }\n this.state.pos += 2;\n this.finishToken(tt.bracketBarR);\n return;\n }\n }\n\n if (next === charCodes.equalsTo) {\n this.finishOp(tt.assign, 2);\n return;\n }\n\n this.finishOp(\n code === charCodes.verticalBar ? tt.bitwiseOR : tt.bitwiseAND,\n 1,\n );\n }\n\n readToken_caret(): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n // '^='\n if (next === charCodes.equalsTo && !this.state.inType) {\n // `tt.xorAssign` is only needed to support ^ as a Hack-pipe topic token.\n // If the proposal ends up choosing a different token,\n // it can be merged with tt.assign.\n this.finishOp(tt.xorAssign, 2);\n }\n // '^^'\n else if (\n next === charCodes.caret &&\n // If the ^^ token is not enabled, we don't throw but parse two single ^s\n // because it could be a ^ hack token followed by a ^ binary operator.\n this.hasPlugin([\n \"pipelineOperator\",\n { proposal: \"hack\", topicToken: \"^^\" },\n ])\n ) {\n this.finishOp(tt.doubleCaret, 2);\n\n // `^^^` is forbidden and must be separated by a space.\n const lookaheadCh = this.input.codePointAt(this.state.pos);\n if (lookaheadCh === charCodes.caret) {\n this.unexpected();\n }\n }\n // '^'\n else {\n this.finishOp(tt.bitwiseXOR, 1);\n }\n }\n\n readToken_atSign(): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n // '@@'\n if (\n next === charCodes.atSign &&\n this.hasPlugin([\n \"pipelineOperator\",\n { proposal: \"hack\", topicToken: \"@@\" },\n ])\n ) {\n this.finishOp(tt.doubleAt, 2);\n }\n // '@'\n else {\n this.finishOp(tt.at, 1);\n }\n }\n\n readToken_plus_min(code: number): void {\n // '+-'\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next === code) {\n this.finishOp(tt.incDec, 2);\n return;\n }\n\n if (next === charCodes.equalsTo) {\n this.finishOp(tt.assign, 2);\n } else {\n this.finishOp(tt.plusMin, 1);\n }\n }\n\n readToken_lt(): void {\n // '<'\n const { pos } = this.state;\n const next = this.input.charCodeAt(pos + 1);\n\n if (next === charCodes.lessThan) {\n if (this.input.charCodeAt(pos + 2) === charCodes.equalsTo) {\n this.finishOp(tt.assign, 3);\n return;\n }\n this.finishOp(tt.bitShiftL, 2);\n return;\n }\n\n if (next === charCodes.equalsTo) {\n // <=\n this.finishOp(tt.relational, 2);\n return;\n }\n\n this.finishOp(tt.lt, 1);\n }\n\n readToken_gt(): void {\n // '>'\n const { pos } = this.state;\n const next = this.input.charCodeAt(pos + 1);\n\n if (next === charCodes.greaterThan) {\n const size =\n this.input.charCodeAt(pos + 2) === charCodes.greaterThan ? 3 : 2;\n if (this.input.charCodeAt(pos + size) === charCodes.equalsTo) {\n this.finishOp(tt.assign, size + 1);\n return;\n }\n this.finishOp(tt.bitShiftR, size);\n return;\n }\n\n if (next === charCodes.equalsTo) {\n // <= | >=\n this.finishOp(tt.relational, 2);\n return;\n }\n\n this.finishOp(tt.gt, 1);\n }\n\n readToken_eq_excl(code: number): void {\n // '=!'\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === charCodes.equalsTo) {\n this.finishOp(\n tt.equality,\n this.input.charCodeAt(this.state.pos + 2) === charCodes.equalsTo\n ? 3\n : 2,\n );\n return;\n }\n if (code === charCodes.equalsTo && next === charCodes.greaterThan) {\n // '=>'\n this.state.pos += 2;\n this.finishToken(tt.arrow);\n return;\n }\n this.finishOp(code === charCodes.equalsTo ? tt.eq : tt.bang, 1);\n }\n\n readToken_question(): void {\n // '?'\n const next = this.input.charCodeAt(this.state.pos + 1);\n const next2 = this.input.charCodeAt(this.state.pos + 2);\n if (next === charCodes.questionMark) {\n if (next2 === charCodes.equalsTo) {\n // '??='\n this.finishOp(tt.assign, 3);\n } else {\n // '??'\n this.finishOp(tt.nullishCoalescing, 2);\n }\n } else if (\n next === charCodes.dot &&\n !(next2 >= charCodes.digit0 && next2 <= charCodes.digit9)\n ) {\n // '.' not followed by a number\n this.state.pos += 2;\n this.finishToken(tt.questionDot);\n } else {\n ++this.state.pos;\n this.finishToken(tt.question);\n }\n }\n\n getTokenFromCode(code: number): void {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n\n case charCodes.dot:\n this.readToken_dot();\n return;\n // Punctuation tokens.\n case charCodes.leftParenthesis:\n ++this.state.pos;\n this.finishToken(tt.parenL);\n return;\n case charCodes.rightParenthesis:\n ++this.state.pos;\n this.finishToken(tt.parenR);\n return;\n case charCodes.semicolon:\n ++this.state.pos;\n this.finishToken(tt.semi);\n return;\n case charCodes.comma:\n ++this.state.pos;\n this.finishToken(tt.comma);\n return;\n case charCodes.leftSquareBracket:\n if (\n !process.env.BABEL_8_BREAKING &&\n this.hasPlugin(\"recordAndTuple\") &&\n this.input.charCodeAt(this.state.pos + 1) === charCodes.verticalBar\n ) {\n if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n throw this.raise(\n Errors.TupleExpressionBarIncorrectStartSyntaxType,\n this.state.curPosition(),\n );\n }\n\n // [|\n this.state.pos += 2;\n this.finishToken(tt.bracketBarL);\n } else {\n ++this.state.pos;\n this.finishToken(tt.bracketL);\n }\n return;\n case charCodes.rightSquareBracket:\n ++this.state.pos;\n this.finishToken(tt.bracketR);\n return;\n case charCodes.leftCurlyBrace:\n if (\n !process.env.BABEL_8_BREAKING &&\n this.hasPlugin(\"recordAndTuple\") &&\n this.input.charCodeAt(this.state.pos + 1) === charCodes.verticalBar\n ) {\n if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n throw this.raise(\n Errors.RecordExpressionBarIncorrectStartSyntaxType,\n this.state.curPosition(),\n );\n }\n\n // {|\n this.state.pos += 2;\n this.finishToken(tt.braceBarL);\n } else {\n ++this.state.pos;\n this.finishToken(tt.braceL);\n }\n return;\n case charCodes.rightCurlyBrace:\n ++this.state.pos;\n this.finishToken(tt.braceR);\n return;\n\n case charCodes.colon:\n if (\n this.hasPlugin(\"functionBind\") &&\n this.input.charCodeAt(this.state.pos + 1) === charCodes.colon\n ) {\n this.finishOp(tt.doubleColon, 2);\n } else {\n ++this.state.pos;\n this.finishToken(tt.colon);\n }\n return;\n\n case charCodes.questionMark:\n this.readToken_question();\n return;\n\n case charCodes.graveAccent:\n this.readTemplateToken();\n return;\n\n case charCodes.digit0: {\n const next = this.input.charCodeAt(this.state.pos + 1);\n // '0x', '0X' - hex number\n if (next === charCodes.lowercaseX || next === charCodes.uppercaseX) {\n this.readRadixNumber(16);\n return;\n }\n // '0o', '0O' - octal number\n if (next === charCodes.lowercaseO || next === charCodes.uppercaseO) {\n this.readRadixNumber(8);\n return;\n }\n // '0b', '0B' - binary number\n if (next === charCodes.lowercaseB || next === charCodes.uppercaseB) {\n this.readRadixNumber(2);\n return;\n }\n }\n // Anything else beginning with a digit is an integer, octal\n // number, or float. (fall through)\n case charCodes.digit1:\n case charCodes.digit2:\n case charCodes.digit3:\n case charCodes.digit4:\n case charCodes.digit5:\n case charCodes.digit6:\n case charCodes.digit7:\n case charCodes.digit8:\n case charCodes.digit9:\n this.readNumber(false);\n return;\n\n // Quotes produce strings.\n case charCodes.quotationMark:\n case charCodes.apostrophe:\n this.readString(code);\n return;\n\n // Operators are parsed inline in tiny state machines. '=' (charCodes.equalsTo) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n\n case charCodes.slash:\n this.readToken_slash();\n return;\n\n case charCodes.percentSign:\n case charCodes.asterisk:\n this.readToken_mult_modulo(code);\n return;\n\n case charCodes.verticalBar:\n case charCodes.ampersand:\n this.readToken_pipe_amp(code);\n return;\n\n case charCodes.caret:\n this.readToken_caret();\n return;\n\n case charCodes.plusSign:\n case charCodes.dash:\n this.readToken_plus_min(code);\n return;\n\n case charCodes.lessThan:\n this.readToken_lt();\n return;\n\n case charCodes.greaterThan:\n this.readToken_gt();\n return;\n\n case charCodes.equalsTo:\n case charCodes.exclamationMark:\n this.readToken_eq_excl(code);\n return;\n\n case charCodes.tilde:\n this.finishOp(tt.tilde, 1);\n return;\n\n case charCodes.atSign:\n this.readToken_atSign();\n return;\n\n case charCodes.numberSign:\n this.readToken_numberSign();\n return;\n\n case charCodes.backslash:\n this.readWord();\n return;\n\n default:\n if (isIdentifierStart(code)) {\n this.readWord(code);\n return;\n }\n }\n\n throw this.raise(\n Errors.InvalidOrUnexpectedToken,\n this.state.curPosition(),\n {\n unexpected: String.fromCodePoint(code),\n },\n );\n }\n\n finishOp(type: TokenType, size: number): void {\n const str = this.input.slice(this.state.pos, this.state.pos + size);\n this.state.pos += size;\n this.finishToken(type, str);\n }\n\n readRegexp(): void {\n const startLoc = this.state.startLoc;\n const start = this.state.start + 1;\n let escaped, inClass;\n let { pos } = this.state;\n for (; ; ++pos) {\n if (pos >= this.length) {\n // FIXME: explain\n throw this.raise(\n Errors.UnterminatedRegExp,\n createPositionWithColumnOffset(startLoc, 1),\n );\n }\n const ch = this.input.charCodeAt(pos);\n if (isNewLine(ch)) {\n throw this.raise(\n Errors.UnterminatedRegExp,\n createPositionWithColumnOffset(startLoc, 1),\n );\n }\n if (escaped) {\n escaped = false;\n } else {\n if (ch === charCodes.leftSquareBracket) {\n inClass = true;\n } else if (ch === charCodes.rightSquareBracket && inClass) {\n inClass = false;\n } else if (ch === charCodes.slash && !inClass) {\n break;\n }\n escaped = ch === charCodes.backslash;\n }\n }\n const content = this.input.slice(start, pos);\n ++pos;\n\n let mods = \"\";\n\n const nextPos = () =>\n // (pos + 1) + 1 - start\n createPositionWithColumnOffset(startLoc, pos + 2 - start);\n\n while (pos < this.length) {\n const cp = this.codePointAtPos(pos);\n // It doesn't matter if cp > 0xffff, the loop will either throw or break because we check on cp\n const char = String.fromCharCode(cp);\n\n // @ts-expect-error VALID_REGEX_FLAGS.has should accept expanded type: number\n if (VALID_REGEX_FLAGS.has(cp)) {\n if (cp === charCodes.lowercaseV) {\n if (mods.includes(\"u\")) {\n this.raise(Errors.IncompatibleRegExpUVFlags, nextPos());\n }\n } else if (cp === charCodes.lowercaseU) {\n if (mods.includes(\"v\")) {\n this.raise(Errors.IncompatibleRegExpUVFlags, nextPos());\n }\n }\n if (mods.includes(char)) {\n this.raise(Errors.DuplicateRegExpFlags, nextPos());\n }\n } else if (isIdentifierChar(cp) || cp === charCodes.backslash) {\n this.raise(Errors.MalformedRegExpFlags, nextPos());\n } else {\n break;\n }\n\n ++pos;\n mods += char;\n }\n this.state.pos = pos;\n\n this.finishToken(tt.regexp, {\n pattern: content,\n flags: mods,\n });\n }\n\n // Read an integer in the given radix. Return null if zero digits\n // were read, the integer value otherwise. When `len` is given, this\n // will return `null` unless the integer has exactly `len` digits.\n // When `forceLen` is `true`, it means that we already know that in case\n // of a malformed number we have to skip `len` characters anyway, instead\n // of bailing out early. For example, in \"\\u{123Z}\" we want to read up to }\n // anyway, while in \"\\u00Z\" we will stop at Z instead of consuming four\n // characters (and thus the closing quote).\n\n readInt(\n radix: number,\n len?: number,\n forceLen: boolean = false,\n allowNumSeparator: boolean | \"bail\" = true,\n ): number | null {\n const { n, pos } = readInt(\n this.input,\n this.state.pos,\n this.state.lineStart,\n this.state.curLine,\n radix,\n len,\n forceLen,\n allowNumSeparator,\n this.errorHandlers_readInt,\n /* bailOnError */ false,\n );\n this.state.pos = pos;\n return n;\n }\n\n readRadixNumber(radix: number): void {\n const start = this.state.pos;\n const startLoc = this.state.curPosition();\n let isBigInt = false;\n\n this.state.pos += 2; // 0x\n const val = this.readInt(radix);\n if (val == null) {\n this.raise(\n Errors.InvalidDigit,\n // Numeric literals can't have newlines, so this is safe to do.\n createPositionWithColumnOffset(startLoc, 2),\n {\n radix,\n },\n );\n }\n const next = this.input.charCodeAt(this.state.pos);\n\n if (next === charCodes.lowercaseN) {\n ++this.state.pos;\n isBigInt = true;\n } else if (next === charCodes.lowercaseM) {\n throw this.raise(Errors.InvalidDecimal, startLoc);\n }\n\n if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {\n throw this.raise(Errors.NumberIdentifier, this.state.curPosition());\n }\n\n if (isBigInt) {\n const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, \"\");\n this.finishToken(tt.bigint, str);\n return;\n }\n\n this.finishToken(tt.num, val);\n }\n\n // Read an integer, octal integer, or floating-point number.\n\n readNumber(startsWithDot: boolean): void {\n const start = this.state.pos;\n const startLoc = this.state.curPosition();\n let isFloat = false;\n let isBigInt = false;\n let hasExponent = false;\n let isOctal = false;\n\n if (!startsWithDot && this.readInt(10) === null) {\n this.raise(Errors.InvalidNumber, this.state.curPosition());\n }\n const hasLeadingZero =\n this.state.pos - start >= 2 &&\n this.input.charCodeAt(start) === charCodes.digit0;\n\n if (hasLeadingZero) {\n const integer = this.input.slice(start, this.state.pos);\n this.recordStrictModeErrors(Errors.StrictOctalLiteral, startLoc);\n if (!this.state.strict) {\n // disallow numeric separators in non octal decimals and legacy octal likes\n const underscorePos = integer.indexOf(\"_\");\n if (underscorePos > 0) {\n // Numeric literals can't have newlines, so this is safe to do.\n this.raise(\n Errors.ZeroDigitNumericSeparator,\n createPositionWithColumnOffset(startLoc, underscorePos),\n );\n }\n }\n isOctal = hasLeadingZero && !/[89]/.test(integer);\n }\n\n let next = this.input.charCodeAt(this.state.pos);\n if (next === charCodes.dot && !isOctal) {\n ++this.state.pos;\n this.readInt(10);\n isFloat = true;\n next = this.input.charCodeAt(this.state.pos);\n }\n\n if (\n (next === charCodes.uppercaseE || next === charCodes.lowercaseE) &&\n !isOctal\n ) {\n next = this.input.charCodeAt(++this.state.pos);\n if (next === charCodes.plusSign || next === charCodes.dash) {\n ++this.state.pos;\n }\n if (this.readInt(10) === null) {\n this.raise(Errors.InvalidOrMissingExponent, startLoc);\n }\n isFloat = true;\n hasExponent = true;\n next = this.input.charCodeAt(this.state.pos);\n }\n\n if (next === charCodes.lowercaseN) {\n // disallow floats, legacy octal syntax and non octal decimals\n // new style octal (\"0o\") is handled in this.readRadixNumber\n if (isFloat || hasLeadingZero) {\n this.raise(Errors.InvalidBigIntLiteral, startLoc);\n }\n ++this.state.pos;\n isBigInt = true;\n }\n\n if (!process.env.BABEL_8_BREAKING && next === charCodes.lowercaseM) {\n this.expectPlugin(\"decimal\", this.state.curPosition());\n if (hasExponent || hasLeadingZero) {\n this.raise(Errors.InvalidDecimal, startLoc);\n }\n ++this.state.pos;\n // eslint-disable-next-line no-var\n var isDecimal = true;\n }\n\n if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {\n throw this.raise(Errors.NumberIdentifier, this.state.curPosition());\n }\n\n // remove \"_\" for numeric literal separator, and trailing `m` or `n`\n const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, \"\");\n\n if (isBigInt) {\n this.finishToken(tt.bigint, str);\n return;\n }\n\n if (!process.env.BABEL_8_BREAKING && isDecimal!) {\n this.finishToken(tt.decimal, str);\n return;\n }\n\n const val = isOctal ? parseInt(str, 8) : parseFloat(str);\n this.finishToken(tt.num, val);\n }\n\n // Read a string value, interpreting backslash-escapes.\n\n readCodePoint(throwOnInvalid: boolean): number | null {\n const { code, pos } = readCodePoint(\n this.input,\n this.state.pos,\n this.state.lineStart,\n this.state.curLine,\n throwOnInvalid,\n this.errorHandlers_readCodePoint,\n );\n this.state.pos = pos;\n return code;\n }\n\n readString(quote: number): void {\n const { str, pos, curLine, lineStart } = readStringContents(\n quote === charCodes.quotationMark ? \"double\" : \"single\",\n this.input,\n this.state.pos + 1, // skip the quote\n this.state.lineStart,\n this.state.curLine,\n this.errorHandlers_readStringContents_string,\n );\n this.state.pos = pos + 1; // skip the quote\n this.state.lineStart = lineStart;\n this.state.curLine = curLine;\n this.finishToken(tt.string, str);\n }\n\n // Reads template continuation `}...`\n readTemplateContinuation(): void {\n if (!this.match(tt.braceR)) {\n this.unexpected(null, tt.braceR);\n }\n // rewind pos to `}`\n this.state.pos--;\n this.readTemplateToken();\n }\n\n // Reads template string tokens.\n readTemplateToken(): void {\n const opening = this.input[this.state.pos];\n const { str, firstInvalidLoc, pos, curLine, lineStart } =\n readStringContents(\n \"template\",\n this.input,\n this.state.pos + 1, // skip '`' or `}`\n this.state.lineStart,\n this.state.curLine,\n this.errorHandlers_readStringContents_template,\n );\n this.state.pos = pos + 1; // skip '`' or `$`\n this.state.lineStart = lineStart;\n this.state.curLine = curLine;\n\n if (firstInvalidLoc) {\n this.state.firstInvalidTemplateEscapePos = new Position(\n firstInvalidLoc.curLine,\n firstInvalidLoc.pos - firstInvalidLoc.lineStart,\n this.sourceToOffsetPos(firstInvalidLoc.pos),\n );\n }\n\n if (this.input.codePointAt(pos) === charCodes.graveAccent) {\n this.finishToken(\n tt.templateTail,\n firstInvalidLoc ? null : opening + str + \"`\",\n );\n } else {\n this.state.pos++; // skip '{'\n this.finishToken(\n tt.templateNonTail,\n firstInvalidLoc ? null : opening + str + \"${\",\n );\n }\n }\n\n recordStrictModeErrors(toParseError: DeferredStrictError, at: Position) {\n const index = at.index;\n\n if (this.state.strict && !this.state.strictErrors.has(index)) {\n this.raise(toParseError, at);\n } else {\n this.state.strictErrors.set(index, [toParseError, at]);\n }\n }\n\n // Read an identifier, and return it as a string. Sets `this.state.containsEsc`\n // to whether the word contained a '\\u' escape.\n //\n // Incrementally adds only escaped chars, adding other chunks as-is\n // as a micro-optimization.\n //\n // When `firstCode` is given, it assumes it is always an identifier start and\n // will skip reading start position again\n\n readWord1(firstCode?: number): string {\n this.state.containsEsc = false;\n let word = \"\";\n const start = this.state.pos;\n let chunkStart = this.state.pos;\n if (firstCode !== undefined) {\n this.state.pos += firstCode <= 0xffff ? 1 : 2;\n }\n\n while (this.state.pos < this.length) {\n const ch = this.codePointAtPos(this.state.pos);\n if (isIdentifierChar(ch)) {\n this.state.pos += ch <= 0xffff ? 1 : 2;\n } else if (ch === charCodes.backslash) {\n this.state.containsEsc = true;\n\n word += this.input.slice(chunkStart, this.state.pos);\n const escStart = this.state.curPosition();\n const identifierCheck =\n this.state.pos === start ? isIdentifierStart : isIdentifierChar;\n\n if (this.input.charCodeAt(++this.state.pos) !== charCodes.lowercaseU) {\n this.raise(Errors.MissingUnicodeEscape, this.state.curPosition());\n chunkStart = this.state.pos - 1;\n continue;\n }\n\n ++this.state.pos;\n const esc = this.readCodePoint(true);\n if (esc !== null) {\n if (!identifierCheck(esc)) {\n this.raise(Errors.EscapedCharNotAnIdentifier, escStart);\n }\n\n word += String.fromCodePoint(esc);\n }\n chunkStart = this.state.pos;\n } else {\n break;\n }\n }\n return word + this.input.slice(chunkStart, this.state.pos);\n }\n\n // Read an identifier or keyword token. Will check for reserved\n // words when necessary.\n\n readWord(firstCode?: number): void {\n const word = this.readWord1(firstCode);\n const type = keywordTypes.get(word);\n if (type !== undefined) {\n // We don't use word as state.value here because word is a dynamic string\n // while token label is a shared constant string\n this.finishToken(type, tokenLabelName(type));\n } else {\n this.finishToken(tt.name, word);\n }\n }\n\n checkKeywordEscapes(): void {\n const { type } = this.state;\n if (tokenIsKeyword(type) && this.state.containsEsc) {\n this.raise(Errors.InvalidEscapedReservedWord, this.state.startLoc, {\n reservedWord: tokenLabelName(type),\n });\n }\n }\n\n /**\n * Raise a `ParseError` given the appropriate properties. If passed a\n * `Position` for the `at` property, raises the `ParseError` at that location.\n * Otherwise, if passed a `Node`, raises the `ParseError` at the start\n * location of that `Node`.\n *\n * If `errorRecovery` is `true`, the error is pushed to the errors array and\n * returned. If `errorRecovery` is `false`, the error is instead thrown.\n *\n * The return type is marked as `never` for simplicity, as error recovery\n * will create types in an invalid AST shape.\n */\n raise<ErrorDetails = object>(\n toParseError: ParseErrorConstructor<ErrorDetails>,\n at: Position | Undone<Node>,\n details: ErrorDetails = {} as ErrorDetails,\n ): ParseError<ErrorDetails> {\n const loc = at instanceof Position ? at : at.loc.start;\n const error = toParseError(loc, details);\n\n if (!(this.optionFlags & OptionFlags.ErrorRecovery)) throw error;\n if (!this.isLookahead) this.state.errors.push(error);\n\n return error;\n }\n\n /**\n * If `errorRecovery` is `false`, this method behaves identically to `raise`.\n * If `errorRecovery` is `true`, this method will first see if there is\n * already an error stored at the same `Position`, and replaces it with the\n * one generated here.\n */\n raiseOverwrite<ErrorDetails>(\n toParseError: ParseErrorConstructor<ErrorDetails>,\n at: Position | Undone<Node>,\n details: ErrorDetails = {} as ErrorDetails,\n ): ParseError<ErrorDetails> | never {\n const loc = at instanceof Position ? at : at.loc.start;\n const pos = loc.index;\n const errors = this.state.errors;\n\n for (let i = errors.length - 1; i >= 0; i--) {\n const error = errors[i];\n if (error.loc.index === pos) {\n return (errors[i] = toParseError(loc, details));\n }\n if (error.loc.index < pos) break;\n }\n\n return this.raise(toParseError, at, details);\n }\n\n // updateContext is used by the jsx plugin\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n updateContext(prevType: TokenType): void {}\n\n // Raise an unexpected token error. Can take the expected token type.\n unexpected(loc?: Position | null, type?: TokenType): any {\n throw this.raise(\n Errors.UnexpectedToken,\n loc != null ? loc : this.state.startLoc,\n {\n expected: type ? tokenLabelName(type) : null,\n },\n );\n }\n\n expectPlugin(pluginName: Plugin, loc?: Position): true {\n if (this.hasPlugin(pluginName)) {\n return true;\n }\n\n throw this.raise(\n Errors.MissingPlugin,\n loc != null ? loc : this.state.startLoc,\n {\n missingPlugin: [pluginName],\n },\n );\n }\n\n expectOnePlugin(pluginNames: Plugin[]): any {\n if (!pluginNames.some(name => this.hasPlugin(name))) {\n throw this.raise(Errors.MissingOneOfPlugins, this.state.startLoc, {\n missingPlugin: pluginNames,\n });\n }\n }\n\n errorBuilder(error: ParseErrorConstructor<object>) {\n return (pos: number, lineStart: number, curLine: number) => {\n this.raise(error, buildPosition(pos, lineStart, curLine));\n };\n }\n\n errorHandlers_readInt: IntErrorHandlers = {\n invalidDigit: (pos, lineStart, curLine, radix) => {\n if (!(this.optionFlags & OptionFlags.ErrorRecovery)) return false;\n\n this.raise(Errors.InvalidDigit, buildPosition(pos, lineStart, curLine), {\n radix,\n });\n // Continue parsing the number as if there was no invalid digit.\n return true;\n },\n numericSeparatorInEscapeSequence: this.errorBuilder(\n Errors.NumericSeparatorInEscapeSequence,\n ),\n unexpectedNumericSeparator: this.errorBuilder(\n Errors.UnexpectedNumericSeparator,\n ),\n };\n\n errorHandlers_readCodePoint: CodePointErrorHandlers = {\n ...this.errorHandlers_readInt,\n invalidEscapeSequence: this.errorBuilder(Errors.InvalidEscapeSequence),\n invalidCodePoint: this.errorBuilder(Errors.InvalidCodePoint),\n };\n\n errorHandlers_readStringContents_string: StringContentsErrorHandlers = {\n ...this.errorHandlers_readCodePoint,\n strictNumericEscape: (pos, lineStart, curLine) => {\n this.recordStrictModeErrors(\n Errors.StrictNumericEscape,\n buildPosition(pos, lineStart, curLine),\n );\n },\n unterminated: (pos, lineStart, curLine) => {\n throw this.raise(\n Errors.UnterminatedString, // Report the error at the string quote\n buildPosition(pos - 1, lineStart, curLine),\n );\n },\n };\n\n errorHandlers_readStringContents_template: StringContentsErrorHandlers = {\n ...this.errorHandlers_readCodePoint,\n strictNumericEscape: this.errorBuilder(Errors.StrictNumericEscape),\n unterminated: (pos, lineStart, curLine) => {\n throw this.raise(\n Errors.UnterminatedTemplate,\n buildPosition(pos, lineStart, curLine),\n );\n },\n };\n}\n","import { ClassElementType } from \"./scopeflags.ts\";\nimport type { Position } from \"./location.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport type Tokenizer from \"../tokenizer/index.ts\";\n\nexport class ClassScope {\n // A list of private named declared in the current class\n privateNames = new Set<string>();\n\n // A list of private getters of setters without their counterpart\n loneAccessors = new Map<string, ClassElementType>();\n\n // A list of private names used before being defined, mapping to\n // their position.\n undefinedPrivateNames = new Map<string, Position>();\n}\n\nexport default class ClassScopeHandler {\n parser: Tokenizer;\n stack: ClassScope[] = [];\n undefinedPrivateNames = new Map<string, Position>();\n\n constructor(parser: Tokenizer) {\n this.parser = parser;\n }\n\n current(): ClassScope {\n return this.stack[this.stack.length - 1];\n }\n\n enter() {\n this.stack.push(new ClassScope());\n }\n\n exit() {\n const oldClassScope = this.stack.pop()!;\n\n // Migrate the usage of not yet defined private names to the outer\n // class scope, or raise an error if we reached the top-level scope.\n\n const current = this.current();\n\n // Array.from is needed because this is compiled to an array-like for loop\n for (const [name, loc] of Array.from(oldClassScope.undefinedPrivateNames)) {\n if (current) {\n if (!current.undefinedPrivateNames.has(name)) {\n current.undefinedPrivateNames.set(name, loc);\n }\n } else {\n this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, {\n identifierName: name,\n });\n }\n }\n }\n\n declarePrivateName(\n name: string,\n elementType: ClassElementType,\n loc: Position,\n ) {\n const { privateNames, loneAccessors, undefinedPrivateNames } =\n this.current();\n let redefined = privateNames.has(name);\n\n if (elementType & ClassElementType.KIND_ACCESSOR) {\n const accessor = redefined && loneAccessors.get(name);\n if (accessor) {\n const oldStatic = accessor & ClassElementType.FLAG_STATIC;\n const newStatic = elementType & ClassElementType.FLAG_STATIC;\n\n const oldKind = accessor & ClassElementType.KIND_ACCESSOR;\n const newKind = elementType & ClassElementType.KIND_ACCESSOR;\n\n // The private name can be duplicated only if it is used by\n // two accessors with different kind (get and set), and if\n // they have the same placement (static or not).\n redefined = oldKind === newKind || oldStatic !== newStatic;\n\n if (!redefined) loneAccessors.delete(name);\n } else if (!redefined) {\n loneAccessors.set(name, elementType);\n }\n }\n\n if (redefined) {\n this.parser.raise(Errors.PrivateNameRedeclaration, loc, {\n identifierName: name,\n });\n }\n\n privateNames.add(name);\n undefinedPrivateNames.delete(name);\n }\n\n usePrivateName(name: string, loc: Position) {\n let classScope;\n for (classScope of this.stack) {\n if (classScope.privateNames.has(name)) return;\n }\n\n if (classScope) {\n classScope.undefinedPrivateNames.set(name, loc);\n } else {\n // top-level\n this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, {\n identifierName: name,\n });\n }\n }\n}\n","import { Errors, type ParseErrorConstructor } from \"../parse-error.ts\";\nimport type { Position } from \"./location.ts\";\nimport type { Node } from \"../types.ts\";\nimport type Tokenizer from \"../tokenizer/index.ts\";\nimport type { Undone } from \"../parser/node.ts\";\n\n/**\n * @module util/expression-scope\n\nExpressionScope is used to track declaration errors in these ambiguous patterns:\n\n- CoverParenthesizedExpressionAndArrowParameterList\n e.g. we don't know if `({ x })` is an parenthesized expression or an\n arrow function parameters until we see an `=>` after `)`.\n\n- CoverCallExpressionAndAsyncArrowHead\n e.g. we don't know if `async({ x })` is a call expression or an async arrow\n function parameters until we see an `=>` after `)`\n\nThe following declaration errors (@see parser-errors/standard) will be recorded in\nsome expression scopes and thrown later when we know what the ambiguous pattern is\n\n- AwaitBindingIdentifier\n- AwaitExpressionFormalParameter\n- YieldInParameter\n- InvalidParenthesizedAssignment when parenthesized is an identifier\n\nThere are four different expression scope\n- Expression\n A general scope that represents program / function body / static block. No errors\n will be recorded nor thrown in this scope.\n\n- MaybeArrowParameterDeclaration\n A scope that represents ambiguous arrow head e.g. `(x)`. Errors will be recorded\n alongside parent scopes and thrown when `ExpressionScopeHandler#validateAsPattern`\n is called.\n\n- MaybeAsyncArrowParameterDeclaration\n A scope that represents ambiguous async arrow head e.g. `async(x)`. Errors will\n be recorded alongside parent scopes and thrown when\n `ExpressionScopeHandler#validateAsPattern` is called.\n\n- ParameterDeclaration\n A scope that represents unambiguous function parameters `function(x)`. Errors\n recorded in this scope will be thrown immediately. No errors will be recorded in\n this scope.\n\n// @see {@link https://docs.google.com/document/d/1FAvEp9EUK-G8kHfDIEo_385Hs2SUBCYbJ5H-NnLvq8M | V8 Expression Scope design docs}\n */\n\nconst enum ExpressionScopeType {\n kExpression = 0,\n kMaybeArrowParameterDeclaration = 1,\n kMaybeAsyncArrowParameterDeclaration = 2,\n kParameterDeclaration = 3,\n}\n\nclass ExpressionScope {\n declare type: ExpressionScopeType;\n\n constructor(type: ExpressionScopeType = ExpressionScopeType.kExpression) {\n this.type = type;\n }\n\n canBeArrowParameterDeclaration(): this is ArrowHeadParsingScope {\n return (\n this.type === ExpressionScopeType.kMaybeAsyncArrowParameterDeclaration ||\n this.type === ExpressionScopeType.kMaybeArrowParameterDeclaration\n );\n }\n\n isCertainlyParameterDeclaration() {\n return this.type === ExpressionScopeType.kParameterDeclaration;\n }\n}\n\ntype ArrowHeadParsingParameterInitializerError =\n | typeof Errors.AwaitExpressionFormalParameter\n | typeof Errors.YieldInParameter;\ntype ArrowHeadParsingDeclarationError =\n | ArrowHeadParsingParameterInitializerError\n | typeof Errors.InvalidParenthesizedAssignment\n | typeof Errors.AwaitBindingIdentifier;\n\nclass ArrowHeadParsingScope extends ExpressionScope {\n declarationErrors = new Map<\n number,\n [ParseErrorConstructor<object>, Position]\n >();\n constructor(\n type:\n | ExpressionScopeType.kMaybeArrowParameterDeclaration\n | ExpressionScopeType.kMaybeAsyncArrowParameterDeclaration,\n ) {\n super(type);\n }\n recordDeclarationError(\n ParsingErrorClass: ParseErrorConstructor<object>,\n at: Position,\n ) {\n const index = at.index;\n\n this.declarationErrors.set(index, [ParsingErrorClass, at]);\n }\n clearDeclarationError(index: number) {\n this.declarationErrors.delete(index);\n }\n iterateErrors(\n iterator: (a: [ArrowHeadParsingDeclarationError, Position]) => void,\n ) {\n this.declarationErrors.forEach(iterator);\n }\n}\n\nexport default class ExpressionScopeHandler {\n parser: Tokenizer;\n stack: ExpressionScope[] = [new ExpressionScope()];\n\n constructor(parser: Tokenizer) {\n this.parser = parser;\n }\n enter(scope: ExpressionScope) {\n this.stack.push(scope);\n }\n\n exit() {\n this.stack.pop();\n }\n\n /**\n * Record likely parameter initializer errors\n *\n * When current scope is a ParameterDeclaration, the error will be thrown immediately,\n * otherwise it will be recorded to any ancestry MaybeArrowParameterDeclaration and\n * MaybeAsyncArrowParameterDeclaration scope until an Expression scope is seen.\n */\n recordParameterInitializerError(\n toParseError: ArrowHeadParsingParameterInitializerError,\n node: Undone<Node>,\n ): void {\n const origin = node.loc.start;\n const { stack } = this;\n let i = stack.length - 1;\n let scope: ExpressionScope = stack[i];\n while (!scope.isCertainlyParameterDeclaration()) {\n if (scope.canBeArrowParameterDeclaration()) {\n scope.recordDeclarationError(toParseError, origin);\n } else {\n /*:: invariant(scope.type == ExpressionScopeType.kExpression) */\n // Type-Expression is the boundary where initializer error can populate to\n return;\n }\n scope = stack[--i];\n }\n this.parser.raise(toParseError, origin);\n }\n\n /**\n * Record errors that must be thrown if the current pattern ends up being an arrow\n * function parameter. This is used to record parenthesized identifiers, and to record\n * \"a as T\" and \"<T> a\" type assertions when parsing typescript.\n *\n * A parenthesized identifier (or type assertion) in LHS can be ambiguous because the assignment\n * can be transformed to an assignable later, but not vice versa:\n * For example, in `([(a) = []] = []) => {}`, we think `(a) = []` is an LHS in `[(a) = []]`,\n * an LHS within `[(a) = []] = []`. However the LHS chain is then transformed by toAssignable,\n * and we should throw assignment `(a)`, which is only valid in LHS. Hence we record the\n * location of parenthesized `(a)` to current scope if it is one of MaybeArrowParameterDeclaration\n * and MaybeAsyncArrowParameterDeclaration\n *\n * Unlike `recordParameterInitializerError`, we don't record to ancestry scope because we\n * validate arrow head parsing scope before exit, and then the LHS will be unambiguous:\n * For example, in `( x = ( [(a) = []] = [] ) ) => {}`, we should not record `(a)` in `( x = ... ) =>`\n * arrow scope because when we finish parsing `( [(a) = []] = [] )`, it is an unambiguous assignment\n * expression and can not be cast to pattern\n */\n recordArrowParameterBindingError(\n error: ParseErrorConstructor<object>,\n node: Node,\n ): void {\n const { stack } = this;\n const scope: ExpressionScope = stack[stack.length - 1];\n const origin = node.loc.start;\n if (scope.isCertainlyParameterDeclaration()) {\n this.parser.raise(error, origin);\n } else if (scope.canBeArrowParameterDeclaration()) {\n scope.recordDeclarationError(error, origin);\n } else {\n return;\n }\n }\n\n /**\n * Record likely async arrow parameter errors\n *\n * Errors will be recorded to any ancestry MaybeAsyncArrowParameterDeclaration\n * scope until an Expression scope is seen.\n */\n recordAsyncArrowParametersError(at: Position): void {\n const { stack } = this;\n let i = stack.length - 1;\n let scope: ExpressionScope = stack[i];\n while (scope.canBeArrowParameterDeclaration()) {\n if (\n scope.type === ExpressionScopeType.kMaybeAsyncArrowParameterDeclaration\n ) {\n scope.recordDeclarationError(Errors.AwaitBindingIdentifier, at);\n }\n scope = stack[--i];\n }\n }\n\n validateAsPattern(): void {\n const { stack } = this;\n const currentScope = stack[stack.length - 1];\n if (!currentScope.canBeArrowParameterDeclaration()) return;\n currentScope.iterateErrors(([toParseError, loc]) => {\n this.parser.raise(toParseError, loc);\n // iterate from parent scope\n let i = stack.length - 2;\n let scope = stack[i];\n while (scope.canBeArrowParameterDeclaration()) {\n scope.clearDeclarationError(loc.index);\n scope = stack[--i];\n }\n });\n }\n}\n\nexport function newParameterDeclarationScope() {\n return new ExpressionScope(ExpressionScopeType.kParameterDeclaration);\n}\n\nexport function newArrowHeadScope() {\n return new ArrowHeadParsingScope(\n ExpressionScopeType.kMaybeArrowParameterDeclaration,\n );\n}\n\nexport function newAsyncArrowScope() {\n return new ArrowHeadParsingScope(\n ExpressionScopeType.kMaybeAsyncArrowParameterDeclaration,\n );\n}\n\nexport function newExpressionScope() {\n return new ExpressionScope();\n}\n","import type { Position } from \"../util/location.ts\";\nimport {\n tokenIsLiteralPropertyName,\n tt,\n type TokenType,\n} from \"../tokenizer/types.ts\";\nimport Tokenizer from \"../tokenizer/index.ts\";\nimport type State from \"../tokenizer/state.ts\";\nimport type {\n EstreePropertyDefinition,\n Node,\n ObjectMethod,\n ObjectProperty,\n PrivateName,\n} from \"../types.d.ts\";\nimport { hasNewLine } from \"../util/whitespace.ts\";\nimport { isIdentifierChar } from \"../util/identifier.ts\";\nimport ClassScopeHandler from \"../util/class-scope.ts\";\nimport ExpressionScopeHandler from \"../util/expression-scope.ts\";\nimport { ScopeFlag } from \"../util/scopeflags.ts\";\nimport ProductionParameterHandler, {\n ParamKind,\n} from \"../util/production-parameter.ts\";\nimport {\n Errors,\n type ParseError,\n type ParseErrorConstructor,\n} from \"../parse-error.ts\";\nimport type Parser from \"./index.ts\";\n\nimport type ScopeHandler from \"../util/scope.ts\";\nimport { OptionFlags } from \"../options.ts\";\n\ntype TryParse<Node, Error, Thrown, Aborted, FailState> = {\n node: Node;\n error: Error;\n thrown: Thrown;\n aborted: Aborted;\n failState: FailState;\n};\n\n// ## Parser utilities\n\nexport default abstract class UtilParser extends Tokenizer {\n // Forward-declaration: defined in parser/index.js\n abstract getScopeHandler(): new (...args: any) => ScopeHandler;\n\n addExtra(\n node: Partial<Node>,\n key: string,\n value: any,\n enumerable: boolean = true,\n ): void {\n if (!node) return;\n\n let { extra } = node;\n if (extra == null) {\n extra = {};\n node.extra = extra;\n }\n\n if (enumerable) {\n extra[key] = value;\n } else {\n Object.defineProperty(extra, key, { enumerable, value });\n }\n }\n\n // Tests whether parsed token is a contextual keyword.\n\n isContextual(token: TokenType): boolean {\n return this.state.type === token && !this.state.containsEsc;\n }\n\n isUnparsedContextual(nameStart: number, name: string): boolean {\n if (this.input.startsWith(name, nameStart)) {\n const nextCh = this.input.charCodeAt(nameStart + name.length);\n return !(\n isIdentifierChar(nextCh) ||\n // check if `nextCh is between 0xd800 - 0xdbff,\n // if `nextCh` is NaN, `NaN & 0xfc00` is 0, the function\n // returns true\n (nextCh & 0xfc00) === 0xd800\n );\n }\n return false;\n }\n\n isLookaheadContextual(name: string): boolean {\n const next = this.nextTokenStart();\n return this.isUnparsedContextual(next, name);\n }\n\n // Consumes contextual keyword if possible.\n\n eatContextual(token: TokenType): boolean {\n if (this.isContextual(token)) {\n this.next();\n return true;\n }\n return false;\n }\n\n // Asserts that following token is given contextual keyword.\n\n expectContextual(\n token: TokenType,\n toParseError?: ParseErrorConstructor<any>,\n ): void {\n if (!this.eatContextual(token)) {\n if (toParseError != null) {\n throw this.raise(toParseError, this.state.startLoc);\n }\n this.unexpected(null, token);\n }\n }\n\n // Test whether a semicolon can be inserted at the current position.\n\n canInsertSemicolon(): boolean {\n return (\n this.match(tt.eof) ||\n this.match(tt.braceR) ||\n this.hasPrecedingLineBreak()\n );\n }\n\n hasPrecedingLineBreak(): boolean {\n return hasNewLine(\n this.input,\n this.offsetToSourcePos(this.state.lastTokEndLoc!.index),\n this.state.start,\n );\n }\n\n hasFollowingLineBreak(): boolean {\n return hasNewLine(this.input, this.state.end, this.nextTokenStart());\n }\n\n isLineTerminator(): boolean {\n return this.eat(tt.semi) || this.canInsertSemicolon();\n }\n\n // Consume a semicolon, or, failing that, see if we are allowed to\n // pretend that there is a semicolon at this position.\n\n semicolon(allowAsi: boolean = true): void {\n if (allowAsi ? this.isLineTerminator() : this.eat(tt.semi)) return;\n this.raise(Errors.MissingSemicolon, this.state.lastTokEndLoc!);\n }\n\n // Expect a token of a given type. If found, consume it, otherwise,\n // raise an unexpected token error at given pos.\n\n expect(type: TokenType, loc?: Position | null): void {\n if (!this.eat(type)) {\n this.unexpected(loc, type);\n }\n }\n\n // tryParse will clone parser state.\n // It is expensive and should be used with cautions\n tryParse<T extends Node | readonly Node[] | null>(\n fn: (abort: (node?: T) => never) => T,\n oldState: State = this.state.clone(),\n ):\n | TryParse<T, null, false, false, null>\n | TryParse<T | null, ParseError<any>, boolean, false, State>\n | TryParse<T | null, null, false, true, State> {\n const abortSignal: {\n node: T | null;\n } = { node: null };\n try {\n const node = fn((node = null as T) => {\n abortSignal.node = node;\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw abortSignal;\n });\n if (this.state.errors.length > oldState.errors.length) {\n const failState = this.state;\n this.state = oldState;\n // tokensLength should be preserved during error recovery mode\n // since the parser does not halt and will instead parse the\n // remaining tokens\n this.state.tokensLength = failState.tokensLength;\n return {\n node,\n error: failState.errors[oldState.errors.length],\n thrown: false,\n aborted: false,\n failState,\n };\n }\n\n return {\n node: node!,\n error: null,\n thrown: false,\n aborted: false,\n failState: null,\n };\n } catch (error) {\n const failState = this.state;\n this.state = oldState;\n if (error instanceof SyntaxError) {\n // @ts-expect-error casting general syntax error to parse error\n return { node: null, error, thrown: true, aborted: false, failState };\n }\n if (error === abortSignal) {\n return {\n node: abortSignal.node,\n error: null,\n thrown: false,\n aborted: true,\n failState,\n };\n }\n\n throw error;\n }\n }\n\n checkExpressionErrors(\n refExpressionErrors: ExpressionErrors | undefined | null,\n andThrow: boolean,\n ) {\n if (!refExpressionErrors) return false;\n const {\n shorthandAssignLoc,\n doubleProtoLoc,\n privateKeyLoc,\n optionalParametersLoc,\n voidPatternLoc,\n } = refExpressionErrors;\n\n const hasErrors =\n !!shorthandAssignLoc ||\n !!doubleProtoLoc ||\n !!optionalParametersLoc ||\n !!privateKeyLoc ||\n !!voidPatternLoc;\n\n if (!andThrow) {\n return hasErrors;\n }\n\n if (shorthandAssignLoc != null) {\n this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc);\n }\n\n if (doubleProtoLoc != null) {\n this.raise(Errors.DuplicateProto, doubleProtoLoc);\n }\n\n if (privateKeyLoc != null) {\n this.raise(Errors.UnexpectedPrivateField, privateKeyLoc);\n }\n\n if (optionalParametersLoc != null) {\n this.unexpected(optionalParametersLoc);\n }\n\n if (voidPatternLoc != null) {\n this.raise(Errors.InvalidCoverDiscardElement, voidPatternLoc);\n }\n }\n\n /**\n * Test if current token is a literal property name\n * https://tc39.es/ecma262/#prod-LiteralPropertyName\n * LiteralPropertyName:\n * IdentifierName\n * StringLiteral\n * NumericLiteral\n * BigIntLiteral\n */\n isLiteralPropertyName(): boolean {\n return tokenIsLiteralPropertyName(this.state.type);\n }\n\n /**\n * Test if given node is a PrivateName\n * will be overridden in ESTree plugin\n */\n isPrivateName(node: Node): node is PrivateName {\n return node.type === \"PrivateName\";\n }\n\n /**\n * Return the string value of a given private name\n * WITHOUT `#`\n * @see {@link https://tc39.es/ecma262/#sec-static-semantics-stringvalue}\n */\n getPrivateNameSV(node: PrivateName): string {\n return node.id.name;\n }\n\n /**\n * Return whether the given node is a member/optional chain that\n * contains a private name as its property\n * It is overridden in ESTree plugin\n */\n hasPropertyAsPrivateName(node: Node): boolean {\n return (\n (node.type === \"MemberExpression\" ||\n node.type === \"OptionalMemberExpression\") &&\n this.isPrivateName(node.property)\n );\n }\n\n isObjectProperty(\n node: Node,\n ): node is ObjectProperty | EstreePropertyDefinition {\n return node.type === \"ObjectProperty\";\n }\n\n isObjectMethod(node: Node): node is ObjectMethod {\n return node.type === \"ObjectMethod\";\n }\n\n initializeScopes(\n this: Parser,\n inModule: boolean = this.options.sourceType === \"module\",\n ): () => void {\n // Initialize state\n const oldLabels = this.state.labels;\n this.state.labels = [];\n\n const oldExportedIdentifiers = this.exportedIdentifiers;\n this.exportedIdentifiers = new Set();\n\n // initialize scopes\n const oldInModule = this.inModule;\n this.inModule = inModule;\n\n const oldScope = this.scope;\n const ScopeHandler = this.getScopeHandler();\n this.scope = new ScopeHandler(this, inModule);\n\n const oldProdParam = this.prodParam;\n this.prodParam = new ProductionParameterHandler();\n\n const oldClassScope = this.classScope;\n this.classScope = new ClassScopeHandler(this);\n\n const oldExpressionScope = this.expressionScope;\n this.expressionScope = new ExpressionScopeHandler(this);\n\n return () => {\n // Revert state\n this.state.labels = oldLabels;\n this.exportedIdentifiers = oldExportedIdentifiers;\n\n // Revert scopes\n this.inModule = oldInModule;\n this.scope = oldScope;\n this.prodParam = oldProdParam;\n this.classScope = oldClassScope;\n this.expressionScope = oldExpressionScope;\n };\n }\n\n enterInitialScopes() {\n let paramFlags = ParamKind.PARAM;\n if (\n this.inModule ||\n this.optionFlags & OptionFlags.AllowAwaitOutsideFunction\n ) {\n paramFlags |= ParamKind.PARAM_AWAIT;\n }\n if (this.optionFlags & OptionFlags.AllowYieldOutsideFunction) {\n paramFlags |= ParamKind.PARAM_YIELD;\n }\n // The inModule flag ensures that the module block within a CommonJS source\n // will be treated as an ES module.\n const isCommonJS = !this.inModule && this.options.sourceType === \"commonjs\";\n if (\n isCommonJS ||\n this.optionFlags & OptionFlags.AllowReturnOutsideFunction\n ) {\n paramFlags |= ParamKind.PARAM_RETURN;\n }\n this.prodParam.enter(paramFlags);\n let scopeFlags = isCommonJS ? ScopeFlag.FUNCTION : ScopeFlag.PROGRAM;\n if (this.optionFlags & OptionFlags.AllowNewTargetOutsideFunction) {\n scopeFlags |= ScopeFlag.NEW_TARGET;\n }\n if (process.env.BABEL_8_BREAKING) {\n if (this.optionFlags & OptionFlags.AllowSuperOutsideMethod) {\n scopeFlags |= ScopeFlag.SUPER | ScopeFlag.DIRECT_SUPER;\n }\n }\n this.scope.enter(scopeFlags);\n }\n\n checkDestructuringPrivate(refExpressionErrors: ExpressionErrors) {\n const { privateKeyLoc } = refExpressionErrors;\n if (privateKeyLoc !== null) {\n this.expectPlugin(\"destructuringPrivate\", privateKeyLoc);\n }\n }\n}\n\n/**\n * The ExpressionErrors is a context struct used to track ambiguous patterns\n * When we are sure the parsed pattern is a RHS, which means it is not a pattern,\n * we will throw on this position on invalid assign syntax, otherwise it will be reset to null\n *\n * Types of ExpressionErrors:\n *\n * - **shorthandAssignLoc**: track initializer `=` position\n * - **doubleProtoLoc**: track the duplicate `__proto__` key position\n * - **privateKeyLoc**: track private key `#p` position\n * - **optionalParametersLoc**: track the optional parameter (`?`).\n * It's only used by typescript and flow plugins\n */\nexport class ExpressionErrors {\n shorthandAssignLoc: Position | undefined | null = null;\n doubleProtoLoc: Position | undefined | null = null;\n privateKeyLoc: Position | undefined | null = null;\n optionalParametersLoc: Position | undefined | null = null;\n voidPatternLoc: Position | undefined | null = null;\n}\n","import UtilParser from \"./util.ts\";\nimport { SourceLocation, type Position } from \"../util/location.ts\";\nimport type {\n Comment,\n Node as NodeType,\n NodeBase,\n EstreeLiteral,\n Identifier,\n Placeholder,\n StringLiteral,\n} from \"../types.ts\";\nimport { OptionFlags } from \"../options.ts\";\n\n// Start an AST node, attaching a start offset.\n\nclass Node implements NodeBase {\n constructor(parser: UtilParser, pos: number, loc: Position) {\n this.start = pos;\n this.end = 0;\n this.loc = new SourceLocation(loc);\n if (parser?.optionFlags & OptionFlags.Ranges) this.range = [pos, 0];\n if (parser?.filename) this.loc.filename = parser.filename;\n }\n\n type: string = \"\";\n declare start: number;\n declare end: number;\n declare loc: SourceLocation;\n declare range: [number, number];\n declare leadingComments: Comment[];\n declare trailingComments: Comment[];\n declare innerComments: Comment[];\n declare extra: Record<string, any>;\n}\nconst NodePrototype = Node.prototype;\n\nif (!process.env.BABEL_8_BREAKING) {\n // @ts-expect-error __clone is not defined in Node prototype\n NodePrototype.__clone = function (): Node {\n const newNode = new Node(undefined!, this.start, this.loc.start);\n const keys = Object.keys(this) as (keyof Node)[];\n for (let i = 0, length = keys.length; i < length; i++) {\n const key = keys[i];\n // Do not clone comments that are already attached to the node\n if (\n key !== \"leadingComments\" &&\n key !== \"trailingComments\" &&\n key !== \"innerComments\"\n ) {\n // @ts-expect-error cloning this to newNode\n newNode[key] = this[key];\n }\n }\n\n return newNode;\n };\n}\n\nexport type Undone<T extends NodeType> = Omit<T, \"type\">;\n\nexport abstract class NodeUtils extends UtilParser {\n startNode<T extends NodeType = never>(): Undone<T> {\n const loc = this.state.startLoc;\n return new Node(this, loc.index, loc) as unknown as Undone<T>;\n }\n\n startNodeAt<T extends NodeType = never>(loc: Position): Undone<T> {\n return new Node(this, loc.index, loc) as unknown as Undone<T>;\n }\n\n /** Start a new node with a previous node's location. */\n startNodeAtNode<T extends NodeType = never>(\n type: Undone<NodeType>,\n ): Undone<T> {\n return this.startNodeAt(type.loc.start);\n }\n\n // Finish an AST node, adding `type` and `end` properties.\n\n finishNode<T extends NodeType>(node: Undone<T>, type: T[\"type\"]): T {\n return this.finishNodeAt(node, type, this.state.lastTokEndLoc!);\n }\n\n // Finish node at given position\n\n finishNodeAt<T extends NodeType>(\n node: Omit<T, \"type\">,\n type: T[\"type\"],\n endLoc: Position,\n ): T {\n if (process.env.NODE_ENV !== \"production\" && node.end > 0) {\n throw new Error(\n \"Do not call finishNode*() twice on the same node.\" +\n \" Instead use resetEndLocation() or change type directly.\",\n );\n }\n (node as T).type = type;\n node.end = endLoc.index;\n node.loc.end = endLoc;\n if (this.optionFlags & OptionFlags.Ranges) node.range![1] = endLoc.index;\n if (this.optionFlags & OptionFlags.AttachComment) {\n this.processComment(node as T);\n }\n return node as T;\n }\n\n resetStartLocation(node: NodeBase, startLoc: Position): void {\n node.start = startLoc.index;\n node.loc.start = startLoc;\n if (this.optionFlags & OptionFlags.Ranges) node.range![0] = startLoc.index;\n }\n\n resetEndLocation(\n node: NodeBase,\n endLoc: Position = this.state.lastTokEndLoc!,\n ): void {\n node.end = endLoc.index;\n node.loc.end = endLoc;\n if (this.optionFlags & OptionFlags.Ranges) node.range![1] = endLoc.index;\n }\n\n /**\n * Reset the start location of node to the start location of locationNode\n */\n resetStartLocationFromNode(node: NodeBase, locationNode: NodeBase): void {\n this.resetStartLocation(node, locationNode.loc.start);\n }\n\n castNodeTo<T extends NodeType[\"type\"]>(\n node: NodeType,\n type: T,\n ): Extract<NodeType, { type: T }> {\n node.type = type;\n return node as Extract<NodeType, { type: T }>;\n }\n\n cloneIdentifier<T extends Identifier | Placeholder>(node: T): T {\n // We don't need to clone `typeAnnotations` and `optional`: because\n // cloneIdentifier is only used in object shorthand and named import/export.\n // Neither of them allow type annotations after the identifier or optional identifier\n const { type, start, end, loc, range, name } = node;\n const cloned = Object.create(NodePrototype);\n cloned.type = type;\n cloned.start = start;\n cloned.end = end;\n cloned.loc = loc;\n cloned.range = range;\n cloned.name = name;\n if (node.extra) cloned.extra = node.extra;\n return cloned;\n }\n\n cloneStringLiteral<T extends StringLiteral | EstreeLiteral | Placeholder>(\n node: T,\n ): T {\n const { type, start, end, loc, range, extra } = node;\n const cloned = Object.create(NodePrototype);\n cloned.type = type;\n cloned.start = start;\n cloned.end = end;\n cloned.loc = loc;\n cloned.range = range;\n cloned.extra = extra;\n cloned.value = (node as StringLiteral).value;\n return cloned;\n }\n}\n","import * as charCodes from \"charcodes\";\nimport { tt, type TokenType } from \"../tokenizer/types.ts\";\nimport type {\n AssignmentPattern,\n TSParameterProperty,\n Decorator,\n Expression,\n Identifier,\n Node,\n Pattern,\n RestElement,\n SpreadElement,\n ObjectOrClassMember,\n ClassMember,\n ObjectMember,\n TsNamedTypeElementBase,\n PrivateName,\n ObjectExpression,\n ObjectPattern,\n ArrayPattern,\n AssignmentProperty,\n Assignable,\n VoidPattern,\n} from \"../types.ts\";\nimport type { Position } from \"../util/location.ts\";\nimport {\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n} from \"../util/identifier.ts\";\nimport { NodeUtils, type Undone } from \"./node.ts\";\nimport { BindingFlag } from \"../util/scopeflags.ts\";\nimport type { ExpressionErrors } from \"./util.ts\";\nimport { Errors, type LValAncestor } from \"../parse-error.ts\";\nimport type Parser from \"./index.ts\";\nimport { OptionFlags } from \"../options.ts\";\n\nconst unwrapParenthesizedExpression = (node: Node): Node => {\n return node.type === \"ParenthesizedExpression\"\n ? unwrapParenthesizedExpression(node.expression)\n : node;\n};\n\nexport const enum ParseBindingListFlags {\n ALLOW_EMPTY = 1 << 0,\n IS_FUNCTION_PARAMS = 1 << 1,\n IS_CONSTRUCTOR_PARAMS = 1 << 2,\n}\n\nexport default abstract class LValParser extends NodeUtils {\n // Forward-declaration: defined in expression.js\n abstract parseIdentifier(liberal?: boolean): Identifier;\n abstract parseMaybeAssign(\n refExpressionErrors?: ExpressionErrors | null,\n afterLeftParse?: Function,\n ): Expression;\n\n abstract parseMaybeAssignAllowIn(\n refExpressionErrors?: ExpressionErrors | null,\n afterLeftParse?: Function,\n ): Expression;\n\n abstract parseObjectLike<T extends ObjectPattern | ObjectExpression>(\n close: TokenType,\n isPattern: boolean,\n isRecord?: boolean,\n refExpressionErrors?: ExpressionErrors,\n ): T;\n abstract parseObjPropValue(\n prop: any,\n startLoc: Position | null,\n isGenerator: boolean,\n isAsync: boolean,\n isPattern: boolean,\n isAccessor: boolean,\n refExpressionErrors?: ExpressionErrors | null,\n ): void;\n abstract parsePropertyName(\n prop: ObjectOrClassMember | ClassMember | TsNamedTypeElementBase,\n ): void;\n abstract parsePrivateName(): PrivateName;\n // Forward-declaration: defined in statement.js\n abstract parseDecorator(): Decorator;\n\n /**\n * Convert existing expression atom to assignable pattern\n * if possible. Also checks invalid destructuring targets:\n *\n * - Parenthesized Destructuring patterns\n * - RestElement is not the last element\n * - Missing `=` in assignment pattern\n *\n * NOTE: There is a corresponding \"isAssignable\" method.\n * When this one is updated, please check if also that one needs to be updated.\n *\n * @param node The expression atom\n * @param isLHS Whether we are parsing a LeftHandSideExpression.\n * If isLHS is `true`, the following cases are allowed: `[(a)] = [0]`, `[(a.b)] = [0]`\n * If isLHS is `false`, we are in an arrow function parameters list.\n */\n toAssignable(node: Node, isLHS: boolean = false): asserts node is Assignable {\n let parenthesized = undefined;\n if (node.type === \"ParenthesizedExpression\" || node.extra?.parenthesized) {\n parenthesized = unwrapParenthesizedExpression(node);\n if (isLHS) {\n // an LHS can be reinterpreted to a binding pattern but not vice versa.\n // therefore a parenthesized identifier is ambiguous until we are sure it is an assignment expression\n // i.e. `([(a) = []] = []) => {}`\n // see also `recordArrowParameterBindingError` signature in packages/babel-parser/src/util/expression-scope.js\n if (parenthesized.type === \"Identifier\") {\n this.expressionScope.recordArrowParameterBindingError(\n Errors.InvalidParenthesizedAssignment,\n node,\n );\n } else if (\n parenthesized.type !== \"CallExpression\" &&\n parenthesized.type !== \"MemberExpression\" &&\n !this.isOptionalMemberExpression(parenthesized)\n ) {\n // A parenthesized member expression can be in LHS but not in pattern.\n // If the LHS is later interpreted as a pattern, `checkLVal` will throw for member expression binding\n // i.e. `([(a.b) = []] = []) => {}`\n this.raise(Errors.InvalidParenthesizedAssignment, node);\n }\n } else {\n this.raise(Errors.InvalidParenthesizedAssignment, node);\n }\n }\n\n switch (node.type) {\n case \"Identifier\":\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n case \"RestElement\":\n case \"VoidPattern\":\n break;\n\n case \"ObjectExpression\":\n this.castNodeTo(node, \"ObjectPattern\");\n for (\n let i = 0, length = node.properties.length, last = length - 1;\n i < length;\n i++\n ) {\n const prop = node.properties[i];\n const isLast = i === last;\n this.toAssignableObjectExpressionProp(prop, isLast, isLHS);\n\n if (\n isLast &&\n (prop as Node).type === \"RestElement\" &&\n node.extra?.trailingCommaLoc\n ) {\n this.raise(Errors.RestTrailingComma, node.extra.trailingCommaLoc);\n }\n }\n break;\n\n case \"ObjectProperty\": {\n const { key, value } = node;\n if (this.isPrivateName(key)) {\n this.classScope.usePrivateName(\n this.getPrivateNameSV(key),\n key.loc.start,\n );\n }\n this.toAssignable(value, isLHS);\n break;\n }\n\n case \"SpreadElement\": {\n throw new Error(\n \"Internal @babel/parser error (this is a bug, please report it).\" +\n \" SpreadElement should be converted by .toAssignable's caller.\",\n );\n }\n\n case \"ArrayExpression\":\n this.castNodeTo(node, \"ArrayPattern\");\n this.toAssignableList(\n node.elements,\n node.extra?.trailingCommaLoc,\n isLHS,\n );\n break;\n\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") {\n this.raise(Errors.MissingEqInAssignment, node.left.loc.end);\n }\n\n this.castNodeTo(node, \"AssignmentPattern\");\n // @ts-expect-error delete non-optional properties\n delete node.operator;\n if (node.left.type === \"VoidPattern\") {\n this.raise(Errors.VoidPatternInitializer, node.left);\n }\n this.toAssignable(node.left, isLHS);\n break;\n\n case \"ParenthesizedExpression\":\n /*::invariant (parenthesized !== undefined) */\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n this.toAssignable(parenthesized!, isLHS);\n break;\n\n default:\n // We don't know how to deal with this node. It will\n // be reported by a later call to checkLVal\n }\n }\n\n toAssignableObjectExpressionProp(\n prop: Node,\n isLast: boolean,\n isLHS: boolean,\n ) {\n if (prop.type === \"ObjectMethod\") {\n this.raise(\n prop.kind === \"get\" || prop.kind === \"set\"\n ? Errors.PatternHasAccessor\n : Errors.PatternHasMethod,\n prop.key,\n );\n } else if (prop.type === \"SpreadElement\") {\n this.castNodeTo(prop, \"RestElement\");\n const arg = prop.argument;\n this.checkToRestConversion(arg, /* allowPattern */ false);\n this.toAssignable(arg, isLHS);\n\n if (!isLast) {\n this.raise(Errors.RestTrailingComma, prop);\n }\n } else {\n this.toAssignable(prop, isLHS);\n }\n }\n\n // Convert list of expression atoms to binding list.\n\n toAssignableList(\n exprList: (\n | Expression\n | SpreadElement\n | RestElement\n | VoidPattern\n | AssignmentPattern\n | null\n )[],\n trailingCommaLoc: Position | undefined | null,\n isLHS: boolean,\n ): void {\n const end = exprList.length - 1;\n\n for (let i = 0; i <= end; i++) {\n const elt = exprList[i];\n if (!elt) continue;\n\n this.toAssignableListItem(\n exprList as (\n | Expression\n | SpreadElement\n | RestElement\n | VoidPattern\n | AssignmentPattern\n )[],\n i,\n isLHS,\n );\n\n if (elt.type === \"RestElement\") {\n if (i < end) {\n this.raise(Errors.RestTrailingComma, elt);\n } else if (trailingCommaLoc) {\n this.raise(Errors.RestTrailingComma, trailingCommaLoc);\n }\n }\n }\n }\n\n toAssignableListItem(\n exprList: (\n | Expression\n | SpreadElement\n | RestElement\n | VoidPattern\n | AssignmentPattern\n )[],\n index: number,\n isLHS: boolean,\n ): void {\n const node = exprList[index];\n if (node.type === \"SpreadElement\") {\n this.castNodeTo(node, \"RestElement\");\n const arg = node.argument;\n this.checkToRestConversion(arg, /* allowPattern */ true);\n this.toAssignable(arg, isLHS);\n } else {\n this.toAssignable(node, isLHS);\n }\n }\n\n isAssignable(node: Node, isBinding?: boolean): boolean {\n switch (node.type) {\n case \"Identifier\":\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n case \"RestElement\":\n case \"VoidPattern\":\n return true;\n\n case \"ObjectExpression\": {\n const last = node.properties.length - 1;\n return node.properties.every((prop, i) => {\n return (\n prop.type !== \"ObjectMethod\" &&\n (i === last || prop.type !== \"SpreadElement\") &&\n this.isAssignable(prop)\n );\n });\n }\n\n case \"ObjectProperty\":\n return this.isAssignable(node.value);\n\n case \"SpreadElement\":\n return this.isAssignable(node.argument);\n\n case \"ArrayExpression\":\n return node.elements.every(\n element => element === null || this.isAssignable(element),\n );\n\n case \"AssignmentExpression\":\n return node.operator === \"=\";\n\n case \"ParenthesizedExpression\":\n return this.isAssignable(node.expression);\n\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n return !isBinding;\n\n default:\n return false;\n }\n }\n\n // Convert list of expression atoms to a list of\n\n toReferencedList(\n exprList:\n | readonly (\n | Expression\n | SpreadElement\n | VoidPattern\n | AssignmentPattern\n | null\n )[]\n | readonly (\n | Expression\n | RestElement\n | VoidPattern\n | AssignmentPattern\n | null\n )[],\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isParenthesizedExpr?: boolean,\n ):\n | readonly (\n | Expression\n | SpreadElement\n | VoidPattern\n | AssignmentPattern\n | null\n )[]\n | readonly (\n | Expression\n | RestElement\n | VoidPattern\n | AssignmentPattern\n | null\n )[] {\n return exprList;\n }\n\n toReferencedListDeep(\n exprList:\n | readonly (\n | Expression\n | SpreadElement\n | VoidPattern\n | AssignmentPattern\n | null\n )[]\n | readonly (\n | Expression\n | RestElement\n | VoidPattern\n | AssignmentPattern\n | null\n )[],\n isParenthesizedExpr?: boolean,\n ): void {\n this.toReferencedList(exprList, isParenthesizedExpr);\n\n for (const expr of exprList) {\n if (expr?.type === \"ArrayExpression\") {\n this.toReferencedListDeep(expr.elements);\n }\n }\n }\n\n // Parses spread element.\n\n parseSpread(\n this: Parser,\n refExpressionErrors?: ExpressionErrors | null,\n ): SpreadElement {\n const node = this.startNode<SpreadElement>();\n this.next();\n node.argument = this.parseMaybeAssignAllowIn(\n refExpressionErrors,\n undefined,\n );\n return this.finishNode(node, \"SpreadElement\");\n }\n\n // https://tc39.es/ecma262/#prod-BindingRestElement\n parseRestBinding(this: Parser): RestElement {\n const node = this.startNode<RestElement>();\n this.next(); // eat `...`\n const argument = this.parseBindingAtom();\n if (argument.type === \"VoidPattern\") {\n this.raise(Errors.UnexpectedVoidPattern, argument);\n }\n node.argument = argument;\n return this.finishNode(node, \"RestElement\");\n }\n\n // Parses lvalue (assignable) atom.\n parseBindingAtom(this: Parser): Pattern {\n // https://tc39.es/ecma262/#prod-BindingPattern\n switch (this.state.type) {\n case tt.bracketL: {\n const node = this.startNode<ArrayPattern>();\n this.next();\n node.elements = this.parseBindingList(\n tt.bracketR,\n charCodes.rightSquareBracket,\n ParseBindingListFlags.ALLOW_EMPTY,\n );\n return this.finishNode(node, \"ArrayPattern\");\n }\n\n case tt.braceL:\n return this.parseObjectLike(tt.braceR, true);\n\n case tt._void:\n return this.parseVoidPattern(null);\n }\n\n // https://tc39.es/ecma262/#prod-BindingIdentifier\n return this.parseIdentifier();\n }\n\n // https://tc39.es/ecma262/#prod-BindingElementList\n parseBindingList(\n this: Parser,\n close: TokenType,\n closeCharCode: (typeof charCodes)[keyof typeof charCodes],\n flags: ParseBindingListFlags.ALLOW_EMPTY,\n ): (Pattern | null)[];\n parseBindingList(\n this: Parser,\n close: TokenType,\n closeCharCode: (typeof charCodes)[keyof typeof charCodes],\n flags: ParseBindingListFlags.IS_FUNCTION_PARAMS,\n ): (Pattern | TSParameterProperty)[];\n parseBindingList(\n this: Parser,\n close: TokenType,\n closeCharCode: (typeof charCodes)[keyof typeof charCodes],\n flags: ParseBindingListFlags,\n ): (Pattern | TSParameterProperty | null)[] {\n const allowEmpty = flags & ParseBindingListFlags.ALLOW_EMPTY;\n\n const elts: (Pattern | TSParameterProperty | null)[] = [];\n let first = true;\n while (!this.eat(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(tt.comma);\n }\n if (allowEmpty && this.match(tt.comma)) {\n elts.push(null);\n } else if (this.eat(close)) {\n break;\n } else if (this.match(tt.ellipsis)) {\n let rest: Pattern = this.parseRestBinding();\n if (\n (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"flow\")) ||\n flags & ParseBindingListFlags.IS_FUNCTION_PARAMS\n ) {\n rest = this.parseFunctionParamType(rest);\n }\n elts.push(rest);\n if (!this.checkCommaAfterRest(closeCharCode)) {\n this.expect(close);\n break;\n }\n } else {\n const decorators = [];\n if (flags & ParseBindingListFlags.IS_FUNCTION_PARAMS) {\n if (this.match(tt.at) && this.hasPlugin(\"decorators\")) {\n this.raise(\n Errors.UnsupportedParameterDecorator,\n this.state.startLoc,\n );\n }\n // invariant: hasPlugin(\"decorators-legacy\")\n while (this.match(tt.at)) {\n decorators.push(this.parseDecorator());\n }\n }\n elts.push(this.parseBindingElement(flags, decorators));\n }\n }\n return elts;\n }\n\n // https://tc39.es/ecma262/#prod-BindingRestProperty\n parseBindingRestProperty(\n this: Parser,\n prop: Undone<RestElement>,\n ): RestElement {\n this.next(); // eat '...'\n if (this.hasPlugin(\"discardBinding\") && this.match(tt._void)) {\n prop.argument = this.parseVoidPattern(null);\n this.raise(Errors.UnexpectedVoidPattern, prop.argument);\n } else {\n // Don't use parseRestBinding() as we only allow Identifier here.\n prop.argument = this.parseIdentifier();\n }\n this.checkCommaAfterRest(charCodes.rightCurlyBrace);\n return this.finishNode(prop, \"RestElement\");\n }\n\n // https://tc39.es/ecma262/#prod-BindingProperty\n parseBindingProperty(this: Parser): AssignmentProperty | RestElement {\n const { type, startLoc } = this.state;\n if (type === tt.ellipsis) {\n return this.parseBindingRestProperty(this.startNode());\n }\n\n const prop = this.startNode<AssignmentProperty>();\n if (type === tt.privateName) {\n this.expectPlugin(\"destructuringPrivate\", startLoc);\n this.classScope.usePrivateName(this.state.value, startLoc);\n prop.key = this.parsePrivateName();\n } else {\n this.parsePropertyName(prop);\n }\n prop.method = false;\n return this.parseObjPropValue(\n prop,\n startLoc,\n false /* isGenerator */,\n false /* isAsync */,\n true /* isPattern */,\n false /* isAccessor */,\n );\n }\n\n // https://tc39.es/ecma262/#prod-BindingElement\n parseBindingElement(\n this: Parser,\n flags: ParseBindingListFlags,\n decorators: Decorator[],\n ): Pattern | TSParameterProperty {\n const left = this.parseMaybeDefault();\n if (\n (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"flow\")) ||\n flags & ParseBindingListFlags.IS_FUNCTION_PARAMS\n ) {\n this.parseFunctionParamType(left);\n }\n if (decorators.length) {\n left.decorators = decorators;\n this.resetStartLocationFromNode(left, decorators[0]);\n }\n const elt = this.parseMaybeDefault(left.loc.start, left);\n return elt;\n }\n\n // Used by flow/typescript plugin to add type annotations to binding elements\n parseFunctionParamType(param: Pattern): Pattern {\n return param;\n }\n\n // Parses assignment pattern around given atom if possible.\n // https://tc39.es/ecma262/#prod-BindingElement\n parseMaybeDefault<P extends Pattern>(\n this: Parser,\n startLoc?: Position | null,\n left?: P | null,\n ): P | AssignmentPattern;\n parseMaybeDefault(\n this: Parser,\n startLoc?: Position | null,\n left?: Pattern | null,\n ): Pattern {\n startLoc ??= this.state.startLoc;\n left = left ?? this.parseBindingAtom();\n if (!this.eat(tt.eq)) return left;\n\n const node = this.startNodeAt<AssignmentPattern>(startLoc);\n if (left.type === \"VoidPattern\") {\n this.raise(Errors.VoidPatternInitializer, left);\n }\n node.left = left;\n node.right = this.parseMaybeAssignAllowIn();\n return this.finishNode(node, \"AssignmentPattern\");\n }\n /**\n * Return information use in determining whether a Node of a given type is an LVal,\n * possibly given certain additional context information.\n *\n * Subclasser notes: This method has kind of a lot of mixed, but related,\n * responsibilities. If we can definitively determine with the information\n * provided that this either *is* or *isn't* a valid `LVal`, then the return\n * value is easy: just return `true` or `false`. However, if it is a valid\n * LVal *ancestor*, and thus its descendants must be subsequently visited to\n * continue the \"investigation\", then this method should return the relevant\n * child key as a `string`. In some special cases, you additionally want to\n * convey that this node should be treated as if it were parenthesized. In\n * that case, a tuple of [key: string, parenthesized: boolean] is returned.\n * The `string`-only return option is actually just a shorthand for:\n * `[key: string, parenthesized: false]`.\n *\n * @param type A Node `type` string\n * @param disallowCallExpression Whether to disallow `CallExpression` as an LVal.\n * @param isUnparenthesizedInAssign\n * Whether the node in question is unparenthesized and its parent\n * is either an assignment pattern or an assignment expression.\n * @param binding\n * The binding operation that is being considered for this potential\n * LVal.\n * @returns `true` or `false` if we can immediately determine whether the node\n * type in question can be treated as an `LVal`.\n * A `string` key to traverse if we must check this child.\n * A `[string, boolean]` tuple if we need to check this child and\n * treat is as parenthesized.\n */\n isValidLVal(\n type: string,\n disallowCallExpression: boolean,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isUnparenthesizedInAssign: boolean,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n binding: BindingFlag,\n ): string | boolean | [string, boolean] {\n switch (type) {\n case \"AssignmentPattern\":\n return \"left\";\n case \"RestElement\":\n return \"argument\";\n case \"ObjectProperty\":\n return \"value\";\n case \"ParenthesizedExpression\":\n return \"expression\";\n case \"ArrayPattern\":\n return \"elements\";\n case \"ObjectPattern\":\n return \"properties\";\n case \"VoidPattern\":\n return true;\n case \"CallExpression\":\n if (\n !disallowCallExpression &&\n !this.state.strict &&\n this.optionFlags & OptionFlags.AnnexB\n ) {\n return true;\n }\n }\n return false;\n }\n\n // Overridden by the estree plugin\n isOptionalMemberExpression(expression: Node): boolean {\n return expression.type === \"OptionalMemberExpression\";\n }\n\n /**\n * Verify that a target expression is an lval (something that can be assigned to).\n *\n * @param expression The expression in question to check.\n * @param ancestor\n * The relevant ancestor to provide context information for the error\n * if the check fails.\n * @param binding\n * The desired binding type. If the given expression is an identifier\n * and `binding` is not `BindingFlag.TYPE_NONE`, `checkLVal` will register binding\n * to the parser scope See also `src/util/scopeflags.js`\n * @param checkClashes\n * An optional string set to check if an identifier name is included.\n * `checkLVal` will add checked identifier name to `checkClashes` It is\n * used in tracking duplicates in function parameter lists. If it is\n * false, `checkLVal` will skip duplicate checks\n * @param strictModeChanged\n * Whether an identifier has been parsed in a sloppy context but should\n * be reinterpreted as strict-mode. e.g. `(arguments) => { \"use strict \"}`\n * @param hasParenthesizedAncestor\n * This is only used internally during recursive calls, and you should\n * not have to set it yourself.\n * @param disallowCallExpression Whether to disallow `CallExpression` as an LVal.\n */\n\n checkLVal(\n expression:\n | Expression\n | ObjectMember\n | RestElement\n | Pattern\n | TSParameterProperty,\n ancestor: LValAncestor,\n binding: BindingFlag = BindingFlag.TYPE_NONE,\n checkClashes: Set<string> | false = false,\n strictModeChanged: boolean = false,\n hasParenthesizedAncestor: boolean = false,\n disallowCallExpression: boolean = false,\n ): void {\n const type = expression.type;\n\n // If we find here an ObjectMethod, it's because this was originally\n // an ObjectExpression which has then been converted.\n // toAssignable already reported this error with a nicer message.\n if (this.isObjectMethod(expression)) return;\n\n const isOptionalMemberExpression =\n this.isOptionalMemberExpression(expression);\n\n if (isOptionalMemberExpression || type === \"MemberExpression\") {\n if (isOptionalMemberExpression) {\n this.expectPlugin(\"optionalChainingAssign\", expression.loc.start);\n if (ancestor.type !== \"AssignmentExpression\") {\n this.raise(Errors.InvalidLhsOptionalChaining, expression, {\n ancestor,\n });\n }\n }\n\n if (binding !== BindingFlag.TYPE_NONE) {\n this.raise(Errors.InvalidPropertyBindingPattern, expression);\n }\n return;\n }\n\n if (type === \"Identifier\") {\n this.checkIdentifier(expression, binding, strictModeChanged);\n\n const { name } = expression;\n\n if (checkClashes) {\n if (checkClashes.has(name)) {\n this.raise(Errors.ParamDupe, expression);\n } else {\n checkClashes.add(name);\n }\n }\n\n return;\n } else if (type === \"VoidPattern\" && ancestor.type === \"CatchClause\") {\n this.raise(Errors.VoidPatternCatchClauseParam, expression);\n }\n\n const unwrappedExpression = unwrapParenthesizedExpression(expression);\n disallowCallExpression ||=\n unwrappedExpression.type === \"CallExpression\" &&\n (unwrappedExpression.callee.type === \"Import\" ||\n unwrappedExpression.callee.type === \"Super\");\n const validity = this.isValidLVal(\n type,\n disallowCallExpression,\n !(hasParenthesizedAncestor || expression.extra?.parenthesized) &&\n ancestor.type === \"AssignmentExpression\",\n binding,\n );\n\n if (validity === true) return;\n if (validity === false) {\n const ParseErrorClass =\n binding === BindingFlag.TYPE_NONE\n ? Errors.InvalidLhs\n : Errors.InvalidLhsBinding;\n\n this.raise(ParseErrorClass, expression, { ancestor });\n return;\n }\n\n let key: string, isParenthesizedExpression: boolean;\n if (typeof validity === \"string\") {\n key = validity;\n isParenthesizedExpression = type === \"ParenthesizedExpression\";\n } else {\n [key, isParenthesizedExpression] = validity;\n }\n\n const nextAncestor =\n type === \"ArrayPattern\" || type === \"ObjectPattern\"\n ? ({ type } as const)\n : ancestor;\n\n // @ts-expect-error key may not index expression.\n const val = expression[key];\n if (Array.isArray(val)) {\n for (const child of val) {\n if (child) {\n this.checkLVal(\n child,\n nextAncestor,\n binding,\n checkClashes,\n strictModeChanged,\n isParenthesizedExpression,\n true,\n );\n }\n }\n } else if (val) {\n this.checkLVal(\n val,\n nextAncestor,\n binding,\n checkClashes,\n strictModeChanged,\n isParenthesizedExpression,\n disallowCallExpression,\n );\n }\n }\n\n checkIdentifier(\n at: Identifier,\n bindingType: BindingFlag,\n strictModeChanged: boolean = false,\n ) {\n if (\n this.state.strict &&\n (strictModeChanged\n ? isStrictBindReservedWord(at.name, this.inModule)\n : isStrictBindOnlyReservedWord(at.name))\n ) {\n if (bindingType === BindingFlag.TYPE_NONE) {\n this.raise(Errors.StrictEvalArguments, at, { referenceName: at.name });\n } else {\n this.raise(Errors.StrictEvalArgumentsBinding, at, {\n bindingName: at.name,\n });\n }\n }\n\n if (bindingType & BindingFlag.FLAG_NO_LET_IN_LEXICAL && at.name === \"let\") {\n this.raise(Errors.LetInLexicalBinding, at);\n }\n\n if (!(bindingType & BindingFlag.TYPE_NONE)) {\n this.declareNameFromIdentifier(at, bindingType);\n }\n }\n\n declareNameFromIdentifier(identifier: Identifier, binding: BindingFlag) {\n this.scope.declareName(identifier.name, binding, identifier.loc.start);\n }\n\n checkToRestConversion(node: Node, allowPattern: boolean): void {\n switch (node.type) {\n case \"ParenthesizedExpression\":\n this.checkToRestConversion(node.expression, allowPattern);\n break;\n case \"Identifier\":\n case \"MemberExpression\":\n break;\n case \"ArrayExpression\":\n case \"ObjectExpression\":\n if (allowPattern) break;\n /* falls through */\n default:\n this.raise(Errors.InvalidRestAssignmentPattern, node);\n }\n }\n\n checkCommaAfterRest(\n close: (typeof charCodes)[keyof typeof charCodes],\n ): boolean {\n if (!this.match(tt.comma)) {\n return false;\n }\n\n this.raise(\n this.lookaheadCharCode() === close\n ? Errors.RestTrailingComma\n : Errors.ElementAfterRest,\n this.state.startLoc,\n );\n\n return true;\n }\n}\n","import type State from \"../../tokenizer/state.ts\";\nimport {\n tokenIsIdentifier,\n tokenIsTSDeclarationStart,\n tokenIsTSTypeOperator,\n tokenOperatorPrecedence,\n tokenIsKeywordOrIdentifier,\n tt,\n type TokenType,\n tokenIsTemplate,\n tokenCanStartExpression,\n} from \"../../tokenizer/types.ts\";\nimport { types as tc } from \"../../tokenizer/context.ts\";\nimport type * as N from \"../../types.ts\";\nimport type { Position } from \"../../util/location.ts\";\nimport { createPositionWithColumnOffset } from \"../../util/location.ts\";\nimport type Parser from \"../../parser/index.ts\";\nimport { ScopeFlag, BindingFlag } from \"../../util/scopeflags.ts\";\nimport TypeScriptScopeHandler from \"./scope.ts\";\nimport * as charCodes from \"charcodes\";\nimport type { ExpressionErrors } from \"../../parser/util.ts\";\nimport type { ParseStatementFlag } from \"../../parser/statement.ts\";\nimport { ParamKind } from \"../../util/production-parameter.ts\";\nimport { Errors, ParseErrorEnum } from \"../../parse-error.ts\";\nimport type { Undone } from \"../../parser/node.ts\";\nimport type { ClassWithMixin, IJSXParserMixin } from \"../jsx/index.ts\";\nimport { ParseBindingListFlags } from \"../../parser/lval.ts\";\nimport { OptionFlags } from \"../../options.ts\";\nimport { isIdentifierChar, isIdentifierStart } from \"../../util/identifier.ts\";\n\nconst keywordAndTSRelationalOperator = /in(?:stanceof)?|as|satisfies/y;\n\ntype TsModifier =\n | \"readonly\"\n | \"abstract\"\n | \"declare\"\n | \"static\"\n | \"override\"\n | \"const\"\n | N.Accessibility\n | N.VarianceAnnotations;\n\nfunction nonNull<T>(x?: T | null): T {\n if (x == null) {\n throw new Error(`Unexpected ${x} value.`);\n }\n return x;\n}\n\nfunction assert(x: boolean): void {\n if (!x) {\n throw new Error(\"Assert fail\");\n }\n}\n\ntype ParsingContext =\n | \"EnumMembers\"\n | \"HeritageClauseElement\"\n | \"TupleElementTypes\"\n | \"TypeMembers\"\n | \"TypeParametersOrArguments\";\n\ntype ModifierBase = {\n accessibility?: N.Accessibility;\n} & Partial<Record<TsModifier, boolean | undefined | null>>;\n\n/* eslint sort-keys: \"error\" */\nconst TSErrors = ParseErrorEnum`typescript`({\n AbstractMethodHasImplementation: ({ methodName }: { methodName: string }) =>\n `Method '${methodName}' cannot have an implementation because it is marked abstract.`,\n AbstractPropertyHasInitializer: ({\n propertyName,\n }: {\n propertyName: string;\n }) =>\n `Property '${propertyName}' cannot have an initializer because it is marked abstract.`,\n AccessorCannotBeOptional:\n \"An 'accessor' property cannot be declared optional.\",\n AccessorCannotDeclareThisParameter:\n \"'get' and 'set' accessors cannot declare 'this' parameters.\",\n AccessorCannotHaveTypeParameters: \"An accessor cannot have type parameters.\",\n ClassMethodHasDeclare: \"Class methods cannot have the 'declare' modifier.\",\n ClassMethodHasReadonly: \"Class methods cannot have the 'readonly' modifier.\",\n ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference:\n \"A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.\",\n ConstructorHasTypeParameters:\n \"Type parameters cannot appear on a constructor declaration.\",\n DeclareAccessor: ({ kind }: { kind: \"get\" | \"set\" }) =>\n `'declare' is not allowed in ${kind}ters.`,\n DeclareClassFieldHasInitializer:\n \"Initializers are not allowed in ambient contexts.\",\n DeclareFunctionHasImplementation:\n \"An implementation cannot be declared in ambient contexts.\",\n DuplicateAccessibilityModifier: ({\n modifier,\n }: {\n modifier: N.Accessibility;\n }) => `Accessibility modifier already seen: '${modifier}'.`,\n DuplicateModifier: ({ modifier }: { modifier: TsModifier }) =>\n `Duplicate modifier: '${modifier}'.`,\n // `token` matches the terminology used by typescript:\n // https://github.com/microsoft/TypeScript/blob/main/src/compiler/types.ts#L2915\n EmptyHeritageClauseType: ({ token }: { token: \"extends\" | \"implements\" }) =>\n `'${token}' list cannot be empty.`,\n EmptyTypeArguments: \"Type argument list cannot be empty.\",\n EmptyTypeParameters: \"Type parameter list cannot be empty.\",\n ExpectedAmbientAfterExportDeclare:\n \"'export declare' must be followed by an ambient declaration.\",\n ImportAliasHasImportType: \"An import alias can not use 'import type'.\",\n ImportReflectionHasImportType:\n \"An `import module` declaration can not use `type` modifier\",\n IncompatibleModifiers: ({\n modifiers,\n }: {\n modifiers: [TsModifier, TsModifier];\n }) =>\n `'${modifiers[0]}' modifier cannot be used with '${modifiers[1]}' modifier.`,\n IndexSignatureHasAbstract:\n \"Index signatures cannot have the 'abstract' modifier.\",\n IndexSignatureHasAccessibility: ({\n modifier,\n }: {\n modifier: N.Accessibility;\n }) =>\n `Index signatures cannot have an accessibility modifier ('${modifier}').`,\n IndexSignatureHasDeclare:\n \"Index signatures cannot have the 'declare' modifier.\",\n IndexSignatureHasOverride:\n \"'override' modifier cannot appear on an index signature.\",\n IndexSignatureHasStatic:\n \"Index signatures cannot have the 'static' modifier.\",\n InitializerNotAllowedInAmbientContext:\n \"Initializers are not allowed in ambient contexts.\",\n InvalidHeritageClauseType: ({ token }: { token: \"extends\" | \"implements\" }) =>\n `'${token}' list can only include identifiers or qualified-names with optional type arguments.`,\n InvalidModifierOnAwaitUsingDeclaration: (modifier: TsModifier) =>\n `'${modifier}' modifier cannot appear on an await using declaration.`,\n InvalidModifierOnTypeMember: ({ modifier }: { modifier: TsModifier }) =>\n `'${modifier}' modifier cannot appear on a type member.`,\n InvalidModifierOnTypeParameter: ({ modifier }: { modifier: TsModifier }) =>\n `'${modifier}' modifier cannot appear on a type parameter.`,\n InvalidModifierOnTypeParameterPositions: ({\n modifier,\n }: {\n modifier: TsModifier;\n }) =>\n `'${modifier}' modifier can only appear on a type parameter of a class, interface or type alias.`,\n\n InvalidModifierOnUsingDeclaration: (modifier: TsModifier) =>\n `'${modifier}' modifier cannot appear on a using declaration.`,\n InvalidModifiersOrder: ({\n orderedModifiers,\n }: {\n orderedModifiers: [TsModifier, TsModifier];\n }) =>\n `'${orderedModifiers[0]}' modifier must precede '${orderedModifiers[1]}' modifier.`,\n InvalidPropertyAccessAfterInstantiationExpression:\n \"Invalid property access after an instantiation expression. \" +\n \"You can either wrap the instantiation expression in parentheses, or delete the type arguments.\",\n InvalidTupleMemberLabel:\n \"Tuple members must be labeled with a simple identifier.\",\n MissingInterfaceName:\n \"'interface' declarations must be followed by an identifier.\",\n NonAbstractClassHasAbstractMethod:\n \"Abstract methods can only appear within an abstract class.\",\n NonClassMethodPropertyHasAbstractModifier:\n \"'abstract' modifier can only appear on a class, method, or property declaration.\",\n OptionalTypeBeforeRequired:\n \"A required element cannot follow an optional element.\",\n OverrideNotInSubClass:\n \"This member cannot have an 'override' modifier because its containing class does not extend another class.\",\n PatternIsOptional:\n \"A binding pattern parameter cannot be optional in an implementation signature.\",\n PrivateElementHasAbstract:\n \"Private elements cannot have the 'abstract' modifier.\",\n PrivateElementHasAccessibility: ({\n modifier,\n }: {\n modifier: N.Accessibility;\n }) =>\n `Private elements cannot have an accessibility modifier ('${modifier}').`,\n ReadonlyForMethodSignature:\n \"'readonly' modifier can only appear on a property declaration or index signature.\",\n ReservedArrowTypeParam:\n \"This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.\",\n ReservedTypeAssertion:\n \"This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.\",\n SetAccessorCannotHaveOptionalParameter:\n \"A 'set' accessor cannot have an optional parameter.\",\n SetAccessorCannotHaveRestParameter:\n \"A 'set' accessor cannot have rest parameter.\",\n SetAccessorCannotHaveReturnType:\n \"A 'set' accessor cannot have a return type annotation.\",\n SingleTypeParameterWithoutTrailingComma: ({\n typeParameterName,\n }: {\n typeParameterName: string;\n }) =>\n `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`,\n StaticBlockCannotHaveModifier:\n \"Static class blocks cannot have any modifier.\",\n TupleOptionalAfterType:\n \"A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).\",\n TypeAnnotationAfterAssign:\n \"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\",\n TypeImportCannotSpecifyDefaultAndNamed:\n \"A type-only import can specify a default import or named bindings, but not both.\",\n TypeModifierIsUsedInTypeExports:\n \"The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.\",\n TypeModifierIsUsedInTypeImports:\n \"The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.\",\n UnexpectedParameterModifier:\n \"A parameter property is only allowed in a constructor implementation.\",\n UnexpectedReadonly:\n \"'readonly' type modifier is only permitted on array and tuple literal types.\",\n UnexpectedTypeAnnotation: \"Did not expect a type annotation here.\",\n UnexpectedTypeCastInParameter: \"Unexpected type cast in parameter position.\",\n UnsupportedImportTypeArgument:\n \"Argument in a type import must be a string literal.\",\n UnsupportedParameterPropertyKind:\n \"A parameter property may not be declared using a binding pattern.\",\n UnsupportedSignatureParameterKind: ({ type }: { type: string }) =>\n `Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${type}.`,\n UsingDeclarationInAmbientContext: (kind: \"using\" | \"await using\") =>\n `'${kind}' declarations are not allowed in ambient contexts.`,\n});\n\n/* eslint-disable sort-keys */\n\n// Doesn't handle \"void\" or \"null\" because those are keywords, not identifiers.\n// It also doesn't handle \"intrinsic\", since usually it's not a keyword.\nfunction keywordTypeFromName(value: string): N.TsKeywordTypeType | undefined {\n switch (value) {\n case \"any\":\n return \"TSAnyKeyword\";\n case \"boolean\":\n return \"TSBooleanKeyword\";\n case \"bigint\":\n return \"TSBigIntKeyword\";\n case \"never\":\n return \"TSNeverKeyword\";\n case \"number\":\n return \"TSNumberKeyword\";\n case \"object\":\n return \"TSObjectKeyword\";\n case \"string\":\n return \"TSStringKeyword\";\n case \"symbol\":\n return \"TSSymbolKeyword\";\n case \"undefined\":\n return \"TSUndefinedKeyword\";\n case \"unknown\":\n return \"TSUnknownKeyword\";\n default:\n return undefined;\n }\n}\n\nfunction tsIsAccessModifier(modifier: string): modifier is N.Accessibility {\n return (\n modifier === \"private\" || modifier === \"public\" || modifier === \"protected\"\n );\n}\n\nfunction tsIsVarianceAnnotations(\n modifier: string,\n): modifier is N.VarianceAnnotations {\n return modifier === \"in\" || modifier === \"out\";\n}\n\nfunction tsIsEntityName(\n node: N.Expression,\n): node is N.MemberExpression | N.Identifier | N.TsInstantiationExpression {\n if (node.extra?.parenthesized) {\n return false;\n }\n switch (node.type) {\n case \"Identifier\":\n return true;\n case \"MemberExpression\":\n return !node.computed && tsIsEntityName(node.object);\n case \"TSInstantiationExpression\":\n return tsIsEntityName(node.expression);\n default:\n return false;\n }\n}\n\nexport const enum tsParseEntityNameFlags {\n NONE = 0b00,\n ALLOW_RESERVED_WORDS = 0b01,\n LEADING_THIS_AS_IDENTIFIER = 0b10,\n}\n\nexport default (superClass: ClassWithMixin<typeof Parser, IJSXParserMixin>) =>\n class TypeScriptParserMixin extends superClass implements Parser {\n getScopeHandler(): new (...args: any) => TypeScriptScopeHandler {\n return TypeScriptScopeHandler;\n }\n\n tsIsIdentifier(): boolean {\n // TODO: actually a bit more complex in TypeScript, but shouldn't matter.\n // See https://github.com/Microsoft/TypeScript/issues/15008\n return tokenIsIdentifier(this.state.type);\n }\n\n tsTokenCanFollowModifier() {\n return (\n this.match(tt.bracketL) ||\n this.match(tt.braceL) ||\n this.match(tt.star) ||\n this.match(tt.ellipsis) ||\n this.match(tt.privateName) ||\n this.isLiteralPropertyName()\n );\n }\n\n tsNextTokenOnSameLineAndCanFollowModifier() {\n this.next();\n if (this.hasPrecedingLineBreak()) {\n return false;\n }\n return this.tsTokenCanFollowModifier();\n }\n\n tsNextTokenCanFollowModifier() {\n // Note: TypeScript's implementation is much more complicated because\n // more things are considered modifiers there.\n // This implementation only handles modifiers not handled by @babel/parser itself. And \"static\".\n if (this.match(tt._static)) {\n this.next();\n return this.tsTokenCanFollowModifier();\n }\n return this.tsNextTokenOnSameLineAndCanFollowModifier();\n }\n\n /** Parses a modifier matching one the given modifier names. */\n tsParseModifier<T extends TsModifier>(\n allowedModifiers: T[],\n stopOnStartOfClassStaticBlock?: boolean,\n hasSeenStaticModifier?: boolean | null,\n ): T | undefined | null {\n if (\n !tokenIsIdentifier(this.state.type) &&\n this.state.type !== tt._in &&\n this.state.type !== tt._const\n ) {\n return undefined;\n }\n\n const modifier = this.state.value;\n if (allowedModifiers.includes(modifier)) {\n if (hasSeenStaticModifier && this.match(tt._static)) {\n return undefined;\n }\n if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) {\n return undefined;\n }\n if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) {\n return modifier;\n }\n }\n return undefined;\n }\n\n /** Parses a list of modifiers, in any order.\n * If you need a specific order, you must call this function multiple times:\n * this.tsParseModifiers({ modified: node, allowedModifiers: [\"public\"] });\n * this.tsParseModifiers({ modified: node, allowedModifiers: [\"abstract\", \"readonly\"] });\n */\n tsParseModifiers<N extends ModifierBase>(\n {\n allowedModifiers,\n disallowedModifiers,\n stopOnStartOfClassStaticBlock,\n errorTemplate = TSErrors.InvalidModifierOnTypeMember,\n }: {\n allowedModifiers: readonly TsModifier[];\n disallowedModifiers?: TsModifier[];\n stopOnStartOfClassStaticBlock?: boolean;\n errorTemplate?: typeof TSErrors.InvalidModifierOnTypeMember;\n },\n modified: N,\n ): void {\n const enforceOrder = (\n loc: Position,\n modifier: TsModifier,\n before: TsModifier,\n after: TsModifier,\n ) => {\n if (modifier === before && modified[after]) {\n this.raise(TSErrors.InvalidModifiersOrder, loc, {\n orderedModifiers: [before, after],\n });\n }\n };\n const incompatible = (\n loc: Position,\n modifier: TsModifier,\n mod1: TsModifier,\n mod2: TsModifier,\n ) => {\n if (\n (modified[mod1] && modifier === mod2) ||\n (modified[mod2] && modifier === mod1)\n ) {\n this.raise(TSErrors.IncompatibleModifiers, loc, {\n modifiers: [mod1, mod2],\n });\n }\n };\n\n for (;;) {\n const { startLoc } = this.state;\n const modifier: TsModifier | undefined | null = this.tsParseModifier(\n allowedModifiers.concat(disallowedModifiers ?? []),\n stopOnStartOfClassStaticBlock,\n modified.static,\n );\n\n if (!modifier) break;\n\n if (tsIsAccessModifier(modifier)) {\n if (modified.accessibility) {\n this.raise(TSErrors.DuplicateAccessibilityModifier, startLoc, {\n modifier,\n });\n } else {\n enforceOrder(startLoc, modifier, modifier, \"override\");\n enforceOrder(startLoc, modifier, modifier, \"static\");\n enforceOrder(startLoc, modifier, modifier, \"readonly\");\n\n modified.accessibility = modifier;\n }\n } else if (tsIsVarianceAnnotations(modifier)) {\n if (modified[modifier]) {\n this.raise(TSErrors.DuplicateModifier, startLoc, { modifier });\n }\n modified[modifier] = true;\n\n enforceOrder(startLoc, modifier, \"in\", \"out\");\n } else {\n if (Object.hasOwn(modified, modifier)) {\n this.raise(TSErrors.DuplicateModifier, startLoc, { modifier });\n } else {\n enforceOrder(startLoc, modifier, \"static\", \"readonly\");\n enforceOrder(startLoc, modifier, \"static\", \"override\");\n enforceOrder(startLoc, modifier, \"override\", \"readonly\");\n enforceOrder(startLoc, modifier, \"abstract\", \"override\");\n\n incompatible(startLoc, modifier, \"declare\", \"override\");\n incompatible(startLoc, modifier, \"static\", \"abstract\");\n }\n modified[modifier] = true;\n }\n\n if (disallowedModifiers?.includes(modifier)) {\n this.raise(errorTemplate, startLoc, {\n modifier,\n });\n }\n }\n }\n\n tsIsListTerminator(kind: ParsingContext): boolean {\n switch (kind) {\n case \"EnumMembers\":\n case \"TypeMembers\":\n return this.match(tt.braceR);\n case \"HeritageClauseElement\":\n return this.match(tt.braceL);\n case \"TupleElementTypes\":\n return this.match(tt.bracketR);\n case \"TypeParametersOrArguments\":\n return this.match(tt.gt);\n }\n }\n\n tsParseList<T extends N.Node>(\n kind: ParsingContext,\n parseElement: () => T,\n ): T[] {\n const result: T[] = [];\n while (!this.tsIsListTerminator(kind)) {\n // Skipping \"parseListElement\" from the TS source since that's just for error handling.\n result.push(parseElement());\n }\n return result;\n }\n\n tsParseDelimitedList<T extends N.Node>(\n kind: ParsingContext,\n parseElement: () => T,\n refTrailingCommaPos?: {\n value: number;\n },\n ): T[] {\n return nonNull(\n this.tsParseDelimitedListWorker(\n kind,\n parseElement,\n /* expectSuccess */ true,\n refTrailingCommaPos,\n ),\n );\n }\n\n /**\n * If !expectSuccess, returns undefined instead of failing to parse.\n * If expectSuccess, parseElement should always return a defined value.\n */\n tsParseDelimitedListWorker<T extends N.Node>(\n kind: ParsingContext,\n parseElement: () => T | undefined,\n expectSuccess: boolean,\n refTrailingCommaPos?: {\n value: number;\n },\n ): T[] | undefined {\n const result: T[] = [];\n let trailingCommaPos = -1;\n\n for (;;) {\n if (this.tsIsListTerminator(kind)) {\n break;\n }\n trailingCommaPos = -1;\n\n const element = parseElement();\n if (element == null) {\n return undefined;\n }\n result.push(element);\n\n if (this.eat(tt.comma)) {\n trailingCommaPos = this.state.lastTokStartLoc!.index;\n continue;\n }\n\n if (this.tsIsListTerminator(kind)) {\n break;\n }\n\n if (expectSuccess) {\n // This will fail with an error about a missing comma\n this.expect(tt.comma);\n }\n return undefined;\n }\n\n if (refTrailingCommaPos) {\n refTrailingCommaPos.value = trailingCommaPos;\n }\n\n return result;\n }\n\n tsParseBracketedList<T extends N.Node>(\n kind: ParsingContext,\n parseElement: () => T,\n bracket: boolean,\n skipFirstToken: boolean,\n refTrailingCommaPos?: {\n value: number;\n },\n ): T[] {\n if (!skipFirstToken) {\n if (bracket) {\n this.expect(tt.bracketL);\n } else {\n this.expect(tt.lt);\n }\n }\n\n const result = this.tsParseDelimitedList(\n kind,\n parseElement,\n refTrailingCommaPos,\n );\n\n if (bracket) {\n this.expect(tt.bracketR);\n } else {\n this.expect(tt.gt);\n }\n\n return result;\n }\n\n tsParseImportType(): N.TsImportType {\n const node = this.startNode<N.TsImportType>();\n this.expect(tt._import);\n this.expect(tt.parenL);\n if (!this.match(tt.string)) {\n this.raise(TSErrors.UnsupportedImportTypeArgument, this.state.startLoc);\n if (process.env.BABEL_8_BREAKING) {\n // Consume as an non-conditional type so that we can recover from this error\n node.source = this.tsParseNonConditionalType() as any;\n } else {\n node.argument = super.parseExprAtom() as any;\n }\n } else {\n if (process.env.BABEL_8_BREAKING) {\n node.source = this.parseStringLiteral(this.state.value);\n } else {\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n node.argument = this.parseStringLiteral(this.state.value);\n }\n }\n if (this.eat(tt.comma)) {\n node.options = this.tsParseImportTypeOptions();\n } else {\n node.options = null;\n }\n this.expect(tt.parenR);\n\n if (this.eat(tt.dot)) {\n // In this instance, the entity name will actually itself be a\n // qualifier, so allow it to be a reserved word as well.\n node.qualifier = this.tsParseEntityName(\n tsParseEntityNameFlags.ALLOW_RESERVED_WORDS |\n tsParseEntityNameFlags.LEADING_THIS_AS_IDENTIFIER,\n );\n }\n if (this.match(tt.lt)) {\n if (process.env.BABEL_8_BREAKING) {\n node.typeArguments = this.tsParseTypeArguments();\n } else {\n node.typeParameters = this.tsParseTypeArguments();\n }\n }\n return this.finishNode(node, \"TSImportType\");\n }\n\n tsParseImportTypeOptions(): N.ObjectExpression {\n const node = this.startNode<N.ObjectExpression>();\n this.expect(tt.braceL);\n const withProperty = this.startNode<N.ObjectProperty>();\n if (this.isContextual(tt._with)) {\n withProperty.method = false;\n withProperty.key = this.parseIdentifier(true);\n withProperty.computed = false;\n withProperty.shorthand = false;\n } else {\n this.unexpected(null, tt._with);\n }\n this.expect(tt.colon);\n withProperty.value = this.tsParseImportTypeWithPropertyValue();\n node.properties = [this.finishObjectProperty(withProperty)];\n this.eat(tt.comma);\n this.expect(tt.braceR);\n return this.finishNode(node, \"ObjectExpression\");\n }\n\n tsParseImportTypeWithPropertyValue(): N.ObjectExpression {\n const node = this.startNode<N.ObjectExpression>();\n const properties = [];\n this.expect(tt.braceL);\n while (!this.match(tt.braceR)) {\n const type = this.state.type;\n if (tokenIsIdentifier(type) || type === tt.string) {\n properties.push(super.parsePropertyDefinition(null));\n } else {\n this.unexpected();\n }\n this.eat(tt.comma);\n }\n node.properties = properties;\n this.next(); // eat }\n return this.finishNode(node, \"ObjectExpression\");\n }\n\n tsParseEntityName(flags: tsParseEntityNameFlags): N.TsEntityName {\n let entity: N.TsEntityName;\n if (\n flags & tsParseEntityNameFlags.ALLOW_RESERVED_WORDS &&\n this.match(tt._this)\n ) {\n if (flags & tsParseEntityNameFlags.LEADING_THIS_AS_IDENTIFIER) {\n entity = this.parseIdentifier(true);\n } else {\n const node = this.startNode<N.ThisExpression>();\n this.next();\n entity = this.finishNode(node, \"ThisExpression\");\n }\n } else {\n entity = this.parseIdentifier(\n !!(flags & tsParseEntityNameFlags.ALLOW_RESERVED_WORDS),\n );\n }\n while (this.eat(tt.dot)) {\n const node: Undone<N.TsQualifiedName> =\n this.startNodeAtNode<N.TsQualifiedName>(entity);\n node.left = entity;\n node.right = this.parseIdentifier(\n !!(flags & tsParseEntityNameFlags.ALLOW_RESERVED_WORDS),\n );\n entity = this.finishNode(node, \"TSQualifiedName\");\n }\n return entity;\n }\n\n tsParseTypeReference(): N.TsTypeReference {\n const node = this.startNode<N.TsTypeReference>();\n node.typeName = this.tsParseEntityName(\n tsParseEntityNameFlags.ALLOW_RESERVED_WORDS,\n );\n if (!this.hasPrecedingLineBreak() && this.match(tt.lt)) {\n if (process.env.BABEL_8_BREAKING) {\n node.typeArguments = this.tsParseTypeArguments();\n } else {\n node.typeParameters = this.tsParseTypeArguments();\n }\n }\n return this.finishNode(node, \"TSTypeReference\");\n }\n\n tsParseThisTypePredicate(lhs: N.TsThisType): N.TsTypePredicate {\n this.next();\n const node = this.startNodeAtNode<N.TsTypePredicate>(lhs);\n node.parameterName = lhs;\n node.typeAnnotation = this.tsParseTypeAnnotation(/* eatColon */ false);\n node.asserts = false;\n return this.finishNode(node, \"TSTypePredicate\");\n }\n\n tsParseThisTypeNode(): N.TsThisType {\n const node = this.startNode<N.TsThisType>();\n this.next();\n return this.finishNode(node, \"TSThisType\");\n }\n\n tsParseTypeQuery(): N.TsTypeQuery {\n const node = this.startNode<N.TsTypeQuery>();\n this.expect(tt._typeof);\n if (this.match(tt._import)) {\n node.exprName = this.tsParseImportType();\n } else {\n if (process.env.BABEL_8_BREAKING) {\n node.exprName = this.tsParseEntityName(\n tsParseEntityNameFlags.ALLOW_RESERVED_WORDS,\n );\n } else {\n node.exprName = this.tsParseEntityName(\n tsParseEntityNameFlags.ALLOW_RESERVED_WORDS |\n tsParseEntityNameFlags.LEADING_THIS_AS_IDENTIFIER,\n );\n }\n }\n if (!this.hasPrecedingLineBreak() && this.match(tt.lt)) {\n if (process.env.BABEL_8_BREAKING) {\n node.typeArguments = this.tsParseTypeArguments();\n } else {\n node.typeParameters = this.tsParseTypeArguments();\n }\n }\n return this.finishNode(node, \"TSTypeQuery\");\n }\n\n tsParseInOutModifiers = this.tsParseModifiers.bind(this, {\n allowedModifiers: [\"in\", \"out\"],\n disallowedModifiers: [\n \"const\",\n \"public\",\n \"private\",\n \"protected\",\n \"readonly\",\n \"declare\",\n \"abstract\",\n \"override\",\n ],\n errorTemplate: TSErrors.InvalidModifierOnTypeParameter,\n });\n\n tsParseConstModifier = this.tsParseModifiers.bind(this, {\n allowedModifiers: [\"const\"],\n // for better error recovery\n disallowedModifiers: [\"in\", \"out\"],\n errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions,\n });\n\n tsParseInOutConstModifiers = this.tsParseModifiers.bind(this, {\n allowedModifiers: [\"in\", \"out\", \"const\"],\n disallowedModifiers: [\n \"public\",\n \"private\",\n \"protected\",\n \"readonly\",\n \"declare\",\n \"abstract\",\n \"override\",\n ],\n errorTemplate: TSErrors.InvalidModifierOnTypeParameter,\n });\n\n tsParseTypeParameter(\n parseModifiers: (node: Undone<N.TsTypeParameter>) => void,\n ): N.TsTypeParameter {\n const node = this.startNode<N.TsTypeParameter>();\n\n parseModifiers(node);\n\n node.name = this.tsParseTypeParameterName();\n node.constraint = this.tsEatThenParseType(tt._extends);\n node.default = this.tsEatThenParseType(tt.eq);\n return this.finishNode(node, \"TSTypeParameter\");\n }\n\n tsTryParseTypeParameters(\n parseModifiers: (node: N.TsTypeParameter) => void,\n ): N.TsTypeParameterDeclaration | undefined | null {\n if (this.match(tt.lt)) {\n return this.tsParseTypeParameters(parseModifiers);\n }\n }\n\n tsParseTypeParameters(parseModifiers: (node: N.TsTypeParameter) => void) {\n const node = this.startNode<N.TsTypeParameterDeclaration>();\n\n if (this.match(tt.lt) || this.match(tt.jsxTagStart)) {\n this.next();\n } else {\n this.unexpected();\n }\n\n const refTrailingCommaPos = { value: -1 };\n\n node.params = this.tsParseBracketedList(\n \"TypeParametersOrArguments\",\n this.tsParseTypeParameter.bind(this, parseModifiers),\n /* bracket */ false,\n /* skipFirstToken */ true,\n refTrailingCommaPos,\n );\n if (node.params.length === 0) {\n this.raise(TSErrors.EmptyTypeParameters, node);\n }\n if (refTrailingCommaPos.value !== -1) {\n this.addExtra(node, \"trailingComma\", refTrailingCommaPos.value);\n }\n return this.finishNode(node, \"TSTypeParameterDeclaration\");\n }\n\n // Note: In TypeScript implementation we must provide `yieldContext` and `awaitContext`,\n // but here it's always false, because this is only used for types.\n tsFillSignature(\n returnToken: TokenType,\n signature: Undone<N.TsSignatureDeclaration>,\n ): void {\n // Arrow fns *must* have return token (`=>`). Normal functions can omit it.\n const returnTokenRequired = returnToken === tt.arrow;\n\n // https://github.com/babel/babel/issues/9231\n const paramsKey = process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\";\n const returnTypeKey = process.env.BABEL_8_BREAKING\n ? \"returnType\"\n : \"typeAnnotation\";\n\n signature.typeParameters = this.tsTryParseTypeParameters(\n this.tsParseConstModifier,\n );\n this.expect(tt.parenL);\n signature[paramsKey] = this.tsParseBindingListForSignature();\n if (returnTokenRequired) {\n signature[returnTypeKey] =\n this.tsParseTypeOrTypePredicateAnnotation(returnToken);\n } else if (this.match(returnToken)) {\n signature[returnTypeKey] =\n this.tsParseTypeOrTypePredicateAnnotation(returnToken);\n }\n }\n\n tsParseBindingListForSignature(): (\n | N.Identifier\n | N.RestElement\n | N.ObjectPattern\n | N.ArrayPattern\n | N.VoidPattern\n )[] {\n const list = super.parseBindingList(\n tt.parenR,\n charCodes.rightParenthesis,\n ParseBindingListFlags.IS_FUNCTION_PARAMS,\n );\n for (const pattern of list) {\n const { type } = pattern;\n if (type === \"AssignmentPattern\" || type === \"TSParameterProperty\") {\n this.raise(TSErrors.UnsupportedSignatureParameterKind, pattern, {\n type,\n });\n }\n }\n return list as Exclude<\n (typeof list)[0],\n N.AssignmentPattern | N.TSParameterProperty\n >[];\n }\n\n tsParseTypeMemberSemicolon(): void {\n if (!this.eat(tt.comma) && !this.isLineTerminator()) {\n this.expect(tt.semi);\n }\n }\n\n tsParseSignatureMember(\n kind: \"TSCallSignatureDeclaration\" | \"TSConstructSignatureDeclaration\",\n node: Undone<\n N.TsCallSignatureDeclaration | N.TsConstructSignatureDeclaration\n >,\n ): N.TsCallSignatureDeclaration | N.TsConstructSignatureDeclaration {\n this.tsFillSignature(tt.colon, node);\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(node, kind);\n }\n\n tsIsUnambiguouslyIndexSignature() {\n this.next(); // Skip '{'\n if (tokenIsIdentifier(this.state.type)) {\n this.next();\n return this.match(tt.colon);\n }\n return false;\n }\n\n tsTryParseIndexSignature(\n node: Undone<N.TsIndexSignature>,\n ): N.TsIndexSignature | undefined {\n if (\n !(\n this.match(tt.bracketL) &&\n this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this))\n )\n ) {\n return;\n }\n\n this.expect(tt.bracketL);\n const id = this.parseIdentifier();\n id.typeAnnotation = this.tsParseTypeAnnotation();\n this.resetEndLocation(id); // set end position to end of type\n\n this.expect(tt.bracketR);\n node.parameters = [id];\n\n const type = this.tsTryParseTypeAnnotation();\n if (type) node.typeAnnotation = type;\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(node, \"TSIndexSignature\");\n }\n\n tsParsePropertyOrMethodSignature(\n node: Undone<N.TsPropertySignature | N.TsMethodSignature>,\n readonly: boolean,\n ): N.TsPropertySignature | N.TsMethodSignature {\n if (this.eat(tt.question)) node.optional = true;\n\n if (this.match(tt.parenL) || this.match(tt.lt)) {\n if (readonly) {\n this.raise(TSErrors.ReadonlyForMethodSignature, node);\n }\n const method = node as Undone<N.TsMethodSignature>;\n if (method.kind && this.match(tt.lt)) {\n this.raise(\n TSErrors.AccessorCannotHaveTypeParameters,\n this.state.curPosition(),\n );\n }\n this.tsFillSignature(tt.colon, method);\n this.tsParseTypeMemberSemicolon();\n const paramsKey = process.env.BABEL_8_BREAKING\n ? \"params\"\n : \"parameters\";\n const returnTypeKey = process.env.BABEL_8_BREAKING\n ? \"returnType\"\n : \"typeAnnotation\";\n if (method.kind === \"get\") {\n if (method[paramsKey].length > 0) {\n this.raise(Errors.BadGetterArity, this.state.curPosition());\n if (this.isThisParam(method[paramsKey][0])) {\n this.raise(\n TSErrors.AccessorCannotDeclareThisParameter,\n this.state.curPosition(),\n );\n }\n }\n } else if (method.kind === \"set\") {\n if (method[paramsKey].length !== 1) {\n this.raise(Errors.BadSetterArity, this.state.curPosition());\n } else {\n const firstParameter = method[paramsKey][0];\n if (this.isThisParam(firstParameter)) {\n this.raise(\n TSErrors.AccessorCannotDeclareThisParameter,\n this.state.curPosition(),\n );\n }\n if (\n firstParameter.type === \"Identifier\" &&\n firstParameter.optional\n ) {\n this.raise(\n TSErrors.SetAccessorCannotHaveOptionalParameter,\n this.state.curPosition(),\n );\n }\n if (firstParameter.type === \"RestElement\") {\n this.raise(\n TSErrors.SetAccessorCannotHaveRestParameter,\n this.state.curPosition(),\n );\n }\n }\n if (method[returnTypeKey]) {\n this.raise(\n TSErrors.SetAccessorCannotHaveReturnType,\n method[returnTypeKey],\n );\n }\n } else {\n method.kind = \"method\";\n }\n return this.finishNode(method, \"TSMethodSignature\");\n } else {\n const property = node as Undone<N.TsPropertySignature>;\n if (readonly) property.readonly = true;\n const type = this.tsTryParseTypeAnnotation();\n if (type) property.typeAnnotation = type;\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(property, \"TSPropertySignature\");\n }\n }\n\n tsParseTypeMember(): N.TsTypeElement {\n const node: any = this.startNode();\n\n if (this.match(tt.parenL) || this.match(tt.lt)) {\n return this.tsParseSignatureMember(\"TSCallSignatureDeclaration\", node);\n }\n\n if (this.match(tt._new)) {\n const id = this.startNode<N.Identifier>();\n this.next();\n if (this.match(tt.parenL) || this.match(tt.lt)) {\n return this.tsParseSignatureMember(\n \"TSConstructSignatureDeclaration\",\n node,\n );\n } else {\n node.key = this.createIdentifier(id, \"new\");\n return this.tsParsePropertyOrMethodSignature(node, false);\n }\n }\n\n this.tsParseModifiers(\n {\n allowedModifiers: [\"readonly\"],\n disallowedModifiers: [\n \"declare\",\n \"abstract\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"override\",\n ],\n },\n node,\n );\n\n const idx = this.tsTryParseIndexSignature(node);\n if (idx) {\n return idx;\n }\n\n super.parsePropertyName(node);\n if (\n !node.computed &&\n node.key.type === \"Identifier\" &&\n (node.key.name === \"get\" || node.key.name === \"set\") &&\n this.tsTokenCanFollowModifier()\n ) {\n node.kind = node.key.name;\n super.parsePropertyName(node);\n // Allow < here so that we can recover from get key<T> later\n if (!this.match(tt.parenL) && !this.match(tt.lt)) {\n this.unexpected(null, tt.parenL);\n }\n }\n return this.tsParsePropertyOrMethodSignature(node, !!node.readonly);\n }\n\n tsParseTypeLiteral(): N.TsTypeLiteral {\n const node = this.startNode<N.TsTypeLiteral>();\n node.members = this.tsParseObjectTypeMembers();\n return this.finishNode(node, \"TSTypeLiteral\");\n }\n\n tsParseObjectTypeMembers(): N.TsTypeElement[] {\n this.expect(tt.braceL);\n const members = this.tsParseList(\n \"TypeMembers\",\n this.tsParseTypeMember.bind(this),\n );\n this.expect(tt.braceR);\n return members;\n }\n\n tsIsStartOfMappedType(): boolean {\n this.next();\n if (this.eat(tt.plusMin)) {\n return this.isContextual(tt._readonly);\n }\n if (this.isContextual(tt._readonly)) {\n this.next();\n }\n if (!this.match(tt.bracketL)) {\n return false;\n }\n this.next();\n if (!this.tsIsIdentifier()) {\n return false;\n }\n this.next();\n return this.match(tt._in);\n }\n\n tsParseMappedType(): N.TsMappedType {\n const node = this.startNode<N.TsMappedType>();\n\n this.expect(tt.braceL);\n\n if (this.match(tt.plusMin)) {\n node.readonly = this.state.value;\n this.next();\n this.expectContextual(tt._readonly);\n } else if (this.eatContextual(tt._readonly)) {\n node.readonly = true;\n }\n\n this.expect(tt.bracketL);\n if (process.env.BABEL_8_BREAKING) {\n node.key = this.tsParseTypeParameterName() as N.Identifier;\n node.constraint = this.tsExpectThenParseType(tt._in);\n } else {\n const typeParameter = this.startNode<N.TsTypeParameter>();\n typeParameter.name = this.tsParseTypeParameterName();\n typeParameter.constraint = this.tsExpectThenParseType(tt._in);\n // @ts-expect-error for Babel 7\n node.typeParameter = this.finishNode(typeParameter, \"TSTypeParameter\");\n }\n node.nameType = this.eatContextual(tt._as) ? this.tsParseType() : null;\n\n this.expect(tt.bracketR);\n\n if (this.match(tt.plusMin)) {\n node.optional = this.state.value;\n this.next();\n this.expect(tt.question);\n } else if (this.eat(tt.question)) {\n node.optional = true;\n }\n\n node.typeAnnotation = this.tsTryParseType();\n this.semicolon();\n this.expect(tt.braceR);\n\n return this.finishNode(node, \"TSMappedType\");\n }\n\n tsParseTupleType(): N.TsTupleType {\n const node = this.startNode<N.TsTupleType>();\n node.elementTypes = this.tsParseBracketedList(\n \"TupleElementTypes\",\n this.tsParseTupleElementType.bind(this),\n /* bracket */ true,\n /* skipFirstToken */ false,\n );\n\n // Validate the elementTypes to ensure that no mandatory elements\n // follow optional elements\n let seenOptionalElement = false;\n node.elementTypes.forEach(elementNode => {\n const { type } = elementNode;\n\n if (\n seenOptionalElement &&\n type !== \"TSRestType\" &&\n type !== \"TSOptionalType\" &&\n !(type === \"TSNamedTupleMember\" && elementNode.optional)\n ) {\n this.raise(TSErrors.OptionalTypeBeforeRequired, elementNode);\n }\n\n seenOptionalElement ||=\n (type === \"TSNamedTupleMember\" && elementNode.optional) ||\n type === \"TSOptionalType\";\n });\n\n return this.finishNode(node, \"TSTupleType\");\n }\n\n tsParseTupleElementType(): N.TsNamedTupleMember | N.TsType {\n // parses `...TsType[]`\n\n const restStartLoc = this.state.startLoc;\n\n const rest = this.eat(tt.ellipsis);\n const { startLoc } = this.state;\n\n let labeled: boolean;\n let label: N.Identifier;\n let optional: boolean;\n let type: N.TsNamedTupleMember | N.TsType;\n\n const isWord = tokenIsKeywordOrIdentifier(this.state.type);\n const chAfterWord = isWord ? this.lookaheadCharCode() : null;\n if (chAfterWord === charCodes.colon) {\n labeled = true;\n optional = false;\n label = this.parseIdentifier(true);\n this.expect(tt.colon);\n type = this.tsParseType();\n } else if (chAfterWord === charCodes.questionMark) {\n optional = true;\n const wordName = this.state.value;\n const typeOrLabel = this.tsParseNonArrayType();\n\n if (this.lookaheadCharCode() === charCodes.colon) {\n labeled = true;\n label = this.createIdentifier(\n this.startNodeAt<N.Identifier>(startLoc),\n wordName,\n );\n this.expect(tt.question);\n this.expect(tt.colon);\n type = this.tsParseType();\n } else {\n labeled = false;\n type = typeOrLabel;\n this.expect(tt.question);\n }\n } else {\n type = this.tsParseType();\n optional = this.eat(tt.question);\n // In this case (labeled === true) could be only in invalid label.\n // E.g. [x.y:type]\n // An error is raised while processing node.\n labeled = this.eat(tt.colon);\n }\n\n if (labeled) {\n let labeledNode: Undone<N.TsNamedTupleMember>;\n if (label!) {\n labeledNode = this.startNodeAt<N.TsNamedTupleMember>(startLoc);\n labeledNode.optional = optional;\n labeledNode.label = label;\n labeledNode.elementType = type;\n\n if (this.eat(tt.question)) {\n labeledNode.optional = true;\n this.raise(\n TSErrors.TupleOptionalAfterType,\n this.state.lastTokStartLoc!,\n );\n }\n } else {\n labeledNode = this.startNodeAt<N.TsNamedTupleMember>(startLoc);\n labeledNode.optional = optional;\n this.raise(TSErrors.InvalidTupleMemberLabel, type);\n // @ts-expect-error This produces an invalid AST, but at least we don't drop\n // nodes representing the invalid source.\n labeledNode.label = type;\n labeledNode.elementType = this.tsParseType();\n }\n type = this.finishNode(labeledNode, \"TSNamedTupleMember\");\n } else if (optional) {\n const optionalTypeNode = this.startNodeAt<N.TsOptionalType>(startLoc);\n optionalTypeNode.typeAnnotation = type;\n type = this.finishNode(optionalTypeNode, \"TSOptionalType\");\n }\n\n if (rest) {\n const restNode = this.startNodeAt<N.TsRestType>(restStartLoc);\n restNode.typeAnnotation = type;\n type = this.finishNode(restNode, \"TSRestType\");\n }\n\n return type;\n }\n\n tsParseParenthesizedType(): N.TsParenthesizedType {\n const node = this.startNode<N.TsParenthesizedType>();\n this.expect(tt.parenL);\n node.typeAnnotation = this.tsParseType();\n this.expect(tt.parenR);\n return this.finishNode(node, \"TSParenthesizedType\");\n }\n\n tsParseFunctionOrConstructorType(\n type: \"TSFunctionType\" | \"TSConstructorType\",\n abstract?: boolean,\n ): N.TsFunctionOrConstructorType {\n const node = this.startNode<\n N.TsFunctionOrConstructorType | N.TsConstructorType\n >();\n if (type === \"TSConstructorType\") {\n (node as Undone<N.TsConstructorType>).abstract = !!abstract;\n if (abstract) this.next();\n this.next(); // eat `new`\n }\n this.tsInAllowConditionalTypesContext(() =>\n this.tsFillSignature(tt.arrow, node),\n );\n return this.finishNode(node, type);\n }\n\n tsParseLiteralTypeNode(): N.TsLiteralType {\n const node = this.startNode<N.TsLiteralType>();\n switch (this.state.type) {\n case tt.num:\n case tt.bigint:\n case tt.string:\n case tt._true:\n case tt._false:\n // For compatibility to estree we cannot call parseLiteral directly here\n // @ts-expect-error refine typings\n node.literal = super.parseExprAtom();\n break;\n default:\n this.unexpected();\n }\n return this.finishNode(node, \"TSLiteralType\");\n }\n\n tsParseTemplateLiteralType(): N.TsTemplateLiteralType | N.TsLiteralType {\n if (process.env.BABEL_8_BREAKING) {\n const startLoc = this.state.startLoc;\n let curElt = this.parseTemplateElement(false);\n const quasis = [curElt];\n if (curElt.tail) {\n const node = this.startNodeAt<N.TsLiteralType>(startLoc);\n const literal = this.startNodeAt<N.TemplateLiteral>(startLoc);\n literal.expressions = [];\n literal.quasis = quasis;\n node.literal = this.finishNode(literal, \"TemplateLiteral\");\n return this.finishNode(node, \"TSLiteralType\");\n } else {\n const substitutions: N.TsType[] = [];\n while (!curElt.tail) {\n substitutions.push(this.tsParseType());\n this.readTemplateContinuation();\n quasis.push((curElt = this.parseTemplateElement(false)));\n }\n const node = this.startNodeAt<N.TsTemplateLiteralType>(startLoc);\n node.types = substitutions;\n node.quasis = quasis;\n return this.finishNode(node, \"TSTemplateLiteralType\");\n }\n } else {\n const node = this.startNode<N.TsLiteralType>();\n node.literal = super.parseTemplate(false);\n return this.finishNode(node, \"TSLiteralType\");\n }\n }\n\n parseTemplateSubstitution(): N.TsType | N.Expression {\n if (this.state.inType) return this.tsParseType();\n return super.parseTemplateSubstitution();\n }\n\n tsParseThisTypeOrThisTypePredicate(): N.TsThisType | N.TsTypePredicate {\n const thisKeyword = this.tsParseThisTypeNode();\n if (this.isContextual(tt._is) && !this.hasPrecedingLineBreak()) {\n return this.tsParseThisTypePredicate(thisKeyword);\n } else {\n return thisKeyword;\n }\n }\n\n tsParseNonArrayType(): N.TsType {\n switch (this.state.type) {\n case tt.string:\n case tt.num:\n case tt.bigint:\n case tt._true:\n case tt._false:\n return this.tsParseLiteralTypeNode();\n case tt.plusMin:\n if (this.state.value === \"-\") {\n const node = this.startNode<N.TsLiteralType>();\n const nextToken = this.lookahead();\n if (nextToken.type !== tt.num && nextToken.type !== tt.bigint) {\n this.unexpected();\n }\n node.literal = this.parseMaybeUnary() as N.UnaryExpression;\n return this.finishNode(node, \"TSLiteralType\");\n }\n break;\n case tt._this:\n return this.tsParseThisTypeOrThisTypePredicate();\n case tt._typeof:\n return this.tsParseTypeQuery();\n case tt._import:\n return this.tsParseImportType();\n case tt.braceL:\n return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this))\n ? this.tsParseMappedType()\n : this.tsParseTypeLiteral();\n case tt.bracketL:\n return this.tsParseTupleType();\n case tt.parenL:\n if (process.env.BABEL_8_BREAKING) {\n if (\n !(this.optionFlags & OptionFlags.CreateParenthesizedExpressions)\n ) {\n const startLoc = this.state.startLoc;\n this.next();\n const type = this.tsParseType();\n this.expect(tt.parenR);\n this.addExtra(type, \"parenthesized\", true);\n this.addExtra(type, \"parenStart\", startLoc.index);\n return type;\n }\n }\n\n return this.tsParseParenthesizedType();\n case tt.templateNonTail:\n case tt.templateTail:\n return this.tsParseTemplateLiteralType();\n default: {\n const { type } = this.state;\n if (\n tokenIsIdentifier(type) ||\n type === tt._void ||\n type === tt._null\n ) {\n const nodeType =\n type === tt._void\n ? \"TSVoidKeyword\"\n : type === tt._null\n ? \"TSNullKeyword\"\n : keywordTypeFromName(this.state.value);\n if (\n nodeType !== undefined &&\n this.lookaheadCharCode() !== charCodes.dot\n ) {\n const node = this.startNode<N.TsKeywordType>();\n this.next();\n return this.finishNode(node, nodeType);\n }\n return this.tsParseTypeReference();\n }\n }\n }\n\n throw this.unexpected();\n }\n\n tsParseArrayTypeOrHigher(): N.TsType {\n const { startLoc } = this.state;\n let type = this.tsParseNonArrayType();\n while (!this.hasPrecedingLineBreak() && this.eat(tt.bracketL)) {\n if (this.match(tt.bracketR)) {\n const node = this.startNodeAt<N.TsArrayType>(startLoc);\n node.elementType = type;\n this.expect(tt.bracketR);\n type = this.finishNode(node, \"TSArrayType\");\n } else {\n const node = this.startNodeAt<N.TsIndexedAccessType>(startLoc);\n node.objectType = type;\n node.indexType = this.tsParseType();\n this.expect(tt.bracketR);\n type = this.finishNode(node, \"TSIndexedAccessType\");\n }\n }\n return type;\n }\n\n tsParseTypeOperator(): N.TsTypeOperator {\n const node = this.startNode<N.TsTypeOperator>();\n const operator = this.state.value;\n this.next(); // eat operator\n node.operator = operator;\n node.typeAnnotation = this.tsParseTypeOperatorOrHigher();\n\n if (operator === \"readonly\") {\n this.tsCheckTypeAnnotationForReadOnly(node);\n }\n\n return this.finishNode(node, \"TSTypeOperator\");\n }\n\n tsCheckTypeAnnotationForReadOnly(node: Undone<N.TsTypeOperator>) {\n switch (node.typeAnnotation.type) {\n case \"TSTupleType\":\n case \"TSArrayType\":\n return;\n default:\n this.raise(TSErrors.UnexpectedReadonly, node);\n }\n }\n\n tsParseInferType(): N.TsInferType {\n const node = this.startNode<N.TsInferType>();\n this.expectContextual(tt._infer);\n const typeParameter = this.startNode<N.TsTypeParameter>();\n typeParameter.name = this.tsParseTypeParameterName();\n typeParameter.constraint = this.tsTryParse(() =>\n this.tsParseConstraintForInferType(),\n );\n node.typeParameter = this.finishNode(typeParameter, \"TSTypeParameter\");\n return this.finishNode(node, \"TSInferType\");\n }\n\n tsParseConstraintForInferType() {\n if (this.eat(tt._extends)) {\n const constraint = this.tsInDisallowConditionalTypesContext(() =>\n this.tsParseType(),\n );\n if (\n this.state.inDisallowConditionalTypesContext ||\n !this.match(tt.question)\n ) {\n return constraint;\n }\n }\n }\n\n tsParseTypeOperatorOrHigher(): N.TsType {\n const isTypeOperator =\n tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc;\n return isTypeOperator\n ? this.tsParseTypeOperator()\n : this.isContextual(tt._infer)\n ? this.tsParseInferType()\n : this.tsInAllowConditionalTypesContext(() =>\n this.tsParseArrayTypeOrHigher(),\n );\n }\n\n tsParseUnionOrIntersectionType(\n kind: \"TSUnionType\" | \"TSIntersectionType\",\n parseConstituentType: () => N.TsType,\n operator: TokenType,\n ): N.TsType {\n const node = this.startNode<N.TsUnionType | N.TsIntersectionType>();\n const hasLeadingOperator = this.eat(operator);\n const types = [];\n do {\n types.push(parseConstituentType());\n } while (this.eat(operator));\n if (types.length === 1 && !hasLeadingOperator) {\n return types[0];\n }\n node.types = types;\n return this.finishNode(node, kind);\n }\n\n tsParseIntersectionTypeOrHigher(): N.TsType {\n return this.tsParseUnionOrIntersectionType(\n \"TSIntersectionType\",\n this.tsParseTypeOperatorOrHigher.bind(this),\n tt.bitwiseAND,\n );\n }\n\n tsParseUnionTypeOrHigher() {\n return this.tsParseUnionOrIntersectionType(\n \"TSUnionType\",\n this.tsParseIntersectionTypeOrHigher.bind(this),\n tt.bitwiseOR,\n );\n }\n\n tsIsStartOfFunctionType() {\n if (this.match(tt.lt)) {\n return true;\n }\n return (\n this.match(tt.parenL) &&\n this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this))\n );\n }\n\n tsSkipParameterStart(): boolean {\n if (tokenIsIdentifier(this.state.type) || this.match(tt._this)) {\n this.next();\n return true;\n }\n\n if (this.match(tt.braceL)) {\n // Return true if we can parse an object pattern without errors\n const { errors } = this.state;\n const previousErrorCount = errors.length;\n try {\n this.parseObjectLike(tt.braceR, true);\n return errors.length === previousErrorCount;\n } catch {\n return false;\n }\n }\n\n if (this.match(tt.bracketL)) {\n this.next();\n // Return true if we can parse an array pattern without errors\n const { errors } = this.state;\n const previousErrorCount = errors.length;\n try {\n super.parseBindingList(\n tt.bracketR,\n charCodes.rightSquareBracket,\n ParseBindingListFlags.ALLOW_EMPTY,\n );\n return errors.length === previousErrorCount;\n } catch {\n return false;\n }\n }\n\n return false;\n }\n\n tsIsUnambiguouslyStartOfFunctionType(): boolean {\n this.next();\n if (this.match(tt.parenR) || this.match(tt.ellipsis)) {\n // ( )\n // ( ...\n return true;\n }\n if (this.tsSkipParameterStart()) {\n if (\n this.match(tt.colon) ||\n this.match(tt.comma) ||\n this.match(tt.question) ||\n this.match(tt.eq)\n ) {\n // ( xxx :\n // ( xxx ,\n // ( xxx ?\n // ( xxx =\n return true;\n }\n if (this.match(tt.parenR)) {\n this.next();\n if (this.match(tt.arrow)) {\n // ( xxx ) =>\n return true;\n }\n }\n }\n return false;\n }\n\n tsParseTypeOrTypePredicateAnnotation(\n returnToken: TokenType,\n ): N.TsTypeAnnotation {\n return this.tsInType(() => {\n const t = this.startNode<N.TsTypeAnnotation>();\n this.expect(returnToken);\n\n const node = this.startNode<N.TsTypePredicate>();\n\n const asserts = !!this.tsTryParse(\n this.tsParseTypePredicateAsserts.bind(this),\n );\n\n if (asserts && this.match(tt._this)) {\n // When asserts is false, thisKeyword is handled by tsParseNonArrayType\n // : asserts this is type\n let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate();\n // if it turns out to be a `TSThisType`, wrap it with `TSTypePredicate`\n // : asserts this\n if (thisTypePredicate.type === \"TSThisType\") {\n node.parameterName = thisTypePredicate;\n node.asserts = true;\n (node as N.TsTypePredicate).typeAnnotation = null;\n thisTypePredicate = this.finishNode(node, \"TSTypePredicate\");\n } else {\n this.resetStartLocationFromNode(thisTypePredicate, node);\n thisTypePredicate.asserts = true;\n }\n t.typeAnnotation = thisTypePredicate;\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n\n const typePredicateVariable =\n this.tsIsIdentifier() &&\n this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this));\n\n if (!typePredicateVariable) {\n if (!asserts) {\n // : type\n return this.tsParseTypeAnnotation(/* eatColon */ false, t);\n }\n\n // : asserts foo\n node.parameterName = this.parseIdentifier();\n node.asserts = asserts;\n (node as N.TsTypePredicate).typeAnnotation = null;\n t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n\n // : asserts foo is type\n const type = this.tsParseTypeAnnotation(/* eatColon */ false);\n node.parameterName = typePredicateVariable;\n node.typeAnnotation = type;\n node.asserts = asserts;\n t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n return this.finishNode(t, \"TSTypeAnnotation\");\n });\n }\n\n tsTryParseTypeOrTypePredicateAnnotation(): N.TsTypeAnnotation | undefined {\n if (this.match(tt.colon)) {\n return this.tsParseTypeOrTypePredicateAnnotation(tt.colon);\n }\n }\n\n tsTryParseTypeAnnotation(): N.TsTypeAnnotation | undefined {\n if (this.match(tt.colon)) {\n return this.tsParseTypeAnnotation();\n }\n }\n\n tsTryParseType(): N.TsType | undefined {\n return this.tsEatThenParseType(tt.colon);\n }\n\n tsParseTypePredicatePrefix(): N.Identifier | undefined {\n const id = this.parseIdentifier();\n if (this.isContextual(tt._is) && !this.hasPrecedingLineBreak()) {\n this.next();\n return id;\n }\n }\n\n tsParseTypePredicateAsserts(): boolean {\n if (this.state.type !== tt._asserts) {\n return false;\n }\n const containsEsc = this.state.containsEsc;\n this.next();\n if (!tokenIsIdentifier(this.state.type) && !this.match(tt._this)) {\n return false;\n }\n\n if (containsEsc) {\n this.raise(\n Errors.InvalidEscapedReservedWord,\n this.state.lastTokStartLoc!,\n {\n reservedWord: \"asserts\",\n },\n );\n }\n\n return true;\n }\n\n tsParseTypeAnnotation(\n eatColon = true,\n t: Undone<N.TsTypeAnnotation> = this.startNode<N.TsTypeAnnotation>(),\n ): N.TsTypeAnnotation {\n this.tsInType(() => {\n if (eatColon) this.expect(tt.colon);\n t.typeAnnotation = this.tsParseType();\n });\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n\n /** Be sure to be in a type context before calling this, using `tsInType`. */\n tsParseType(): N.TsType {\n // Need to set `state.inType` so that we don't parse JSX in a type context.\n assert(this.state.inType);\n const type = this.tsParseNonConditionalType();\n\n if (\n this.state.inDisallowConditionalTypesContext ||\n this.hasPrecedingLineBreak() ||\n !this.eat(tt._extends)\n ) {\n return type;\n }\n const node = this.startNodeAtNode<N.TsConditionalType>(type);\n node.checkType = type;\n\n node.extendsType = this.tsInDisallowConditionalTypesContext(() =>\n this.tsParseNonConditionalType(),\n );\n\n this.expect(tt.question);\n node.trueType = this.tsInAllowConditionalTypesContext(() =>\n this.tsParseType(),\n );\n\n this.expect(tt.colon);\n node.falseType = this.tsInAllowConditionalTypesContext(() =>\n this.tsParseType(),\n );\n\n return this.finishNode(node, \"TSConditionalType\");\n }\n\n isAbstractConstructorSignature(): boolean {\n return (\n this.isContextual(tt._abstract) && this.isLookaheadContextual(\"new\")\n );\n }\n\n tsParseNonConditionalType(): N.TsType {\n if (this.tsIsStartOfFunctionType()) {\n return this.tsParseFunctionOrConstructorType(\"TSFunctionType\");\n }\n if (this.match(tt._new)) {\n // As in `new () => Date`\n return this.tsParseFunctionOrConstructorType(\"TSConstructorType\");\n } else if (this.isAbstractConstructorSignature()) {\n // As in `abstract new () => Date`\n return this.tsParseFunctionOrConstructorType(\n \"TSConstructorType\",\n /* abstract */ true,\n );\n }\n return this.tsParseUnionTypeOrHigher();\n }\n\n tsParseTypeAssertion(): N.TsTypeAssertion {\n if (this.getPluginOption(\"typescript\", \"disallowAmbiguousJSXLike\")) {\n this.raise(TSErrors.ReservedTypeAssertion, this.state.startLoc);\n }\n\n const node = this.startNode<N.TsTypeAssertion>();\n node.typeAnnotation = this.tsInType(() => {\n this.next(); // \"<\"\n return this.match(tt._const)\n ? this.tsParseTypeReference()\n : this.tsParseType();\n });\n this.expect(tt.gt);\n node.expression = this.parseMaybeUnary();\n return this.finishNode(node, \"TSTypeAssertion\");\n }\n\n tsParseHeritageClause(token: \"extends\"): N.TSInterfaceHeritage[];\n tsParseHeritageClause(token: \"implements\"): N.TSClassImplements[];\n tsParseHeritageClause(\n token: \"extends\" | \"implements\",\n ): N.TSClassImplements[] | N.TSInterfaceHeritage[] {\n const originalStartLoc = this.state.startLoc;\n\n const delimitedList = this.tsParseDelimitedList(\n \"HeritageClauseElement\",\n () => {\n if (process.env.BABEL_8_BREAKING) {\n const expression = super.parseExprSubscripts();\n if (!tsIsEntityName(expression)) {\n this.raise(\n TSErrors.InvalidHeritageClauseType,\n expression.loc.start,\n { token },\n );\n }\n const nodeType =\n token === \"extends\" ? \"TSInterfaceHeritage\" : \"TSClassImplements\";\n if (expression.type === \"TSInstantiationExpression\") {\n // @ts-expect-error cast TSInstantiationExpression to TSInterfaceHeritage/TSClassImplements\n expression.type = nodeType;\n return expression;\n }\n const node = this.startNodeAtNode<\n N.TSInterfaceHeritage | N.TSClassImplements\n >(expression);\n node.expression = expression;\n // The last element can not form a TSInstantiationExpression because of the bail condition in\n // `parseSubscript`, in this case we have to parse type arguments again\n if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n node.typeArguments = this.tsParseTypeArgumentsInExpression();\n }\n return this.finishNode(node, nodeType);\n } else {\n const node = this.startNode<\n N.TSInterfaceHeritage | N.TSClassImplements\n >();\n // @ts-expect-error Babel 7 vs Babel 8\n node.expression = this.tsParseEntityName(\n tsParseEntityNameFlags.ALLOW_RESERVED_WORDS |\n tsParseEntityNameFlags.LEADING_THIS_AS_IDENTIFIER,\n );\n if (this.match(tt.lt)) {\n // @ts-expect-error Babel 7 vs Babel 8\n node.typeParameters = this.tsParseTypeArguments();\n }\n\n return this.finishNode(\n node,\n // @ts-expect-error Babel 7 vs Babel 8\n \"TSExpressionWithTypeArguments\",\n );\n }\n },\n );\n\n if (!delimitedList.length) {\n this.raise(TSErrors.EmptyHeritageClauseType, originalStartLoc, {\n token,\n });\n }\n\n return delimitedList as N.TSClassImplements[] | N.TSInterfaceHeritage[];\n }\n\n tsParseInterfaceDeclaration(\n node: Undone<N.TsInterfaceDeclaration>,\n properties: {\n declare?: true;\n } = {},\n ): N.TsInterfaceDeclaration | null {\n if (this.hasFollowingLineBreak()) return null;\n this.expectContextual(tt._interface);\n if (properties.declare) node.declare = true;\n if (tokenIsIdentifier(this.state.type)) {\n node.id = this.parseIdentifier();\n this.checkIdentifier(node.id, BindingFlag.TYPE_TS_INTERFACE);\n } else {\n node.id = null;\n this.raise(TSErrors.MissingInterfaceName, this.state.startLoc);\n }\n\n node.typeParameters = this.tsTryParseTypeParameters(\n this.tsParseInOutConstModifiers,\n );\n if (this.eat(tt._extends)) {\n node.extends = this.tsParseHeritageClause(\"extends\");\n }\n const body = this.startNode<N.TSInterfaceBody>();\n body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this));\n node.body = this.finishNode(body, \"TSInterfaceBody\");\n return this.finishNode(node, \"TSInterfaceDeclaration\");\n }\n\n tsParseTypeAliasDeclaration(\n node: Undone<N.TsTypeAliasDeclaration>,\n ): N.TsTypeAliasDeclaration {\n node.id = this.parseIdentifier();\n this.checkIdentifier(node.id, BindingFlag.TYPE_TS_TYPE);\n\n node.typeAnnotation = this.tsInType(() => {\n node.typeParameters = this.tsTryParseTypeParameters(\n this.tsParseInOutModifiers,\n );\n\n this.expect(tt.eq);\n\n if (\n this.isContextual(tt._intrinsic) &&\n this.lookaheadCharCode() !== charCodes.dot\n ) {\n const node = this.startNode<N.TsKeywordType>();\n this.next();\n return this.finishNode(node, \"TSIntrinsicKeyword\");\n }\n\n return this.tsParseType();\n });\n\n this.semicolon();\n return this.finishNode(node, \"TSTypeAliasDeclaration\");\n }\n\n // Parse in top level normal context if we are in a JSX context\n tsInTopLevelContext<T>(cb: () => T): T {\n if (this.curContext() !== tc.brace) {\n const oldContext = this.state.context;\n this.state.context = [oldContext[0]];\n try {\n return cb();\n } finally {\n this.state.context = oldContext;\n }\n } else {\n return cb();\n }\n }\n\n /**\n * Runs `cb` in a type context.\n * This should be called one token *before* the first type token,\n * so that the call to `next()` is run in type context.\n */\n tsInType<T>(cb: () => T): T {\n const oldInType = this.state.inType;\n this.state.inType = true;\n try {\n return cb();\n } finally {\n this.state.inType = oldInType;\n }\n }\n\n tsInDisallowConditionalTypesContext<T>(cb: () => T): T {\n const oldInDisallowConditionalTypesContext =\n this.state.inDisallowConditionalTypesContext;\n this.state.inDisallowConditionalTypesContext = true;\n try {\n return cb();\n } finally {\n this.state.inDisallowConditionalTypesContext =\n oldInDisallowConditionalTypesContext;\n }\n }\n\n tsInAllowConditionalTypesContext<T>(cb: () => T): T {\n const oldInDisallowConditionalTypesContext =\n this.state.inDisallowConditionalTypesContext;\n this.state.inDisallowConditionalTypesContext = false;\n try {\n return cb();\n } finally {\n this.state.inDisallowConditionalTypesContext =\n oldInDisallowConditionalTypesContext;\n }\n }\n\n tsEatThenParseType(token: TokenType): N.TsType | undefined {\n if (this.match(token)) {\n return this.tsNextThenParseType();\n }\n }\n\n tsExpectThenParseType(token: TokenType): N.TsType {\n return this.tsInType(() => {\n this.expect(token);\n return this.tsParseType();\n });\n }\n\n tsNextThenParseType(): N.TsType {\n return this.tsInType(() => {\n this.next();\n return this.tsParseType();\n });\n }\n\n tsParseEnumMember(): N.TsEnumMember {\n const node = this.startNode<N.TsEnumMember>();\n // Computed property names are grammar errors in an enum, so accept just string literal or identifier.\n node.id = this.match(tt.string)\n ? super.parseStringLiteral(this.state.value)\n : this.parseIdentifier(/* liberal */ true);\n if (this.eat(tt.eq)) {\n node.initializer = super.parseMaybeAssignAllowIn();\n }\n return this.finishNode(node, \"TSEnumMember\");\n }\n\n tsParseEnumDeclaration(\n node: Undone<N.TsEnumDeclaration>,\n properties: {\n const?: true;\n declare?: true;\n } = {},\n ): N.TsEnumDeclaration {\n if (properties.const) node.const = true;\n if (properties.declare) node.declare = true;\n this.expectContextual(tt._enum);\n node.id = this.parseIdentifier();\n this.checkIdentifier(\n node.id,\n node.const ? BindingFlag.TYPE_TS_CONST_ENUM : BindingFlag.TYPE_TS_ENUM,\n );\n\n if (process.env.BABEL_8_BREAKING) {\n node.body = this.tsParseEnumBody();\n } else {\n this.expect(tt.braceL);\n node.members = this.tsParseDelimitedList(\n \"EnumMembers\",\n this.tsParseEnumMember.bind(this),\n );\n this.expect(tt.braceR);\n }\n return this.finishNode(node, \"TSEnumDeclaration\");\n }\n\n tsParseEnumBody(): N.TsEnumBody {\n const node = this.startNode<N.TsEnumBody>();\n this.expect(tt.braceL);\n node.members = this.tsParseDelimitedList(\n \"EnumMembers\",\n this.tsParseEnumMember.bind(this),\n );\n this.expect(tt.braceR);\n return this.finishNode(node, \"TSEnumBody\");\n }\n\n tsParseModuleBlock(): N.TsModuleBlock {\n const node = this.startNode<N.TsModuleBlock>();\n this.scope.enter(ScopeFlag.OTHER);\n\n this.expect(tt.braceL);\n // Inside of a module block is considered \"top-level\", meaning it can have imports and exports.\n super.parseBlockOrModuleBlockBody(\n (node.body = []),\n /* directives */ undefined,\n /* topLevel */ true,\n /* end */ tt.braceR,\n );\n this.scope.exit();\n return this.finishNode(node, \"TSModuleBlock\");\n }\n\n tsParseModuleOrNamespaceDeclaration(\n node: Undone<N.TsModuleDeclaration>,\n nested: boolean = false,\n ): N.TsModuleDeclaration {\n node.id = process.env.BABEL_8_BREAKING\n ? this.tsParseEntityName(tsParseEntityNameFlags.ALLOW_RESERVED_WORDS)\n : this.parseIdentifier();\n\n if (\n process.env.BABEL_8_BREAKING ? node.id.type === \"Identifier\" : !nested\n ) {\n // @ts-expect-error checked above\n this.checkIdentifier(node.id, BindingFlag.TYPE_TS_NAMESPACE);\n }\n\n if (!process.env.BABEL_8_BREAKING && this.eat(tt.dot)) {\n const inner = this.startNode<N.TsModuleDeclaration>();\n this.tsParseModuleOrNamespaceDeclaration(inner, true);\n // @ts-expect-error Fixme: refine typings\n node.body = inner;\n } else {\n this.scope.enter(ScopeFlag.TS_MODULE);\n this.prodParam.enter(ParamKind.PARAM);\n node.body = this.tsParseModuleBlock();\n this.prodParam.exit();\n this.scope.exit();\n }\n return this.finishNode(node, \"TSModuleDeclaration\");\n }\n\n tsParseAmbientExternalModuleDeclaration(\n node: Undone<N.TsModuleDeclaration>,\n ): N.TsModuleDeclaration {\n if (this.isContextual(tt._global)) {\n node.kind = \"global\";\n if (!process.env.BABEL_8_BREAKING) {\n node.global = true;\n }\n node.id = this.parseIdentifier();\n } else if (this.match(tt.string)) {\n node.kind = \"module\";\n node.id = super.parseStringLiteral(this.state.value);\n } else {\n this.unexpected();\n }\n if (this.match(tt.braceL)) {\n this.scope.enter(ScopeFlag.TS_MODULE);\n this.prodParam.enter(ParamKind.PARAM);\n node.body = this.tsParseModuleBlock();\n this.prodParam.exit();\n this.scope.exit();\n } else {\n this.semicolon();\n }\n\n return this.finishNode(node, \"TSModuleDeclaration\");\n }\n\n tsParseImportEqualsDeclaration(\n node: Undone<N.TsImportEqualsDeclaration>,\n maybeDefaultIdentifier?: N.Identifier | null,\n isExport?: boolean,\n ): N.TsImportEqualsDeclaration {\n if (!process.env.BABEL_8_BREAKING) {\n node.isExport = isExport || false;\n }\n node.id = maybeDefaultIdentifier || this.parseIdentifier();\n this.checkIdentifier(node.id, BindingFlag.TYPE_TS_VALUE_IMPORT);\n this.expect(tt.eq);\n const moduleReference = this.tsParseModuleReference();\n if (\n node.importKind === \"type\" &&\n moduleReference.type !== \"TSExternalModuleReference\"\n ) {\n this.raise(TSErrors.ImportAliasHasImportType, moduleReference);\n }\n node.moduleReference = moduleReference;\n this.semicolon();\n return this.finishNode(node, \"TSImportEqualsDeclaration\");\n }\n\n tsIsExternalModuleReference(): boolean {\n return (\n this.isContextual(tt._require) &&\n this.lookaheadCharCode() === charCodes.leftParenthesis\n );\n }\n\n tsParseModuleReference(): N.TsModuleReference {\n return this.tsIsExternalModuleReference()\n ? this.tsParseExternalModuleReference()\n : this.tsParseEntityName(tsParseEntityNameFlags.NONE);\n }\n\n tsParseExternalModuleReference(): N.TsExternalModuleReference {\n const node = this.startNode<N.TsExternalModuleReference>();\n this.expectContextual(tt._require);\n this.expect(tt.parenL);\n if (!this.match(tt.string)) {\n this.unexpected();\n }\n // For compatibility to estree we cannot call parseLiteral directly here\n node.expression = super.parseExprAtom() as N.StringLiteral;\n this.expect(tt.parenR);\n this.sawUnambiguousESM = true;\n return this.finishNode(node, \"TSExternalModuleReference\");\n }\n\n // Utilities\n\n tsLookAhead<T>(f: () => T): T {\n const state = this.state.clone();\n const res = f();\n this.state = state;\n return res;\n }\n\n tsTryParseAndCatch<T extends N.NodeBase | undefined | null>(\n f: () => T,\n ): T | undefined | null {\n const result = this.tryParse(\n abort =>\n // @ts-expect-error todo(flow->ts)\n f() || abort(),\n );\n\n if (result.aborted || !result.node) return;\n if (result.error) this.state = result.failState;\n // @ts-expect-error refine typings\n return result.node;\n }\n\n tsTryParse<T>(f: () => T | undefined | false): T | undefined {\n const state = this.state.clone();\n const result = f();\n if (result !== undefined && result !== false) {\n return result;\n }\n this.state = state;\n }\n\n tsTryParseDeclare(node: any) {\n if (this.isLineTerminator()) {\n return;\n }\n const startType = this.state.type;\n return this.tsInAmbientContext(() => {\n switch (startType) {\n case tt._function:\n node.declare = true;\n return super.parseFunctionStatement(\n node,\n /* async */ false,\n /* isHangingDeclaration */ false,\n );\n case tt._class:\n // While this is also set by tsTryParseDeclare, we need to set it\n // before parsing the class declaration to know how to register it in the scope.\n node.declare = true;\n return this.parseClass(\n node as Undone<N.ClassDeclaration>,\n /* isStatement */ true,\n /* optionalId */ false,\n );\n case tt._enum:\n return this.tsParseEnumDeclaration(node, { declare: true });\n case tt._global:\n return this.tsParseAmbientExternalModuleDeclaration(node);\n case tt._let:\n if (this.state.containsEsc) {\n return;\n }\n // fallthrough\n case tt._const:\n case tt._var:\n if (!this.match(tt._const) || !this.isLookaheadContextual(\"enum\")) {\n node.declare = true;\n return this.parseVarStatement(node, this.state.value, true);\n }\n\n // `const enum = 0;` not allowed because \"enum\" is a strict mode reserved word.\n this.expect(tt._const);\n return this.tsParseEnumDeclaration(node, {\n const: true,\n declare: true,\n });\n case tt._using:\n if (this.isUsing()) {\n this.raise(\n TSErrors.InvalidModifierOnUsingDeclaration,\n this.state.startLoc,\n \"declare\",\n );\n node.declare = true;\n return this.parseVarStatement(node, \"using\", true);\n }\n break;\n case tt._await:\n if (this.isAwaitUsing()) {\n this.raise(\n TSErrors.InvalidModifierOnAwaitUsingDeclaration,\n this.state.startLoc,\n \"declare\",\n );\n node.declare = true;\n this.next(); // eat 'await'\n return this.parseVarStatement(node, \"await using\", true);\n }\n break;\n case tt._interface: {\n const result = this.tsParseInterfaceDeclaration(node, {\n declare: true,\n });\n if (result) return result;\n }\n // fallthrough\n default:\n if (tokenIsIdentifier(startType)) {\n return this.tsParseDeclaration(\n node,\n this.state.type,\n /* next */ true,\n /* decorators */ null,\n );\n }\n }\n });\n }\n\n // Note: this won't be called unless the keyword is allowed in `shouldParseExportDeclaration`.\n tsTryParseExportDeclaration(): N.Declaration | null | undefined {\n return this.tsParseDeclaration(\n this.startNode(),\n this.state.type,\n /* next */ true,\n /* decorators */ null,\n );\n }\n\n // Common to tsTryParseDeclare and tsTryParseExportDeclaration.\n tsParseDeclaration(\n node: any,\n type: number,\n next: boolean,\n decorators: N.Decorator[] | null,\n ):\n | N.ClassDeclaration\n | N.TsInterfaceDeclaration\n | N.TsTypeAliasDeclaration\n | N.TsModuleDeclaration\n | null\n | undefined {\n // no declaration apart from enum can be followed by a line break.\n switch (type) {\n case tt._abstract:\n if (\n this.tsCheckLineTerminator(next) &&\n (this.match(tt._class) || tokenIsIdentifier(this.state.type))\n ) {\n return this.tsParseAbstractDeclaration(node, decorators);\n }\n break;\n\n case tt._module:\n if (this.tsCheckLineTerminator(next)) {\n if (this.match(tt.string)) {\n return this.tsParseAmbientExternalModuleDeclaration(node);\n } else if (tokenIsIdentifier(this.state.type)) {\n node.kind = \"module\";\n return this.tsParseModuleOrNamespaceDeclaration(node);\n }\n }\n break;\n\n case tt._namespace:\n if (\n this.tsCheckLineTerminator(next) &&\n tokenIsIdentifier(this.state.type)\n ) {\n node.kind = \"namespace\";\n return this.tsParseModuleOrNamespaceDeclaration(node);\n }\n break;\n\n case tt._type:\n if (\n this.tsCheckLineTerminator(next) &&\n tokenIsIdentifier(this.state.type)\n ) {\n return this.tsParseTypeAliasDeclaration(node);\n }\n break;\n }\n }\n\n tsCheckLineTerminator(next: boolean) {\n if (next) {\n if (this.hasFollowingLineBreak()) return false;\n this.next();\n return true;\n }\n return !this.isLineTerminator();\n }\n\n tsTryParseGenericAsyncArrowFunction(\n startLoc: Position,\n ): N.ArrowFunctionExpression | undefined {\n if (!this.match(tt.lt)) return;\n\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n this.state.maybeInArrowParameters = true;\n\n const res: Undone<N.ArrowFunctionExpression> | undefined | null =\n this.tsTryParseAndCatch(() => {\n const node = this.startNodeAt<N.ArrowFunctionExpression>(startLoc);\n node.typeParameters = this.tsParseTypeParameters(\n this.tsParseConstModifier,\n );\n // Don't use overloaded parseFunctionParams which would look for \"<\" again.\n super.parseFunctionParams(node);\n node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation();\n this.expect(tt.arrow);\n return node;\n });\n\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n\n if (!res) return;\n\n return super.parseArrowExpression(\n res,\n /* params are already set */ null,\n /* async */ true,\n );\n }\n\n // Used when parsing type arguments from ES or JSX productions, where the first token\n // has been created without state.inType. Thus we need to re-scan the lt token.\n tsParseTypeArgumentsInExpression():\n | N.TsTypeParameterInstantiation\n | undefined {\n if (this.reScan_lt() !== tt.lt) return;\n return this.tsParseTypeArguments();\n }\n\n tsParseTypeArguments(): N.TsTypeParameterInstantiation {\n const node = this.startNode<N.TsTypeParameterInstantiation>();\n node.params = this.tsInType(() =>\n this.tsInTopLevelContext(() => {\n this.expect(tt.lt);\n return this.tsParseDelimitedList(\n \"TypeParametersOrArguments\",\n this.tsParseType.bind(this),\n );\n }),\n );\n if (node.params.length === 0) {\n this.raise(TSErrors.EmptyTypeArguments, node);\n } else if (!this.state.inType && this.curContext() === tc.brace) {\n // rescan `>` when we are no longer in type context and JSX parsing context\n // since it was tokenized when `inType` is `true`.\n this.reScan_lt_gt();\n }\n this.expect(tt.gt);\n return this.finishNode(node, \"TSTypeParameterInstantiation\");\n }\n\n tsIsDeclarationStart(): boolean {\n return tokenIsTSDeclarationStart(this.state.type);\n }\n\n // ======================================================\n // OVERRIDES\n // ======================================================\n\n isExportDefaultSpecifier(): boolean {\n if (this.tsIsDeclarationStart()) return false;\n return super.isExportDefaultSpecifier();\n }\n\n parseBindingElement(\n flags: ParseBindingListFlags,\n decorators: N.Decorator[],\n ): N.Pattern | N.TSParameterProperty {\n // Store original location to include decorators/modifiers in range\n const startLoc = decorators.length\n ? decorators[0].loc.start\n : this.state.startLoc;\n\n const modified: ModifierBase = {};\n this.tsParseModifiers(\n {\n allowedModifiers: [\n \"public\",\n \"private\",\n \"protected\",\n \"override\",\n \"readonly\",\n ],\n },\n modified,\n );\n const accessibility = modified.accessibility;\n const override = modified.override;\n const readonly = modified.readonly;\n if (\n !(flags & ParseBindingListFlags.IS_CONSTRUCTOR_PARAMS) &&\n (accessibility || readonly || override)\n ) {\n this.raise(TSErrors.UnexpectedParameterModifier, startLoc);\n }\n\n const left = this.parseMaybeDefault();\n if (flags & ParseBindingListFlags.IS_FUNCTION_PARAMS) {\n this.parseFunctionParamType(left);\n }\n const elt = this.parseMaybeDefault(left.loc.start, left);\n if (accessibility || readonly || override) {\n const pp = this.startNodeAt<N.TSParameterProperty>(startLoc);\n if (decorators.length) {\n pp.decorators = decorators;\n }\n if (accessibility) pp.accessibility = accessibility;\n if (readonly) pp.readonly = readonly;\n if (override) pp.override = override;\n if (elt.type !== \"Identifier\" && elt.type !== \"AssignmentPattern\") {\n this.raise(TSErrors.UnsupportedParameterPropertyKind, pp);\n }\n pp.parameter = elt as any as N.Identifier | N.AssignmentPattern;\n return this.finishNode(pp, \"TSParameterProperty\");\n }\n\n if (decorators.length) {\n left.decorators = decorators;\n }\n\n return elt;\n }\n\n isSimpleParameter(node: N.Pattern | N.TSParameterProperty): boolean {\n return (\n (node.type === \"TSParameterProperty\" &&\n super.isSimpleParameter(node.parameter)) ||\n super.isSimpleParameter(node)\n );\n }\n\n tsDisallowOptionalPattern(node: Undone<N.Function>) {\n for (const param of node.params) {\n if (\n param.type !== \"Identifier\" &&\n (param as any).optional &&\n !this.state.isAmbientContext\n ) {\n this.raise(TSErrors.PatternIsOptional, param);\n }\n }\n }\n\n setArrowFunctionParameters(\n node: Undone<N.ArrowFunctionExpression>,\n params: N.Expression[],\n trailingCommaLoc?: Position | null,\n ): void {\n super.setArrowFunctionParameters(node, params, trailingCommaLoc);\n this.tsDisallowOptionalPattern(node);\n }\n\n parseFunctionBodyAndFinish<\n T extends\n | N.Function\n | N.TSDeclareMethod\n | N.TSDeclareFunction\n | N.ClassPrivateMethod,\n >(node: Undone<T>, type: T[\"type\"], isMethod: boolean = false): T {\n if (this.match(tt.colon)) {\n node.returnType = this.tsParseTypeOrTypePredicateAnnotation(tt.colon);\n }\n\n const bodilessType =\n type === \"FunctionDeclaration\"\n ? \"TSDeclareFunction\"\n : type === \"ClassMethod\" || type === \"ClassPrivateMethod\"\n ? \"TSDeclareMethod\"\n : undefined;\n if (bodilessType && !this.match(tt.braceL) && this.isLineTerminator()) {\n return this.finishNode(node, bodilessType);\n }\n if (bodilessType === \"TSDeclareFunction\" && this.state.isAmbientContext) {\n this.raise(TSErrors.DeclareFunctionHasImplementation, node);\n if ((node as Undone<N.FunctionDeclaration>).declare) {\n return super.parseFunctionBodyAndFinish(node, bodilessType, isMethod);\n }\n }\n this.tsDisallowOptionalPattern(node);\n\n return super.parseFunctionBodyAndFinish(node, type, isMethod);\n }\n\n registerFunctionStatementId(node: N.Function): void {\n if (!node.body && node.id) {\n // Function ids are validated after parsing their body.\n // For bodiless function, we need to do it here.\n this.checkIdentifier(node.id, BindingFlag.TYPE_TS_AMBIENT);\n } else {\n super.registerFunctionStatementId(node);\n }\n }\n\n tsCheckForInvalidTypeCasts(\n items: (N.Expression | N.SpreadElement | null)[],\n ) {\n items.forEach(node => {\n if (node?.type === \"TSTypeCastExpression\") {\n this.raise(TSErrors.UnexpectedTypeAnnotation, node.typeAnnotation);\n }\n });\n }\n\n toReferencedList(\n exprList: (N.Expression | null)[],\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isInParens?: boolean,\n ): (N.Expression | null)[] {\n // Handles invalid scenarios like: `f(a:b)`, `(a:b);`, and `(a:b,c:d)`.\n //\n // Note that `f<T>(a:b)` goes through a different path and is handled\n // in `parseSubscript` directly.\n this.tsCheckForInvalidTypeCasts(exprList);\n return exprList;\n }\n\n parseArrayLike(\n close: TokenType,\n isTuple: boolean,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.ArrayExpression | N.TupleExpression {\n const node = super.parseArrayLike(close, isTuple, refExpressionErrors);\n\n if (node.type === \"ArrayExpression\") {\n this.tsCheckForInvalidTypeCasts(node.elements);\n }\n\n return node;\n }\n\n parseSubscript(\n base: N.Expression,\n startLoc: Position,\n noCalls: boolean | undefined | null,\n state: N.ParseSubscriptState,\n ): N.Expression {\n if (!this.hasPrecedingLineBreak() && this.match(tt.bang)) {\n // When ! is consumed as a postfix operator (non-null assertion),\n // disallow JSX tag forming after. e.g. When parsing `p! < n.p!`\n // `<n.p` can not be a start of JSX tag\n this.state.canStartJSXElement = false;\n this.next();\n\n const nonNullExpression =\n this.startNodeAt<N.TsNonNullExpression>(startLoc);\n nonNullExpression.expression = base;\n return this.finishNode(nonNullExpression, \"TSNonNullExpression\");\n }\n\n let isOptionalCall = false;\n if (\n this.match(tt.questionDot) &&\n this.lookaheadCharCode() === charCodes.lessThan\n ) {\n if (noCalls) {\n state.stop = true;\n return base;\n }\n state.optionalChainMember = isOptionalCall = true;\n this.next();\n }\n\n // handles 'f<<T>'\n if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n let missingParenErrorLoc;\n // tsTryParseAndCatch is expensive, so avoid if not necessary.\n // There are number of things we are going to \"maybe\" parse, like type arguments on\n // tagged template expressions. If any of them fail, walk it back and continue.\n const result = this.tsTryParseAndCatch(() => {\n if (!noCalls && this.atPossibleAsyncArrow(base)) {\n // Almost certainly this is a generic async function `async <T>() => ...\n // But it might be a call with a type argument `async<T>();`\n const asyncArrowFn =\n this.tsTryParseGenericAsyncArrowFunction(startLoc);\n if (asyncArrowFn) {\n state.stop = true;\n return asyncArrowFn;\n }\n }\n\n const typeArguments = this.tsParseTypeArgumentsInExpression();\n if (!typeArguments) return;\n\n if (isOptionalCall && !this.match(tt.parenL)) {\n missingParenErrorLoc = this.state.curPosition();\n return;\n }\n\n if (tokenIsTemplate(this.state.type)) {\n const result = super.parseTaggedTemplateExpression(\n base,\n startLoc,\n state,\n );\n if (process.env.BABEL_8_BREAKING) {\n result.typeArguments = typeArguments;\n } else {\n result.typeParameters = typeArguments;\n }\n return result;\n }\n\n if (!noCalls && this.eat(tt.parenL)) {\n const node = this.startNodeAt<\n N.CallExpression | N.OptionalCallExpression\n >(startLoc);\n node.callee = base;\n node.arguments = this.parseCallExpressionArguments();\n\n // Handles invalid case: `f<T>(a:b)`\n this.tsCheckForInvalidTypeCasts(node.arguments);\n\n if (process.env.BABEL_8_BREAKING) {\n node.typeArguments = typeArguments;\n } else {\n node.typeParameters = typeArguments;\n }\n\n if (state.optionalChainMember) {\n (node as Undone<N.OptionalCallExpression>).optional =\n isOptionalCall;\n }\n\n return this.finishCallExpression(node, state.optionalChainMember);\n }\n\n const tokenType = this.state.type;\n if (\n // a<b>>c is not (a<b>)>c, but a<(b>>c)\n tokenType === tt.gt ||\n // a<b>>>c is not (a<b>)>>c, but a<(b>>>c)\n tokenType === tt.bitShiftR ||\n // a<b>c is (a<b)>c\n (tokenType !== tt.parenL &&\n tokenType !== tt._as &&\n tokenType !== tt._satisfies &&\n tokenCanStartExpression(tokenType) &&\n !this.hasPrecedingLineBreak())\n ) {\n // Bail out.\n return;\n }\n\n const node = this.startNodeAt<N.TsInstantiationExpression>(startLoc);\n node.expression = base;\n if (process.env.BABEL_8_BREAKING) {\n node.typeArguments = typeArguments;\n } else {\n node.typeParameters = typeArguments;\n }\n return this.finishNode(node, \"TSInstantiationExpression\");\n });\n\n if (missingParenErrorLoc) {\n this.unexpected(missingParenErrorLoc, tt.parenL);\n }\n\n if (result) {\n if (result.type === \"TSInstantiationExpression\") {\n if (\n this.match(tt.dot) ||\n (this.match(tt.questionDot) &&\n this.lookaheadCharCode() !== charCodes.leftParenthesis)\n ) {\n this.raise(\n TSErrors.InvalidPropertyAccessAfterInstantiationExpression,\n this.state.startLoc,\n );\n }\n if (!this.match(tt.dot) && !this.match(tt.questionDot)) {\n // If TSInstantiationExpression is not followed by . / ?.,\n // it must be the end of a subscript chain. Note that `(` already forms\n // call expression arguments\n result.expression = super.stopParseSubscript(base, state);\n }\n }\n return result;\n }\n }\n\n return super.parseSubscript(base, startLoc, noCalls, state);\n }\n\n parseNewCallee(node: N.NewExpression): void {\n super.parseNewCallee(node);\n\n const { callee } = node;\n if (\n callee.type === \"TSInstantiationExpression\" &&\n !callee.extra?.parenthesized\n ) {\n if (process.env.BABEL_8_BREAKING) {\n node.typeArguments = callee.typeArguments;\n } else {\n node.typeParameters = callee.typeParameters;\n }\n node.callee = callee.expression;\n }\n }\n\n parseExprOp(\n left: N.Expression,\n leftStartLoc: Position,\n minPrec: number,\n ): N.Expression {\n let isSatisfies: boolean;\n if (\n tokenOperatorPrecedence(tt._in) > minPrec &&\n !this.hasPrecedingLineBreak() &&\n (this.isContextual(tt._as) ||\n (isSatisfies = this.isContextual(tt._satisfies)))\n ) {\n const node = this.startNodeAt<\n N.TsAsExpression | N.TsSatisfiesExpression\n >(leftStartLoc);\n node.expression = left;\n node.typeAnnotation = this.tsInType(() => {\n this.next(); // \"as\" or \"satisfies\"\n if (this.match(tt._const)) {\n if (isSatisfies) {\n this.raise(Errors.UnexpectedKeyword, this.state.startLoc, {\n keyword: \"const\",\n });\n }\n return this.tsParseTypeReference();\n }\n\n return this.tsParseType();\n });\n this.finishNode(\n node,\n isSatisfies! ? \"TSSatisfiesExpression\" : \"TSAsExpression\",\n );\n // rescan `<`, `>` because they were scanned when this.state.inType was true\n this.reScan_lt_gt();\n return this.parseExprOp(\n // @ts-expect-error todo(flow->ts)\n node,\n leftStartLoc,\n minPrec,\n );\n }\n\n return super.parseExprOp(left, leftStartLoc, minPrec);\n }\n\n checkReservedWord(\n word: string,\n startLoc: Position,\n checkKeywords: boolean,\n isBinding: boolean,\n ): void {\n // Strict mode words may be allowed as in `declare namespace N { const static: number; }`.\n // And we have a type checker anyway, so don't bother having the parser do it.\n if (!this.state.isAmbientContext) {\n super.checkReservedWord(word, startLoc, checkKeywords, isBinding);\n }\n }\n\n checkImportReflection(node: Undone<N.ImportDeclaration>) {\n super.checkImportReflection(node);\n if (node.module && node.importKind !== \"value\") {\n this.raise(\n TSErrors.ImportReflectionHasImportType,\n node.specifiers[0].loc.start,\n );\n }\n }\n\n /*\n Don't bother doing this check in TypeScript code because:\n 1. We may have a nested export statement with the same name:\n export const x = 0;\n export namespace N {\n export const x = 1;\n }\n 2. We have a type checker to warn us about this sort of thing.\n */\n checkDuplicateExports() {}\n\n isPotentialImportPhase(isExport: boolean): boolean {\n if (super.isPotentialImportPhase(isExport)) return true;\n if (this.isContextual(tt._type)) {\n const ch = this.lookaheadCharCode();\n return isExport\n ? ch === charCodes.leftCurlyBrace || ch === charCodes.asterisk\n : ch !== charCodes.equalsTo;\n }\n return !isExport && this.isContextual(tt._typeof);\n }\n\n applyImportPhase(\n node: Undone<N.ImportDeclaration | N.ExportNamedDeclaration>,\n isExport: boolean,\n phase: string | null,\n loc?: Position,\n ): void {\n super.applyImportPhase(node, isExport, phase, loc);\n if (isExport) {\n (node as N.ExportNamedDeclaration).exportKind =\n phase === \"type\" ? \"type\" : \"value\";\n } else {\n (node as N.ImportDeclaration).importKind =\n phase === \"type\" || phase === \"typeof\" ? phase : \"value\";\n }\n }\n\n parseImport(\n node: Undone<N.ImportDeclaration | N.TsImportEqualsDeclaration>,\n ): N.AnyImport {\n if (this.match(tt.string)) {\n node.importKind = \"value\";\n return super.parseImport(node as Undone<N.ImportDeclaration>);\n }\n\n let importNode;\n if (\n tokenIsIdentifier(this.state.type) &&\n this.lookaheadCharCode() === charCodes.equalsTo\n ) {\n node.importKind = \"value\";\n return this.tsParseImportEqualsDeclaration(\n node as Undone<N.TsImportEqualsDeclaration>,\n );\n } else if (this.isContextual(tt._type)) {\n const maybeDefaultIdentifier = this.parseMaybeImportPhase(\n node as Undone<N.ImportDeclaration>,\n /* isExport */ false,\n );\n if (this.lookaheadCharCode() === charCodes.equalsTo) {\n return this.tsParseImportEqualsDeclaration(\n node as Undone<N.TsImportEqualsDeclaration>,\n maybeDefaultIdentifier,\n );\n } else {\n importNode = super.parseImportSpecifiersAndAfter(\n node as Undone<N.ImportDeclaration>,\n maybeDefaultIdentifier,\n );\n }\n } else {\n importNode = super.parseImport(node as Undone<N.ImportDeclaration>);\n }\n\n // `import type` can only be used on imports with named imports or with a\n // default import - but not both\n if (\n importNode.importKind === \"type\" &&\n // @ts-expect-error refine typings\n importNode.specifiers.length > 1 &&\n // @ts-expect-error refine typings\n importNode.specifiers[0].type === \"ImportDefaultSpecifier\"\n ) {\n this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, importNode);\n }\n\n return importNode;\n }\n\n parseExport(\n node: Undone<\n | N.ExportDefaultDeclaration\n | N.ExportAllDeclaration\n | N.ExportNamedDeclaration\n >,\n decorators: N.Decorator[] | null,\n ): N.AnyExport {\n if (this.match(tt._import)) {\n // `export import A = B;`\n const nodeImportEquals = process.env.BABEL_8_BREAKING\n ? this.startNode<N.TsImportEqualsDeclaration>()\n : (node as Undone<N.TsImportEqualsDeclaration>);\n this.next(); // eat `tt._import`\n let maybeDefaultIdentifier: N.Identifier | null = null;\n if (\n this.isContextual(tt._type) &&\n // We pass false here, because we are parsing an `import ... =`\n this.isPotentialImportPhase(/* isExport */ false)\n ) {\n maybeDefaultIdentifier = this.parseMaybeImportPhase(\n nodeImportEquals,\n /* isExport */ false,\n );\n } else {\n nodeImportEquals.importKind = \"value\";\n }\n const declaration = this.tsParseImportEqualsDeclaration(\n nodeImportEquals,\n maybeDefaultIdentifier,\n /* isExport */ true,\n );\n if (process.env.BABEL_8_BREAKING) {\n (node as Undone<N.ExportNamedDeclaration>).attributes = [];\n (node as Undone<N.ExportNamedDeclaration>).declaration = declaration;\n (node as Undone<N.ExportNamedDeclaration>).exportKind = \"value\";\n (node as Undone<N.ExportNamedDeclaration>).source = null;\n (node as Undone<N.ExportNamedDeclaration>).specifiers = [];\n return this.finishNode(node, \"ExportNamedDeclaration\");\n } else {\n return declaration;\n }\n } else if (this.eat(tt.eq)) {\n // `export = x;`\n const assign = node as Undone<N.TsExportAssignment>;\n assign.expression = super.parseExpression();\n this.semicolon();\n this.sawUnambiguousESM = true;\n return this.finishNode(assign, \"TSExportAssignment\");\n } else if (this.eatContextual(tt._as)) {\n // `export as namespace A;`\n const decl = node as Undone<N.TsNamespaceExportDeclaration>;\n // See `parseNamespaceExportDeclaration` in TypeScript's own parser\n this.expectContextual(tt._namespace);\n decl.id = this.parseIdentifier();\n this.semicolon();\n return this.finishNode(decl, \"TSNamespaceExportDeclaration\");\n } else {\n return super.parseExport(\n node as Undone<N.ExportAllDeclaration | N.ExportDefaultDeclaration>,\n decorators,\n );\n }\n }\n\n isAbstractClass(): boolean {\n return (\n this.isContextual(tt._abstract) && this.isLookaheadContextual(\"class\")\n );\n }\n\n parseExportDefaultExpression(): N.ExportDefaultDeclaration[\"declaration\"] {\n if (this.isAbstractClass()) {\n const cls = this.startNode<N.Class>();\n this.next(); // Skip \"abstract\"\n cls.abstract = true;\n return this.parseClass(cls, true, true);\n }\n\n // export default interface allowed in:\n // https://github.com/Microsoft/TypeScript/pull/16040\n if (this.match(tt._interface)) {\n const result = this.tsParseInterfaceDeclaration(\n this.startNode<N.TsInterfaceDeclaration>(),\n );\n if (result) return result;\n }\n\n return super.parseExportDefaultExpression();\n }\n\n parseVarStatement(\n node: N.VariableDeclaration,\n kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n allowMissingInitializer: boolean = false,\n ) {\n const { isAmbientContext } = this.state;\n const declaration = super.parseVarStatement(\n node,\n kind,\n allowMissingInitializer || isAmbientContext,\n );\n\n if (!isAmbientContext) return declaration;\n\n // If node.declare is true, the error has already been raised in tsTryParseDeclare.\n if (!node.declare && (kind === \"using\" || kind === \"await using\")) {\n this.raiseOverwrite(\n TSErrors.UsingDeclarationInAmbientContext,\n node,\n kind,\n );\n return declaration;\n }\n\n for (const { id, init } of declaration.declarations) {\n // Empty initializer is the easy case that we want.\n if (!init) continue;\n\n // var and let aren't ever allowed initializers.\n if (kind === \"var\" || kind === \"let\" || !!id.typeAnnotation) {\n this.raise(TSErrors.InitializerNotAllowedInAmbientContext, init);\n } else if (\n !isValidAmbientConstInitializer(init, this.hasPlugin(\"estree\"))\n ) {\n this.raise(\n TSErrors.ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference,\n init,\n );\n }\n }\n\n return declaration;\n }\n\n parseStatementContent(\n flags: ParseStatementFlag,\n decorators: N.Decorator[] | null,\n ): N.Statement {\n if (!this.state.containsEsc) {\n switch (this.state.type) {\n case tt._const: {\n if (this.isLookaheadContextual(\"enum\")) {\n const node = this.startNode<N.TsEnumDeclaration>();\n this.expect(tt._const); // eat 'const'\n return this.tsParseEnumDeclaration(node, { const: true });\n }\n break;\n }\n case tt._abstract:\n case tt._declare: {\n if (\n this.nextTokenIsIdentifierAndNotTSRelationalOperatorOnSameLine()\n ) {\n const token = this.state.type;\n const node = this.startNode<N.ExpressionStatement>();\n this.next(); // eat 'abstract' or 'declare'\n const declaration =\n token === tt._declare\n ? this.tsTryParseDeclare(node)\n : this.tsParseAbstractDeclaration(node, decorators);\n if (declaration) {\n if (token === tt._declare) {\n declaration.declare = true;\n }\n return declaration;\n } else {\n // The production is invalid. Construct AST for error recovery.\n node.expression = this.createIdentifier(\n this.startNodeAt<N.Identifier>(node.loc.start),\n token === tt._declare ? \"declare\" : \"abstract\",\n );\n this.semicolon(false);\n return this.finishNode(node, \"ExpressionStatement\");\n }\n }\n break;\n }\n case tt._enum:\n return this.tsParseEnumDeclaration(\n this.startNode<N.TsEnumDeclaration>(),\n );\n case tt._global: {\n const nextCh = this.lookaheadCharCode();\n if (nextCh === charCodes.leftCurlyBrace) {\n const node = this.startNode<N.TsModuleDeclaration>();\n return this.tsParseAmbientExternalModuleDeclaration(node);\n }\n break;\n }\n case tt._interface: {\n const result = this.tsParseInterfaceDeclaration(this.startNode());\n if (result) return result;\n break;\n }\n case tt._module: {\n if (this.nextTokenIsIdentifierOrStringLiteralOnSameLine()) {\n const node = this.startNode<N.TsModuleDeclaration>();\n this.next(); // eat 'module'\n return this.tsParseDeclaration(\n node,\n tt._module,\n false,\n decorators,\n ) as N.TsModuleDeclaration;\n }\n break;\n }\n case tt._namespace: {\n if (this.nextTokenIsIdentifierOnSameLine()) {\n const node = this.startNode<N.TsModuleDeclaration>();\n this.next(); // eat 'namespace'\n return this.tsParseDeclaration(\n node,\n tt._namespace,\n false,\n decorators,\n ) as N.TsModuleDeclaration;\n }\n break;\n }\n case tt._type: {\n if (this.nextTokenIsIdentifierOnSameLine()) {\n const node = this.startNode<N.TsTypeAliasDeclaration>();\n this.next(); // eat 'type'\n return this.tsParseTypeAliasDeclaration(node);\n }\n break;\n }\n }\n }\n\n return super.parseStatementContent(flags, decorators);\n }\n\n parseAccessModifier(): N.Accessibility | undefined | null {\n return this.tsParseModifier([\"public\", \"protected\", \"private\"]);\n }\n\n tsHasSomeModifiers(member: any, modifiers: readonly TsModifier[]): boolean {\n return modifiers.some(modifier => {\n if (tsIsAccessModifier(modifier)) {\n return member.accessibility === modifier;\n }\n return !!member[modifier];\n });\n }\n\n tsIsStartOfStaticBlocks() {\n return (\n this.isContextual(tt._static) &&\n this.lookaheadCharCode() === charCodes.leftCurlyBrace\n );\n }\n\n parseClassMember(\n classBody: N.ClassBody,\n member: any,\n state: N.ParseClassMemberState,\n ): void {\n const modifiers = [\n \"declare\",\n \"private\",\n \"public\",\n \"protected\",\n \"override\",\n \"abstract\",\n \"readonly\",\n \"static\",\n ] as const;\n this.tsParseModifiers(\n {\n allowedModifiers: modifiers,\n disallowedModifiers: [\"in\", \"out\"],\n stopOnStartOfClassStaticBlock: true,\n errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions,\n },\n member,\n );\n\n const callParseClassMemberWithIsStatic = () => {\n if (this.tsIsStartOfStaticBlocks()) {\n this.next(); // eat \"static\"\n this.next(); // eat \"{\"\n if (this.tsHasSomeModifiers(member, modifiers)) {\n this.raise(\n TSErrors.StaticBlockCannotHaveModifier,\n this.state.curPosition(),\n );\n }\n super.parseClassStaticBlock(classBody, member as N.StaticBlock);\n } else {\n this.parseClassMemberWithIsStatic(\n classBody,\n member,\n state,\n !!member.static,\n );\n }\n };\n if (member.declare) {\n this.tsInAmbientContext(callParseClassMemberWithIsStatic);\n } else {\n callParseClassMemberWithIsStatic();\n }\n }\n\n parseClassMemberWithIsStatic(\n classBody: N.ClassBody,\n member: Undone<N.ClassMember | N.TsIndexSignature>,\n state: N.ParseClassMemberState,\n isStatic: boolean,\n ): void {\n const idx = this.tsTryParseIndexSignature(\n member as Undone<N.TsIndexSignature>,\n );\n if (idx) {\n classBody.body.push(idx);\n\n if ((member as any).abstract) {\n this.raise(TSErrors.IndexSignatureHasAbstract, member);\n }\n if ((member as any).accessibility) {\n this.raise(TSErrors.IndexSignatureHasAccessibility, member, {\n modifier: (member as any).accessibility,\n });\n }\n if ((member as any).declare) {\n this.raise(TSErrors.IndexSignatureHasDeclare, member);\n }\n if ((member as any).override) {\n this.raise(TSErrors.IndexSignatureHasOverride, member);\n }\n\n return;\n }\n\n if (!this.state.inAbstractClass && (member as any).abstract) {\n this.raise(TSErrors.NonAbstractClassHasAbstractMethod, member);\n }\n\n if ((member as any).override) {\n if (!state.hadSuperClass) {\n this.raise(TSErrors.OverrideNotInSubClass, member);\n }\n }\n\n /*:: invariant(member.type !== \"TSIndexSignature\") */\n\n super.parseClassMemberWithIsStatic(\n classBody,\n member as Undone<N.ClassMember>,\n state,\n isStatic,\n );\n }\n\n parsePostMemberNameModifiers(\n methodOrProp: N.ClassMethod | N.ClassProperty | N.ClassPrivateProperty,\n ): void {\n const optional = this.eat(tt.question);\n if (optional) methodOrProp.optional = true;\n\n if ((methodOrProp as any).readonly && this.match(tt.parenL)) {\n this.raise(TSErrors.ClassMethodHasReadonly, methodOrProp);\n }\n\n if ((methodOrProp as any).declare && this.match(tt.parenL)) {\n this.raise(TSErrors.ClassMethodHasDeclare, methodOrProp);\n }\n }\n\n // export type\n // Should be true for anything parsed by `tsTryParseExportDeclaration`.\n shouldParseExportDeclaration(): boolean {\n if (this.tsIsDeclarationStart()) return true;\n return super.shouldParseExportDeclaration();\n }\n\n // An apparent conditional expression could actually be an optional parameter in an arrow function.\n parseConditional(\n expr: N.Expression,\n\n startLoc: Position,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.Expression {\n if (!this.match(tt.question)) return expr;\n\n if (this.state.maybeInArrowParameters) {\n const nextCh = this.lookaheadCharCode();\n // These tokens cannot start an expression, so if one of them follows\n // ? then we are probably in an arrow function parameters list and we\n // don't parse the conditional expression.\n if (\n nextCh === charCodes.comma || // (a?, b) => c\n nextCh === charCodes.equalsTo || // (a? = b) => c\n nextCh === charCodes.colon || // (a?: b) => c\n nextCh === charCodes.rightParenthesis // (a?) => c\n ) {\n /*:: invariant(refExpressionErrors != null) */\n this.setOptionalParametersError(refExpressionErrors!);\n return expr;\n }\n }\n\n return super.parseConditional(expr, startLoc, refExpressionErrors);\n }\n\n // Note: These \"type casts\" are *not* valid TS expressions.\n // But we parse them here and change them when completing the arrow function.\n parseParenItem<T extends N.Expression | N.RestElement | N.SpreadElement>(\n node: T,\n startLoc: Position,\n ): T | N.TsTypeCastExpression {\n const newNode = super.parseParenItem(node, startLoc);\n if (this.eat(tt.question)) {\n (newNode as N.Identifier).optional = true;\n // Include questionmark in location of node\n // Don't use this.finishNode() as otherwise we might process comments twice and\n // include already consumed parens\n this.resetEndLocation(node);\n }\n\n if (this.match(tt.colon)) {\n const typeCastNode = this.startNodeAt<N.TsTypeCastExpression>(startLoc);\n typeCastNode.expression = node as N.Expression;\n typeCastNode.typeAnnotation = this.tsParseTypeAnnotation();\n\n return this.finishNode(typeCastNode, \"TSTypeCastExpression\");\n }\n\n return node;\n }\n\n parseExportDeclaration(\n node: N.ExportNamedDeclaration,\n ): N.Declaration | undefined | null {\n if (!this.state.isAmbientContext && this.isContextual(tt._declare)) {\n return this.tsInAmbientContext(() => this.parseExportDeclaration(node));\n }\n\n // Store original location\n const startLoc = this.state.startLoc;\n\n const isDeclare = this.eatContextual(tt._declare);\n\n if (\n isDeclare &&\n (this.isContextual(tt._declare) || !this.shouldParseExportDeclaration())\n ) {\n throw this.raise(\n TSErrors.ExpectedAmbientAfterExportDeclare,\n this.state.startLoc,\n );\n }\n\n const isIdentifier = tokenIsIdentifier(this.state.type);\n const declaration: N.Declaration | undefined | null =\n (isIdentifier && this.tsTryParseExportDeclaration()) ||\n super.parseExportDeclaration(node);\n\n if (!declaration) return null;\n\n if (\n declaration.type === \"TSInterfaceDeclaration\" ||\n declaration.type === \"TSTypeAliasDeclaration\" ||\n isDeclare\n ) {\n node.exportKind = \"type\";\n }\n\n if (isDeclare && declaration.type !== \"TSImportEqualsDeclaration\") {\n // Reset location to include `declare` in range\n this.resetStartLocation(declaration, startLoc);\n\n declaration.declare = true;\n }\n\n return declaration;\n }\n\n parseClassId(\n node: N.Class,\n isStatement: boolean,\n optionalId?: boolean | null,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n bindingType?: BindingFlag,\n ): void {\n if ((!isStatement || optionalId) && this.isContextual(tt._implements)) {\n return;\n }\n\n super.parseClassId(\n node,\n isStatement,\n optionalId,\n (node as any).declare\n ? BindingFlag.TYPE_TS_AMBIENT\n : BindingFlag.TYPE_CLASS,\n );\n const typeParameters = this.tsTryParseTypeParameters(\n this.tsParseInOutConstModifiers,\n );\n if (typeParameters) node.typeParameters = typeParameters;\n }\n\n parseClassPropertyAnnotation(\n node: N.ClassProperty | N.ClassPrivateProperty | N.ClassAccessorProperty,\n ): void {\n if (!node.optional) {\n if (this.eat(tt.bang)) {\n node.definite = true;\n } else if (this.eat(tt.question)) {\n node.optional = true;\n }\n }\n\n const type = this.tsTryParseTypeAnnotation();\n if (type) node.typeAnnotation = type;\n }\n\n parseClassProperty(node: N.ClassProperty): N.ClassProperty {\n this.parseClassPropertyAnnotation(node);\n\n if (\n this.state.isAmbientContext &&\n !(node.readonly && !node.typeAnnotation) &&\n this.match(tt.eq)\n ) {\n this.raise(\n TSErrors.DeclareClassFieldHasInitializer,\n this.state.startLoc,\n );\n }\n if (node.abstract && this.match(tt.eq)) {\n const { key } = node;\n this.raise(\n TSErrors.AbstractPropertyHasInitializer,\n this.state.startLoc,\n {\n propertyName:\n key.type === \"Identifier\" && !node.computed\n ? key.name\n : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]`,\n },\n );\n }\n\n return super.parseClassProperty(node);\n }\n\n parseClassPrivateProperty(\n node: N.ClassPrivateProperty,\n ): N.ClassPrivateProperty {\n if (node.abstract) {\n this.raise(TSErrors.PrivateElementHasAbstract, node);\n }\n\n if (node.accessibility) {\n this.raise(TSErrors.PrivateElementHasAccessibility, node, {\n modifier: node.accessibility,\n });\n }\n\n this.parseClassPropertyAnnotation(node);\n return super.parseClassPrivateProperty(node);\n }\n\n parseClassAccessorProperty(\n node: N.ClassAccessorProperty,\n ): N.ClassAccessorProperty {\n this.parseClassPropertyAnnotation(node);\n if (node.optional) {\n this.raise(TSErrors.AccessorCannotBeOptional, node);\n }\n return super.parseClassAccessorProperty(node);\n }\n\n pushClassMethod(\n classBody: N.ClassBody,\n method: N.ClassMethod,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowsDirectSuper: boolean,\n ): void {\n const typeParameters = this.tsTryParseTypeParameters(\n this.tsParseConstModifier,\n );\n if (typeParameters && isConstructor) {\n this.raise(TSErrors.ConstructorHasTypeParameters, typeParameters);\n }\n\n const { declare = false, kind } = method;\n\n if (declare && (kind === \"get\" || kind === \"set\")) {\n this.raise(TSErrors.DeclareAccessor, method, { kind });\n }\n if (typeParameters) method.typeParameters = typeParameters;\n super.pushClassMethod(\n classBody,\n method,\n isGenerator,\n isAsync,\n isConstructor,\n allowsDirectSuper,\n );\n }\n\n pushClassPrivateMethod(\n classBody: N.ClassBody,\n method: N.ClassPrivateMethod,\n isGenerator: boolean,\n isAsync: boolean,\n ): void {\n const typeParameters = this.tsTryParseTypeParameters(\n this.tsParseConstModifier,\n );\n if (typeParameters) method.typeParameters = typeParameters;\n super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n }\n\n declareClassPrivateMethodInScope(\n node: N.ClassPrivateMethod | N.TSDeclareMethod,\n kind: number,\n ) {\n if (node.type === \"TSDeclareMethod\") return;\n // This happens when using the \"estree\" plugin.\n if (\n (node as N.Node).type === \"MethodDefinition\" &&\n (node as unknown as N.EstreeMethodDefinition).value.body == null\n ) {\n return;\n }\n\n super.declareClassPrivateMethodInScope(node, kind);\n }\n\n parseClassSuper(node: N.Class): void {\n super.parseClassSuper(node);\n if (node.superClass) {\n if (node.superClass.type === \"TSInstantiationExpression\") {\n const tsInstantiationExpression = node.superClass;\n const superClass = tsInstantiationExpression.expression;\n // Take comments because the TSInstantiationExpression node will be removed from the AST.\n this.takeSurroundingComments(\n superClass,\n superClass.start,\n superClass.end,\n );\n\n const superTypeArguments = tsInstantiationExpression.typeParameters!;\n this.takeSurroundingComments(\n superTypeArguments,\n superTypeArguments.start,\n superTypeArguments.end,\n );\n\n node.superClass = superClass;\n node.superTypeParameters = superTypeArguments;\n } else if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n if (process.env.BABEL_8_BREAKING) {\n node.superTypeArguments = this.tsParseTypeArgumentsInExpression();\n } else {\n node.superTypeParameters = this.tsParseTypeArgumentsInExpression();\n }\n }\n }\n if (this.eatContextual(tt._implements)) {\n node.implements = this.tsParseHeritageClause(\"implements\");\n }\n }\n\n parseObjPropValue<T extends N.ObjectMember>(\n prop: Undone<T>,\n startLoc: Position | undefined | null,\n isGenerator: boolean,\n isAsync: boolean,\n isPattern: boolean,\n isAccessor: boolean,\n refExpressionErrors?: ExpressionErrors | null,\n ): T {\n const typeParameters = this.tsTryParseTypeParameters(\n this.tsParseConstModifier,\n );\n if (typeParameters) prop.typeParameters = typeParameters;\n\n return super.parseObjPropValue(\n prop,\n\n startLoc,\n isGenerator,\n isAsync,\n isPattern,\n isAccessor,\n refExpressionErrors,\n );\n }\n\n parseFunctionParams(node: N.Function, isConstructor: boolean): void {\n const typeParameters = this.tsTryParseTypeParameters(\n this.tsParseConstModifier,\n );\n if (typeParameters) node.typeParameters = typeParameters;\n super.parseFunctionParams(node, isConstructor);\n }\n\n // `let x: number;`\n parseVarId(\n decl: N.VariableDeclarator,\n kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n ): void {\n super.parseVarId(decl, kind);\n if (\n decl.id.type === \"Identifier\" &&\n !this.hasPrecedingLineBreak() &&\n this.eat(tt.bang)\n ) {\n decl.definite = true;\n }\n\n const type = this.tsTryParseTypeAnnotation();\n if (type) {\n decl.id.typeAnnotation = type;\n this.resetEndLocation(decl.id); // set end position to end of type\n }\n }\n\n // parse the return type of an async arrow function - let foo = (async (): number => {});\n parseAsyncArrowFromCallExpression(\n node: N.ArrowFunctionExpression,\n call: N.CallExpression,\n ): N.ArrowFunctionExpression {\n if (this.match(tt.colon)) {\n node.returnType = this.tsParseTypeAnnotation();\n }\n return super.parseAsyncArrowFromCallExpression(node, call);\n }\n\n parseMaybeAssign(\n refExpressionErrors?: ExpressionErrors | null,\n afterLeftParse?: Function,\n ): N.Expression {\n // Note: When the JSX plugin is on, type assertions (`<T> x`) aren't valid syntax.\n\n let state: State | undefined | null;\n let jsx;\n let typeCast;\n\n if (\n this.hasPlugin(\"jsx\") &&\n (this.match(tt.jsxTagStart) || this.match(tt.lt))\n ) {\n // Prefer to parse JSX if possible. But may be an arrow fn.\n state = this.state.clone();\n\n jsx = this.tryParse(\n () => super.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n state,\n );\n\n /*:: invariant(!jsx.aborted) */\n /*:: invariant(jsx.node != null) */\n if (!jsx.error) return jsx.node!;\n\n // Remove `tc.j_expr` or `tc.j_oTag` from context added\n // by parsing `jsxTagStart` to stop the JSX plugin from\n // messing with the tokens\n const { context } = this.state;\n const currentContext = context[context.length - 1];\n if (currentContext === tc.j_oTag || currentContext === tc.j_expr) {\n context.pop();\n }\n }\n\n if (!jsx?.error && !this.match(tt.lt)) {\n return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n }\n\n // Either way, we're looking at a '<': tt.jsxTagStart or relational.\n\n // If the state was cloned in the JSX parsing branch above but there\n // have been any error in the tryParse call, this.state is set to state\n // so we still need to clone it.\n if (!state || state === this.state) state = this.state.clone();\n\n let typeParameters: N.TsTypeParameterDeclaration | undefined | null;\n // We need to explicitly annotate 'abort' for microsoft/TypeScript#58170\n const arrow = this.tryParse((abort: () => never) => {\n // This is similar to TypeScript's `tryParseParenthesizedArrowFunctionExpression`.\n typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier);\n const expr = super.parseMaybeAssign(\n refExpressionErrors,\n afterLeftParse,\n );\n\n if (\n expr.type !== \"ArrowFunctionExpression\" ||\n expr.extra?.parenthesized\n ) {\n abort();\n }\n\n // Correct TypeScript code should have at least 1 type parameter, but don't crash on bad code.\n if (typeParameters?.params.length !== 0) {\n this.resetStartLocationFromNode(expr, typeParameters);\n }\n expr.typeParameters = typeParameters;\n\n if (process.env.BABEL_8_BREAKING) {\n if (\n this.hasPlugin(\"jsx\") &&\n expr.typeParameters.params.length === 1 &&\n !expr.typeParameters.extra?.trailingComma\n ) {\n // report error if single type parameter used without trailing comma.\n const parameter = expr.typeParameters\n .params[0] as N.TsTypeParameter;\n if (!parameter.constraint) {\n // A single type parameter must either have constraints\n // or a trailing comma, otherwise it's ambiguous with JSX.\n this.raise(\n TSErrors.SingleTypeParameterWithoutTrailingComma,\n createPositionWithColumnOffset(parameter.loc.end, 1),\n {\n typeParameterName: process.env.BABEL_8_BREAKING\n ? (parameter.name as N.Identifier).name\n : (parameter.name as string),\n },\n );\n }\n }\n }\n\n return expr;\n }, state);\n\n /*:: invariant(arrow.node != null) */\n if (!arrow.error && !arrow.aborted) {\n // This error is reported outside of the this.tryParse call so that\n // in case of <T>(x) => 2, we don't consider <T>(x) as a type assertion\n // because of this error.\n if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);\n return arrow.node;\n }\n\n if (!jsx) {\n // Try parsing a type cast instead of an arrow function.\n // This will never happen outside of JSX.\n // (Because in JSX the '<' should be a jsxTagStart and not a relational.\n assert(!this.hasPlugin(\"jsx\"));\n\n // This will start with a type assertion (via parseMaybeUnary).\n // But don't directly call `this.tsParseTypeAssertion` because we want to handle any binary after it.\n typeCast = this.tryParse(\n () => super.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n state,\n );\n /*:: invariant(!typeCast.aborted) */\n /*:: invariant(typeCast.node != null) */\n if (!typeCast.error) return typeCast.node!;\n }\n\n if (jsx?.node) {\n /*:: invariant(jsx.failState) */\n this.state = jsx.failState;\n return jsx.node;\n }\n\n if (arrow.node) {\n /*:: invariant(arrow.failState) */\n this.state = arrow.failState;\n if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);\n return arrow.node;\n }\n\n if (typeCast?.node) {\n /*:: invariant(typeCast.failState) */\n this.state = typeCast.failState;\n return typeCast.node;\n }\n\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw jsx?.error || arrow.error || typeCast?.error;\n }\n\n reportReservedArrowTypeParam(node: any) {\n if (\n node.params.length === 1 &&\n !node.params[0].constraint &&\n !node.extra?.trailingComma &&\n this.getPluginOption(\"typescript\", \"disallowAmbiguousJSXLike\")\n ) {\n this.raise(TSErrors.ReservedArrowTypeParam, node);\n }\n }\n\n // Handle type assertions\n parseMaybeUnary(\n refExpressionErrors?: ExpressionErrors | null,\n sawUnary?: boolean,\n ): N.Expression {\n if (!this.hasPlugin(\"jsx\") && this.match(tt.lt)) {\n return this.tsParseTypeAssertion();\n }\n return super.parseMaybeUnary(refExpressionErrors, sawUnary);\n }\n\n parseArrow(\n node: Undone<N.ArrowFunctionExpression>,\n ): Undone<N.ArrowFunctionExpression> | null | undefined {\n if (this.match(tt.colon)) {\n // This is different from how the TS parser does it.\n // TS uses lookahead. The Babel Parser parses it as a parenthesized expression and converts.\n\n const result = this.tryParse(abort => {\n const returnType = this.tsParseTypeOrTypePredicateAnnotation(\n tt.colon,\n );\n if (this.canInsertSemicolon() || !this.match(tt.arrow)) abort();\n return returnType;\n });\n\n if (result.aborted) return;\n\n if (!result.thrown) {\n if (result.error) this.state = result.failState;\n // @ts-expect-error refine typings\n node.returnType = result.node;\n }\n }\n\n return super.parseArrow(node);\n }\n\n // Allow type annotations inside of a parameter list.\n parseFunctionParamType(param: N.Pattern) {\n if (this.eat(tt.question)) {\n (param as any as N.Identifier).optional = true;\n }\n const type = this.tsTryParseTypeAnnotation();\n if (type) param.typeAnnotation = type;\n this.resetEndLocation(param);\n\n return param;\n }\n\n isAssignable(node: N.Node, isBinding?: boolean): boolean {\n switch (node.type) {\n case \"TSTypeCastExpression\":\n return this.isAssignable(node.expression, isBinding);\n case \"TSParameterProperty\":\n return true;\n default:\n return super.isAssignable(node, isBinding);\n }\n }\n\n toAssignable(node: N.Node, isLHS: boolean = false): void {\n switch (node.type) {\n case \"ParenthesizedExpression\":\n this.toAssignableParenthesizedExpression(node, isLHS);\n break;\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSNonNullExpression\":\n case \"TSTypeAssertion\":\n if (isLHS) {\n this.expressionScope.recordArrowParameterBindingError(\n TSErrors.UnexpectedTypeCastInParameter,\n node,\n );\n } else {\n this.raise(TSErrors.UnexpectedTypeCastInParameter, node);\n }\n this.toAssignable(node.expression, isLHS);\n break;\n case \"AssignmentExpression\":\n if (!isLHS && node.left.type === \"TSTypeCastExpression\") {\n node.left = this.typeCastToParameter(node.left) as N.Assignable;\n }\n /* fall through */\n default:\n super.toAssignable(node, isLHS);\n }\n }\n\n toAssignableParenthesizedExpression(\n node: N.ParenthesizedExpression,\n isLHS: boolean,\n ): void {\n switch (node.expression.type) {\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSNonNullExpression\":\n case \"TSTypeAssertion\":\n case \"ParenthesizedExpression\":\n this.toAssignable(node.expression, isLHS);\n break;\n default:\n super.toAssignable(node, isLHS);\n }\n }\n\n checkToRestConversion(node: N.Node, allowPattern: boolean): void {\n switch (node.type) {\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSNonNullExpression\":\n this.checkToRestConversion(node.expression, false);\n break;\n default:\n super.checkToRestConversion(node, allowPattern);\n }\n }\n\n isValidLVal(\n type:\n | \"TSTypeCastExpression\"\n | \"TSParameterProperty\"\n | \"TSNonNullExpression\"\n | \"TSInstantiationExpression\"\n | \"TSAsExpression\"\n | \"TSSatisfiesExpression\"\n | \"TSTypeAssertion\",\n disallowCallExpression: boolean,\n isUnparenthesizedInAssign: boolean,\n binding: BindingFlag,\n ) {\n switch (type) {\n // Allow \"typecasts\" to appear on the left of assignment expressions,\n // because it may be in an arrow function.\n // e.g. `const f = (foo: number = 0) => foo;`\n case \"TSTypeCastExpression\":\n return true;\n case \"TSParameterProperty\":\n return \"parameter\";\n case \"TSNonNullExpression\":\n return \"expression\";\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n return (\n (binding !== BindingFlag.TYPE_NONE || !isUnparenthesizedInAssign) &&\n ([\"expression\", true] as [string, boolean])\n );\n default:\n return super.isValidLVal(\n type,\n disallowCallExpression,\n isUnparenthesizedInAssign,\n binding,\n );\n }\n }\n\n parseBindingAtom(): N.Pattern {\n if (this.state.type === tt._this) {\n return this.parseIdentifier(/* liberal */ true);\n }\n return super.parseBindingAtom();\n }\n\n parseMaybeDecoratorArguments(\n expr: N.Expression,\n startLoc: Position,\n ): N.Expression {\n // handles `@f<<T>`\n if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n const typeArguments = this.tsParseTypeArgumentsInExpression();\n\n if (this.match(tt.parenL)) {\n const call = super.parseMaybeDecoratorArguments(\n expr,\n startLoc,\n ) as N.CallExpression;\n if (process.env.BABEL_8_BREAKING) {\n call.typeArguments = typeArguments;\n } else {\n call.typeParameters = typeArguments;\n }\n\n return call;\n }\n\n this.unexpected(null, tt.parenL);\n }\n\n return super.parseMaybeDecoratorArguments(expr, startLoc);\n }\n\n checkCommaAfterRest(\n close: (typeof charCodes)[keyof typeof charCodes],\n ): boolean {\n if (\n this.state.isAmbientContext &&\n this.match(tt.comma) &&\n this.lookaheadCharCode() === close\n ) {\n this.next();\n return false;\n }\n return super.checkCommaAfterRest(close);\n }\n\n // === === === === === === === === === === === === === === === ===\n // Note: All below methods are duplicates of something in flow.js.\n // Not sure what the best way to combine these is.\n // === === === === === === === === === === === === === === === ===\n\n isClassMethod(): boolean {\n return this.match(tt.lt) || super.isClassMethod();\n }\n\n isClassProperty(): boolean {\n return (\n this.match(tt.bang) || this.match(tt.colon) || super.isClassProperty()\n );\n }\n\n parseMaybeDefault<P extends N.Pattern>(\n startLoc?: Position | null,\n left?: P | null,\n ): P | N.AssignmentPattern {\n const node = super.parseMaybeDefault(startLoc, left);\n\n if (\n node.type === \"AssignmentPattern\" &&\n node.typeAnnotation &&\n node.right.start < node.typeAnnotation.start\n ) {\n this.raise(TSErrors.TypeAnnotationAfterAssign, node.typeAnnotation);\n }\n\n return node;\n }\n\n // ensure that inside types, we bypass the jsx parser plugin\n getTokenFromCode(code: number): void {\n if (this.state.inType) {\n if (code === charCodes.greaterThan) {\n this.finishOp(tt.gt, 1);\n return;\n }\n if (code === charCodes.lessThan) {\n this.finishOp(tt.lt, 1);\n return;\n }\n }\n super.getTokenFromCode(code);\n }\n\n // used after we have finished parsing types\n reScan_lt_gt() {\n const { type } = this.state;\n if (type === tt.lt) {\n this.state.pos -= 1;\n this.readToken_lt();\n } else if (type === tt.gt) {\n this.state.pos -= 1;\n this.readToken_gt();\n }\n }\n\n reScan_lt() {\n const { type } = this.state;\n if (type === tt.bitShiftL) {\n this.state.pos -= 2;\n this.finishOp(tt.lt, 1);\n return tt.lt;\n }\n return type;\n }\n\n toAssignableListItem(\n exprList: (N.Expression | N.SpreadElement | N.RestElement)[],\n index: number,\n isLHS: boolean,\n ): void {\n const node = exprList[index];\n if (node.type === \"TSTypeCastExpression\") {\n exprList[index] = this.typeCastToParameter(node);\n }\n super.toAssignableListItem(exprList, index, isLHS);\n }\n\n typeCastToParameter(node: N.TsTypeCastExpression): N.Expression {\n (node.expression as N.Identifier).typeAnnotation = node.typeAnnotation;\n\n this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);\n\n return node.expression;\n }\n\n shouldParseArrow(params: N.Node[]) {\n if (this.match(tt.colon)) {\n return params.every(expr => this.isAssignable(expr, true));\n }\n return super.shouldParseArrow(params);\n }\n\n shouldParseAsyncArrow(): boolean {\n return this.match(tt.colon) || super.shouldParseAsyncArrow();\n }\n\n canHaveLeadingDecorator() {\n // Avoid unnecessary lookahead in checking for abstract class unless needed!\n return super.canHaveLeadingDecorator() || this.isAbstractClass();\n }\n\n jsxParseOpeningElementAfterName(\n node: N.JSXOpeningElement,\n ): N.JSXOpeningElement {\n // handles `<Component<<T>`\n if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n const typeArguments = this.tsTryParseAndCatch(() =>\n this.tsParseTypeArgumentsInExpression(),\n );\n if (typeArguments) {\n if (process.env.BABEL_8_BREAKING) {\n node.typeArguments = typeArguments;\n } else {\n node.typeParameters = typeArguments;\n }\n }\n }\n return super.jsxParseOpeningElementAfterName(node);\n }\n\n getGetterSetterExpectedParamCount(\n method: N.ObjectMethod | N.ClassMethod,\n ): number {\n const baseCount = super.getGetterSetterExpectedParamCount(method);\n const params = this.getObjectOrClassMethodParams(method);\n const firstParam = params[0];\n const hasContextParam = firstParam && this.isThisParam(firstParam);\n\n return hasContextParam ? baseCount + 1 : baseCount;\n }\n\n parseCatchClauseParam(): N.Pattern {\n const param = super.parseCatchClauseParam();\n const type = this.tsTryParseTypeAnnotation();\n\n if (type) {\n param.typeAnnotation = type;\n this.resetEndLocation(param);\n }\n\n return param;\n }\n\n tsInAmbientContext<T>(cb: () => T): T {\n const { isAmbientContext: oldIsAmbientContext, strict: oldStrict } =\n this.state;\n this.state.isAmbientContext = true;\n this.state.strict = false;\n try {\n return cb();\n } finally {\n this.state.isAmbientContext = oldIsAmbientContext;\n this.state.strict = oldStrict;\n }\n }\n\n parseClass<T extends N.Class>(\n node: Undone<T>,\n isStatement: boolean,\n optionalId?: boolean,\n ): T {\n const oldInAbstractClass = this.state.inAbstractClass;\n this.state.inAbstractClass = !!(node as any).abstract;\n try {\n return super.parseClass(node, isStatement, optionalId);\n } finally {\n this.state.inAbstractClass = oldInAbstractClass;\n }\n }\n\n tsParseAbstractDeclaration(\n node: any,\n decorators: N.Decorator[] | null,\n ): N.ClassDeclaration | N.TsInterfaceDeclaration | null {\n if (this.match(tt._class)) {\n node.abstract = true;\n return this.maybeTakeDecorators(\n decorators,\n this.parseClass<N.ClassDeclaration>(\n node as N.ClassDeclaration,\n /* isStatement */ true,\n /* optionalId */ false,\n ),\n );\n } else if (this.isContextual(tt._interface)) {\n // for invalid abstract interface\n\n // To avoid\n // abstract interface\n // Foo {}\n if (!this.hasFollowingLineBreak()) {\n node.abstract = true;\n this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifier, node);\n return this.tsParseInterfaceDeclaration(\n node as N.TsInterfaceDeclaration,\n );\n } else {\n return null;\n }\n }\n throw this.unexpected(null, tt._class);\n }\n\n parseMethod<\n T extends N.ObjectMethod | N.ClassMethod | N.ClassPrivateMethod,\n >(\n node: Undone<T>,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowDirectSuper: boolean,\n type: T[\"type\"],\n inClassScope?: boolean,\n ) {\n const method = super.parseMethod<T>(\n node,\n isGenerator,\n isAsync,\n isConstructor,\n allowDirectSuper,\n type,\n inClassScope,\n );\n // @ts-expect-error todo(flow->ts) property not defined for all types in union\n if (method.abstract || method.type === \"TSAbstractMethodDefinition\") {\n const hasEstreePlugin = this.hasPlugin(\"estree\");\n const methodFn = hasEstreePlugin\n ? // @ts-expect-error estree typings\n method.value\n : method;\n if (methodFn.body) {\n const { key } = method;\n this.raise(TSErrors.AbstractMethodHasImplementation, method, {\n methodName:\n key.type === \"Identifier\" && !method.computed\n ? key.name\n : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]`,\n });\n }\n }\n return method;\n }\n\n tsParseTypeParameterName(): N.Identifier | string {\n const typeName: N.Identifier = this.parseIdentifier();\n return process.env.BABEL_8_BREAKING ? typeName : typeName.name;\n }\n\n shouldParseAsAmbientContext(): boolean {\n return !!this.getPluginOption(\"typescript\", \"dts\");\n }\n\n parse() {\n if (this.shouldParseAsAmbientContext()) {\n this.state.isAmbientContext = true;\n }\n return super.parse();\n }\n\n getExpression() {\n if (this.shouldParseAsAmbientContext()) {\n this.state.isAmbientContext = true;\n }\n return super.getExpression();\n }\n\n parseExportSpecifier(\n node: Undone<N.ExportSpecifier>,\n isString: boolean,\n isInTypeExport: boolean,\n isMaybeTypeOnly: boolean,\n ) {\n if (!isString && isMaybeTypeOnly) {\n this.parseTypeOnlyImportExportSpecifier(\n node,\n /* isImport */ false,\n isInTypeExport,\n );\n return this.finishNode<N.ExportSpecifier>(node, \"ExportSpecifier\");\n }\n node.exportKind = \"value\";\n return super.parseExportSpecifier(\n node,\n isString,\n isInTypeExport,\n isMaybeTypeOnly,\n );\n }\n\n parseImportSpecifier(\n specifier: Undone<N.ImportSpecifier>,\n importedIsString: boolean,\n isInTypeOnlyImport: boolean,\n isMaybeTypeOnly: boolean,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n bindingType: BindingFlag | undefined,\n ): N.ImportSpecifier {\n if (!importedIsString && isMaybeTypeOnly) {\n this.parseTypeOnlyImportExportSpecifier(\n specifier,\n /* isImport */ true,\n isInTypeOnlyImport,\n );\n return this.finishNode<N.ImportSpecifier>(specifier, \"ImportSpecifier\");\n }\n specifier.importKind = \"value\";\n return super.parseImportSpecifier(\n specifier,\n importedIsString,\n isInTypeOnlyImport,\n isMaybeTypeOnly,\n isInTypeOnlyImport\n ? BindingFlag.TYPE_TS_TYPE_IMPORT\n : BindingFlag.TYPE_TS_VALUE_IMPORT,\n );\n }\n\n parseTypeOnlyImportExportSpecifier(\n node: any,\n isImport: boolean,\n isInTypeOnlyImportExport: boolean,\n ): void {\n const leftOfAsKey = isImport ? \"imported\" : \"local\";\n const rightOfAsKey = isImport ? \"local\" : \"exported\";\n\n let leftOfAs = node[leftOfAsKey];\n let rightOfAs;\n\n let hasTypeSpecifier = false;\n let canParseAsKeyword = true;\n\n const loc = leftOfAs.loc.start;\n\n // https://github.com/microsoft/TypeScript/blob/fc4f9d83d5939047aa6bb2a43965c6e9bbfbc35b/src/compiler/parser.ts#L7411-L7456\n // import { type } from \"mod\"; - hasTypeSpecifier: false, leftOfAs: type\n // import { type as } from \"mod\"; - hasTypeSpecifier: true, leftOfAs: as\n // import { type as as } from \"mod\"; - hasTypeSpecifier: false, leftOfAs: type, rightOfAs: as\n // import { type as as as } from \"mod\"; - hasTypeSpecifier: true, leftOfAs: as, rightOfAs: as\n if (this.isContextual(tt._as)) {\n // { type as ...? }\n const firstAs = this.parseIdentifier();\n if (this.isContextual(tt._as)) {\n // { type as as ...? }\n const secondAs = this.parseIdentifier();\n if (tokenIsKeywordOrIdentifier(this.state.type)) {\n // { type as as something }\n hasTypeSpecifier = true;\n leftOfAs = firstAs;\n rightOfAs = isImport\n ? this.parseIdentifier()\n : this.parseModuleExportName();\n canParseAsKeyword = false;\n } else {\n // { type as as }\n rightOfAs = secondAs;\n canParseAsKeyword = false;\n }\n } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n // { type as something }\n canParseAsKeyword = false;\n rightOfAs = isImport\n ? this.parseIdentifier()\n : this.parseModuleExportName();\n } else {\n // { type as }\n hasTypeSpecifier = true;\n leftOfAs = firstAs;\n }\n } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n // { type something ...? }\n hasTypeSpecifier = true;\n if (isImport) {\n leftOfAs = this.parseIdentifier(true);\n if (!this.isContextual(tt._as)) {\n this.checkReservedWord(\n leftOfAs.name,\n leftOfAs.loc.start,\n true,\n true,\n );\n }\n } else {\n leftOfAs = this.parseModuleExportName();\n }\n }\n if (hasTypeSpecifier && isInTypeOnlyImportExport) {\n this.raise(\n isImport\n ? TSErrors.TypeModifierIsUsedInTypeImports\n : TSErrors.TypeModifierIsUsedInTypeExports,\n loc,\n );\n }\n\n node[leftOfAsKey] = leftOfAs;\n node[rightOfAsKey] = rightOfAs;\n\n const kindKey = isImport ? \"importKind\" : \"exportKind\";\n node[kindKey] = hasTypeSpecifier ? \"type\" : \"value\";\n\n if (canParseAsKeyword && this.eatContextual(tt._as)) {\n node[rightOfAsKey] = isImport\n ? this.parseIdentifier()\n : this.parseModuleExportName();\n }\n if (!node[rightOfAsKey]) {\n node[rightOfAsKey] = this.cloneIdentifier(node[leftOfAsKey]);\n }\n if (isImport) {\n this.checkIdentifier(\n node[rightOfAsKey],\n hasTypeSpecifier\n ? BindingFlag.TYPE_TS_TYPE_IMPORT\n : BindingFlag.TYPE_TS_VALUE_IMPORT,\n );\n }\n }\n\n /**\n * This hook is defined in the ESTree plugin.\n * The TS-ESLint always define optional AST properties, here we provide the\n * default value for such properties immediately after `finishNode` was invoked.\n *\n * @param node The AST node finished by finishNode\n * @returns\n */\n fillOptionalPropertiesForTSESLint(node: N.Node): void {\n switch (node.type) {\n case \"ExpressionStatement\":\n node.directive ??= undefined;\n return;\n case \"RestElement\":\n node.value = undefined;\n /* fallthrough */\n case \"Identifier\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n case \"ObjectPattern\":\n node.decorators ??= [];\n node.optional ??= false;\n node.typeAnnotation ??= undefined;\n return;\n case \"TSParameterProperty\":\n node.accessibility ??= undefined;\n node.decorators ??= [];\n node.override ??= false;\n node.readonly ??= false;\n node.static ??= false;\n return;\n case \"TSEmptyBodyFunctionExpression\":\n node.body = null;\n /* fallthrough */\n case \"TSDeclareFunction\":\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n node.declare ??= false;\n node.returnType ??= undefined;\n node.typeParameters ??= undefined;\n return;\n case \"Property\":\n node.optional ??= false;\n return;\n case \"TSMethodSignature\":\n case \"TSPropertySignature\":\n node.optional ??= false;\n /* fallthrough */\n case \"TSIndexSignature\":\n node.accessibility ??= undefined;\n node.readonly ??= false;\n node.static ??= false;\n return;\n case \"TSAbstractPropertyDefinition\":\n case \"PropertyDefinition\":\n case \"TSAbstractAccessorProperty\":\n case \"AccessorProperty\":\n node.declare ??= false;\n node.definite ??= false;\n node.readonly ??= false;\n node.typeAnnotation ??= undefined;\n /* fallthrough */\n case \"TSAbstractMethodDefinition\":\n case \"MethodDefinition\":\n node.accessibility ??= undefined;\n node.decorators ??= [];\n node.override ??= false;\n node.optional ??= false;\n return;\n case \"ClassExpression\":\n node.id ??= null;\n /* fallthrough */\n case \"ClassDeclaration\":\n node.abstract ??= false;\n node.declare ??= false;\n node.decorators ??= [];\n node.implements ??= [];\n node.superTypeArguments ??= undefined;\n node.typeParameters ??= undefined;\n return;\n case \"TSTypeAliasDeclaration\":\n case \"VariableDeclaration\":\n node.declare ??= false;\n return;\n case \"VariableDeclarator\":\n node.definite ??= false;\n return;\n case \"TSEnumDeclaration\":\n node.const ??= false;\n node.declare ??= false;\n return;\n case \"TSEnumMember\":\n node.computed ??= false;\n return;\n case \"TSImportType\":\n node.qualifier ??= null;\n node.options ??= null;\n if (process.env.BABEL_8_BREAKING) {\n node.typeArguments ??= null;\n }\n return;\n case \"TSInterfaceDeclaration\":\n node.declare ??= false;\n node.extends ??= [];\n return;\n case \"TSMappedType\":\n node.optional ??= false;\n node.readonly ??= undefined;\n return;\n case \"TSModuleDeclaration\":\n node.declare ??= false;\n node.global ??= node.kind === \"global\";\n return;\n case \"TSTypeParameter\":\n node.const ??= false;\n node.in ??= false;\n node.out ??= false;\n return;\n }\n }\n\n chStartsBindingIdentifierAndNotRelationalOperator(ch: number, pos: number) {\n if (isIdentifierStart(ch)) {\n keywordAndTSRelationalOperator.lastIndex = pos;\n if (keywordAndTSRelationalOperator.test(this.input)) {\n // We have seen as/in/instanceof/satisfies so far, now check if the identifier\n // ends here\n const endCh = this.codePointAtPos(\n keywordAndTSRelationalOperator.lastIndex,\n );\n if (!isIdentifierChar(endCh) && endCh !== charCodes.backslash) {\n return false;\n }\n }\n return true;\n } else if (ch === charCodes.backslash) {\n return true;\n } else {\n return false;\n }\n }\n\n nextTokenIsIdentifierAndNotTSRelationalOperatorOnSameLine(): boolean {\n const next = this.nextTokenInLineStart();\n const nextCh = this.codePointAtPos(next);\n return this.chStartsBindingIdentifierAndNotRelationalOperator(\n nextCh,\n next,\n );\n }\n\n nextTokenIsIdentifierOrStringLiteralOnSameLine(): boolean {\n const next = this.nextTokenInLineStart();\n const nextCh = this.codePointAtPos(next);\n return (\n this.chStartsBindingIdentifier(nextCh, next) ||\n nextCh === charCodes.quotationMark ||\n nextCh === charCodes.apostrophe\n );\n }\n };\n\nfunction isPossiblyLiteralEnum(expression: N.Expression): boolean {\n if (expression.type !== \"MemberExpression\") return false;\n\n const { computed, property } = expression;\n\n if (\n computed &&\n property.type !== \"StringLiteral\" &&\n (property.type !== \"TemplateLiteral\" || property.expressions.length > 0)\n ) {\n return false;\n }\n\n return isUncomputedMemberExpressionChain(expression.object);\n}\n\n// If a const declaration has no type annotation and is initialized to\n// a string literal, numeric literal, or enum reference, then it is\n// allowed. In an ideal world, we'd check whether init was *actually* an\n// enum reference, but we allow anything that \"could be\" a literal enum\n// in `isPossiblyLiteralEnum` since we don't have all the information\n// that the typescript compiler has.\nfunction isValidAmbientConstInitializer(\n expression: N.Expression,\n estree: boolean,\n): boolean {\n const { type } = expression;\n if (expression.extra?.parenthesized) {\n return false;\n }\n if (estree) {\n if (type === \"Literal\") {\n const { value } = expression;\n if (typeof value === \"string\" || typeof value === \"boolean\") {\n return true;\n }\n }\n } else {\n if (type === \"StringLiteral\" || type === \"BooleanLiteral\") {\n return true;\n }\n }\n if (isNumber(expression, estree) || isNegativeNumber(expression, estree)) {\n return true;\n }\n if (type === \"TemplateLiteral\" && expression.expressions.length === 0) {\n return true;\n }\n if (isPossiblyLiteralEnum(expression)) {\n return true;\n }\n return false;\n}\n\nfunction isNumber(expression: N.Expression, estree: boolean): boolean {\n if (estree) {\n return (\n expression.type === \"Literal\" &&\n (typeof expression.value === \"number\" || \"bigint\" in expression)\n );\n }\n return (\n expression.type === \"NumericLiteral\" || expression.type === \"BigIntLiteral\"\n );\n}\n\nfunction isNegativeNumber(expression: N.Expression, estree: boolean): boolean {\n if (expression.type === \"UnaryExpression\") {\n const { operator, argument } = expression;\n if (operator === \"-\" && isNumber(argument, estree)) {\n return true;\n }\n }\n return false;\n}\n\nfunction isUncomputedMemberExpressionChain(expression: N.Expression): boolean {\n if (expression.type === \"Identifier\") return true;\n if (expression.type !== \"MemberExpression\" || expression.computed) {\n return false;\n }\n\n return isUncomputedMemberExpressionChain(expression.object);\n}\n","import * as charCodes from \"charcodes\";\n\nimport { tokenLabelName, tt } from \"../tokenizer/types.ts\";\nimport type Parser from \"../parser/index.ts\";\nimport type * as N from \"../types.ts\";\nimport { ParseErrorEnum } from \"../parse-error.ts\";\nimport type { Undone } from \"../parser/node.ts\";\nimport type { ExpressionErrors } from \"../parser/util.ts\";\nimport type { BindingFlag } from \"../util/scopeflags.ts\";\nimport type { Position } from \"../util/location.ts\";\n\ntype PossiblePlaceholders = {\n Identifier: N.Identifier;\n StringLiteral: N.StringLiteral;\n Expression: N.Expression;\n Statement: N.Statement;\n Declaration: N.Declaration;\n BlockStatement: N.BlockStatement;\n ClassBody: N.ClassBody;\n Pattern: N.Pattern;\n};\nexport type PlaceholderTypes = keyof PossiblePlaceholders;\n\ntype NodeOf<T extends keyof PossiblePlaceholders> = PossiblePlaceholders[T];\n// todo: when there is proper union type for Node\n// type NodeOf<T extends PlaceholderTypes> = Extract<N.Node, { type: T }>;\n\n// todo: Placeholder<T> breaks everything, because its type is incompatible with\n// the substituted nodes.\ntype MaybePlaceholder<T extends PlaceholderTypes> = NodeOf<T>; // | Placeholder<T>\n\n/* eslint sort-keys: \"error\" */\nconst PlaceholderErrors = ParseErrorEnum`placeholders`({\n ClassNameIsRequired: \"A class name is required.\",\n UnexpectedSpace: \"Unexpected space in placeholder.\",\n});\n\nexport default (superClass: typeof Parser) =>\n class PlaceholdersParserMixin extends superClass implements Parser {\n parsePlaceholder<T extends PlaceholderTypes>(\n expectedNode: T,\n ): /*?N.Placeholder<T>*/ MaybePlaceholder<T> | undefined {\n if (this.match(tt.placeholder)) {\n const node = this.startNode<N.Placeholder<T>>();\n this.next();\n this.assertNoSpace();\n\n // We can't use this.parseIdentifier because\n // we don't want nested placeholders.\n node.name = super.parseIdentifier(/* liberal */ true);\n\n this.assertNoSpace();\n this.expect(tt.placeholder);\n return this.finishPlaceholder(node, expectedNode);\n }\n }\n\n finishPlaceholder<T extends PlaceholderTypes>(\n node: Undone<N.Placeholder> | Undone<NodeOf<PlaceholderTypes>>,\n expectedNode: T,\n ): /*N.Placeholder<T>*/ MaybePlaceholder<T> {\n let placeholder = node as unknown as N.Placeholder<T>;\n\n if (!placeholder.expectedNode || !placeholder.type) {\n placeholder = this.finishNode(\n placeholder,\n \"Placeholder\",\n ) as unknown as N.Placeholder<T>;\n }\n\n placeholder.expectedNode = expectedNode;\n return placeholder as unknown as MaybePlaceholder<T>;\n }\n\n /* ============================================================ *\n * tokenizer/index.ts *\n * ============================================================ */\n\n getTokenFromCode(code: number) {\n if (\n code === charCodes.percentSign &&\n this.input.charCodeAt(this.state.pos + 1) === charCodes.percentSign\n ) {\n this.finishOp(tt.placeholder, 2);\n } else {\n super.getTokenFromCode(code);\n }\n }\n\n /* ============================================================ *\n * parser/expression.ts *\n * ============================================================ */\n\n parseExprAtom(\n refExpressionErrors?: ExpressionErrors | null,\n ): MaybePlaceholder<\"Expression\"> {\n return (\n this.parsePlaceholder(\"Expression\") ||\n super.parseExprAtom(refExpressionErrors)\n );\n }\n\n parseIdentifier(liberal?: boolean): MaybePlaceholder<\"Identifier\"> {\n // NOTE: This function only handles identifiers outside of\n // expressions and binding patterns, since they are already\n // handled by the parseExprAtom and parseBindingAtom functions.\n // This is needed, for example, to parse \"class %%NAME%% {}\".\n return (\n this.parsePlaceholder(\"Identifier\") || super.parseIdentifier(liberal)\n );\n }\n\n checkReservedWord(\n word: string,\n startLoc: Position,\n checkKeywords: boolean,\n isBinding: boolean,\n ) {\n // Sometimes we call #checkReservedWord(node.name), expecting\n // that node is an Identifier. If it is a Placeholder, name\n // will be undefined.\n if (word !== undefined) {\n super.checkReservedWord(word, startLoc, checkKeywords, isBinding);\n }\n }\n\n /* ============================================================ *\n * parser/node.ts *\n * ============================================================ */\n\n cloneIdentifier<T extends N.Identifier | N.Placeholder>(node: T): T {\n const cloned = super.cloneIdentifier(node);\n if (cloned.type === \"Placeholder\") {\n cloned.expectedNode = (node as N.Placeholder).expectedNode;\n }\n return cloned;\n }\n\n cloneStringLiteral<\n T extends N.EstreeLiteral | N.StringLiteral | N.Placeholder,\n >(node: T): T {\n if (node.type === \"Placeholder\") {\n return this.cloneIdentifier(node) as T;\n }\n return super.cloneStringLiteral(node);\n }\n\n /* ============================================================ *\n * parser/lval.ts *\n * ============================================================ */\n\n parseBindingAtom(): MaybePlaceholder<\"Pattern\"> {\n return this.parsePlaceholder(\"Pattern\") || super.parseBindingAtom();\n }\n\n isValidLVal(\n type: string,\n disallowCallExpression: boolean,\n isParenthesized: boolean,\n binding: BindingFlag,\n ) {\n return (\n type === \"Placeholder\" ||\n super.isValidLVal(\n type,\n disallowCallExpression,\n isParenthesized,\n binding,\n )\n );\n }\n\n toAssignable(node: N.Node, isLHS: boolean): void {\n if (\n node &&\n node.type === \"Placeholder\" &&\n node.expectedNode === \"Expression\"\n ) {\n node.expectedNode = \"Pattern\";\n } else {\n super.toAssignable(node, isLHS);\n }\n }\n\n /* ============================================================ *\n * parser/statement.ts *\n * ============================================================ */\n\n chStartsBindingIdentifier(ch: number, pos: number): boolean {\n if (super.chStartsBindingIdentifier(ch, pos)) {\n return true;\n }\n\n // Accept \"let %%\" as the start of \"let %%placeholder%%\", as though the\n // placeholder were an identifier.\n const next = this.nextTokenStart();\n if (\n this.input.charCodeAt(next) === charCodes.percentSign &&\n this.input.charCodeAt(next + 1) === charCodes.percentSign\n ) {\n return true;\n }\n\n return false;\n }\n\n verifyBreakContinue(\n node: N.BreakStatement | N.ContinueStatement,\n isBreak: boolean,\n ) {\n // @ts-expect-error: node.label could be Placeholder\n if (node.label?.type === \"Placeholder\") return;\n super.verifyBreakContinue(node, isBreak);\n }\n\n // @ts-expect-error Plugin will override parser interface\n parseExpressionStatement(\n node: MaybePlaceholder<\"Statement\">,\n expr: MaybePlaceholder<\"Expression\">,\n ): MaybePlaceholder<\"Statement\"> {\n // @ts-expect-error placeholder typings\n if (expr.type !== \"Placeholder\" || expr.extra?.parenthesized) {\n // @ts-expect-error placeholder typings\n return super.parseExpressionStatement(node, expr);\n }\n\n if (this.match(tt.colon)) {\n // @ts-expect-error placeholder typings\n const stmt: N.LabeledStatement = node;\n stmt.label = this.finishPlaceholder(expr, \"Identifier\");\n this.next();\n stmt.body = super.parseStatementOrSloppyAnnexBFunctionDeclaration();\n return this.finishNode(stmt, \"LabeledStatement\");\n }\n\n this.semicolon();\n const stmtPlaceholder = node as unknown as N.Placeholder<\"Statement\">;\n stmtPlaceholder.name = (expr as N.Placeholder).name;\n return this.finishPlaceholder(stmtPlaceholder, \"Statement\");\n }\n\n parseBlock(\n allowDirectives?: boolean,\n createNewLexicalScope?: boolean,\n afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n ): MaybePlaceholder<\"BlockStatement\"> {\n return (\n this.parsePlaceholder(\"BlockStatement\") ||\n super.parseBlock(\n allowDirectives,\n createNewLexicalScope,\n afterBlockParse,\n )\n );\n }\n\n parseFunctionId(\n requireId?: boolean,\n ): MaybePlaceholder<\"Identifier\"> | undefined | null {\n return (\n this.parsePlaceholder(\"Identifier\") || super.parseFunctionId(requireId)\n );\n }\n // @ts-expect-error Plugin will override parser interface\n parseClass<T extends N.Class>(\n node: T,\n isStatement: /* T === ClassDeclaration */ boolean,\n optionalId?: boolean,\n ): T {\n const type = isStatement ? \"ClassDeclaration\" : \"ClassExpression\";\n\n this.next();\n const oldStrict = this.state.strict;\n\n const placeholder = this.parsePlaceholder(\"Identifier\");\n if (placeholder) {\n if (\n this.match(tt._extends) ||\n this.match(tt.placeholder) ||\n this.match(tt.braceL)\n ) {\n node.id = placeholder;\n } else if (optionalId || !isStatement) {\n node.id = null;\n node.body = this.finishPlaceholder(placeholder, \"ClassBody\");\n return this.finishNode(node, type);\n } else {\n throw this.raise(\n PlaceholderErrors.ClassNameIsRequired,\n this.state.startLoc,\n );\n }\n } else {\n this.parseClassId(node, isStatement, optionalId);\n }\n\n super.parseClassSuper(node);\n node.body =\n this.parsePlaceholder(\"ClassBody\") ||\n super.parseClassBody(!!node.superClass, oldStrict);\n return this.finishNode(node, type);\n }\n\n parseExport(\n node: Undone<\n | N.ExportDefaultDeclaration\n | N.ExportAllDeclaration\n | N.ExportNamedDeclaration\n >,\n decorators: N.Decorator[] | null,\n ): N.AnyExport {\n const placeholder = this.parsePlaceholder(\"Identifier\");\n if (!placeholder) return super.parseExport(node, decorators);\n\n const node2 = node as Undone<N.ExportNamedDeclaration>;\n\n if (!this.isContextual(tt._from) && !this.match(tt.comma)) {\n // export %%DECL%%;\n node2.specifiers = [];\n node2.source = null;\n node2.declaration = this.finishPlaceholder(placeholder, \"Declaration\");\n return this.finishNode(node2, \"ExportNamedDeclaration\");\n }\n\n // export %%NAME%% from \"foo\";\n this.expectPlugin(\"exportDefaultFrom\");\n const specifier = this.startNode<N.ExportDefaultSpecifier>();\n specifier.exported = placeholder;\n node2.specifiers = [this.finishNode(specifier, \"ExportDefaultSpecifier\")];\n\n return super.parseExport(node2, decorators);\n }\n\n isExportDefaultSpecifier(): boolean {\n if (this.match(tt._default)) {\n const next = this.nextTokenStart();\n if (this.isUnparsedContextual(next, \"from\")) {\n if (\n this.input.startsWith(\n tokenLabelName(tt.placeholder),\n this.nextTokenStartSince(next + 4),\n )\n ) {\n return true;\n }\n }\n }\n return super.isExportDefaultSpecifier();\n }\n\n maybeParseExportDefaultSpecifier(\n node: Undone<\n | N.ExportDefaultDeclaration\n | N.ExportAllDeclaration\n | N.ExportNamedDeclaration\n >,\n maybeDefaultIdentifier: N.Identifier | null,\n ): node is Undone<N.ExportNamedDeclaration> {\n if ((node as N.ExportNamedDeclaration).specifiers?.length) {\n // \"export %%NAME%%\" has already been parsed by #parseExport.\n return true;\n }\n return super.maybeParseExportDefaultSpecifier(\n node,\n maybeDefaultIdentifier,\n );\n }\n\n checkExport(node: N.ExportNamedDeclaration): void {\n const { specifiers } = node;\n if (specifiers?.length) {\n node.specifiers = specifiers.filter(\n // @ts-expect-error placeholder typings\n node => node.exported.type === \"Placeholder\",\n );\n }\n super.checkExport(node);\n node.specifiers = specifiers;\n }\n\n parseImport(\n node: Undone<N.ImportDeclaration>,\n ): N.ImportDeclaration | N.TsImportEqualsDeclaration {\n const placeholder = this.parsePlaceholder(\"Identifier\");\n if (!placeholder) return super.parseImport(node);\n\n node.specifiers = [];\n\n if (!this.isContextual(tt._from) && !this.match(tt.comma)) {\n // import %%STRING%%;\n node.source = this.finishPlaceholder(placeholder, \"StringLiteral\");\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n }\n\n // import %%DEFAULT%% ...\n const specifier =\n this.startNodeAtNode<N.ImportDefaultSpecifier>(placeholder);\n specifier.local = placeholder;\n node.specifiers.push(\n this.finishNode(specifier, \"ImportDefaultSpecifier\"),\n );\n\n if (this.eat(tt.comma)) {\n // import %%DEFAULT%%, * as ...\n const hasStarImport = this.maybeParseStarImportSpecifier(node);\n\n // import %%DEFAULT%%, { ...\n if (!hasStarImport) this.parseNamedImportSpecifiers(node);\n }\n\n this.expectContextual(tt._from);\n node.source = this.parseImportSource();\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n }\n\n parseImportSource(): MaybePlaceholder<\"StringLiteral\"> {\n // import ... from %%STRING%%;\n\n return (\n this.parsePlaceholder(\"StringLiteral\") || super.parseImportSource()\n );\n }\n\n // Throws if the current token and the prev one are separated by a space.\n assertNoSpace(): void {\n if (\n this.state.start >\n this.offsetToSourcePos(this.state.lastTokEndLoc!.index)\n ) {\n this.raise(\n PlaceholderErrors.UnexpectedSpace,\n this.state.lastTokEndLoc!,\n );\n }\n }\n };\n","import type Parser from \"../parser/index.ts\";\nimport { tokenIsIdentifier, tt } from \"../tokenizer/types.ts\";\nimport type * as N from \"../types.ts\";\nimport type { ExpressionErrors } from \"../parser/util.ts\";\n\nexport default (superClass: typeof Parser) =>\n class V8IntrinsicMixin extends superClass implements Parser {\n parseV8Intrinsic(): N.Expression | undefined {\n if (this.match(tt.modulo)) {\n const v8IntrinsicStartLoc = this.state.startLoc;\n // let the `loc` of Identifier starts from `%`\n const node = this.startNode<N.Identifier>();\n this.next(); // eat '%'\n if (tokenIsIdentifier(this.state.type)) {\n const name = this.parseIdentifierName();\n const identifier = this.createIdentifier(node, name);\n this.castNodeTo(identifier, \"V8IntrinsicIdentifier\");\n if (this.match(tt.parenL)) {\n return identifier;\n }\n }\n this.unexpected(v8IntrinsicStartLoc);\n }\n }\n\n /* ============================================================ *\n * parser/expression.js *\n * ============================================================ */\n\n parseExprAtom(refExpressionErrors?: ExpressionErrors | null): N.Expression {\n return (\n this.parseV8Intrinsic() || super.parseExprAtom(refExpressionErrors)\n );\n }\n };\n","import type Parser from \"./parser/index.ts\";\nimport type { PluginConfig } from \"./typings.ts\";\n\nexport type Plugin = PluginConfig;\n\nexport type MixinPlugin = (\n superClass: new (...args: any) => Parser,\n) => new (...args: any) => Parser;\n\nconst PIPELINE_PROPOSALS = process.env.BABEL_8_BREAKING\n ? [\"fsharp\", \"hack\"]\n : [\"minimal\", \"fsharp\", \"hack\", \"smart\"];\nconst TOPIC_TOKENS = [\"^^\", \"@@\", \"^\", \"%\", \"#\"];\n\nexport function validatePlugins(pluginsMap: Map<string, any>) {\n if (pluginsMap.has(\"decorators\")) {\n if (pluginsMap.has(\"decorators-legacy\")) {\n throw new Error(\n \"Cannot use the decorators and decorators-legacy plugin together\",\n );\n }\n\n const decoratorsBeforeExport =\n pluginsMap.get(\"decorators\").decoratorsBeforeExport;\n if (\n decoratorsBeforeExport != null &&\n typeof decoratorsBeforeExport !== \"boolean\"\n ) {\n throw new Error(\n \"'decoratorsBeforeExport' must be a boolean, if specified.\",\n );\n }\n\n const allowCallParenthesized =\n pluginsMap.get(\"decorators\").allowCallParenthesized;\n if (\n allowCallParenthesized != null &&\n typeof allowCallParenthesized !== \"boolean\"\n ) {\n throw new Error(\"'allowCallParenthesized' must be a boolean.\");\n }\n }\n\n if (pluginsMap.has(\"flow\") && pluginsMap.has(\"typescript\")) {\n throw new Error(\"Cannot combine flow and typescript plugins.\");\n }\n\n if (pluginsMap.has(\"placeholders\") && pluginsMap.has(\"v8intrinsic\")) {\n throw new Error(\"Cannot combine placeholders and v8intrinsic plugins.\");\n }\n\n if (pluginsMap.has(\"pipelineOperator\")) {\n const proposal = pluginsMap.get(\"pipelineOperator\").proposal;\n\n if (!PIPELINE_PROPOSALS.includes(proposal)) {\n const proposalList = PIPELINE_PROPOSALS.map(p => `\"${p}\"`).join(\", \");\n throw new Error(\n `\"pipelineOperator\" requires \"proposal\" option whose value must be one of: ${proposalList}.`,\n );\n }\n\n if (proposal === \"hack\") {\n if (pluginsMap.has(\"placeholders\")) {\n throw new Error(\n \"Cannot combine placeholders plugin and Hack-style pipes.\",\n );\n }\n\n if (pluginsMap.has(\"v8intrinsic\")) {\n throw new Error(\n \"Cannot combine v8intrinsic plugin and Hack-style pipes.\",\n );\n }\n\n const topicToken = pluginsMap.get(\"pipelineOperator\").topicToken;\n\n if (!TOPIC_TOKENS.includes(topicToken)) {\n const tokenList = TOPIC_TOKENS.map(t => `\"${t}\"`).join(\", \");\n\n throw new Error(\n `\"pipelineOperator\" in \"proposal\": \"hack\" mode also requires a \"topicToken\" option whose value must be one of: ${tokenList}.`,\n );\n }\n\n if (!process.env.BABEL_8_BREAKING) {\n if (\n topicToken === \"#\" &&\n pluginsMap.get(\"recordAndTuple\")?.syntaxType === \"hash\"\n ) {\n throw new Error(\n `Plugin conflict between \\`[\"pipelineOperator\", { proposal: \"hack\", topicToken: \"#\" }]\\` and \\`${JSON.stringify([\"recordAndTuple\", pluginsMap.get(\"recordAndTuple\")])}\\`.`,\n );\n }\n }\n } else if (\n !process.env.BABEL_8_BREAKING &&\n proposal === \"smart\" &&\n pluginsMap.get(\"recordAndTuple\")?.syntaxType === \"hash\"\n ) {\n throw new Error(\n `Plugin conflict between \\`[\"pipelineOperator\", { proposal: \"smart\" }]\\` and \\`${JSON.stringify([\"recordAndTuple\", pluginsMap.get(\"recordAndTuple\")])}\\`.`,\n );\n }\n }\n\n if (pluginsMap.has(\"moduleAttributes\")) {\n if (process.env.BABEL_8_BREAKING) {\n throw new Error(\n \"`moduleAttributes` has been removed in Babel 8, please migrate to import attributes instead.\",\n );\n } else {\n if (\n pluginsMap.has(\"deprecatedImportAssert\") ||\n pluginsMap.has(\"importAssertions\")\n ) {\n throw new Error(\n \"Cannot combine importAssertions, deprecatedImportAssert and moduleAttributes plugins.\",\n );\n }\n const moduleAttributesVersionPluginOption =\n pluginsMap.get(\"moduleAttributes\").version;\n if (moduleAttributesVersionPluginOption !== \"may-2020\") {\n throw new Error(\n \"The 'moduleAttributes' plugin requires a 'version' option,\" +\n \" representing the last proposal update. Currently, the\" +\n \" only supported value is 'may-2020'.\",\n );\n }\n }\n }\n if (pluginsMap.has(\"importAssertions\")) {\n if (process.env.BABEL_8_BREAKING) {\n throw new Error(\n \"`importAssertions` has been removed in Babel 8, please use import attributes instead.\",\n );\n } else if (pluginsMap.has(\"deprecatedImportAssert\")) {\n throw new Error(\n \"Cannot combine importAssertions and deprecatedImportAssert plugins.\",\n );\n }\n }\n if (pluginsMap.has(\"deprecatedImportAssert\")) {\n if (process.env.BABEL_8_BREAKING) {\n console.warn(\n \"`deprecatedImportAssert` has been removed in Babel 8, please use import attributes instead.\",\n );\n }\n } else if (\n pluginsMap.has(\"importAttributes\") &&\n pluginsMap.get(\"importAttributes\").deprecatedAssertSyntax\n ) {\n if (process.env.BABEL_8_BREAKING) {\n console.warn(\n \"The 'importAttributes' plugin has been removed in Babel 8. Please migrate any usage of `assert`-style attributes to `with`.\",\n );\n } else {\n pluginsMap.set(\"deprecatedImportAssert\", {});\n }\n }\n\n if (pluginsMap.has(\"recordAndTuple\")) {\n if (process.env.BABEL_8_BREAKING) {\n throw new Error(\n \"The 'recordAndTuple' plugin has been removed in Babel 8. Please remove it from your configuration.\",\n );\n } else {\n const syntaxType = pluginsMap.get(\"recordAndTuple\").syntaxType;\n if (syntaxType != null) {\n const RECORD_AND_TUPLE_SYNTAX_TYPES = [\"hash\", \"bar\"];\n if (!RECORD_AND_TUPLE_SYNTAX_TYPES.includes(syntaxType)) {\n throw new Error(\n \"The 'syntaxType' option of the 'recordAndTuple' plugin must be one of: \" +\n RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(\", \"),\n );\n }\n }\n }\n }\n\n if (\n pluginsMap.has(\"asyncDoExpressions\") &&\n !pluginsMap.has(\"doExpressions\")\n ) {\n const error = new Error(\n \"'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins.\",\n );\n // @ts-expect-error so @babel/core can provide better error message\n error.missingPlugins = \"doExpressions\";\n throw error;\n }\n\n if (\n pluginsMap.has(\"optionalChainingAssign\") &&\n pluginsMap.get(\"optionalChainingAssign\").version !== \"2023-07\"\n ) {\n throw new Error(\n \"The 'optionalChainingAssign' plugin requires a 'version' option,\" +\n \" representing the last proposal update. Currently, the\" +\n \" only supported value is '2023-07'.\",\n );\n }\n\n if (\n pluginsMap.has(\"discardBinding\") &&\n pluginsMap.get(\"discardBinding\").syntaxType !== \"void\"\n ) {\n throw new Error(\n \"The 'discardBinding' plugin requires a 'syntaxType' option. Currently the only supported value is 'void'.\",\n );\n }\n\n if (process.env.BABEL_8_BREAKING) {\n if (pluginsMap.has(\"decimal\")) {\n throw new Error(\n \"The 'decimal' plugin has been removed in Babel 8. Please remove it from your configuration.\",\n );\n }\n if (pluginsMap.has(\"importReflection\")) {\n throw new Error(\n \"The 'importReflection' plugin has been removed in Babel 8. Use 'sourcePhaseImports' instead, and \" +\n \"replace 'import module' with 'import source' in your code.\",\n );\n }\n }\n}\n\n// These plugins are defined using a mixin which extends the parser class.\n\nimport estree from \"./plugins/estree.ts\";\nimport flow from \"./plugins/flow/index.ts\";\nimport jsx from \"./plugins/jsx/index.ts\";\nimport typescript from \"./plugins/typescript/index.ts\";\nimport placeholders from \"./plugins/placeholders.ts\";\nimport v8intrinsic from \"./plugins/v8intrinsic.ts\";\n\n// NOTE: order is important. estree must come first; placeholders must come last.\nexport const mixinPlugins = {\n estree,\n jsx,\n flow,\n typescript,\n v8intrinsic,\n placeholders,\n};\n\nexport const mixinPluginNames = Object.keys(mixinPlugins) as readonly (\n | \"estree\"\n | \"jsx\"\n | \"flow\"\n | \"typescript\"\n | \"v8intrinsic\"\n | \"placeholders\"\n)[];\n","// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\nimport {\n tokenCanStartExpression,\n tokenIsAssignment,\n tokenIsIdentifier,\n tokenIsKeywordOrIdentifier,\n tokenIsOperator,\n tokenIsPostfix,\n tokenIsPrefix,\n tokenIsRightAssociative,\n tokenIsTemplate,\n tokenKeywordOrIdentifierIsKeyword,\n tokenLabelName,\n tokenOperatorPrecedence,\n tt,\n type TokenType,\n} from \"../tokenizer/types.ts\";\nimport type * as N from \"../types.ts\";\nimport LValParser from \"./lval.ts\";\nimport {\n isKeyword,\n isReservedWord,\n isStrictReservedWord,\n isStrictBindReservedWord,\n isIdentifierStart,\n canBeReservedWord,\n} from \"../util/identifier.ts\";\nimport {\n type Position,\n createPositionWithColumnOffset,\n} from \"../util/location.ts\";\nimport * as charCodes from \"charcodes\";\nimport { ScopeFlag, BindingFlag } from \"../util/scopeflags.ts\";\nimport { ExpressionErrors } from \"./util.ts\";\nimport { ParamKind, functionFlags } from \"../util/production-parameter.ts\";\nimport {\n newArrowHeadScope,\n newAsyncArrowScope,\n newExpressionScope,\n} from \"../util/expression-scope.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport {\n UnparenthesizedPipeBodyDescriptions,\n type UnparenthesizedPipeBodyTypes,\n} from \"../parse-error/pipeline-operator-errors.ts\";\nimport { setInnerComments } from \"./comments.ts\";\nimport type { Undone } from \"./node.ts\";\nimport type Parser from \"./index.ts\";\n\nimport { OptionFlags, type SourceType } from \"../options.ts\";\n\nexport default abstract class ExpressionParser extends LValParser {\n // Forward-declaration: defined in statement.js\n abstract parseBlock(\n allowDirectives?: boolean,\n createNewLexicalScope?: boolean,\n afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n ): N.BlockStatement;\n abstract parseClass(\n node: N.Class,\n isStatement: boolean,\n optionalId?: boolean,\n ): N.Class;\n abstract parseDecorators(allowExport?: boolean): void;\n abstract parseFunction<T extends N.NormalFunction>(\n node: T,\n statement?: number,\n allowExpressionBody?: boolean,\n isAsync?: boolean,\n ): T;\n abstract parseFunctionParams(node: N.Function, isConstructor?: boolean): void;\n abstract parseBlockOrModuleBlockBody(\n body: N.Statement[],\n directives: N.Directive[] | null | undefined,\n topLevel: boolean,\n end: TokenType,\n afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n ): void;\n abstract parseProgram(\n program: N.Program,\n end: TokenType,\n sourceType?: SourceType,\n ): N.Program;\n\n // For object literal, check if property __proto__ has been used more than once.\n // If the expression is a destructuring assignment, then __proto__ may appear\n // multiple times. Otherwise, __proto__ is a duplicated key.\n\n // For record expression, check if property __proto__ exists\n\n checkProto(\n prop: N.ObjectMember | N.SpreadElement,\n isRecord: boolean | undefined | null,\n sawProto: boolean,\n refExpressionErrors?: ExpressionErrors | null,\n ): boolean {\n if (\n prop.type === \"SpreadElement\" ||\n this.isObjectMethod(prop) ||\n prop.computed ||\n prop.shorthand\n ) {\n return sawProto;\n }\n\n const key = prop.key as\n | N.Identifier\n | N.StringLiteral\n | N.NumericLiteral\n | N.BigIntLiteral;\n // It is either an Identifier or a String/NumericLiteral\n const name = key.type === \"Identifier\" ? key.name : key.value;\n\n if (name === \"__proto__\") {\n if (isRecord) {\n this.raise(Errors.RecordNoProto, key);\n return true;\n }\n if (sawProto) {\n if (refExpressionErrors) {\n // Store the first redefinition's position, otherwise ignore because\n // we are parsing ambiguous pattern\n if (refExpressionErrors.doubleProtoLoc === null) {\n refExpressionErrors.doubleProtoLoc = key.loc.start;\n }\n } else {\n this.raise(Errors.DuplicateProto, key);\n }\n }\n\n return true;\n }\n\n return sawProto;\n }\n\n shouldExitDescending(\n expr: N.Expression | N.PrivateName,\n potentialArrowAt: number,\n ): expr is N.ArrowFunctionExpression {\n return (\n expr.type === \"ArrowFunctionExpression\" &&\n this.offsetToSourcePos(expr.start) === potentialArrowAt\n );\n }\n\n // Convenience method to parse an Expression only\n getExpression(this: Parser): N.Expression & N.ParserOutput {\n this.enterInitialScopes();\n this.nextToken();\n if (this.match(tt.eof)) {\n throw this.raise(Errors.ParseExpressionEmptyInput, this.state.startLoc);\n }\n const expr = this.parseExpression() as N.Expression & N.ParserOutput;\n if (!this.match(tt.eof)) {\n throw this.raise(Errors.ParseExpressionExpectsEOF, this.state.startLoc, {\n unexpected: this.input.codePointAt(this.state.start),\n });\n }\n // Unlike parseTopLevel, we need to drain remaining commentStacks\n // because the top level node is _not_ Program.\n this.finalizeRemainingComments();\n expr.comments = this.comments;\n expr.errors = this.state.errors;\n if (this.optionFlags & OptionFlags.Tokens) {\n expr.tokens = this.tokens;\n }\n return expr;\n }\n\n // ### Expression parsing\n\n // These nest, from the most general expression type at the top to\n // 'atomic', nondivisible expression types at the bottom. Most of\n // the functions will simply let the function (s) below them parse,\n // and, *if* the syntactic construct they handle is present, wrap\n // the AST node that the inner parser gave them in another node.\n\n // Parse a full expression.\n // - `disallowIn`\n // is used to forbid the `in` operator (in for loops initialization expressions)\n // When `disallowIn` is true, the production parameter [In] is not present.\n\n // - `refExpressionErrors `\n // provides reference for storing '=' operator inside shorthand\n // property assignment in contexts where both object expression\n // and object pattern might appear (so it's possible to raise\n // delayed syntax error at correct position).\n\n parseExpression(\n this: Parser,\n disallowIn?: boolean,\n refExpressionErrors?: ExpressionErrors,\n ): N.Expression {\n if (disallowIn) {\n return this.disallowInAnd(() =>\n this.parseExpressionBase(refExpressionErrors),\n );\n }\n return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors));\n }\n\n // https://tc39.es/ecma262/#prod-Expression\n parseExpressionBase(\n this: Parser,\n refExpressionErrors?: ExpressionErrors,\n ): N.Expression {\n const startLoc = this.state.startLoc;\n const expr = this.parseMaybeAssign(refExpressionErrors);\n if (this.match(tt.comma)) {\n const node = this.startNodeAt<N.SequenceExpression>(startLoc);\n node.expressions = [expr];\n while (this.eat(tt.comma)) {\n node.expressions.push(this.parseMaybeAssign(refExpressionErrors));\n }\n this.toReferencedList(node.expressions);\n return this.finishNode(node, \"SequenceExpression\");\n }\n return expr;\n }\n\n // Set [~In] parameter for assignment expression\n parseMaybeAssignDisallowIn(\n this: Parser,\n refExpressionErrors?: ExpressionErrors | null,\n afterLeftParse?: Function,\n ) {\n return this.disallowInAnd(() =>\n this.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n );\n }\n\n // Set [+In] parameter for assignment expression\n parseMaybeAssignAllowIn(\n this: Parser,\n refExpressionErrors?: ExpressionErrors | null,\n afterLeftParse?: Function,\n ) {\n return this.allowInAnd(() =>\n this.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n );\n }\n\n // This method is only used by\n // the typescript and flow plugins.\n setOptionalParametersError(refExpressionErrors: ExpressionErrors) {\n refExpressionErrors.optionalParametersLoc = this.state.startLoc;\n }\n\n // Parse an assignment expression. This includes applications of\n // operators like `+=`.\n // https://tc39.es/ecma262/#prod-AssignmentExpression\n parseMaybeAssign(\n this: Parser,\n refExpressionErrors?: ExpressionErrors | null,\n afterLeftParse?: Function,\n ): N.Expression {\n const startLoc = this.state.startLoc;\n const isYield = this.isContextual(tt._yield);\n if (isYield) {\n if (this.prodParam.hasYield) {\n this.next();\n let left = this.parseYield(startLoc);\n if (afterLeftParse) {\n left = afterLeftParse.call(this, left, startLoc);\n }\n return left;\n }\n }\n\n let ownExpressionErrors;\n if (refExpressionErrors) {\n ownExpressionErrors = false;\n } else {\n refExpressionErrors = new ExpressionErrors();\n ownExpressionErrors = true;\n }\n const { type } = this.state;\n\n if (type === tt.parenL || tokenIsIdentifier(type)) {\n this.state.potentialArrowAt = this.state.start;\n }\n\n let left = this.parseMaybeConditional(refExpressionErrors);\n if (afterLeftParse) {\n left = afterLeftParse.call(this, left, startLoc);\n }\n if (tokenIsAssignment(this.state.type)) {\n const node = this.startNodeAt<N.AssignmentExpression>(startLoc);\n const operator = this.state.value as N.AssignmentOperator;\n node.operator = operator;\n\n if (this.match(tt.eq)) {\n this.toAssignable(left, /* isLHS */ true);\n node.left = left;\n\n const startIndex = startLoc.index;\n if (\n refExpressionErrors.doubleProtoLoc != null &&\n refExpressionErrors.doubleProtoLoc.index >= startIndex\n ) {\n refExpressionErrors.doubleProtoLoc = null; // reset because double __proto__ is valid in assignment expression\n }\n if (\n refExpressionErrors.shorthandAssignLoc != null &&\n refExpressionErrors.shorthandAssignLoc.index >= startIndex\n ) {\n refExpressionErrors.shorthandAssignLoc = null; // reset because shorthand default was used correctly\n }\n if (\n refExpressionErrors.privateKeyLoc != null &&\n refExpressionErrors.privateKeyLoc.index >= startIndex\n ) {\n this.checkDestructuringPrivate(refExpressionErrors);\n refExpressionErrors.privateKeyLoc = null; // reset because `({ #x: x })` is an assignable pattern\n }\n if (\n refExpressionErrors.voidPatternLoc != null &&\n refExpressionErrors.voidPatternLoc.index >= startIndex\n ) {\n refExpressionErrors.voidPatternLoc = null;\n }\n } else {\n node.left = left as unknown as N.Assignable; // checked a few lines further down\n }\n\n this.next();\n node.right = this.parseMaybeAssign();\n this.checkLVal(\n left,\n this.finishNode(node, \"AssignmentExpression\"),\n undefined,\n undefined,\n undefined,\n undefined,\n operator === \"||=\" || operator === \"&&=\" || operator === \"??=\",\n );\n // @ts-expect-error todo(flow->ts) improve node types\n return node;\n } else if (ownExpressionErrors) {\n this.checkExpressionErrors(refExpressionErrors, true);\n }\n\n if (isYield) {\n const { type } = this.state;\n const startsExpr = this.hasPlugin(\"v8intrinsic\")\n ? tokenCanStartExpression(type)\n : tokenCanStartExpression(type) && !this.match(tt.modulo);\n if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) {\n this.raiseOverwrite(Errors.YieldNotInGeneratorFunction, startLoc);\n return this.parseYield(startLoc);\n }\n }\n\n return left;\n }\n\n // Parse a ternary conditional (`?:`) operator.\n // https://tc39.es/ecma262/#prod-ConditionalExpression\n\n parseMaybeConditional(\n this: Parser,\n refExpressionErrors: ExpressionErrors,\n ): N.Expression {\n const startLoc = this.state.startLoc;\n const potentialArrowAt = this.state.potentialArrowAt;\n const expr = this.parseExprOps(refExpressionErrors);\n\n if (this.shouldExitDescending(expr, potentialArrowAt)) {\n return expr;\n }\n\n return this.parseConditional(expr, startLoc, refExpressionErrors);\n }\n\n parseConditional(\n this: Parser,\n expr: N.Expression,\n startLoc: Position,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n refExpressionErrors?: ExpressionErrors | null,\n ): N.Expression {\n if (this.eat(tt.question)) {\n const node = this.startNodeAt<N.ConditionalExpression>(startLoc);\n node.test = expr;\n node.consequent = this.parseMaybeAssignAllowIn();\n this.expect(tt.colon);\n node.alternate = this.parseMaybeAssign();\n return this.finishNode(node, \"ConditionalExpression\");\n }\n return expr;\n }\n\n parseMaybeUnaryOrPrivate(\n this: Parser,\n refExpressionErrors?: ExpressionErrors,\n ): N.Expression | N.PrivateName {\n return this.match(tt.privateName)\n ? this.parsePrivateName()\n : this.parseMaybeUnary(refExpressionErrors);\n }\n\n // Start the precedence parser.\n // https://tc39.es/ecma262/#prod-ShortCircuitExpression\n\n parseExprOps(\n this: Parser,\n refExpressionErrors: ExpressionErrors,\n ): N.Expression {\n const startLoc = this.state.startLoc;\n const potentialArrowAt = this.state.potentialArrowAt;\n const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors);\n\n if (this.shouldExitDescending(expr, potentialArrowAt)) {\n return expr;\n }\n\n return this.parseExprOp(expr, startLoc, -1);\n }\n\n // Parse binary operators with the operator precedence parsing\n // algorithm. `left` is the left-hand side of the operator.\n // `minPrec` provides context that allows the function to stop and\n // defer further parser to one of its callers when it encounters an\n // operator that has a lower precedence than the set it is parsing.\n\n parseExprOp(\n this: Parser,\n left: N.Expression | N.PrivateName,\n leftStartLoc: Position,\n minPrec: number,\n ): N.Expression {\n if (this.isPrivateName(left)) {\n // https://tc39.es/ecma262/#prod-RelationalExpression\n // RelationalExpression [In, Yield, Await]\n // [+In] PrivateIdentifier in ShiftExpression[?Yield, ?Await]\n\n const value = this.getPrivateNameSV(left);\n\n if (\n minPrec >= tokenOperatorPrecedence(tt._in) ||\n !this.prodParam.hasIn ||\n !this.match(tt._in)\n ) {\n this.raise(Errors.PrivateInExpectedIn, left, {\n identifierName: value,\n });\n }\n\n this.classScope.usePrivateName(value, left.loc.start);\n }\n\n const op = this.state.type;\n if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(tt._in))) {\n let prec = tokenOperatorPrecedence(op);\n if (prec > minPrec) {\n if (op === tt.pipeline) {\n this.expectPlugin(\"pipelineOperator\");\n if (this.state.inFSharpPipelineDirectBody) {\n // PrivateName must be followed by `in`, but we have `|>`\n return left as N.Expression;\n }\n this.checkPipelineAtInfixOperator(left as N.Expression, leftStartLoc);\n }\n const node = this.startNodeAt<N.LogicalExpression | N.BinaryExpression>(\n leftStartLoc,\n );\n node.left = left;\n node.operator = this.state.value;\n\n const logical = op === tt.logicalOR || op === tt.logicalAND;\n const coalesce = op === tt.nullishCoalescing;\n\n if (coalesce) {\n // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions.\n // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error.\n prec = tokenOperatorPrecedence(tt.logicalAND);\n }\n\n this.next();\n\n if (\n !process.env.BABEL_8_BREAKING &&\n op === tt.pipeline &&\n // @ts-expect-error: Only in Babel 7\n this.hasPlugin([\"pipelineOperator\", { proposal: \"minimal\" }])\n ) {\n if (this.state.type === tt._await && this.prodParam.hasAwait) {\n throw this.raise(\n Errors.UnexpectedAwaitAfterPipelineBody,\n this.state.startLoc,\n );\n }\n }\n\n node.right = this.parseExprOpRightExpr(op, prec);\n const finishedNode = this.finishNode(\n node,\n logical || coalesce ? \"LogicalExpression\" : \"BinaryExpression\",\n );\n /* this check is for all ?? operators\n * a ?? b && c for this example\n * when op is coalesce and nextOp is logical (&&), throw at the pos of nextOp that it can not be mixed.\n * Symmetrically it also throws when op is logical and nextOp is coalesce\n */\n const nextOp = this.state.type;\n if (\n (coalesce && (nextOp === tt.logicalOR || nextOp === tt.logicalAND)) ||\n (logical && nextOp === tt.nullishCoalescing)\n ) {\n throw this.raise(\n Errors.MixingCoalesceWithLogical,\n this.state.startLoc,\n );\n }\n\n return this.parseExprOp(finishedNode, leftStartLoc, minPrec);\n }\n }\n // PrivateName is followed by `in` and handled by the previous if statement\n return left as N.Expression;\n }\n\n // Helper function for `parseExprOp`. Parse the right-hand side of binary-\n // operator expressions, then apply any operator-specific functions.\n\n parseExprOpRightExpr(\n this: Parser,\n op: TokenType,\n prec: number,\n ): N.Expression {\n const startLoc = this.state.startLoc;\n switch (op) {\n case tt.pipeline:\n switch (this.getPluginOption(\"pipelineOperator\", \"proposal\")) {\n case \"hack\":\n return this.withTopicBindingContext(() => {\n return this.parseHackPipeBody();\n });\n\n case \"fsharp\":\n return this.withSoloAwaitPermittingContext(() => {\n return this.parseFSharpPipelineBody(prec);\n });\n }\n\n if (\n !process.env.BABEL_8_BREAKING &&\n // @ts-expect-error: Babel 7 only\n this.getPluginOption(\"pipelineOperator\", \"proposal\") === \"smart\"\n ) {\n return this.withTopicBindingContext(() => {\n if (this.prodParam.hasYield && this.isContextual(tt._yield)) {\n throw this.raise(Errors.PipeBodyIsTighter, this.state.startLoc);\n }\n return this.parseSmartPipelineBodyInStyle(\n this.parseExprOpBaseRightExpr(op, prec),\n startLoc,\n );\n });\n }\n\n // Falls through.\n default:\n return this.parseExprOpBaseRightExpr(op, prec);\n }\n }\n\n // Helper function for `parseExprOpRightExpr`. Parse the right-hand side of\n // binary-operator expressions without applying any operator-specific functions.\n\n parseExprOpBaseRightExpr(\n this: Parser,\n op: TokenType,\n prec: number,\n ): N.Expression {\n const startLoc = this.state.startLoc;\n\n return this.parseExprOp(\n this.parseMaybeUnaryOrPrivate(),\n startLoc,\n tokenIsRightAssociative(op) ? prec - 1 : prec,\n );\n }\n\n parseHackPipeBody(this: Parser): N.Expression {\n const { startLoc } = this.state;\n const body = this.parseMaybeAssign();\n const requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(\n // @ts-expect-error TS2345: Argument of type 'string' is not assignable to parameter of type '\"ArrowFunctionExpression\" | \"YieldExpression\" | \"AssignmentExpression\" | \"ConditionalExpression\"'.\n body.type,\n );\n\n // TODO: Check how to handle type casts in Flow and TS once they are supported\n if (requiredParentheses && !body.extra?.parenthesized) {\n this.raise(Errors.PipeUnparenthesizedBody, startLoc, {\n type: body.type as UnparenthesizedPipeBodyTypes,\n });\n }\n if (!this.topicReferenceWasUsedInCurrentContext()) {\n // A Hack pipe body must use the topic reference at least once.\n this.raise(Errors.PipeTopicUnused, startLoc);\n }\n\n return body;\n }\n\n checkExponentialAfterUnary(\n node: N.AwaitExpression | Undone<N.UnaryExpression>,\n ) {\n if (this.match(tt.exponent)) {\n this.raise(Errors.UnexpectedTokenUnaryExponentiation, node.argument);\n }\n }\n\n // Parse unary operators, both prefix and postfix.\n // https://tc39.es/ecma262/#prod-UnaryExpression\n parseMaybeUnary(\n this: Parser,\n refExpressionErrors?: ExpressionErrors | null,\n sawUnary?: boolean,\n ): N.Expression {\n const startLoc = this.state.startLoc;\n const isAwait = this.isContextual(tt._await);\n\n if (isAwait && this.recordAwaitIfAllowed()) {\n this.next();\n const expr = this.parseAwait(startLoc);\n if (!sawUnary) this.checkExponentialAfterUnary(expr);\n return expr;\n }\n const update = this.match(tt.incDec);\n const node = this.startNode<N.UnaryExpression | N.UpdateExpression>();\n if (tokenIsPrefix(this.state.type)) {\n node.operator = this.state.value;\n node.prefix = true;\n\n if (this.match(tt._throw)) {\n this.expectPlugin(\"throwExpressions\");\n }\n const isDelete = this.match(tt._delete);\n this.next();\n\n node.argument = this.parseMaybeUnary(null, true);\n\n this.checkExpressionErrors(refExpressionErrors, true);\n\n if (this.state.strict && isDelete) {\n const arg = node.argument;\n\n if (arg.type === \"Identifier\") {\n this.raise(Errors.StrictDelete, node);\n } else if (this.hasPropertyAsPrivateName(arg)) {\n this.raise(Errors.DeletePrivateField, node);\n }\n }\n\n if (!update) {\n if (!sawUnary) {\n this.checkExponentialAfterUnary(node as Undone<N.UnaryExpression>);\n }\n return this.finishNode(node, \"UnaryExpression\");\n }\n }\n\n const expr = this.parseUpdate(\n // @ts-expect-error using \"Undone\" node as \"done\"\n node,\n update,\n refExpressionErrors,\n );\n\n if (isAwait) {\n const { type } = this.state;\n const startsExpr = this.hasPlugin(\"v8intrinsic\")\n ? tokenCanStartExpression(type)\n : tokenCanStartExpression(type) && !this.match(tt.modulo);\n if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) {\n this.raiseOverwrite(Errors.AwaitNotInAsyncContext, startLoc);\n return this.parseAwait(startLoc);\n }\n }\n\n return expr;\n }\n\n // https://tc39.es/ecma262/#prod-UpdateExpression\n parseUpdate(\n this: Parser,\n node: N.Expression,\n update: boolean,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.Expression {\n if (update) {\n const updateExpressionNode = node as Undone<N.UpdateExpression>;\n this.checkLVal(\n updateExpressionNode.argument,\n this.finishNode(updateExpressionNode, \"UpdateExpression\"),\n );\n return node;\n }\n\n const startLoc = this.state.startLoc;\n let expr = this.parseExprSubscripts(refExpressionErrors);\n if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;\n while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) {\n const node = this.startNodeAt<N.UpdateExpression>(startLoc);\n node.operator = this.state.value;\n node.prefix = false;\n node.argument = expr;\n this.next();\n this.checkLVal(expr, (expr = this.finishNode(node, \"UpdateExpression\")));\n }\n return expr;\n }\n\n // Parse call, dot, and `[]`-subscript expressions.\n // https://tc39.es/ecma262/#prod-LeftHandSideExpression\n parseExprSubscripts(\n this: Parser,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.Expression {\n const startLoc = this.state.startLoc;\n const potentialArrowAt = this.state.potentialArrowAt;\n const expr = this.parseExprAtom(refExpressionErrors);\n\n if (this.shouldExitDescending(expr, potentialArrowAt)) {\n return expr;\n }\n\n return this.parseSubscripts(expr, startLoc);\n }\n\n parseSubscripts(\n this: Parser,\n base: N.Expression,\n startLoc: Position,\n noCalls?: boolean | null,\n ): N.Expression {\n const state = {\n optionalChainMember: false,\n maybeAsyncArrow: this.atPossibleAsyncArrow(base),\n stop: false,\n };\n do {\n base = this.parseSubscript(base, startLoc, noCalls, state);\n\n // After parsing a subscript, this isn't \"async\" for sure.\n state.maybeAsyncArrow = false;\n } while (!state.stop);\n return base;\n }\n\n /**\n * @param state Set 'state.stop = true' to indicate that we should stop parsing subscripts.\n * state.optionalChainMember to indicate that the member is currently in OptionalChain\n */\n parseSubscript(\n this: Parser,\n base: N.Expression,\n startLoc: Position,\n noCalls: boolean | undefined | null,\n state: N.ParseSubscriptState,\n ): N.Expression {\n const { type } = this.state;\n if (!noCalls && type === tt.doubleColon) {\n return this.parseBind(base, startLoc, noCalls, state);\n } else if (tokenIsTemplate(type)) {\n return this.parseTaggedTemplateExpression(base, startLoc, state);\n }\n\n let optional = false;\n\n if (type === tt.questionDot) {\n if (noCalls) {\n this.raise(Errors.OptionalChainingNoNew, this.state.startLoc);\n if (this.lookaheadCharCode() === charCodes.leftParenthesis) {\n // stop at `?.` when parsing `new a?.()`\n return this.stopParseSubscript(base, state);\n }\n }\n state.optionalChainMember = optional = true;\n this.next();\n }\n\n if (!noCalls && this.match(tt.parenL)) {\n return this.parseCoverCallAndAsyncArrowHead(\n base,\n startLoc,\n state,\n optional,\n );\n } else {\n const computed = this.eat(tt.bracketL);\n if (computed || optional || this.eat(tt.dot)) {\n return this.parseMember(base, startLoc, state, computed, optional);\n } else {\n return this.stopParseSubscript(base, state);\n }\n }\n }\n\n stopParseSubscript(\n this: Parser,\n base: N.Expression,\n state: N.ParseSubscriptState,\n ) {\n state.stop = true;\n return base;\n }\n\n // base[?Yield, ?Await] [ Expression[+In, ?Yield, ?Await] ]\n // base[?Yield, ?Await] . IdentifierName\n // base[?Yield, ?Await] . PrivateIdentifier\n // where `base` is one of CallExpression, MemberExpression and OptionalChain\n parseMember(\n this: Parser,\n base: N.Expression,\n startLoc: Position,\n state: N.ParseSubscriptState,\n computed: boolean,\n optional: boolean,\n ): N.OptionalMemberExpression | N.MemberExpression {\n const node = this.startNodeAt<\n N.OptionalMemberExpression | N.MemberExpression\n >(startLoc);\n node.object = base;\n node.computed = computed;\n if (computed) {\n node.property = this.parseExpression();\n this.expect(tt.bracketR);\n } else if (this.match(tt.privateName)) {\n if (base.type === \"Super\") {\n this.raise(Errors.SuperPrivateField, startLoc);\n }\n this.classScope.usePrivateName(this.state.value, this.state.startLoc);\n node.property = this.parsePrivateName();\n } else {\n node.property = this.parseIdentifier(true);\n }\n\n if (state.optionalChainMember) {\n (node as Undone<N.OptionalMemberExpression>).optional = optional;\n return this.finishNode(node, \"OptionalMemberExpression\");\n } else {\n return this.finishNode(node, \"MemberExpression\");\n }\n }\n\n // https://github.com/tc39/proposal-bind-operator#syntax\n parseBind(\n this: Parser,\n base: N.Expression,\n startLoc: Position,\n noCalls: boolean | undefined | null,\n state: N.ParseSubscriptState,\n ): N.Expression {\n const node = this.startNodeAt<N.BindExpression>(startLoc);\n node.object = base;\n this.next(); // eat '::'\n node.callee = this.parseNoCallExpr();\n state.stop = true;\n return this.parseSubscripts(\n this.finishNode(node, \"BindExpression\"),\n startLoc,\n noCalls,\n );\n }\n\n // https://tc39.es/ecma262/#prod-CoverCallExpressionAndAsyncArrowHead\n // CoverCallExpressionAndAsyncArrowHead\n // CallExpression[?Yield, ?Await] Arguments[?Yield, ?Await]\n // OptionalChain[?Yield, ?Await] Arguments[?Yield, ?Await]\n parseCoverCallAndAsyncArrowHead(\n this: Parser,\n base: N.Expression,\n startLoc: Position,\n state: N.ParseSubscriptState,\n optional: boolean,\n ): N.Expression {\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n let refExpressionErrors: ExpressionErrors | null = null;\n\n this.state.maybeInArrowParameters = true;\n this.next(); // eat `(`\n\n const node = this.startNodeAt<N.CallExpression | N.OptionalCallExpression>(\n startLoc,\n );\n node.callee = base;\n const { maybeAsyncArrow, optionalChainMember } = state;\n\n if (maybeAsyncArrow) {\n this.expressionScope.enter(newAsyncArrowScope());\n refExpressionErrors = new ExpressionErrors();\n }\n\n if (optionalChainMember) {\n (node as Undone<N.OptionalCallExpression>).optional = optional;\n }\n\n if (optional) {\n node.arguments = this.parseCallExpressionArguments();\n } else {\n node.arguments = this.parseCallExpressionArguments(\n base.type !== \"Super\",\n node,\n refExpressionErrors,\n );\n }\n let finishedNode:\n | N.CallExpression\n | N.OptionalCallExpression\n | N.ArrowFunctionExpression = this.finishCallExpression(\n node,\n optionalChainMember,\n );\n\n if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) {\n /*:: invariant(refExpressionErrors != null) */\n state.stop = true;\n this.checkDestructuringPrivate(refExpressionErrors!);\n this.expressionScope.validateAsPattern();\n this.expressionScope.exit();\n finishedNode = this.parseAsyncArrowFromCallExpression(\n this.startNodeAt<N.ArrowFunctionExpression>(startLoc),\n finishedNode as N.CallExpression,\n );\n } else {\n if (maybeAsyncArrow) {\n this.checkExpressionErrors(refExpressionErrors, true);\n this.expressionScope.exit();\n }\n this.toReferencedArguments(finishedNode);\n }\n\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n\n return finishedNode;\n }\n\n toReferencedArguments(\n node: N.CallExpression | N.OptionalCallExpression,\n isParenthesizedExpr?: boolean,\n ) {\n this.toReferencedListDeep(node.arguments, isParenthesizedExpr);\n }\n\n // MemberExpression [?Yield, ?Await] TemplateLiteral[?Yield, ?Await, +Tagged]\n // CallExpression [?Yield, ?Await] TemplateLiteral[?Yield, ?Await, +Tagged]\n parseTaggedTemplateExpression(\n this: Parser,\n base: N.Expression,\n startLoc: Position,\n state: N.ParseSubscriptState,\n ): N.TaggedTemplateExpression {\n const node = this.startNodeAt<N.TaggedTemplateExpression>(startLoc);\n node.tag = base;\n node.quasi = this.parseTemplate(true);\n if (state.optionalChainMember) {\n this.raise(Errors.OptionalChainingNoTemplate, startLoc);\n }\n return this.finishNode(node, \"TaggedTemplateExpression\");\n }\n\n atPossibleAsyncArrow(base: N.Expression): boolean {\n return (\n base.type === \"Identifier\" &&\n base.name === \"async\" &&\n this.state.lastTokEndLoc!.index === base.end &&\n !this.canInsertSemicolon() &&\n // check there are no escape sequences, such as \\u{61}sync\n base.end - base.start === 5 &&\n this.offsetToSourcePos(base.start) === this.state.potentialArrowAt\n );\n }\n\n finishCallExpression<T extends N.CallExpression | N.OptionalCallExpression>(\n node: Undone<T>,\n optional: boolean,\n ): T {\n if (node.callee.type === \"Import\") {\n if (node.arguments.length === 0 || node.arguments.length > 2) {\n this.raise(Errors.ImportCallArity, node);\n } else {\n for (const arg of node.arguments) {\n if (arg.type === \"SpreadElement\") {\n this.raise(Errors.ImportCallSpreadArgument, arg);\n }\n }\n }\n }\n return this.finishNode(\n node,\n optional ? \"OptionalCallExpression\" : \"CallExpression\",\n );\n }\n\n parseCallExpressionArguments(\n this: Parser,\n allowPlaceholder?: boolean,\n nodeForExtra?: Undone<N.Node> | null,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.Expression[] {\n const elts: N.Expression[] = [];\n let first = true;\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = false;\n\n while (!this.eat(tt.parenR)) {\n if (first) {\n first = false;\n } else {\n this.expect(tt.comma);\n if (this.match(tt.parenR)) {\n if (nodeForExtra) {\n this.addTrailingCommaExtraToNode(nodeForExtra);\n }\n this.next();\n break;\n }\n }\n\n elts.push(\n this.parseExprListItem(\n tt.parenR,\n false,\n refExpressionErrors,\n allowPlaceholder,\n ),\n );\n }\n\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n return elts;\n }\n\n shouldParseAsyncArrow(): boolean {\n return this.match(tt.arrow) && !this.canInsertSemicolon();\n }\n\n parseAsyncArrowFromCallExpression(\n this: Parser,\n node: Undone<N.ArrowFunctionExpression>,\n call: N.CallExpression,\n ): N.ArrowFunctionExpression {\n this.resetPreviousNodeTrailingComments(call);\n this.expect(tt.arrow);\n this.parseArrowExpression(\n node,\n call.arguments,\n true,\n call.extra?.trailingCommaLoc,\n );\n // mark inner comments of `async()` as inner comments of `async () =>`\n if (call.innerComments) {\n setInnerComments(node, call.innerComments);\n }\n // mark trailing comments of `async` to be inner comments\n if (call.callee.trailingComments) {\n setInnerComments(node, call.callee.trailingComments);\n }\n return node as N.ArrowFunctionExpression;\n }\n\n // Parse a no-call expression (like argument of `new` or `::` operators).\n // https://tc39.es/ecma262/#prod-MemberExpression\n parseNoCallExpr(this: Parser): N.Expression {\n const startLoc = this.state.startLoc;\n return this.parseSubscripts(this.parseExprAtom(), startLoc, true);\n }\n\n // Parse an atomic expression — either a single token that is an\n // expression, an expression started by a keyword like `function` or\n // `new`, or an expression wrapped in punctuation like `()`, `[]`,\n // or `{}`.\n\n // https://tc39.es/ecma262/#prod-PrimaryExpression\n // https://tc39.es/ecma262/#prod-AsyncArrowFunction\n // PrimaryExpression\n // Super\n // Import\n // AsyncArrowFunction\n\n parseExprAtom(\n this: Parser,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.Expression {\n let node;\n let decorators: N.Decorator[] | null = null;\n\n const { type } = this.state;\n switch (type) {\n case tt._super:\n return this.parseSuper();\n\n case tt._import:\n node = this.startNode<N.MetaProperty | N.Import | N.ImportExpression>();\n this.next();\n\n if (this.match(tt.dot)) {\n return this.parseImportMetaPropertyOrPhaseCall(\n node as Undone<N.MetaProperty | N.ImportExpression>,\n );\n }\n\n if (this.match(tt.parenL)) {\n if (this.optionFlags & OptionFlags.CreateImportExpressions) {\n return this.parseImportCall(node as Undone<N.ImportExpression>);\n } else {\n return this.finishNode(node, \"Import\");\n }\n } else {\n this.raise(Errors.UnsupportedImport, this.state.lastTokStartLoc!);\n return this.finishNode(node, \"Import\");\n }\n\n case tt._this:\n node = this.startNode<N.ThisExpression>();\n this.next();\n return this.finishNode(node, \"ThisExpression\");\n\n case tt._do: {\n return this.parseDo(this.startNode(), false);\n }\n\n case tt.slash:\n case tt.slashAssign: {\n this.readRegexp();\n return this.parseRegExpLiteral(this.state.value);\n }\n\n case tt.num:\n return this.parseNumericLiteral(this.state.value);\n\n case tt.bigint:\n return this.parseBigIntLiteral(this.state.value);\n\n case tt.string:\n return this.parseStringLiteral(this.state.value);\n\n case tt._null:\n return this.parseNullLiteral();\n\n case tt._true:\n return this.parseBooleanLiteral(true);\n case tt._false:\n return this.parseBooleanLiteral(false);\n\n case tt.parenL: {\n const canBeArrow = this.state.potentialArrowAt === this.state.start;\n return this.parseParenAndDistinguishExpression(canBeArrow);\n }\n\n case tt.bracketL: {\n return this.parseArrayLike(\n tt.bracketR,\n /* isTuple */ false,\n refExpressionErrors,\n );\n }\n case tt.braceL: {\n return this.parseObjectLike(\n tt.braceR,\n /* isPattern */ false,\n /* isRecord */ false,\n refExpressionErrors,\n );\n }\n case tt._function:\n return this.parseFunctionOrFunctionSent();\n\n case tt.at:\n decorators = this.parseDecorators();\n // fall through\n case tt._class:\n return this.parseClass(\n this.maybeTakeDecorators(\n decorators,\n this.startNode<N.ClassExpression>(),\n ),\n false,\n );\n\n case tt._new:\n return this.parseNewOrNewTarget();\n\n case tt.templateNonTail:\n case tt.templateTail:\n return this.parseTemplate(false);\n\n // BindExpression[Yield]\n // :: MemberExpression[?Yield]\n case tt.doubleColon: {\n node = this.startNode<N.BindExpression>();\n this.next();\n node.object = null;\n const callee = (node.callee = this.parseNoCallExpr());\n if (callee.type === \"MemberExpression\") {\n return this.finishNode(node, \"BindExpression\");\n } else {\n throw this.raise(Errors.UnsupportedBind, callee);\n }\n }\n\n case tt.privateName: {\n // Standalone private names are only allowed in \"#x in obj\"\n // expressions, and they are directly handled by callers of\n // parseExprOp. If we reach this, the input is always invalid.\n // We can throw a better error message and recover, rather than\n // just throwing \"Unexpected token\" (which is the default\n // behavior of this big switch statement).\n this.raise(Errors.PrivateInExpectedIn, this.state.startLoc, {\n identifierName: this.state.value,\n });\n return this.parsePrivateName() as unknown as N.Expression;\n }\n\n case tt.moduloAssign: {\n return this.parseTopicReferenceThenEqualsSign(tt.modulo, \"%\");\n }\n\n case tt.xorAssign: {\n return this.parseTopicReferenceThenEqualsSign(tt.bitwiseXOR, \"^\");\n }\n\n case tt.doubleCaret:\n case tt.doubleAt: {\n return this.parseTopicReference(\"hack\");\n }\n\n case tt.bitwiseXOR:\n case tt.modulo:\n case tt.hash: {\n const pipeProposal = this.getPluginOption(\n \"pipelineOperator\",\n \"proposal\",\n );\n\n if (pipeProposal) {\n return this.parseTopicReference(pipeProposal);\n }\n throw this.unexpected();\n }\n\n case tt.lt: {\n const lookaheadCh = this.input.codePointAt(this.nextTokenStart())!;\n if (\n isIdentifierStart(lookaheadCh) || // Element/Type Parameter <foo>\n lookaheadCh === charCodes.greaterThan // Fragment <>\n ) {\n // None of these plugins is enabled, otherwise they would have\n // handled `<` by themselves.\n throw this.expectOnePlugin([\"jsx\", \"flow\", \"typescript\"]);\n }\n throw this.unexpected();\n }\n\n default:\n if (!process.env.BABEL_8_BREAKING) {\n if (type === tt.decimal) {\n return this.parseDecimalLiteral(this.state.value);\n } else if (type === tt.bracketBarL || type === tt.bracketHashL) {\n return this.parseArrayLike(\n this.state.type === tt.bracketBarL ? tt.bracketBarR : tt.bracketR,\n /* isTuple */ true,\n );\n } else if (type === tt.braceBarL || type === tt.braceHashL) {\n return this.parseObjectLike(\n this.state.type === tt.braceBarL ? tt.braceBarR : tt.braceR,\n /* isPattern */ false,\n /* isRecord */ true,\n );\n }\n }\n\n if (tokenIsIdentifier(type)) {\n if (\n this.isContextual(tt._module) &&\n this.lookaheadInLineCharCode() === charCodes.leftCurlyBrace\n ) {\n return this.parseModuleExpression();\n }\n const canBeArrow = this.state.potentialArrowAt === this.state.start;\n const containsEsc = this.state.containsEsc;\n const id = this.parseIdentifier();\n\n if (\n !containsEsc &&\n id.name === \"async\" &&\n !this.canInsertSemicolon()\n ) {\n const { type } = this.state;\n if (type === tt._function) {\n this.resetPreviousNodeTrailingComments(id);\n this.next();\n return this.parseAsyncFunctionExpression(\n this.startNodeAtNode(id),\n );\n } else if (tokenIsIdentifier(type)) {\n // If the next token begins with \"=\", commit to parsing an async\n // arrow function. (Peeking ahead for \"=\" lets us avoid a more\n // expensive full-token lookahead on this common path.)\n if (this.lookaheadCharCode() === charCodes.equalsTo) {\n // although `id` is not used in async arrow unary function,\n // we don't need to reset `async`'s trailing comments because\n // it will be attached to the upcoming async arrow binding identifier\n return this.parseAsyncArrowUnaryFunction(\n this.startNodeAtNode(id),\n );\n } else {\n // Otherwise, treat \"async\" as an identifier and let calling code\n // deal with the current tt.name token.\n return id;\n }\n } else if (type === tt._do) {\n this.resetPreviousNodeTrailingComments(id);\n return this.parseDo(this.startNodeAtNode(id), true);\n }\n }\n\n if (\n canBeArrow &&\n this.match(tt.arrow) &&\n !this.canInsertSemicolon()\n ) {\n this.next();\n return this.parseArrowExpression(\n this.startNodeAtNode(id),\n [id],\n false,\n );\n }\n\n return id;\n } else {\n throw this.unexpected();\n }\n }\n }\n\n // This helper method should only be called\n // when the parser has reached a potential Hack pipe topic token\n // that is followed by an equals sign.\n // See <https://github.com/js-choi/proposal-hack-pipes>.\n // If we find ^= or %= in an expression position\n // (i.e., the tt.moduloAssign or tt.xorAssign token types), and if the\n // Hack-pipes proposal is active with ^ or % as its topicToken, then the ^ or\n // % could be the topic token (e.g., in x |> ^==y or x |> ^===y), and so we\n // reparse the current token as ^ or %.\n // Otherwise, this throws an unexpected-token error.\n parseTopicReferenceThenEqualsSign(\n topicTokenType: TokenType,\n topicTokenValue: string,\n ): N.Expression {\n const pipeProposal = this.getPluginOption(\"pipelineOperator\", \"proposal\");\n\n if (pipeProposal) {\n // Set the most-recent token to be a topic token\n // given by the tokenType and tokenValue.\n // Now the next readToken() call (in parseTopicReference)\n // will consume that “topic token”.\n this.state.type = topicTokenType;\n this.state.value = topicTokenValue;\n // Rewind the tokenizer to the end of the “topic token”, so that the\n // following token starts at the equals sign after that topic token.\n this.state.pos--;\n this.state.end--;\n // This is safe to do since the preceding character was either ^ or %, and\n // thus not a newline.\n this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1);\n // Now actually consume the topic token.\n return this.parseTopicReference(pipeProposal);\n }\n throw this.unexpected();\n }\n\n // This helper method should only be called\n // when the proposal-pipeline-operator plugin is active,\n // and when the parser has reached a potential Hack pipe topic token.\n // Although a pipe-operator proposal is assumed to be active,\n // its configuration might not match the current token’s type.\n // See <https://github.com/js-choi/proposal-hack-pipes>.\n parseTopicReference(pipeProposal: string): N.Expression {\n const node = this.startNode<N.TopicReference>();\n const startLoc = this.state.startLoc;\n const tokenType = this.state.type;\n\n // Consume the current token.\n this.next();\n\n // If the pipe-operator plugin’s configuration matches the current token’s type,\n // then this will return `node`, will have been finished as a topic reference.\n // Otherwise, this will throw a `PipeTopicUnconfiguredToken` error.\n return this.finishTopicReference(node, startLoc, pipeProposal, tokenType);\n }\n\n // This helper method attempts to finish the given `node`\n // into a topic-reference node for the given `pipeProposal`.\n // See <https://github.com/js-choi/proposal-hack-pipes>.\n //\n // The method assumes that any topic token was consumed before it was called.\n //\n // If the `pipelineOperator` plugin is active,\n // and if the given `tokenType` matches the plugin’s configuration,\n // then this method will return the finished `node`.\n //\n // If the `pipelineOperator` plugin is active,\n // but if the given `tokenType` does not match the plugin’s configuration,\n // then this method will throw a `PipeTopicUnconfiguredToken` error.\n finishTopicReference<\n T extends N.PipelinePrimaryTopicReference | N.TopicReference,\n >(\n node: Undone<T>,\n startLoc: Position,\n pipeProposal: string,\n tokenType: TokenType,\n ): T {\n if (\n this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)\n ) {\n // The token matches the plugin’s configuration.\n // The token is therefore a topic reference.\n\n if (process.env.BABEL_8_BREAKING || pipeProposal === \"hack\") {\n if (!this.topicReferenceIsAllowedInCurrentContext()) {\n this.raise(Errors.PipeTopicUnbound, startLoc);\n }\n\n // Register the topic reference so that its pipe body knows\n // that its topic was used at least once.\n this.registerTopicReference();\n\n return this.finishNode(node, \"TopicReference\");\n } else {\n // pipeProposal is \"smart\"\n\n if (!this.topicReferenceIsAllowedInCurrentContext()) {\n this.raise(Errors.PrimaryTopicNotAllowed!, startLoc);\n }\n this.registerTopicReference();\n return this.finishNode(node, \"PipelinePrimaryTopicReference\");\n }\n } else {\n // The token does not match the plugin’s configuration.\n throw this.raise(Errors.PipeTopicUnconfiguredToken, startLoc, {\n token: tokenLabelName(tokenType),\n });\n }\n }\n\n // This helper method tests whether the given token type\n // matches the pipelineOperator parser plugin’s configuration.\n // If the active pipe proposal is Hack style,\n // and if the given token is the same as the plugin configuration’s `topicToken`,\n // then this is a valid topic reference.\n // If the active pipe proposal is smart mix,\n // then the topic token must always be `#`.\n // If the active pipe proposal is neither (e.g., \"minimal\"(Babel 7) or \"fsharp\"),\n // then an error is thrown.\n testTopicReferenceConfiguration(\n pipeProposal: string,\n startLoc: Position,\n tokenType: TokenType,\n ): boolean {\n switch (pipeProposal) {\n case \"hack\": {\n return this.hasPlugin([\n \"pipelineOperator\",\n {\n // @ts-expect-error token must have a label\n topicToken: tokenLabelName(tokenType),\n },\n ]);\n }\n case \"smart\":\n return tokenType === tt.hash;\n default:\n throw this.raise(Errors.PipeTopicRequiresHackPipes, startLoc);\n }\n }\n\n // async [no LineTerminator here] AsyncArrowBindingIdentifier[?Yield] [no LineTerminator here] => AsyncConciseBody[?In]\n parseAsyncArrowUnaryFunction(\n this: Parser,\n node: Undone<N.ArrowFunctionExpression>,\n ): N.ArrowFunctionExpression {\n // We don't need to push a new ParameterDeclarationScope here since we are sure\n // 1) it is an async arrow, 2) no biding pattern is allowed in params\n this.prodParam.enter(functionFlags(true, this.prodParam.hasYield));\n const params = [this.parseIdentifier()];\n this.prodParam.exit();\n if (this.hasPrecedingLineBreak()) {\n this.raise(Errors.LineTerminatorBeforeArrow, this.state.curPosition());\n }\n this.expect(tt.arrow);\n // let foo = async bar => {};\n return this.parseArrowExpression(node, params, true);\n }\n\n // https://github.com/tc39/proposal-do-expressions\n // https://github.com/tc39/proposal-async-do-expressions\n parseDo(\n this: Parser,\n node: Undone<N.DoExpression>,\n isAsync: boolean,\n ): N.DoExpression {\n this.expectPlugin(\"doExpressions\");\n if (isAsync) {\n this.expectPlugin(\"asyncDoExpressions\");\n }\n node.async = isAsync;\n this.next(); // eat `do`\n const oldLabels = this.state.labels;\n this.state.labels = [];\n if (isAsync) {\n // AsyncDoExpression :\n // async [no LineTerminator here] do Block[~Yield, +Await, ~Return]\n this.prodParam.enter(ParamKind.PARAM_AWAIT);\n node.body = this.parseBlock();\n this.prodParam.exit();\n } else {\n node.body = this.parseBlock();\n }\n\n this.state.labels = oldLabels;\n return this.finishNode(node, \"DoExpression\");\n }\n\n // Parse the `super` keyword\n parseSuper(): N.Super {\n const node = this.startNode<N.Super>();\n this.next(); // eat `super`\n if (this.match(tt.parenL) && !this.scope.allowDirectSuper) {\n if (process.env.BABEL_8_BREAKING) {\n this.raise(Errors.SuperNotAllowed, node);\n } else {\n if (!(this.optionFlags & OptionFlags.AllowSuperOutsideMethod)) {\n this.raise(Errors.SuperNotAllowed, node);\n }\n }\n } else if (!this.scope.allowSuper) {\n if (process.env.BABEL_8_BREAKING) {\n this.raise(Errors.UnexpectedSuper, node);\n } else {\n if (!(this.optionFlags & OptionFlags.AllowSuperOutsideMethod)) {\n this.raise(Errors.UnexpectedSuper, node);\n }\n }\n }\n\n if (\n !this.match(tt.parenL) &&\n !this.match(tt.bracketL) &&\n !this.match(tt.dot)\n ) {\n this.raise(Errors.UnsupportedSuper, node);\n }\n\n return this.finishNode(node, \"Super\");\n }\n\n parsePrivateName(): N.PrivateName {\n const node = this.startNode<N.PrivateName>();\n const id = this.startNodeAt<N.Identifier>(\n // The position is hardcoded because we merge `#` and name into a single\n // tt.privateName token\n createPositionWithColumnOffset(this.state.startLoc, 1),\n );\n const name = this.state.value;\n this.next(); // eat #name;\n node.id = this.createIdentifier(id, name);\n return this.finishNode(node, \"PrivateName\");\n }\n\n parseFunctionOrFunctionSent(\n this: Parser,\n ): N.FunctionExpression | N.MetaProperty {\n const node = this.startNode<N.FunctionExpression | N.MetaProperty>();\n\n // We do not do parseIdentifier here because when parseFunctionOrFunctionSent\n // is called we already know that the current token is a \"name\" with the value \"function\"\n // This will improve perf a tiny little bit as we do not do validation but more importantly\n // here is that parseIdentifier will remove an item from the expression stack\n // if \"function\" or \"class\" is parsed as identifier (in objects e.g.), which should not happen here.\n this.next(); // eat `function`\n\n if (this.prodParam.hasYield && this.match(tt.dot)) {\n const meta = this.createIdentifier(\n this.startNodeAtNode<N.Identifier>(node),\n \"function\",\n );\n this.next(); // eat `.`\n // https://github.com/tc39/proposal-function.sent#syntax-1\n if (this.match(tt._sent)) {\n this.expectPlugin(\"functionSent\");\n } else if (!this.hasPlugin(\"functionSent\")) {\n // The code wasn't `function.sent` but just `function.`, so a simple error is less confusing.\n this.unexpected();\n }\n return this.parseMetaProperty(\n node as Undone<N.MetaProperty>,\n meta,\n \"sent\",\n );\n }\n return this.parseFunction(node as Undone<N.FunctionExpression>);\n }\n\n parseMetaProperty(\n node: Undone<N.MetaProperty>,\n meta: N.Identifier,\n propertyName: string,\n ): N.MetaProperty {\n node.meta = meta;\n\n const containsEsc = this.state.containsEsc;\n\n node.property = this.parseIdentifier(true);\n\n if (node.property.name !== propertyName || containsEsc) {\n this.raise(Errors.UnsupportedMetaProperty, node.property, {\n target: meta.name,\n onlyValidPropertyName: propertyName,\n });\n }\n\n return this.finishNode(node, \"MetaProperty\");\n }\n\n // https://tc39.es/ecma262/#prod-ImportMeta\n // https://tc39.es/proposal-source-phase-imports/\n parseImportMetaPropertyOrPhaseCall(\n this: Parser,\n node: Undone<N.MetaProperty | N.ImportExpression>,\n ): N.MetaProperty | N.ImportExpression {\n this.next(); // eat `.`\n\n if (this.isContextual(tt._source) || this.isContextual(tt._defer)) {\n const isSource = this.isContextual(tt._source);\n\n this.expectPlugin(\n isSource ? \"sourcePhaseImports\" : \"deferredImportEvaluation\",\n );\n this.next();\n (node as Undone<N.ImportExpression>).phase = isSource\n ? \"source\"\n : \"defer\";\n return this.parseImportCall(node as Undone<N.ImportExpression>);\n } else {\n const id = this.createIdentifierAt(\n this.startNodeAtNode<N.Identifier>(node),\n \"import\",\n this.state.lastTokStartLoc!,\n );\n if (this.isContextual(tt._meta)) {\n if (!this.inModule) {\n this.raise(Errors.ImportMetaOutsideModule, id);\n }\n this.sawUnambiguousESM = true;\n }\n return this.parseMetaProperty(node as Undone<N.MetaProperty>, id, \"meta\");\n }\n }\n\n parseLiteralAtNode<T extends N.Node>(\n value: any,\n type: T[\"type\"],\n node: any,\n ): T {\n this.addExtra(node, \"rawValue\", value);\n this.addExtra(\n node,\n \"raw\",\n this.input.slice(this.offsetToSourcePos(node.start), this.state.end),\n );\n node.value = value;\n this.next();\n return this.finishNode<T>(node, type);\n }\n\n parseLiteral<T extends N.Node>(value: any, type: T[\"type\"]): T {\n const node = this.startNode();\n return this.parseLiteralAtNode(value, type, node);\n }\n\n parseStringLiteral(value: any) {\n return this.parseLiteral<N.StringLiteral>(value, \"StringLiteral\");\n }\n\n parseNumericLiteral(value: any) {\n return this.parseLiteral<N.NumericLiteral>(value, \"NumericLiteral\");\n }\n\n parseBigIntLiteral(value: any) {\n if (process.env.BABEL_8_BREAKING) {\n let bigInt: bigint | null;\n try {\n bigInt = BigInt(value);\n } catch {\n // parser supports invalid bigints like `1.0n` or `1e1n` such that it\n // can throw a recoverable error, but BigInt constructor does not\n // support them.\n bigInt = null;\n }\n const node = this.parseLiteral<N.BigIntLiteral>(bigInt, \"BigIntLiteral\");\n return node;\n } else {\n return this.parseLiteral<N.BigIntLiteral>(value, \"BigIntLiteral\");\n }\n }\n\n // TODO: Remove this in Babel 8\n parseDecimalLiteral(value: any) {\n return this.parseLiteral<N.DecimalLiteral>(value, \"DecimalLiteral\");\n }\n\n parseRegExpLiteral(value: {\n value: any;\n pattern: string;\n flags: N.RegExpLiteral[\"flags\"];\n }) {\n const node = this.startNode<N.RegExpLiteral>();\n this.addExtra(\n node,\n \"raw\",\n this.input.slice(this.offsetToSourcePos(node.start), this.state.end),\n );\n node.pattern = value.pattern;\n node.flags = value.flags;\n this.next();\n return this.finishNode(node, \"RegExpLiteral\");\n }\n\n parseBooleanLiteral(value: boolean) {\n const node = this.startNode<N.BooleanLiteral>();\n node.value = value;\n this.next();\n return this.finishNode(node, \"BooleanLiteral\");\n }\n\n parseNullLiteral() {\n const node = this.startNode<N.NullLiteral>();\n this.next();\n return this.finishNode(node, \"NullLiteral\");\n }\n\n // https://tc39.es/ecma262/#prod-CoverParenthesizedExpressionAndArrowParameterList\n parseParenAndDistinguishExpression(\n this: Parser,\n canBeArrow: boolean,\n ): N.Expression {\n const startLoc = this.state.startLoc;\n\n let val;\n this.next(); // eat `(`\n this.expressionScope.enter(newArrowHeadScope());\n\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.maybeInArrowParameters = true;\n this.state.inFSharpPipelineDirectBody = false;\n\n const innerStartLoc = this.state.startLoc;\n const exprList: (\n | N.Expression\n | N.RestElement\n | N.VoidPattern\n | N.AssignmentPattern\n )[] = [];\n const refExpressionErrors = new ExpressionErrors();\n let first = true;\n let spreadStartLoc;\n let optionalCommaStartLoc;\n\n while (!this.match(tt.parenR)) {\n if (first) {\n first = false;\n } else {\n this.expect(\n tt.comma,\n refExpressionErrors.optionalParametersLoc === null\n ? null\n : refExpressionErrors.optionalParametersLoc,\n );\n if (this.match(tt.parenR)) {\n optionalCommaStartLoc = this.state.startLoc;\n break;\n }\n }\n\n if (this.match(tt.ellipsis)) {\n const spreadNodeStartLoc = this.state.startLoc;\n spreadStartLoc = this.state.startLoc;\n exprList.push(\n this.parseParenItem(this.parseRestBinding(), spreadNodeStartLoc),\n );\n\n if (!this.checkCommaAfterRest(charCodes.rightParenthesis)) {\n break;\n }\n } else {\n exprList.push(\n this.parseMaybeAssignAllowInOrVoidPattern(\n tt.parenR,\n refExpressionErrors,\n this.parseParenItem,\n ),\n );\n }\n }\n\n const innerEndLoc = this.state.lastTokEndLoc!;\n this.expect(tt.parenR);\n\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n let arrowNode: Undone<N.ArrowFunctionExpression> | null | undefined =\n this.startNodeAt<N.ArrowFunctionExpression>(startLoc);\n if (\n canBeArrow &&\n this.shouldParseArrow(exprList) &&\n (arrowNode = this.parseArrow(arrowNode))\n ) {\n this.checkDestructuringPrivate(refExpressionErrors);\n this.expressionScope.validateAsPattern();\n this.expressionScope.exit();\n this.parseArrowExpression(arrowNode, exprList, false);\n // @ts-expect-error todo(flow->ts) improve node types\n return arrowNode;\n }\n this.expressionScope.exit();\n\n if (!exprList.length) {\n this.unexpected(this.state.lastTokStartLoc);\n }\n if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc);\n if (spreadStartLoc) this.unexpected(spreadStartLoc);\n this.checkExpressionErrors(refExpressionErrors, true);\n\n this.toReferencedListDeep(exprList, /* isParenthesizedExpr */ true);\n if (exprList.length > 1) {\n val = this.startNodeAt<N.SequenceExpression>(innerStartLoc);\n val.expressions = exprList as N.Expression[];\n // finish node at current location so it can pick up comments after `)`\n this.finishNode(val, \"SequenceExpression\");\n this.resetEndLocation(val, innerEndLoc);\n } else {\n val = exprList[0];\n }\n\n return this.wrapParenthesis(\n startLoc,\n // @ts-expect-error todo(flow->ts)\n val,\n );\n }\n\n wrapParenthesis(startLoc: Position, expression: N.Expression): N.Expression {\n if (!(this.optionFlags & OptionFlags.CreateParenthesizedExpressions)) {\n this.addExtra(expression, \"parenthesized\", true);\n this.addExtra(expression, \"parenStart\", startLoc.index);\n\n this.takeSurroundingComments(\n expression,\n startLoc.index,\n this.state.lastTokEndLoc!.index,\n );\n\n return expression;\n }\n\n const parenExpression =\n this.startNodeAt<N.ParenthesizedExpression>(startLoc);\n parenExpression.expression = expression;\n return this.finishNode(parenExpression, \"ParenthesizedExpression\");\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- `params` is used in typescript plugin\n shouldParseArrow(params: N.Node[]): boolean {\n return !this.canInsertSemicolon();\n }\n\n parseArrow(\n node: Undone<N.ArrowFunctionExpression>,\n ): Undone<N.ArrowFunctionExpression> | undefined | null {\n if (this.eat(tt.arrow)) {\n return node;\n }\n }\n\n parseParenItem<T extends N.Expression | N.RestElement | N.SpreadElement>(\n node: T,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n startLoc: Position,\n ): T | N.TypeCastExpression | N.TsTypeCastExpression {\n return node;\n }\n\n parseNewOrNewTarget(this: Parser): N.NewExpression | N.MetaProperty {\n const node = this.startNode<N.NewExpression | N.MetaProperty>();\n this.next();\n if (this.match(tt.dot)) {\n // https://tc39.es/ecma262/#prod-NewTarget\n const meta = this.createIdentifier(\n this.startNodeAtNode<N.Identifier>(node),\n \"new\",\n );\n this.next();\n const metaProp = this.parseMetaProperty(\n node as Undone<N.MetaProperty>,\n meta,\n \"target\",\n );\n\n if (!this.scope.allowNewTarget) {\n this.raise(Errors.UnexpectedNewTarget, metaProp);\n }\n\n return metaProp;\n }\n\n return this.parseNew(node as Undone<N.NewExpression>);\n }\n\n // New's precedence is slightly tricky. It must allow its argument to\n // be a `[]` or dot subscript expression, but not a call — at least,\n // not without wrapping it in parentheses. Thus, it uses the noCalls\n // argument to parseSubscripts to prevent it from consuming the\n // argument list.\n // https://tc39.es/ecma262/#prod-NewExpression\n parseNew(this: Parser, node: Undone<N.NewExpression>): N.NewExpression {\n this.parseNewCallee(node);\n\n if (this.eat(tt.parenL)) {\n const args = this.parseExprList(tt.parenR);\n this.toReferencedList(args);\n // (parseExprList should be all non-null in this case)\n node.arguments = args as N.Expression[];\n } else {\n node.arguments = [];\n }\n\n return this.finishNode(node, \"NewExpression\");\n }\n\n parseNewCallee(this: Parser, node: Undone<N.NewExpression>): void {\n const isImport = this.match(tt._import);\n const callee = this.parseNoCallExpr();\n node.callee = callee;\n if (\n isImport &&\n (callee.type === \"Import\" || callee.type === \"ImportExpression\")\n ) {\n this.raise(Errors.ImportCallNotNewExpression, callee);\n }\n }\n\n // Parse template expression.\n\n parseTemplateElement(isTagged: boolean): N.TemplateElement {\n const { start, startLoc, end, value } = this.state;\n const elemStart = start + 1;\n const elem = this.startNodeAt<N.TemplateElement>(\n createPositionWithColumnOffset(startLoc, 1),\n );\n if (value === null) {\n if (!isTagged) {\n this.raise(\n Errors.InvalidEscapeSequenceTemplate,\n // FIXME: Adding 1 is probably wrong.\n createPositionWithColumnOffset(\n this.state.firstInvalidTemplateEscapePos!,\n 1,\n ),\n );\n }\n }\n\n const isTail = this.match(tt.templateTail);\n const endOffset = isTail ? -1 : -2;\n const elemEnd = end + endOffset;\n elem.value = {\n raw: this.input.slice(elemStart, elemEnd).replace(/\\r\\n?/g, \"\\n\"),\n cooked: value === null ? null : value.slice(1, endOffset),\n };\n elem.tail = isTail;\n this.next();\n const finishedNode = this.finishNode(elem, \"TemplateElement\");\n this.resetEndLocation(\n finishedNode,\n createPositionWithColumnOffset(this.state.lastTokEndLoc!, endOffset),\n );\n return finishedNode;\n }\n\n // https://tc39.es/ecma262/#prod-TemplateLiteral\n parseTemplate(this: Parser, isTagged: boolean): N.TemplateLiteral {\n const node = this.startNode<N.TemplateLiteral>();\n let curElt = this.parseTemplateElement(isTagged);\n const quasis = [curElt];\n const substitutions = [];\n while (!curElt.tail) {\n substitutions.push(this.parseTemplateSubstitution());\n this.readTemplateContinuation();\n quasis.push((curElt = this.parseTemplateElement(isTagged)));\n }\n // Type cast from (N.Expression[] | N.TsType[]). parseTemplateSubstitution\n // returns consistent results.\n node.expressions = substitutions as N.Expression[] | N.TsType[];\n node.quasis = quasis;\n return this.finishNode(node, \"TemplateLiteral\");\n }\n\n // This is overwritten by the TypeScript plugin to parse template types\n parseTemplateSubstitution(this: Parser): N.Expression | N.TsType {\n return this.parseExpression();\n }\n\n // Parse an object literal, binding pattern, or record.\n\n parseObjectLike(\n close: TokenType,\n isPattern: true,\n isRecord?: boolean | null,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.ObjectPattern;\n parseObjectLike(\n close: TokenType,\n isPattern: false,\n isRecord?: false | null,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.ObjectExpression;\n parseObjectLike(\n close: TokenType,\n isPattern: false,\n isRecord?: true,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.RecordExpression;\n parseObjectLike<T extends N.ObjectPattern | N.ObjectExpression>(\n this: Parser,\n close: TokenType,\n isPattern: boolean,\n isRecord?: boolean | null,\n refExpressionErrors?: ExpressionErrors | null,\n ): T {\n if (isRecord) {\n this.expectPlugin(\"recordAndTuple\");\n }\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = false;\n let sawProto = false;\n let first = true;\n const node = this.startNode<\n N.ObjectExpression | N.ObjectPattern | N.RecordExpression\n >();\n\n node.properties = [];\n this.next();\n\n while (!this.match(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(tt.comma);\n if (this.match(close)) {\n this.addTrailingCommaExtraToNode(node);\n break;\n }\n }\n\n let prop;\n if (isPattern) {\n prop = this.parseBindingProperty();\n } else {\n prop = this.parsePropertyDefinition(refExpressionErrors);\n sawProto = this.checkProto(\n prop,\n isRecord,\n sawProto,\n refExpressionErrors,\n );\n }\n\n if (\n isRecord &&\n !this.isObjectProperty(prop) &&\n prop.type !== \"SpreadElement\"\n ) {\n this.raise(Errors.InvalidRecordProperty, prop);\n }\n\n if (!process.env.BABEL_8_BREAKING) {\n // @ts-expect-error shorthand may not index prop\n if (prop.shorthand) {\n this.addExtra(prop, \"shorthand\", true);\n }\n }\n\n // @ts-expect-error Fixme: refine typings\n node.properties.push(prop);\n }\n\n this.next();\n\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n let type = \"ObjectExpression\";\n if (isPattern) {\n type = \"ObjectPattern\";\n } else if (isRecord) {\n type = \"RecordExpression\";\n }\n // @ts-expect-error type is well defined\n return this.finishNode(node, type);\n }\n\n addTrailingCommaExtraToNode(node: Undone<N.Node>): void {\n this.addExtra(node, \"trailingComma\", this.state.lastTokStartLoc!.index);\n this.addExtra(node, \"trailingCommaLoc\", this.state.lastTokStartLoc, false);\n }\n\n // Check grammar production:\n // IdentifierName *_opt PropertyName\n // It is used in `parsePropertyDefinition` to detect AsyncMethod and Accessors\n maybeAsyncOrAccessorProp(\n prop: Undone<N.ObjectProperty>,\n ): prop is typeof prop & { key: N.Identifier } {\n return (\n !prop.computed &&\n prop.key.type === \"Identifier\" &&\n (this.isLiteralPropertyName() ||\n this.match(tt.bracketL) ||\n this.match(tt.star))\n );\n }\n\n // https://tc39.es/ecma262/#prod-PropertyDefinition\n parsePropertyDefinition(\n this: Parser,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.ObjectMember | N.SpreadElement {\n let decorators = [];\n if (this.match(tt.at)) {\n if (this.hasPlugin(\"decorators\")) {\n this.raise(Errors.UnsupportedPropertyDecorator, this.state.startLoc);\n }\n\n // we needn't check if decorators (stage 0) plugin is enabled since it's checked by\n // the call to this.parseDecorator\n while (this.match(tt.at)) {\n decorators.push(this.parseDecorator());\n }\n }\n\n const prop = this.startNode<N.ObjectProperty>();\n let isAsync = false;\n let isAccessor = false;\n let startLoc;\n\n if (this.match(tt.ellipsis)) {\n if (decorators.length) this.unexpected();\n return this.parseSpread();\n }\n\n if (decorators.length) {\n prop.decorators = decorators;\n decorators = [];\n }\n\n prop.method = false;\n\n if (refExpressionErrors) {\n startLoc = this.state.startLoc;\n }\n\n let isGenerator = this.eat(tt.star);\n this.parsePropertyNamePrefixOperator(prop);\n const containsEsc = this.state.containsEsc;\n this.parsePropertyName(prop, refExpressionErrors);\n\n if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) {\n const { key } = prop;\n const keyName = key.name;\n // https://tc39.es/ecma262/#prod-AsyncMethod\n // https://tc39.es/ecma262/#prod-AsyncGeneratorMethod\n if (keyName === \"async\" && !this.hasPrecedingLineBreak()) {\n isAsync = true;\n this.resetPreviousNodeTrailingComments(key);\n isGenerator = this.eat(tt.star);\n this.parsePropertyName(prop);\n }\n // get PropertyName[?Yield, ?Await] () { FunctionBody[~Yield, ~Await] }\n // set PropertyName[?Yield, ?Await] ( PropertySetParameterList ) { FunctionBody[~Yield, ~Await] }\n if (keyName === \"get\" || keyName === \"set\") {\n isAccessor = true;\n this.resetPreviousNodeTrailingComments(key);\n prop.kind = keyName;\n if (this.match(tt.star)) {\n isGenerator = true;\n this.raise(Errors.AccessorIsGenerator, this.state.curPosition(), {\n kind: keyName,\n });\n this.next();\n }\n this.parsePropertyName(prop);\n }\n }\n\n return this.parseObjPropValue(\n prop,\n startLoc,\n isGenerator,\n isAsync,\n false /* isPattern */,\n isAccessor,\n refExpressionErrors,\n );\n }\n\n getGetterSetterExpectedParamCount(\n method: N.ObjectMethod | N.ClassMethod,\n ): number {\n return method.kind === \"get\" ? 0 : 1;\n }\n\n // This exists so we can override within the ESTree plugin\n getObjectOrClassMethodParams(method: N.ObjectMethod | N.ClassMethod) {\n return method.params;\n }\n\n // get methods aren't allowed to have any parameters\n // set methods must have exactly 1 parameter which is not a rest parameter\n checkGetterSetterParams(method: N.ObjectMethod | N.ClassMethod): void {\n const paramCount = this.getGetterSetterExpectedParamCount(method);\n const params = this.getObjectOrClassMethodParams(method);\n\n if (params.length !== paramCount) {\n this.raise(\n method.kind === \"get\" ? Errors.BadGetterArity : Errors.BadSetterArity,\n method,\n );\n }\n\n if (\n method.kind === \"set\" &&\n params[params.length - 1]?.type === \"RestElement\"\n ) {\n this.raise(Errors.BadSetterRestParameter, method);\n }\n }\n\n // https://tc39.es/ecma262/#prod-MethodDefinition\n parseObjectMethod(\n this: Parser,\n prop: Undone<N.ObjectMethod>,\n isGenerator: boolean,\n isAsync: boolean,\n isPattern: boolean,\n isAccessor: boolean,\n ): N.ObjectMethod | undefined | null {\n if (isAccessor) {\n // isAccessor implies isAsync: false, isPattern: false, isGenerator: false\n const finishedProp = this.parseMethod(\n prop,\n // This _should_ be false, but with error recovery, we allow it to be\n // set for informational purposes\n isGenerator,\n /* isAsync */ false,\n /* isConstructor */ false,\n false,\n \"ObjectMethod\",\n );\n this.checkGetterSetterParams(finishedProp);\n return finishedProp;\n }\n\n if (isAsync || isGenerator || this.match(tt.parenL)) {\n if (isPattern) this.unexpected();\n prop.kind = \"method\";\n prop.method = true;\n return this.parseMethod(\n prop,\n isGenerator,\n isAsync,\n /* isConstructor */ false,\n false,\n \"ObjectMethod\",\n );\n }\n }\n\n // if `isPattern` is true, parse https://tc39.es/ecma262/#prod-BindingProperty\n // else https://tc39.es/ecma262/#prod-PropertyDefinition\n parseObjectProperty(\n this: Parser,\n prop: Undone<N.ObjectProperty>,\n startLoc: Position | undefined | null,\n isPattern: boolean,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.ObjectProperty | undefined | null {\n prop.shorthand = false;\n\n if (this.eat(tt.colon)) {\n prop.value = isPattern\n ? this.parseMaybeDefault(this.state.startLoc)\n : this.parseMaybeAssignAllowInOrVoidPattern(\n tt.braceR,\n refExpressionErrors,\n );\n\n return this.finishObjectProperty(prop);\n }\n\n if (!prop.computed && prop.key.type === \"Identifier\") {\n // PropertyDefinition:\n // IdentifierReference\n // CoverInitializedName\n // Note: `{ eval } = {}` will be checked in `checkLVal` later.\n this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false);\n\n if (isPattern) {\n prop.value = this.parseMaybeDefault(\n startLoc,\n this.cloneIdentifier(prop.key),\n );\n } else if (this.match(tt.eq)) {\n const shorthandAssignLoc = this.state.startLoc;\n if (refExpressionErrors != null) {\n if (refExpressionErrors.shorthandAssignLoc === null) {\n refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc;\n }\n } else {\n this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc);\n }\n prop.value = this.parseMaybeDefault(\n startLoc,\n this.cloneIdentifier(prop.key),\n );\n } else {\n prop.value = this.cloneIdentifier(prop.key);\n }\n prop.shorthand = true;\n\n return this.finishObjectProperty(prop);\n }\n }\n\n finishObjectProperty(node: Undone<N.ObjectProperty>) {\n return this.finishNode(node, \"ObjectProperty\");\n }\n\n parseObjPropValue<T extends N.ObjectMember>(\n this: Parser,\n prop: Undone<T>,\n startLoc: Position | undefined | null,\n isGenerator: boolean,\n isAsync: boolean,\n isPattern: boolean,\n isAccessor: boolean,\n refExpressionErrors?: ExpressionErrors | null,\n ): T {\n const node = (this.parseObjectMethod(\n prop as Undone<N.ObjectMethod>,\n isGenerator,\n isAsync,\n isPattern,\n isAccessor,\n ) ||\n this.parseObjectProperty(\n prop as Undone<N.ObjectProperty>,\n startLoc,\n isPattern,\n refExpressionErrors,\n )) as T;\n\n if (!node) this.unexpected();\n\n return node;\n }\n\n // https://tc39.es/ecma262/#prod-PropertyName\n // when refExpressionErrors presents, it will parse private name\n // and record the position of the first private name\n parsePropertyName(\n this: Parser,\n prop:\n | Undone<N.ObjectOrClassMember | N.ClassMember>\n | N.TsNamedTypeElementBase,\n refExpressionErrors?: ExpressionErrors | null,\n ): void {\n if (this.eat(tt.bracketL)) {\n (prop as Undone<N.ObjectOrClassMember>).computed = true;\n prop.key = this.parseMaybeAssignAllowIn();\n this.expect(tt.bracketR);\n } else {\n // We check if it's valid for it to be a private name when we push it.\n const { type, value } = this.state;\n let key;\n // most un-computed property names are identifiers\n if (tokenIsKeywordOrIdentifier(type)) {\n key = this.parseIdentifier(true);\n } else {\n switch (type) {\n case tt.num:\n key = this.parseNumericLiteral(value);\n break;\n case tt.string:\n key = this.parseStringLiteral(value);\n break;\n case tt.bigint:\n key = this.parseBigIntLiteral(value);\n break;\n case tt.privateName: {\n // the class private key has been handled in parseClassElementName\n const privateKeyLoc = this.state.startLoc;\n if (refExpressionErrors != null) {\n if (refExpressionErrors.privateKeyLoc === null) {\n refExpressionErrors.privateKeyLoc = privateKeyLoc;\n }\n } else {\n this.raise(Errors.UnexpectedPrivateField, privateKeyLoc);\n }\n key = this.parsePrivateName();\n break;\n }\n default:\n if (!process.env.BABEL_8_BREAKING && type === tt.decimal) {\n key = this.parseDecimalLiteral(value);\n break;\n }\n\n this.unexpected();\n }\n }\n (prop as any).key = key;\n if (type !== tt.privateName) {\n // ClassPrivateProperty is never computed, so we don't assign in that case.\n prop.computed = false;\n }\n }\n }\n\n // Initialize empty function node.\n\n initFunction(node: N.BodilessFunctionOrMethodBase, isAsync: boolean): void {\n node.id = null;\n node.generator = false;\n node.async = isAsync;\n }\n\n // Parse object or class method.\n\n parseMethod<T extends N.ObjectMethod | N.ClassMethod | N.ClassPrivateMethod>(\n this: Parser,\n node: Undone<T>,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowDirectSuper: boolean,\n type: T[\"type\"],\n inClassScope: boolean = false,\n ): T {\n this.initFunction(node, isAsync);\n node.generator = isGenerator;\n this.scope.enter(\n ScopeFlag.FUNCTION |\n ScopeFlag.SUPER |\n (inClassScope ? ScopeFlag.CLASS : 0) |\n (allowDirectSuper ? ScopeFlag.DIRECT_SUPER : 0),\n );\n this.prodParam.enter(functionFlags(isAsync, node.generator));\n this.parseFunctionParams(node, isConstructor);\n const finishedNode = this.parseFunctionBodyAndFinish(node, type, true);\n this.prodParam.exit();\n this.scope.exit();\n\n return finishedNode;\n }\n\n // parse an array literal or tuple literal\n // https://tc39.es/ecma262/#prod-ArrayLiteral\n // https://tc39.es/proposal-record-tuple/#prod-TupleLiteral\n parseArrayLike(\n this: Parser,\n close: TokenType,\n isTuple: boolean,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.ArrayExpression | N.TupleExpression {\n if (isTuple) {\n this.expectPlugin(\"recordAndTuple\");\n }\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = false;\n const node = this.startNode<N.ArrayExpression | N.TupleExpression>();\n this.next();\n node.elements = this.parseExprList(\n close,\n /* allowEmpty */ !isTuple,\n refExpressionErrors,\n node,\n );\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n return this.finishNode(\n node,\n isTuple ? \"TupleExpression\" : \"ArrayExpression\",\n );\n }\n\n // Parse arrow function expression.\n // If the parameters are provided, they will be converted to an\n // assignable list.\n parseArrowExpression(\n this: Parser,\n node: Undone<N.ArrowFunctionExpression>,\n params:\n | (N.Expression | N.SpreadElement | N.VoidPattern | N.AssignmentPattern)[]\n | (N.Expression | N.RestElement | N.VoidPattern | N.AssignmentPattern)[]\n | null\n | undefined,\n isAsync: boolean,\n trailingCommaLoc?: Position | null,\n ): N.ArrowFunctionExpression {\n this.scope.enter(ScopeFlag.FUNCTION | ScopeFlag.ARROW);\n let flags = functionFlags(isAsync, false);\n // ConciseBody[In] :\n // [lookahead ≠ {] ExpressionBody[?In, ~Await]\n // { FunctionBody[~Yield, ~Await] }\n if (!this.match(tt.braceL) && this.prodParam.hasIn) {\n flags |= ParamKind.PARAM_IN;\n }\n this.prodParam.enter(flags);\n this.initFunction(node, isAsync);\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n\n if (params) {\n this.state.maybeInArrowParameters = true;\n this.setArrowFunctionParameters(node, params, trailingCommaLoc);\n }\n this.state.maybeInArrowParameters = false;\n this.parseFunctionBody(node, true);\n\n this.prodParam.exit();\n this.scope.exit();\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n\n return this.finishNode(node, \"ArrowFunctionExpression\");\n }\n\n setArrowFunctionParameters(\n node: Undone<N.ArrowFunctionExpression>,\n params:\n | (N.Expression | N.SpreadElement | N.VoidPattern | N.AssignmentPattern)[]\n | (N.Expression | N.RestElement | N.VoidPattern | N.AssignmentPattern)[],\n trailingCommaLoc?: Position | null,\n ): void {\n this.toAssignableList(params, trailingCommaLoc, false);\n node.params = params as (N.Pattern | N.TSParameterProperty)[];\n }\n\n parseFunctionBodyAndFinish<\n T extends\n | N.Function\n | N.TSDeclareMethod\n | N.TSDeclareFunction\n | N.ClassPrivateMethod,\n >(node: Undone<T>, type: T[\"type\"], isMethod: boolean = false): T {\n // @ts-expect-error (node is not bodiless if we get here)\n this.parseFunctionBody(node, false, isMethod);\n return this.finishNode(node, type);\n }\n\n // Parse function body and check parameters.\n parseFunctionBody(\n this: Parser,\n node: Undone<N.Function>,\n allowExpression?: boolean | null,\n isMethod: boolean = false,\n ): void {\n const isExpression = allowExpression && !this.match(tt.braceL);\n this.expressionScope.enter(newExpressionScope());\n\n if (isExpression) {\n // https://tc39.es/ecma262/#prod-ExpressionBody\n (node as Undone<N.ArrowFunctionExpression>).body =\n this.parseMaybeAssign();\n this.checkParams(node, false, allowExpression, false);\n } else {\n const oldStrict = this.state.strict;\n // Start a new scope with regard to labels\n // flag (restore them to their old value afterwards).\n const oldLabels = this.state.labels;\n this.state.labels = [];\n\n // FunctionBody[Yield, Await]:\n // StatementList[?Yield, ?Await, +Return] opt\n this.prodParam.enter(\n this.prodParam.currentFlags() | ParamKind.PARAM_RETURN,\n );\n node.body = this.parseBlock(\n true,\n false,\n // Strict mode function checks after we parse the statements in the function body.\n (hasStrictModeDirective: boolean) => {\n const nonSimple = !this.isSimpleParamList(node.params);\n\n if (hasStrictModeDirective && nonSimple) {\n // This logic is here to align the error location with the ESTree plugin.\n this.raise(\n Errors.IllegalLanguageModeDirective,\n // @ts-expect-error kind may not index node\n (node.kind === \"method\" || node.kind === \"constructor\") &&\n // @ts-expect-error key may not index node\n !!node.key\n ? // @ts-expect-error node.key has been guarded\n node.key.loc.end\n : node,\n );\n }\n\n const strictModeChanged = !oldStrict && this.state.strict;\n\n // Add the params to varDeclaredNames to ensure that an error is thrown\n // if a let/const declaration in the function clashes with one of the params.\n this.checkParams(\n node,\n !this.state.strict && !allowExpression && !isMethod && !nonSimple,\n allowExpression,\n strictModeChanged,\n );\n\n // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n if (this.state.strict && node.id) {\n this.checkIdentifier(\n node.id,\n BindingFlag.TYPE_OUTSIDE,\n strictModeChanged,\n );\n }\n },\n );\n this.prodParam.exit();\n this.state.labels = oldLabels;\n }\n this.expressionScope.exit();\n }\n\n isSimpleParameter(node: N.Pattern | N.TSParameterProperty): boolean {\n return node.type === \"Identifier\";\n }\n\n isSimpleParamList(\n params: readonly (N.Pattern | N.TSParameterProperty)[],\n ): boolean {\n for (let i = 0, len = params.length; i < len; i++) {\n if (!this.isSimpleParameter(params[i])) return false;\n }\n return true;\n }\n\n checkParams(\n node: Undone<N.Function>,\n allowDuplicates: boolean,\n isArrowFunction?: boolean | null,\n strictModeChanged: boolean = true,\n ): void {\n const checkClashes = !allowDuplicates && new Set<string>();\n // We create a fake node with the \"ephemeral\" type `FormalParameters`[1]\n // since we just store an array of parameters. Perhaps someday we can have\n // something like class FormalParameters extends Array { ... }, which would\n // also be helpful when traversing this node.\n //\n // 1. https://tc39.es/ecma262/#prod-FormalParameters\n const formalParameters = { type: \"FormalParameters\" } as const;\n for (const param of node.params) {\n this.checkLVal(\n param,\n formalParameters,\n BindingFlag.TYPE_VAR,\n checkClashes,\n strictModeChanged,\n );\n }\n }\n\n // Parses a comma-separated list of expressions, and returns them as\n // an array. `close` is the token type that ends the list, and\n // `allowEmpty` can be turned on to allow subsequent commas with\n // nothing in between them to be parsed as `null` (which is needed\n // for array literals).\n // https://tc39.es/ecma262/#prod-ElementList\n parseExprList(\n this: Parser,\n close: TokenType,\n allowEmpty?: boolean,\n refExpressionErrors?: ExpressionErrors | null,\n nodeForExtra?: Undone<N.Node> | null,\n ): (N.Expression | null)[] {\n const elts: (N.Expression | null)[] = [];\n let first = true;\n\n while (!this.eat(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(tt.comma);\n if (this.match(close)) {\n if (nodeForExtra) {\n this.addTrailingCommaExtraToNode(nodeForExtra);\n }\n this.next();\n break;\n }\n }\n\n elts.push(this.parseExprListItem(close, allowEmpty, refExpressionErrors));\n }\n return elts;\n }\n\n parseExprListItem(\n this: Parser,\n close: TokenType,\n allowEmpty?: boolean,\n refExpressionErrors?: ExpressionErrors | null,\n allowPlaceholder?: boolean | null,\n ): N.Expression | null;\n parseExprListItem(\n this: Parser,\n close: TokenType,\n allowEmpty?: false,\n refExpressionErrors?: ExpressionErrors | null,\n allowPlaceholder?: boolean | null,\n ): N.Expression;\n parseExprListItem(\n this: Parser,\n close: TokenType,\n allowEmpty?: boolean | null,\n refExpressionErrors?: ExpressionErrors | null,\n allowPlaceholder?: boolean | null,\n ):\n | N.Expression\n | N.SpreadElement\n | N.ArgumentPlaceholder\n | N.VoidPattern\n | N.AssignmentPattern\n | null {\n let elt;\n if (this.match(tt.comma)) {\n if (!allowEmpty) {\n this.raise(Errors.UnexpectedToken, this.state.curPosition(), {\n unexpected: \",\",\n });\n }\n elt = null;\n } else if (this.match(tt.ellipsis)) {\n const spreadNodeStartLoc = this.state.startLoc;\n\n elt = this.parseParenItem(\n this.parseSpread(refExpressionErrors),\n spreadNodeStartLoc,\n );\n } else if (this.match(tt.question)) {\n this.expectPlugin(\"partialApplication\");\n if (!allowPlaceholder) {\n this.raise(Errors.UnexpectedArgumentPlaceholder, this.state.startLoc);\n }\n const node = this.startNode<N.ArgumentPlaceholder>();\n this.next();\n elt = this.finishNode(node, \"ArgumentPlaceholder\");\n } else {\n elt = this.parseMaybeAssignAllowInOrVoidPattern(\n close,\n refExpressionErrors,\n this.parseParenItem,\n );\n }\n return elt;\n }\n\n // Parse the next token as an identifier. If `liberal` is true (used\n // when parsing properties), it will also convert keywords into\n // identifiers.\n // This shouldn't be used to parse the keywords of meta properties, since they\n // are not identifiers and cannot contain escape sequences.\n\n parseIdentifier(liberal?: boolean): N.Identifier {\n const node = this.startNode<N.Identifier>();\n const name = this.parseIdentifierName(liberal);\n\n return this.createIdentifier(node, name);\n }\n\n createIdentifier(node: Undone<N.Identifier>, name: string): N.Identifier {\n node.name = name;\n node.loc.identifierName = name;\n\n return this.finishNode(node, \"Identifier\");\n }\n\n createIdentifierAt(\n node: Undone<N.Identifier>,\n name: string,\n endLoc: Position,\n ): N.Identifier {\n node.name = name;\n node.loc.identifierName = name;\n\n return this.finishNodeAt(node, \"Identifier\", endLoc);\n }\n\n parseIdentifierName(liberal?: boolean): string {\n let name: string;\n\n const { startLoc, type } = this.state;\n\n if (tokenIsKeywordOrIdentifier(type)) {\n name = this.state.value;\n } else {\n this.unexpected();\n }\n\n const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type);\n\n if (liberal) {\n // If the current token is not used as a keyword, set its type to \"tt.name\".\n // This will prevent this.next() from throwing about unexpected escapes.\n if (tokenIsKeyword) {\n this.replaceToken(tt.name);\n }\n } else {\n this.checkReservedWord(name!, startLoc, tokenIsKeyword, false);\n }\n\n this.next();\n\n return name!;\n }\n\n checkReservedWord(\n word: string,\n startLoc: Position,\n checkKeywords: boolean,\n isBinding: boolean,\n ): void {\n // Every JavaScript reserved word is 10 characters or less.\n if (word.length > 10) {\n return;\n }\n // Most identifiers are not reservedWord-like, they don't need special\n // treatments afterward, which very likely ends up throwing errors\n if (!canBeReservedWord(word)) {\n return;\n }\n\n if (checkKeywords && isKeyword(word)) {\n this.raise(Errors.UnexpectedKeyword, startLoc, {\n keyword: word,\n });\n return;\n }\n\n const reservedTest = !this.state.strict\n ? isReservedWord\n : isBinding\n ? isStrictBindReservedWord\n : isStrictReservedWord;\n\n if (reservedTest(word, this.inModule)) {\n this.raise(Errors.UnexpectedReservedWord, startLoc, {\n reservedWord: word,\n });\n return;\n } else if (word === \"yield\") {\n if (this.prodParam.hasYield) {\n this.raise(Errors.YieldBindingIdentifier, startLoc);\n return;\n }\n } else if (word === \"await\") {\n if (this.prodParam.hasAwait) {\n this.raise(Errors.AwaitBindingIdentifier, startLoc);\n return;\n }\n\n if (this.scope.inStaticBlock) {\n this.raise(Errors.AwaitBindingIdentifierInStaticBlock, startLoc);\n return;\n }\n\n this.expressionScope.recordAsyncArrowParametersError(startLoc);\n } else if (word === \"arguments\") {\n if (this.scope.inClassAndNotInNonArrowFunction) {\n this.raise(Errors.ArgumentsInClass, startLoc);\n return;\n }\n }\n }\n\n // Returns whether `await` is allowed or not in this context, and if it is\n // keeps track of it to determine whether a module uses top-level await.\n recordAwaitIfAllowed(): boolean {\n const isAwaitAllowed = this.prodParam.hasAwait;\n\n if (isAwaitAllowed && !this.scope.inFunction) {\n this.state.hasTopLevelAwait = true;\n }\n\n return isAwaitAllowed;\n }\n\n // Parses await expression inside async function.\n\n parseAwait(this: Parser, startLoc: Position): N.AwaitExpression {\n const node = this.startNodeAt<N.AwaitExpression>(startLoc);\n\n this.expressionScope.recordParameterInitializerError(\n Errors.AwaitExpressionFormalParameter,\n node,\n );\n\n if (this.eat(tt.star)) {\n this.raise(Errors.ObsoleteAwaitStar, node);\n }\n\n if (\n !this.scope.inFunction &&\n !(this.optionFlags & OptionFlags.AllowAwaitOutsideFunction)\n ) {\n if (this.isAmbiguousPrefixOrIdentifier()) {\n this.ambiguousScriptDifferentAst = true;\n } else {\n this.sawUnambiguousESM = true;\n }\n }\n\n if (!this.state.soloAwait) {\n node.argument = this.parseMaybeUnary(null, true);\n }\n\n return this.finishNode(node, \"AwaitExpression\");\n }\n\n isAmbiguousPrefixOrIdentifier(): boolean {\n if (this.hasPrecedingLineBreak()) return true;\n const { type } = this.state;\n return (\n // All the following expressions are ambiguous:\n // await + 0, await - 0, await ( 0 ), await [ 0 ], await / 0 /u, await ``, await of []\n type === tt.plusMin ||\n type === tt.parenL ||\n type === tt.bracketL ||\n tokenIsTemplate(type) ||\n (type === tt._of && !this.state.containsEsc) ||\n // Sometimes the tokenizer generates tt.slash for regexps, and this is\n // handler by parseExprAtom\n type === tt.regexp ||\n type === tt.slash ||\n // This code could be parsed both as a modulo operator or as an intrinsic:\n // await %x(0)\n (this.hasPlugin(\"v8intrinsic\") && type === tt.modulo)\n );\n }\n\n // Parses yield expression inside generator.\n\n parseYield(this: Parser, startLoc: Position): N.YieldExpression {\n const node = this.startNodeAt<N.YieldExpression>(startLoc);\n\n this.expressionScope.recordParameterInitializerError(\n Errors.YieldInParameter,\n node,\n );\n\n let delegating = false;\n let argument: N.Expression | null = null;\n if (!this.hasPrecedingLineBreak()) {\n delegating = this.eat(tt.star);\n switch (this.state.type) {\n case tt.semi:\n case tt.eof:\n case tt.braceR:\n case tt.parenR:\n case tt.bracketR:\n case tt.braceBarR:\n case tt.colon:\n case tt.comma:\n // The above is the complete set of tokens that can\n // follow an AssignmentExpression, and none of them\n // can start an AssignmentExpression\n if (!delegating) break;\n /* fallthrough */\n default:\n argument = this.parseMaybeAssign();\n }\n }\n node.delegate = delegating;\n node.argument = argument;\n return this.finishNode(node, \"YieldExpression\");\n }\n\n // https://tc39.es/ecma262/#prod-ImportCall\n parseImportCall(\n this: Parser,\n node: Undone<N.ImportExpression>,\n ): N.ImportExpression {\n this.next(); // eat tt.parenL\n node.source = this.parseMaybeAssignAllowIn();\n node.options = null;\n if (this.eat(tt.comma)) {\n if (!this.match(tt.parenR)) {\n node.options = this.parseMaybeAssignAllowIn();\n if (this.eat(tt.comma)) {\n this.addTrailingCommaExtraToNode(node.options);\n if (!this.match(tt.parenR)) {\n // keep consuming arguments, to then throw ImportCallArity\n // instead of \"expected )\"\n do {\n this.parseMaybeAssignAllowIn();\n } while (this.eat(tt.comma) && !this.match(tt.parenR));\n\n this.raise(Errors.ImportCallArity, node);\n }\n }\n } else {\n this.addTrailingCommaExtraToNode(node.source);\n }\n }\n this.expect(tt.parenR);\n return this.finishNode(node, \"ImportExpression\");\n }\n\n // Validates a pipeline (for any of the pipeline Babylon plugins) at the point\n // of the infix operator `|>`.\n\n checkPipelineAtInfixOperator(left: N.Expression, leftStartLoc: Position) {\n // @ts-expect-error Remove this in Babel 8\n if (this.hasPlugin([\"pipelineOperator\", { proposal: \"smart\" }])) {\n if (left.type === \"SequenceExpression\") {\n // Ensure that the pipeline head is not a comma-delimited\n // sequence expression.\n this.raise(Errors.PipelineHeadSequenceExpression!, leftStartLoc);\n }\n }\n }\n\n parseSmartPipelineBodyInStyle(childExpr: N.Expression, startLoc: Position) {\n if (this.isSimpleReference(childExpr)) {\n const bodyNode = this.startNodeAt<N.PipelineBareFunction>(startLoc);\n bodyNode.callee = childExpr;\n return this.finishNode(bodyNode, \"PipelineBareFunction\");\n } else {\n const bodyNode = this.startNodeAt<N.PipelineTopicExpression>(startLoc);\n this.checkSmartPipeTopicBodyEarlyErrors(startLoc);\n bodyNode.expression = childExpr;\n return this.finishNode(bodyNode, \"PipelineTopicExpression\");\n }\n }\n\n isSimpleReference(expression: N.Expression): boolean {\n switch (expression.type) {\n case \"MemberExpression\":\n return (\n !expression.computed && this.isSimpleReference(expression.object)\n );\n case \"Identifier\":\n return true;\n default:\n return false;\n }\n }\n\n // This helper method is to be called immediately\n // after a topic-style smart-mix pipe body is parsed.\n // The `startLoc` is the starting position of the pipe body.\n\n checkSmartPipeTopicBodyEarlyErrors(startLoc: Position): void {\n // If the following token is invalidly `=>`, then throw a human-friendly error\n // instead of something like 'Unexpected token, expected \";\"'.\n // For example, `x => x |> y => #` (assuming `#` is the topic reference)\n // groups into `x => (x |> y) => #`,\n // and `(x |> y) => #` is an invalid arrow function.\n // This is because smart-mix `|>` has tighter precedence than `=>`.\n if (this.match(tt.arrow)) {\n throw this.raise(Errors.PipelineBodyNoArrow!, this.state.startLoc);\n }\n\n // A topic-style smart-mix pipe body must use the topic reference at least once.\n if (!this.topicReferenceWasUsedInCurrentContext()) {\n this.raise(Errors.PipelineTopicUnused!, startLoc);\n }\n }\n\n // Enable topic references from outer contexts within Hack-style pipe bodies.\n // The function modifies the parser's topic-context state to enable or disable\n // the use of topic references.\n // The function then calls a callback, then resets the parser\n // to the old topic-context state that it had before the function was called.\n\n withTopicBindingContext<T>(callback: () => T): T {\n const outerContextTopicState = this.state.topicContext;\n this.state.topicContext = {\n // Enable the use of the primary topic reference.\n maxNumOfResolvableTopics: 1,\n // Hide the use of any topic references from outer contexts.\n maxTopicIndex: null,\n };\n\n try {\n return callback();\n } finally {\n this.state.topicContext = outerContextTopicState;\n }\n }\n\n // This helper method is used only with the deprecated smart-mix pipe proposal.\n // Disables topic references from outer contexts within syntax constructs\n // such as the bodies of iteration statements.\n // The function modifies the parser's topic-context state to enable or disable\n // the use of topic references with the smartPipelines plugin. They then run a\n // callback, then they reset the parser to the old topic-context state that it\n // had before the function was called.\n\n withSmartMixTopicForbiddingContext<T>(callback: () => T): T {\n // TODO(Babel 8): Remove this method\n\n if (\n !process.env.BABEL_8_BREAKING &&\n // @ts-expect-error Babel 7 only\n this.hasPlugin([\"pipelineOperator\", { proposal: \"smart\" }])\n ) {\n // Reset the parser’s topic context only if the smart-mix pipe proposal is active.\n const outerContextTopicState = this.state.topicContext;\n this.state.topicContext = {\n // Disable the use of the primary topic reference.\n maxNumOfResolvableTopics: 0,\n // Hide the use of any topic references from outer contexts.\n maxTopicIndex: null,\n };\n\n try {\n return callback();\n } finally {\n this.state.topicContext = outerContextTopicState;\n }\n } else {\n // If the pipe proposal is \"minimal\"(Babel 7), \"fsharp\", or \"hack\",\n // or if no pipe proposal is active,\n // then the callback result is returned\n // without touching any extra parser state.\n return callback();\n }\n }\n\n withSoloAwaitPermittingContext<T>(callback: () => T): T {\n const outerContextSoloAwaitState = this.state.soloAwait;\n this.state.soloAwait = true;\n\n try {\n return callback();\n } finally {\n this.state.soloAwait = outerContextSoloAwaitState;\n }\n }\n\n allowInAnd<T>(callback: () => T): T {\n const flags = this.prodParam.currentFlags();\n const prodParamToSet = ParamKind.PARAM_IN & ~flags;\n if (prodParamToSet) {\n this.prodParam.enter(flags | ParamKind.PARAM_IN);\n try {\n return callback();\n } finally {\n this.prodParam.exit();\n }\n }\n return callback();\n }\n\n disallowInAnd<T>(callback: () => T): T {\n const flags = this.prodParam.currentFlags();\n const prodParamToClear = ParamKind.PARAM_IN & flags;\n if (prodParamToClear) {\n this.prodParam.enter(flags & ~ParamKind.PARAM_IN);\n try {\n return callback();\n } finally {\n this.prodParam.exit();\n }\n }\n return callback();\n }\n\n // Register the use of a topic reference within the current\n // topic-binding context.\n registerTopicReference(): void {\n this.state.topicContext.maxTopicIndex = 0;\n }\n\n topicReferenceIsAllowedInCurrentContext(): boolean {\n return this.state.topicContext.maxNumOfResolvableTopics >= 1;\n }\n\n topicReferenceWasUsedInCurrentContext(): boolean {\n return (\n this.state.topicContext.maxTopicIndex != null &&\n this.state.topicContext.maxTopicIndex >= 0\n );\n }\n\n parseFSharpPipelineBody(this: Parser, prec: number): N.Expression {\n const startLoc = this.state.startLoc;\n\n this.state.potentialArrowAt = this.state.start;\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = true;\n\n const ret = this.parseExprOp(\n this.parseMaybeUnaryOrPrivate(),\n startLoc,\n prec,\n );\n\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n return ret;\n }\n\n // https://github.com/tc39/proposal-js-module-blocks\n parseModuleExpression(this: Parser): N.ModuleExpression {\n this.expectPlugin(\"moduleBlocks\");\n const node = this.startNode<N.ModuleExpression>();\n this.next(); // eat \"module\"\n if (!this.match(tt.braceL)) {\n this.unexpected(null, tt.braceL);\n }\n // start program node immediately after `{`\n const program = this.startNodeAt<N.Program>(this.state.endLoc);\n this.next(); // eat `{`\n\n const revertScopes = this.initializeScopes(/** inModule */ true);\n this.enterInitialScopes();\n\n try {\n node.body = this.parseProgram(program, tt.braceR, \"module\");\n } finally {\n revertScopes();\n }\n return this.finishNode<N.ModuleExpression>(node, \"ModuleExpression\");\n }\n\n parseVoidPattern(\n this: Parser,\n refExpressionErrors: ExpressionErrors | null,\n ): N.VoidPattern {\n this.expectPlugin(\"discardBinding\");\n const node = this.startNode<N.VoidPattern>();\n if (refExpressionErrors != null) {\n refExpressionErrors.voidPatternLoc = this.state.startLoc;\n }\n this.next();\n return this.finishNode(node, \"VoidPattern\");\n }\n\n parseMaybeAssignAllowInOrVoidPattern(\n this: Parser,\n close: TokenType,\n refExpressionErrors: ExpressionErrors | null | undefined,\n afterLeftParse?: Function,\n ) {\n if (refExpressionErrors != null && this.match(tt._void)) {\n const nextCode = this.lookaheadCharCode();\n if (\n nextCode === charCodes.comma ||\n nextCode ===\n (close === tt.bracketR\n ? charCodes.rightSquareBracket\n : close === tt.braceR\n ? charCodes.rightCurlyBrace\n : charCodes.rightParenthesis) ||\n nextCode === charCodes.equalsTo\n ) {\n // `void = Initializer` is not allowed, here we parse the production as an assignment pattern\n // so that we can recover from this error\n return this.parseMaybeDefault(\n this.state.startLoc,\n this.parseVoidPattern(refExpressionErrors),\n );\n }\n }\n return this.parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse);\n }\n\n // Used in Flow plugin\n parsePropertyNamePrefixOperator(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n prop: Undone<N.ObjectOrClassMember | N.ClassMember>,\n ): void {}\n}\n","import type * as N from \"../types.ts\";\nimport {\n tokenIsIdentifier,\n tokenIsKeywordOrIdentifier,\n tokenIsLoop,\n tokenIsTemplate,\n tt,\n type TokenType,\n getExportedToken,\n} from \"../tokenizer/types.ts\";\nimport ExpressionParser from \"./expression.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport { isIdentifierChar, isIdentifierStart } from \"../util/identifier.ts\";\nimport * as charCodes from \"charcodes\";\nimport {\n ScopeFlag,\n ClassElementType,\n BindingFlag,\n} from \"../util/scopeflags.ts\";\nimport { ExpressionErrors } from \"./util.ts\";\nimport { ParamKind, functionFlags } from \"../util/production-parameter.ts\";\nimport {\n newExpressionScope,\n newParameterDeclarationScope,\n} from \"../util/expression-scope.ts\";\nimport { OptionFlags, type SourceType } from \"../options.ts\";\nimport { Token } from \"../tokenizer/index.ts\";\nimport type { Position } from \"../util/location.ts\";\nimport { createPositionWithColumnOffset } from \"../util/location.ts\";\nimport type { Undone } from \"./node.ts\";\nimport type Parser from \"./index.ts\";\nimport { ParseBindingListFlags } from \"./lval.ts\";\nimport { LoopLabelKind } from \"../tokenizer/state.ts\";\n\nconst loopLabel = { kind: LoopLabelKind.Loop } as const,\n switchLabel = { kind: LoopLabelKind.Switch } as const;\n\nexport const enum ParseFunctionFlag {\n Expression = 0b0000,\n Declaration = 0b0001,\n HangingDeclaration = 0b0010,\n NullableId = 0b0100,\n Async = 0b1000,\n}\n\nexport const enum ParseStatementFlag {\n StatementOnly = 0b0000,\n AllowImportExport = 0b0001,\n AllowDeclaration = 0b0010,\n AllowFunctionDeclaration = 0b0100,\n AllowLabeledFunction = 0b1000,\n}\n\nconst loneSurrogate = /[\\uD800-\\uDFFF]/u;\n\nconst keywordRelationalOperator = /in(?:stanceof)?/y;\n\n/**\n * Convert tokens for backward Babel 7 compat.\n * tt.privateName => tt.hash + tt.name\n * tt.templateTail => tt.backquote/tt.braceR + tt.template + tt.backquote\n * tt.templateNonTail => tt.backquote/tt.braceR + tt.template + tt.dollarBraceL\n * For performance reasons this routine mutates `tokens`, it is okay\n * here since we execute `parseTopLevel` once for every file.\n */\nfunction babel7CompatTokens(\n tokens: (Token | N.Comment)[],\n input: string,\n startIndex: number,\n) {\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n const { type } = token;\n if (typeof type === \"number\") {\n if (!process.env.BABEL_8_BREAKING) {\n if (type === tt.privateName) {\n const { loc, start, value, end } = token;\n const hashEndPos = start + 1;\n const hashEndLoc = createPositionWithColumnOffset(loc.start, 1);\n tokens.splice(\n i,\n 1,\n new Token({\n // @ts-expect-error: hacky way to create token\n type: getExportedToken(tt.hash),\n value: \"#\",\n start: start,\n end: hashEndPos,\n startLoc: loc.start,\n endLoc: hashEndLoc,\n }),\n new Token({\n // @ts-expect-error: hacky way to create token\n type: getExportedToken(tt.name),\n value: value,\n start: hashEndPos,\n end: end,\n startLoc: hashEndLoc,\n endLoc: loc.end,\n }),\n );\n i++;\n continue;\n }\n\n if (tokenIsTemplate(type)) {\n const { loc, start, value, end } = token;\n const backquoteEnd = start + 1;\n const backquoteEndLoc = createPositionWithColumnOffset(loc.start, 1);\n let startToken;\n if (input.charCodeAt(start - startIndex) === charCodes.graveAccent) {\n startToken = new Token({\n // @ts-expect-error: hacky way to create token\n type: getExportedToken(tt.backQuote),\n value: \"`\",\n start: start,\n end: backquoteEnd,\n startLoc: loc.start,\n endLoc: backquoteEndLoc,\n });\n } else {\n startToken = new Token({\n // @ts-expect-error: hacky way to create token\n type: getExportedToken(tt.braceR),\n value: \"}\",\n start: start,\n end: backquoteEnd,\n startLoc: loc.start,\n endLoc: backquoteEndLoc,\n });\n }\n let templateValue,\n templateElementEnd,\n templateElementEndLoc,\n endToken;\n if (type === tt.templateTail) {\n // ends with '`'\n templateElementEnd = end - 1;\n templateElementEndLoc = createPositionWithColumnOffset(loc.end, -1);\n templateValue = value === null ? null : value.slice(1, -1);\n endToken = new Token({\n // @ts-expect-error: hacky way to create token\n type: getExportedToken(tt.backQuote),\n value: \"`\",\n start: templateElementEnd,\n end: end,\n startLoc: templateElementEndLoc,\n endLoc: loc.end,\n });\n } else {\n // ends with `${`\n templateElementEnd = end - 2;\n templateElementEndLoc = createPositionWithColumnOffset(loc.end, -2);\n templateValue = value === null ? null : value.slice(1, -2);\n endToken = new Token({\n // @ts-expect-error: hacky way to create token\n type: getExportedToken(tt.dollarBraceL),\n value: \"${\",\n start: templateElementEnd,\n end: end,\n startLoc: templateElementEndLoc,\n endLoc: loc.end,\n });\n }\n tokens.splice(\n i,\n 1,\n startToken,\n new Token({\n // @ts-expect-error: hacky way to create token\n type: getExportedToken(tt.template),\n value: templateValue,\n start: backquoteEnd,\n end: templateElementEnd,\n startLoc: backquoteEndLoc,\n endLoc: templateElementEndLoc,\n }),\n endToken,\n );\n i += 2;\n continue;\n }\n }\n // @ts-expect-error: we manipulate `token` for performance reasons\n token.type = getExportedToken(type);\n }\n }\n return tokens;\n}\nexport default abstract class StatementParser extends ExpressionParser {\n // ### Statement parsing\n\n // Parse a program. Initializes the parser, reads any number of\n // statements, and wraps them in a Program node. Optionally takes a\n // `program` argument. If present, the statements will be appended\n // to its body instead of creating a new node.\n\n parseTopLevel(\n this: Parser,\n file: Undone<N.File>,\n program: Undone<N.Program>,\n ): N.File {\n file.program = this.parseProgram(\n program,\n tt.eof,\n this.options.sourceType === \"module\" ? \"module\" : \"script\",\n );\n file.comments = this.comments;\n\n if (this.optionFlags & OptionFlags.Tokens) {\n file.tokens = babel7CompatTokens(\n this.tokens,\n this.input,\n this.startIndex,\n );\n }\n\n return this.finishNode(file, \"File\");\n }\n\n parseProgram(\n this: Parser,\n program: Undone<N.Program>,\n end: TokenType,\n sourceType: SourceType,\n ): N.Program {\n program.sourceType = sourceType;\n program.interpreter = this.parseInterpreterDirective();\n this.parseBlockBody(program, true, true, end);\n if (this.inModule) {\n if (\n !(this.optionFlags & OptionFlags.AllowUndeclaredExports) &&\n this.scope.undefinedExports.size > 0\n ) {\n for (const [localName, at] of Array.from(this.scope.undefinedExports)) {\n this.raise(Errors.ModuleExportUndefined, at, { localName });\n }\n }\n this.addExtra(program, \"topLevelAwait\", this.state.hasTopLevelAwait);\n }\n let finishedProgram: N.Program;\n if (end === tt.eof) {\n // finish at eof for top level program\n finishedProgram = this.finishNode(program, \"Program\");\n } else {\n // finish immediately before the end token\n finishedProgram = this.finishNodeAt(\n program,\n \"Program\",\n createPositionWithColumnOffset(this.state.startLoc, -1),\n );\n }\n return finishedProgram;\n }\n\n /**\n * cast a Statement to a Directive. This method mutates input statement.\n */\n stmtToDirective(stmt: N.ExpressionStatement): N.Directive {\n const directive = this.castNodeTo(stmt, \"Directive\");\n\n const directiveLiteral = this.castNodeTo(\n stmt.expression,\n \"DirectiveLiteral\",\n );\n const expressionValue = directiveLiteral.value;\n const raw = this.input.slice(\n this.offsetToSourcePos(directiveLiteral.start),\n this.offsetToSourcePos(directiveLiteral.end),\n );\n const val = (directiveLiteral.value = raw.slice(1, -1)); // remove quotes\n\n this.addExtra(directiveLiteral, \"raw\", raw);\n this.addExtra(directiveLiteral, \"rawValue\", val);\n this.addExtra(directiveLiteral, \"expressionValue\", expressionValue);\n\n directive.value = directiveLiteral;\n // @ts-expect-error delete non-optional properties\n delete stmt.expression;\n\n return directive;\n }\n\n parseInterpreterDirective(): N.InterpreterDirective | null {\n if (!this.match(tt.interpreterDirective)) {\n return null;\n }\n\n const node = this.startNode<N.InterpreterDirective>();\n node.value = this.state.value;\n this.next();\n return this.finishNode(node, \"InterpreterDirective\");\n }\n\n isLet(): boolean {\n if (!this.isContextual(tt._let)) {\n return false;\n }\n return this.hasFollowingBindingAtom();\n }\n\n isUsing(): boolean {\n if (!this.isContextual(tt._using)) {\n return false;\n }\n return this.nextTokenIsIdentifierOnSameLine();\n }\n\n isForUsing(): boolean {\n if (!this.isContextual(tt._using)) {\n return false;\n }\n const next = this.nextTokenInLineStart();\n const nextCh = this.codePointAtPos(next);\n if (this.isUnparsedContextual(next, \"of\")) {\n const nextCharAfterOf = this.lookaheadCharCodeSince(next + 2);\n // `for( using of` must start either a for-lhs-of statement\n // or a for lexical declaration\n if (\n nextCharAfterOf !== charCodes.equalsTo &&\n nextCharAfterOf !== charCodes.colon &&\n // recover from `for(using of;...);`\n nextCharAfterOf !== charCodes.semicolon\n ) {\n return false;\n }\n }\n if (\n this.chStartsBindingIdentifier(nextCh, next) ||\n this.isUnparsedContextual(next, \"void\")\n ) {\n return true;\n }\n return false;\n }\n\n nextTokenIsIdentifierOnSameLine(): boolean {\n const next = this.nextTokenInLineStart();\n const nextCh = this.codePointAtPos(next);\n return this.chStartsBindingIdentifier(nextCh, next);\n }\n\n isAwaitUsing(): boolean {\n if (!this.isContextual(tt._await)) {\n return false;\n }\n let next = this.nextTokenInLineStart();\n if (this.isUnparsedContextual(next, \"using\")) {\n next = this.nextTokenInLineStartSince(next + 5);\n const nextCh = this.codePointAtPos(next);\n if (this.chStartsBindingIdentifier(nextCh, next)) {\n return true;\n }\n }\n return false;\n }\n\n chStartsBindingIdentifier(ch: number, pos: number) {\n if (isIdentifierStart(ch)) {\n keywordRelationalOperator.lastIndex = pos;\n if (keywordRelationalOperator.test(this.input)) {\n // We have seen `in` or `instanceof` so far, now check if the identifier\n // ends here\n const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex);\n if (!isIdentifierChar(endCh) && endCh !== charCodes.backslash) {\n return false;\n }\n }\n return true;\n } else if (ch === charCodes.backslash) {\n return true;\n } else {\n return false;\n }\n }\n\n chStartsBindingPattern(ch: number) {\n return (\n ch === charCodes.leftSquareBracket || ch === charCodes.leftCurlyBrace\n );\n }\n\n /**\n * Assuming we have seen a contextual `let` and declaration is allowed, check if it\n * starts a variable declaration so that it should be interpreted as a keyword.\n */\n hasFollowingBindingAtom(): boolean {\n const next = this.nextTokenStart();\n const nextCh = this.codePointAtPos(next);\n return (\n this.chStartsBindingPattern(nextCh) ||\n this.chStartsBindingIdentifier(nextCh, next)\n );\n }\n\n /**\n * Assuming we have seen a contextual `using` and declaration is allowed, check if it\n * starts a variable declaration in the same line so that it should be interpreted as\n * a keyword.\n */\n hasInLineFollowingBindingIdentifierOrBrace(): boolean {\n const next = this.nextTokenInLineStart();\n const nextCh = this.codePointAtPos(next);\n return (\n nextCh === charCodes.leftCurlyBrace ||\n this.chStartsBindingIdentifier(nextCh, next)\n );\n }\n\n allowsUsing(): boolean {\n return (\n (this.scope.inModule || !this.scope.inTopLevel) &&\n !this.scope.inBareCaseStatement\n );\n }\n\n // https://tc39.es/ecma262/#prod-ModuleItem\n parseModuleItem(this: Parser) {\n return this.parseStatementLike(\n ParseStatementFlag.AllowImportExport |\n ParseStatementFlag.AllowDeclaration |\n ParseStatementFlag.AllowFunctionDeclaration |\n // This function is actually also used to parse StatementItems,\n // which with Annex B enabled allows labeled functions.\n ParseStatementFlag.AllowLabeledFunction,\n );\n }\n\n // https://tc39.es/ecma262/#prod-StatementListItem\n parseStatementListItem(this: Parser) {\n return this.parseStatementLike(\n ParseStatementFlag.AllowDeclaration |\n ParseStatementFlag.AllowFunctionDeclaration |\n (!this.options.annexB || this.state.strict\n ? 0\n : ParseStatementFlag.AllowLabeledFunction),\n );\n }\n\n parseStatementOrSloppyAnnexBFunctionDeclaration(\n this: Parser,\n allowLabeledFunction: boolean = false,\n ) {\n let flags: ParseStatementFlag = ParseStatementFlag.StatementOnly;\n if (this.options.annexB && !this.state.strict) {\n flags |= ParseStatementFlag.AllowFunctionDeclaration;\n if (allowLabeledFunction) {\n flags |= ParseStatementFlag.AllowLabeledFunction;\n }\n }\n return this.parseStatementLike(flags);\n }\n\n // Parse a single statement.\n //\n // If expecting a statement and finding a slash operator, parse a\n // regular expression literal. This is to handle cases like\n // `if (foo) /blah/.exec(foo)`, where looking at the previous token\n // does not help.\n // https://tc39.es/ecma262/#prod-Statement\n parseStatement(this: Parser) {\n return this.parseStatementLike(ParseStatementFlag.StatementOnly);\n }\n\n // ImportDeclaration and ExportDeclaration are also handled here so we can throw recoverable errors\n // when they are not at the top level\n parseStatementLike(\n this: Parser,\n flags: ParseStatementFlag,\n ):\n | N.Statement\n | N.Declaration\n | N.ImportDeclaration\n | N.ExportDefaultDeclaration\n | N.ExportNamedDeclaration\n | N.ExportAllDeclaration {\n let decorators: N.Decorator[] | null = null;\n\n if (this.match(tt.at)) {\n decorators = this.parseDecorators(true);\n }\n return this.parseStatementContent(flags, decorators);\n }\n\n parseStatementContent(\n this: Parser,\n flags: ParseStatementFlag,\n decorators?: N.Decorator[] | null,\n ): N.Statement {\n const startType = this.state.type;\n const node = this.startNode();\n const allowDeclaration = !!(flags & ParseStatementFlag.AllowDeclaration);\n const allowFunctionDeclaration = !!(\n flags & ParseStatementFlag.AllowFunctionDeclaration\n );\n const topLevel = flags & ParseStatementFlag.AllowImportExport;\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (startType) {\n case tt._break:\n return this.parseBreakContinueStatement(node, /* isBreak */ true);\n case tt._continue:\n return this.parseBreakContinueStatement(node, /* isBreak */ false);\n case tt._debugger:\n return this.parseDebuggerStatement(node as Undone<N.DebuggerStatement>);\n case tt._do:\n return this.parseDoWhileStatement(node as Undone<N.DoWhileStatement>);\n case tt._for:\n return this.parseForStatement(node as Undone<N.ForStatement>);\n case tt._function:\n if (this.lookaheadCharCode() === charCodes.dot) break;\n if (!allowFunctionDeclaration) {\n this.raise(\n this.state.strict\n ? Errors.StrictFunction\n : this.options.annexB\n ? Errors.SloppyFunctionAnnexB\n : Errors.SloppyFunction,\n this.state.startLoc,\n );\n }\n return this.parseFunctionStatement(\n node as Undone<N.FunctionDeclaration>,\n false,\n !allowDeclaration && allowFunctionDeclaration,\n );\n case tt._class:\n if (!allowDeclaration) this.unexpected();\n return this.parseClass(\n this.maybeTakeDecorators(\n decorators,\n node as Undone<N.ClassDeclaration>,\n ),\n true,\n );\n\n case tt._if:\n return this.parseIfStatement(node as Undone<N.IfStatement>);\n case tt._return:\n return this.parseReturnStatement(node as Undone<N.ReturnStatement>);\n case tt._switch:\n return this.parseSwitchStatement(node as Undone<N.SwitchStatement>);\n case tt._throw:\n return this.parseThrowStatement(node as Undone<N.ThrowStatement>);\n case tt._try:\n return this.parseTryStatement(node as Undone<N.TryStatement>);\n\n case tt._await:\n // [+Await] await [no LineTerminator here] using [no LineTerminator here] BindingList[+Using]\n if (this.isAwaitUsing()) {\n if (!this.allowsUsing()) {\n this.raise(Errors.UnexpectedUsingDeclaration, node);\n } else if (!allowDeclaration) {\n this.raise(Errors.UnexpectedLexicalDeclaration, node);\n } else if (!this.recordAwaitIfAllowed()) {\n this.raise(Errors.AwaitUsingNotInAsyncContext, node);\n }\n this.next(); // eat 'await'\n return this.parseVarStatement(\n node as Undone<N.VariableDeclaration>,\n \"await using\",\n );\n }\n break;\n case tt._using:\n // using [no LineTerminator here] BindingList[+Using]\n if (\n this.state.containsEsc ||\n !this.hasInLineFollowingBindingIdentifierOrBrace()\n ) {\n break;\n }\n if (!this.allowsUsing()) {\n this.raise(Errors.UnexpectedUsingDeclaration, this.state.startLoc);\n } else if (!allowDeclaration) {\n this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc);\n }\n return this.parseVarStatement(\n node as Undone<N.VariableDeclaration>,\n \"using\",\n );\n case tt._let: {\n if (this.state.containsEsc) {\n break;\n }\n // `let [` is an explicit negative lookahead for\n // ExpressionStatement, so special-case it first.\n const next = this.nextTokenStart();\n const nextCh = this.codePointAtPos(next);\n if (nextCh !== charCodes.leftSquareBracket) {\n if (!allowDeclaration && this.hasFollowingLineBreak()) break;\n if (\n !this.chStartsBindingIdentifier(nextCh, next) &&\n nextCh !== charCodes.leftCurlyBrace\n ) {\n break;\n }\n }\n }\n // fall through\n case tt._const: {\n if (!allowDeclaration) {\n this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc);\n }\n }\n // fall through\n case tt._var: {\n const kind = this.state.value;\n return this.parseVarStatement(\n node as Undone<N.VariableDeclaration>,\n kind,\n );\n }\n case tt._while:\n return this.parseWhileStatement(node as Undone<N.WhileStatement>);\n case tt._with:\n return this.parseWithStatement(node as Undone<N.WithStatement>);\n case tt.braceL:\n return this.parseBlock();\n case tt.semi:\n return this.parseEmptyStatement(node as Undone<N.EmptyStatement>);\n case tt._import: {\n const nextTokenCharCode = this.lookaheadCharCode();\n if (\n nextTokenCharCode === charCodes.leftParenthesis || // import()\n nextTokenCharCode === charCodes.dot // import.meta\n ) {\n break;\n }\n }\n // fall through\n case tt._export: {\n if (\n !(this.optionFlags & OptionFlags.AllowImportExportEverywhere) &&\n !topLevel\n ) {\n this.raise(Errors.UnexpectedImportExport, this.state.startLoc);\n }\n\n this.next(); // eat `import`/`export`\n\n let result;\n if (startType === tt._import) {\n result = this.parseImport(node as Undone<N.ImportDeclaration>);\n } else {\n result = this.parseExport(\n node as Undone<\n | N.ExportAllDeclaration\n | N.ExportDefaultDeclaration\n | N.ExportNamedDeclaration\n >,\n decorators,\n );\n }\n\n this.assertModuleNodeAllowed(result);\n\n return result;\n }\n\n default: {\n if (this.isAsyncFunction()) {\n if (!allowDeclaration) {\n this.raise(\n Errors.AsyncFunctionInSingleStatementContext,\n this.state.startLoc,\n );\n }\n this.next(); // eat 'async'\n return this.parseFunctionStatement(\n node as Undone<N.FunctionDeclaration>,\n true,\n !allowDeclaration && allowFunctionDeclaration,\n );\n }\n }\n }\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n const maybeName = this.state.value;\n const expr = this.parseExpression();\n\n if (\n tokenIsIdentifier(startType) &&\n expr.type === \"Identifier\" &&\n this.eat(tt.colon)\n ) {\n return this.parseLabeledStatement(\n node as Undone<N.LabeledStatement>,\n maybeName,\n expr,\n flags,\n );\n } else {\n return this.parseExpressionStatement(\n node as Undone<N.ExpressionStatement>,\n expr,\n decorators,\n );\n }\n }\n\n assertModuleNodeAllowed(node: N.Node): void {\n if (\n !(this.optionFlags & OptionFlags.AllowImportExportEverywhere) &&\n !this.inModule\n ) {\n this.raise(Errors.ImportOutsideModule, node);\n }\n }\n\n decoratorsEnabledBeforeExport(): boolean {\n if (this.hasPlugin(\"decorators-legacy\")) return true;\n return (\n this.hasPlugin(\"decorators\") &&\n this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\") !== false\n );\n }\n\n // Attach the decorators to the given class.\n // NOTE: This method changes the .start location of the class, and thus\n // can affect comment attachment. Calling it before or after finalizing\n // the class node (and thus finalizing its comments) changes how comments\n // before the `class` keyword or before the final .start location of the\n // class are attached.\n maybeTakeDecorators<T extends Undone<N.Class>>(\n maybeDecorators: N.Decorator[] | null | undefined,\n classNode: T,\n exportNode?: Undone<N.ExportDefaultDeclaration | N.ExportNamedDeclaration>,\n ): T {\n if (maybeDecorators) {\n if (classNode.decorators?.length) {\n // Note: decorators attachment is only attempred multiple times\n // when the class is part of an export declaration.\n if (\n typeof this.getPluginOption(\n \"decorators\",\n \"decoratorsBeforeExport\",\n ) !== \"boolean\"\n ) {\n // If `decoratorsBeforeExport` was set to `true` or `false`, we\n // already threw an error about decorators not being in a valid\n // position.\n this.raise(\n Errors.DecoratorsBeforeAfterExport,\n classNode.decorators[0],\n );\n }\n classNode.decorators.unshift(...maybeDecorators);\n } else {\n classNode.decorators = maybeDecorators;\n }\n this.resetStartLocationFromNode(classNode, maybeDecorators[0]);\n if (exportNode) this.resetStartLocationFromNode(exportNode, classNode);\n }\n return classNode;\n }\n\n canHaveLeadingDecorator(): boolean {\n return this.match(tt._class);\n }\n\n parseDecorators(this: Parser, allowExport?: boolean): N.Decorator[] {\n const decorators = [];\n do {\n decorators.push(this.parseDecorator());\n } while (this.match(tt.at));\n\n if (this.match(tt._export)) {\n if (!allowExport) {\n this.unexpected();\n }\n\n if (!this.decoratorsEnabledBeforeExport()) {\n this.raise(Errors.DecoratorExportClass, this.state.startLoc);\n }\n } else if (!this.canHaveLeadingDecorator()) {\n throw this.raise(Errors.UnexpectedLeadingDecorator, this.state.startLoc);\n }\n\n return decorators;\n }\n\n parseDecorator(this: Parser): N.Decorator {\n this.expectOnePlugin([\"decorators\", \"decorators-legacy\"]);\n\n const node = this.startNode<N.Decorator>();\n this.next();\n\n if (this.hasPlugin(\"decorators\")) {\n const startLoc = this.state.startLoc;\n let expr: N.Expression;\n\n if (this.match(tt.parenL)) {\n const startLoc = this.state.startLoc;\n this.next(); // eat '('\n expr = this.parseExpression();\n this.expect(tt.parenR);\n expr = this.wrapParenthesis(startLoc, expr);\n\n const paramsStartLoc = this.state.startLoc;\n node.expression = this.parseMaybeDecoratorArguments(expr, startLoc);\n if (\n this.getPluginOption(\"decorators\", \"allowCallParenthesized\") ===\n false &&\n node.expression !== expr\n ) {\n this.raise(\n Errors.DecoratorArgumentsOutsideParentheses,\n paramsStartLoc,\n );\n }\n } else {\n expr = this.parseIdentifier(false);\n\n while (this.eat(tt.dot)) {\n const node = this.startNodeAt<N.MemberExpression>(startLoc);\n node.object = expr;\n if (this.match(tt.privateName)) {\n this.classScope.usePrivateName(\n this.state.value,\n this.state.startLoc,\n );\n node.property = this.parsePrivateName();\n } else {\n node.property = this.parseIdentifier(true);\n }\n node.computed = false;\n expr = this.finishNode(node, \"MemberExpression\");\n }\n\n node.expression = this.parseMaybeDecoratorArguments(expr, startLoc);\n }\n } else {\n node.expression = this.parseExprSubscripts();\n }\n return this.finishNode(node, \"Decorator\");\n }\n\n parseMaybeDecoratorArguments(\n this: Parser,\n expr: N.Expression,\n startLoc: Position,\n ): N.Expression {\n if (this.eat(tt.parenL)) {\n const node = this.startNodeAt<N.CallExpression>(startLoc);\n node.callee = expr;\n node.arguments = this.parseCallExpressionArguments();\n this.toReferencedList(node.arguments);\n return this.finishNode(node, \"CallExpression\");\n }\n\n return expr;\n }\n\n parseBreakContinueStatement(\n node: Undone<N.Node>,\n isBreak: true,\n ): N.BreakStatement;\n parseBreakContinueStatement(\n node: Undone<N.Node>,\n isBreak: false,\n ): N.ContinueStatement;\n parseBreakContinueStatement(\n node: Undone<N.BreakStatement | N.ContinueStatement>,\n isBreak: boolean,\n ): N.BreakStatement | N.ContinueStatement {\n this.next();\n\n if (this.isLineTerminator()) {\n node.label = null;\n } else {\n node.label = this.parseIdentifier();\n this.semicolon();\n }\n\n this.verifyBreakContinue(node, isBreak);\n\n return this.finishNode(\n node,\n isBreak ? \"BreakStatement\" : \"ContinueStatement\",\n );\n }\n\n verifyBreakContinue(\n node: Undone<N.BreakStatement | N.ContinueStatement>,\n isBreak: boolean,\n ) {\n let i;\n for (i = 0; i < this.state.labels.length; ++i) {\n const lab = this.state.labels[i];\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === LoopLabelKind.Loop)) {\n break;\n }\n if (node.label && isBreak) break;\n }\n }\n if (i === this.state.labels.length) {\n const type = isBreak ? \"BreakStatement\" : \"ContinueStatement\";\n this.raise(Errors.IllegalBreakContinue, node, { type });\n }\n }\n\n parseDebuggerStatement(\n node: Undone<N.DebuggerStatement>,\n ): N.DebuggerStatement {\n this.next();\n this.semicolon();\n return this.finishNode(node, \"DebuggerStatement\");\n }\n\n parseHeaderExpression(this: Parser): N.Expression {\n this.expect(tt.parenL);\n const val = this.parseExpression();\n this.expect(tt.parenR);\n return val;\n }\n\n // https://tc39.es/ecma262/#prod-DoWhileStatement\n parseDoWhileStatement(\n this: Parser,\n node: Undone<N.DoWhileStatement>,\n ): N.DoWhileStatement {\n this.next();\n this.state.labels.push(loopLabel);\n\n // Parse the loop body's body.\n node.body =\n // For the smartPipelines plugin: Disable topic references from outer\n // contexts within the loop body. They are permitted in test expressions,\n // outside of the loop body.\n this.withSmartMixTopicForbiddingContext(() =>\n // Parse the loop body's body.\n this.parseStatement(),\n );\n\n this.state.labels.pop();\n\n this.expect(tt._while);\n node.test = this.parseHeaderExpression();\n this.eat(tt.semi);\n return this.finishNode(node, \"DoWhileStatement\");\n }\n\n // Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n // loop is non-trivial. Basically, we have to parse the init `var`\n // statement or expression, disallowing the `in` operator (see\n // the second parameter to `parseExpression`), and then check\n // whether the next token is `in` or `of`. When there is no init\n // part (semicolon immediately after the opening parenthesis), it\n // is a regular `for` loop.\n\n parseForStatement(\n this: Parser,\n node: Undone<N.ForStatement | N.ForInOf>,\n ): N.ForLike {\n this.next();\n this.state.labels.push(loopLabel);\n\n let awaitAt = null;\n\n if (this.isContextual(tt._await) && this.recordAwaitIfAllowed()) {\n awaitAt = this.state.startLoc;\n this.next();\n }\n this.scope.enter(ScopeFlag.OTHER);\n this.expect(tt.parenL);\n\n if (this.match(tt.semi)) {\n if (awaitAt !== null) {\n this.unexpected(awaitAt);\n }\n return this.parseFor(node as Undone<N.ForStatement>, null);\n }\n\n const startsWithLet = this.isContextual(tt._let);\n {\n const startsWithAwaitUsing = this.isAwaitUsing();\n const starsWithUsingDeclaration =\n startsWithAwaitUsing || this.isForUsing();\n const isLetOrUsing =\n (startsWithLet && this.hasFollowingBindingAtom()) ||\n starsWithUsingDeclaration;\n\n if (this.match(tt._var) || this.match(tt._const) || isLetOrUsing) {\n const initNode = this.startNode<N.VariableDeclaration>();\n let kind;\n if (startsWithAwaitUsing) {\n kind = \"await using\";\n if (!this.recordAwaitIfAllowed()) {\n this.raise(Errors.AwaitUsingNotInAsyncContext, this.state.startLoc);\n }\n this.next(); // eat 'await'\n } else {\n kind = this.state.value;\n }\n this.next();\n this.parseVar(initNode, true, kind);\n const init = this.finishNode(initNode, \"VariableDeclaration\");\n\n const isForIn = this.match(tt._in);\n if (isForIn && starsWithUsingDeclaration) {\n this.raise(Errors.ForInUsing, init);\n }\n if (\n (isForIn || this.isContextual(tt._of)) &&\n init.declarations.length === 1\n ) {\n return this.parseForIn(node as Undone<N.ForInOf>, init, awaitAt);\n }\n if (awaitAt !== null) {\n this.unexpected(awaitAt);\n }\n return this.parseFor(node as Undone<N.ForStatement>, init);\n }\n }\n\n // Check whether the first token is possibly a contextual keyword, so that\n // we can forbid `for (async of` if this turns out to be a for-of loop.\n const startsWithAsync = this.isContextual(tt._async);\n\n const refExpressionErrors = new ExpressionErrors();\n const init = this.parseExpression(true, refExpressionErrors);\n const isForOf = this.isContextual(tt._of);\n if (isForOf) {\n // Check for leading tokens that are forbidden in for-of loops:\n if (startsWithLet) {\n this.raise(Errors.ForOfLet, init);\n }\n\n if (\n // `for await (async of []);` is allowed.\n awaitAt === null &&\n startsWithAsync &&\n init.type === \"Identifier\"\n ) {\n // This catches the case where the `async` in `for (async of` was\n // parsed as an identifier. If it was parsed as the start of an async\n // arrow function (e.g. `for (async of => {} of []);`), the LVal check\n // further down will raise a more appropriate error.\n this.raise(Errors.ForOfAsync, init);\n }\n }\n if (isForOf || this.match(tt._in)) {\n this.checkDestructuringPrivate(refExpressionErrors);\n this.toAssignable(init, /* isLHS */ true);\n const type = isForOf ? \"ForOfStatement\" : \"ForInStatement\";\n this.checkLVal(init, { type });\n return this.parseForIn(\n node as Undone<N.ForInStatement | N.ForOfStatement>,\n // @ts-expect-error init has been transformed to an assignable\n init,\n awaitAt,\n );\n } else {\n this.checkExpressionErrors(refExpressionErrors, true);\n }\n if (awaitAt !== null) {\n this.unexpected(awaitAt);\n }\n return this.parseFor(node as Undone<N.ForStatement>, init);\n }\n\n // https://tc39.es/ecma262/#prod-HoistableDeclaration\n parseFunctionStatement(\n this: Parser,\n node: Undone<N.FunctionDeclaration>,\n isAsync: boolean,\n isHangingDeclaration: boolean,\n ): N.FunctionDeclaration {\n this.next(); // eat 'function'\n return this.parseFunction(\n node,\n ParseFunctionFlag.Declaration |\n (isHangingDeclaration ? ParseFunctionFlag.HangingDeclaration : 0) |\n (isAsync ? ParseFunctionFlag.Async : 0),\n );\n }\n\n // https://tc39.es/ecma262/#prod-IfStatement\n parseIfStatement(this: Parser, node: Undone<N.IfStatement>) {\n this.next();\n node.test = this.parseHeaderExpression();\n // Annex B.3.3\n // https://tc39.es/ecma262/#sec-functiondeclarations-in-ifstatement-statement-clauses\n node.consequent = this.parseStatementOrSloppyAnnexBFunctionDeclaration();\n node.alternate = this.eat(tt._else)\n ? this.parseStatementOrSloppyAnnexBFunctionDeclaration()\n : null;\n return this.finishNode(node, \"IfStatement\");\n }\n\n parseReturnStatement(this: Parser, node: Undone<N.ReturnStatement>) {\n if (!this.prodParam.hasReturn) {\n this.raise(Errors.IllegalReturn, this.state.startLoc);\n }\n\n this.next();\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (this.isLineTerminator()) {\n node.argument = null;\n } else {\n node.argument = this.parseExpression();\n this.semicolon();\n }\n\n return this.finishNode(node, \"ReturnStatement\");\n }\n\n // https://tc39.es/ecma262/#prod-SwitchStatement\n parseSwitchStatement(this: Parser, node: Undone<N.SwitchStatement>) {\n this.next();\n node.discriminant = this.parseHeaderExpression();\n const cases: N.SwitchStatement[\"cases\"] = (node.cases = []);\n this.expect(tt.braceL);\n this.state.labels.push(switchLabel);\n this.scope.enter(ScopeFlag.SWITCH);\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n let cur;\n for (let sawDefault; !this.match(tt.braceR); ) {\n if (this.match(tt._case) || this.match(tt._default)) {\n const isCase = this.match(tt._case);\n if (cur) this.finishNode(cur, \"SwitchCase\");\n // @ts-expect-error Fixme\n cases.push((cur = this.startNode<N.SwitchCase>()));\n cur.consequent = [];\n this.next();\n if (isCase) {\n cur.test = this.parseExpression();\n } else {\n if (sawDefault) {\n this.raise(\n Errors.MultipleDefaultsInSwitch,\n this.state.lastTokStartLoc!,\n );\n }\n sawDefault = true;\n cur.test = null;\n }\n this.expect(tt.colon);\n } else {\n if (cur) {\n cur.consequent.push(this.parseStatementListItem());\n } else {\n this.unexpected();\n }\n }\n }\n this.scope.exit();\n if (cur) this.finishNode(cur, \"SwitchCase\");\n this.next(); // Closing brace\n this.state.labels.pop();\n return this.finishNode(node, \"SwitchStatement\");\n }\n\n parseThrowStatement(this: Parser, node: Undone<N.ThrowStatement>) {\n this.next();\n if (this.hasPrecedingLineBreak()) {\n this.raise(Errors.NewlineAfterThrow, this.state.lastTokEndLoc!);\n }\n node.argument = this.parseExpression();\n this.semicolon();\n return this.finishNode(node, \"ThrowStatement\");\n }\n\n parseCatchClauseParam(this: Parser): N.Pattern {\n const param = this.parseBindingAtom();\n\n this.scope.enter(\n this.options.annexB && param.type === \"Identifier\"\n ? ScopeFlag.SIMPLE_CATCH\n : ScopeFlag.OTHER,\n );\n this.checkLVal(\n param,\n { type: \"CatchClause\" },\n BindingFlag.TYPE_CATCH_PARAM,\n );\n\n return param;\n }\n\n parseTryStatement(\n this: Parser,\n node: Undone<N.TryStatement>,\n ): N.TryStatement {\n this.next();\n\n node.block = this.parseBlock();\n node.handler = null;\n\n if (this.match(tt._catch)) {\n const clause = this.startNode<N.CatchClause>();\n this.next();\n if (this.match(tt.parenL)) {\n this.expect(tt.parenL);\n clause.param = this.parseCatchClauseParam();\n this.expect(tt.parenR);\n } else {\n clause.param = null;\n this.scope.enter(ScopeFlag.OTHER);\n }\n\n // Parse the catch clause's body.\n clause.body =\n // For the smartPipelines plugin: Disable topic references from outer\n // contexts within the catch clause's body.\n this.withSmartMixTopicForbiddingContext(() =>\n // Parse the catch clause's body.\n this.parseBlock(false, false),\n );\n\n this.scope.exit();\n node.handler = this.finishNode(clause, \"CatchClause\");\n }\n\n node.finalizer = this.eat(tt._finally) ? this.parseBlock() : null;\n\n if (!node.handler && !node.finalizer) {\n this.raise(Errors.NoCatchOrFinally, node);\n }\n\n return this.finishNode(node, \"TryStatement\");\n }\n\n // https://tc39.es/ecma262/#prod-VariableStatement\n // https://tc39.es/ecma262/#prod-LexicalDeclaration\n parseVarStatement(\n this: Parser,\n node: Undone<N.VariableDeclaration>,\n kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n allowMissingInitializer: boolean = false,\n ): N.VariableDeclaration {\n this.next();\n this.parseVar(node, false, kind, allowMissingInitializer);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\");\n }\n\n // https://tc39.es/ecma262/#prod-WhileStatement\n parseWhileStatement(\n this: Parser,\n node: Undone<N.WhileStatement>,\n ): N.WhileStatement {\n this.next();\n node.test = this.parseHeaderExpression();\n this.state.labels.push(loopLabel);\n\n // Parse the loop body.\n node.body =\n // For the smartPipelines plugin:\n // Disable topic references from outer contexts within the loop body.\n // They are permitted in test expressions, outside of the loop body.\n this.withSmartMixTopicForbiddingContext(() =>\n // Parse loop body.\n this.parseStatement(),\n );\n\n this.state.labels.pop();\n\n return this.finishNode(node, \"WhileStatement\");\n }\n\n parseWithStatement(\n this: Parser,\n node: Undone<N.WithStatement>,\n ): N.WithStatement {\n if (this.state.strict) {\n this.raise(Errors.StrictWith, this.state.startLoc);\n }\n this.next();\n node.object = this.parseHeaderExpression();\n\n // Parse the statement body.\n node.body =\n // For the smartPipelines plugin:\n // Disable topic references from outer contexts within the with statement's body.\n // They are permitted in function default-parameter expressions, which are\n // part of the outer context, outside of the with statement's body.\n this.withSmartMixTopicForbiddingContext(() =>\n // Parse the statement body.\n this.parseStatement(),\n );\n\n return this.finishNode(node, \"WithStatement\");\n }\n\n parseEmptyStatement(node: Undone<N.EmptyStatement>): N.EmptyStatement {\n this.next();\n return this.finishNode(node, \"EmptyStatement\");\n }\n\n // https://tc39.es/ecma262/#prod-LabelledStatement\n parseLabeledStatement(\n this: Parser,\n node: Undone<N.LabeledStatement>,\n maybeName: string,\n expr: N.Identifier,\n flags: ParseStatementFlag,\n ): N.LabeledStatement {\n for (const label of this.state.labels) {\n if (label.name === maybeName) {\n this.raise(Errors.LabelRedeclaration, expr, {\n labelName: maybeName,\n });\n }\n }\n\n const kind = tokenIsLoop(this.state.type)\n ? LoopLabelKind.Loop\n : this.match(tt._switch)\n ? LoopLabelKind.Switch\n : null;\n for (let i = this.state.labels.length - 1; i >= 0; i--) {\n const label = this.state.labels[i];\n if (label.statementStart === node.start) {\n label.statementStart = this.sourceToOffsetPos(this.state.start);\n label.kind = kind;\n } else {\n break;\n }\n }\n\n this.state.labels.push({\n name: maybeName,\n kind: kind,\n statementStart: this.sourceToOffsetPos(this.state.start),\n });\n // https://tc39.es/ecma262/#prod-LabelledItem\n node.body =\n flags & ParseStatementFlag.AllowLabeledFunction\n ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true)\n : this.parseStatement();\n\n this.state.labels.pop();\n node.label = expr;\n return this.finishNode(node, \"LabeledStatement\");\n }\n\n parseExpressionStatement(\n node: Undone<N.ExpressionStatement>,\n expr: N.Expression,\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars -- used in TypeScript parser */\n decorators: N.Decorator[] | null | undefined,\n ) {\n node.expression = expr;\n this.semicolon();\n return this.finishNode(node, \"ExpressionStatement\");\n }\n\n // Parse a semicolon-enclosed block of statements, handling `\"use\n // strict\"` declarations when `allowDirectives` is true (used for\n // function bodies).\n\n parseBlock(\n this: Parser,\n allowDirectives: boolean = false,\n createNewLexicalScope: boolean = true,\n afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n ): N.BlockStatement {\n const node = this.startNode<N.BlockStatement>();\n if (allowDirectives) {\n this.state.strictErrors.clear();\n }\n this.expect(tt.braceL);\n if (createNewLexicalScope) {\n this.scope.enter(ScopeFlag.OTHER);\n }\n this.parseBlockBody(\n node,\n allowDirectives,\n false,\n tt.braceR,\n afterBlockParse,\n );\n if (createNewLexicalScope) {\n this.scope.exit();\n }\n return this.finishNode(node, \"BlockStatement\");\n }\n\n isValidDirective(stmt: N.Statement): stmt is N.ExpressionStatement {\n return (\n stmt.type === \"ExpressionStatement\" &&\n stmt.expression.type === \"StringLiteral\" &&\n !stmt.expression.extra!.parenthesized\n );\n }\n\n parseBlockBody(\n this: Parser,\n node: Undone<N.BlockStatementLike>,\n allowDirectives: boolean | undefined | null,\n topLevel: boolean,\n end: TokenType,\n afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n ): void {\n const body: N.BlockStatementLike[\"body\"] = (node.body = []);\n const directives: N.BlockStatementLike[\"directives\"] = (node.directives =\n []);\n this.parseBlockOrModuleBlockBody(\n body,\n allowDirectives ? directives : undefined,\n topLevel,\n end,\n afterBlockParse,\n );\n }\n\n // Undefined directives means that directives are not allowed.\n // https://tc39.es/ecma262/#prod-Block\n // https://tc39.es/ecma262/#prod-ModuleBody\n parseBlockOrModuleBlockBody(\n this: Parser,\n body: N.Statement[],\n directives: N.Directive[] | undefined | null,\n topLevel: boolean,\n end: TokenType,\n afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n ): void {\n const oldStrict = this.state.strict;\n let hasStrictModeDirective = false;\n let parsedNonDirective = false;\n\n while (!this.match(end)) {\n const stmt = topLevel\n ? this.parseModuleItem()\n : this.parseStatementListItem();\n\n if (directives && !parsedNonDirective) {\n if (this.isValidDirective(stmt)) {\n const directive = this.stmtToDirective(stmt);\n directives.push(directive);\n\n if (\n !hasStrictModeDirective &&\n directive.value.value === \"use strict\"\n ) {\n hasStrictModeDirective = true;\n this.setStrict(true);\n }\n\n continue;\n }\n parsedNonDirective = true;\n // clear strict errors since the strict mode will not change within the block\n this.state.strictErrors.clear();\n }\n body.push(stmt);\n }\n\n afterBlockParse?.call(this, hasStrictModeDirective);\n\n if (!oldStrict) {\n this.setStrict(false);\n }\n\n this.next();\n }\n\n // Parse a regular `for` loop. The disambiguation code in\n // `parseStatement` will already have parsed the init statement or\n // expression.\n\n parseFor(\n this: Parser,\n node: Undone<N.ForStatement>,\n init?: N.VariableDeclaration | N.Expression | null,\n ): N.ForStatement {\n node.init = init;\n this.semicolon(/* allowAsi */ false);\n node.test = this.match(tt.semi) ? null : this.parseExpression();\n this.semicolon(/* allowAsi */ false);\n node.update = this.match(tt.parenR) ? null : this.parseExpression();\n this.expect(tt.parenR);\n\n // Parse the loop body.\n node.body =\n // For the smartPipelines plugin: Disable topic references from outer\n // contexts within the loop body. They are permitted in test expressions,\n // outside of the loop body.\n this.withSmartMixTopicForbiddingContext(() =>\n // Parse the loop body.\n this.parseStatement(),\n );\n\n this.scope.exit();\n this.state.labels.pop();\n\n return this.finishNode(node, \"ForStatement\");\n }\n\n // Parse a `for`/`in` and `for`/`of` loop, which are almost\n // same from parser's perspective.\n\n parseForIn(\n this: Parser,\n node: Undone<N.ForInOf>,\n init: N.VariableDeclaration | N.AssignmentPattern,\n awaitAt?: Position | null,\n ): N.ForInOf {\n const isForIn = this.match(tt._in);\n this.next();\n\n if (isForIn) {\n if (awaitAt !== null) this.unexpected(awaitAt);\n } else {\n node.await = awaitAt !== null;\n }\n\n if (\n init.type === \"VariableDeclaration\" &&\n init.declarations[0].init != null &&\n (!isForIn ||\n !this.options.annexB ||\n this.state.strict ||\n init.kind !== \"var\" ||\n init.declarations[0].id.type !== \"Identifier\")\n ) {\n this.raise(Errors.ForInOfLoopInitializer, init, {\n type: isForIn ? \"ForInStatement\" : \"ForOfStatement\",\n });\n }\n\n if (init.type === \"AssignmentPattern\") {\n this.raise(Errors.InvalidLhs, init, {\n ancestor: { type: \"ForStatement\" },\n });\n }\n\n node.left = init;\n node.right = isForIn\n ? this.parseExpression()\n : this.parseMaybeAssignAllowIn();\n this.expect(tt.parenR);\n\n // Parse the loop body.\n node.body =\n // For the smartPipelines plugin:\n // Disable topic references from outer contexts within the loop body.\n // They are permitted in test expressions, outside of the loop body.\n this.withSmartMixTopicForbiddingContext(() =>\n // Parse loop body.\n this.parseStatement(),\n );\n\n this.scope.exit();\n this.state.labels.pop();\n\n return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\");\n }\n\n // Parse a list of variable declarations.\n\n parseVar(\n this: Parser,\n node: Undone<N.VariableDeclaration>,\n isFor: boolean,\n kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n allowMissingInitializer: boolean = false,\n ): Undone<N.VariableDeclaration> {\n const declarations: N.VariableDeclarator[] = (node.declarations = []);\n node.kind = kind;\n for (;;) {\n const decl = this.startNode<N.VariableDeclarator>();\n this.parseVarId(decl, kind);\n decl.init = !this.eat(tt.eq)\n ? null\n : isFor\n ? this.parseMaybeAssignDisallowIn()\n : this.parseMaybeAssignAllowIn();\n\n if (decl.init === null && !allowMissingInitializer) {\n if (\n decl.id.type !== \"Identifier\" &&\n !(isFor && (this.match(tt._in) || this.isContextual(tt._of)))\n ) {\n this.raise(\n Errors.DeclarationMissingInitializer,\n this.state.lastTokEndLoc!,\n {\n kind: \"destructuring\",\n },\n );\n } else if (\n (kind === \"const\" || kind === \"using\" || kind === \"await using\") &&\n !(this.match(tt._in) || this.isContextual(tt._of))\n ) {\n this.raise(\n Errors.DeclarationMissingInitializer,\n this.state.lastTokEndLoc!,\n { kind },\n );\n }\n }\n declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n if (!this.eat(tt.comma)) break;\n }\n return node;\n }\n\n parseVarId(\n this: Parser,\n decl: Undone<N.VariableDeclarator>,\n kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n ): void {\n const id = this.parseBindingAtom();\n if (kind === \"using\" || kind === \"await using\") {\n if (id.type === \"ArrayPattern\" || id.type === \"ObjectPattern\") {\n this.raise(Errors.UsingDeclarationHasBindingPattern, id.loc.start);\n }\n } else {\n if (id.type === \"VoidPattern\") {\n this.raise(Errors.UnexpectedVoidPattern, id.loc.start);\n }\n }\n this.checkLVal(\n id,\n { type: \"VariableDeclarator\" },\n kind === \"var\" ? BindingFlag.TYPE_VAR : BindingFlag.TYPE_LEXICAL,\n );\n decl.id = id;\n }\n\n // https://tc39.es/ecma262/#prod-AsyncFunctionExpression\n parseAsyncFunctionExpression(\n this: Parser,\n node: Undone<N.FunctionExpression>,\n ): N.FunctionExpression {\n return this.parseFunction(node, ParseFunctionFlag.Async);\n }\n\n // Parse a function declaration or expression (depending on the\n // ParseFunctionFlag.Declaration flag).\n\n parseFunction<T extends N.NormalFunction>(\n this: Parser,\n node: Undone<T>,\n flags: ParseFunctionFlag = ParseFunctionFlag.Expression,\n ): T {\n const hangingDeclaration = flags & ParseFunctionFlag.HangingDeclaration;\n const isDeclaration = !!(flags & ParseFunctionFlag.Declaration);\n const requireId = isDeclaration && !(flags & ParseFunctionFlag.NullableId);\n const isAsync = !!(flags & ParseFunctionFlag.Async);\n\n this.initFunction(node, isAsync);\n\n if (this.match(tt.star)) {\n if (hangingDeclaration) {\n this.raise(\n Errors.GeneratorInSingleStatementContext,\n this.state.startLoc,\n );\n }\n this.next(); // eat *\n node.generator = true;\n }\n\n if (isDeclaration) {\n node.id = this.parseFunctionId(requireId);\n }\n\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n this.state.maybeInArrowParameters = false;\n this.scope.enter(ScopeFlag.FUNCTION);\n this.prodParam.enter(functionFlags(isAsync, node.generator));\n\n if (!isDeclaration) {\n node.id = this.parseFunctionId();\n }\n\n this.parseFunctionParams(node, /* isConstructor */ false);\n\n // For the smartPipelines plugin: Disable topic references from outer\n // contexts within the function body. They are permitted in function\n // default-parameter expressions, outside of the function body.\n this.withSmartMixTopicForbiddingContext(() => {\n // Parse the function body.\n this.parseFunctionBodyAndFinish(\n node,\n isDeclaration ? \"FunctionDeclaration\" : \"FunctionExpression\",\n );\n });\n\n this.prodParam.exit();\n this.scope.exit();\n\n if (isDeclaration && !hangingDeclaration) {\n // We need to register this _after_ parsing the function body\n // because of TypeScript body-less function declarations,\n // which shouldn't be added to the scope.\n this.registerFunctionStatementId(node as T);\n }\n\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n return node as T;\n }\n\n parseFunctionId(requireId?: boolean): N.Identifier | undefined | null {\n return requireId || tokenIsIdentifier(this.state.type)\n ? this.parseIdentifier()\n : null;\n }\n\n parseFunctionParams(\n this: Parser,\n node: Undone<N.Function>,\n isConstructor?: boolean,\n ): void {\n this.expect(tt.parenL);\n this.expressionScope.enter(newParameterDeclarationScope());\n node.params = this.parseBindingList(\n tt.parenR,\n charCodes.rightParenthesis,\n ParseBindingListFlags.IS_FUNCTION_PARAMS |\n (isConstructor ? ParseBindingListFlags.IS_CONSTRUCTOR_PARAMS : 0),\n ) as N.Pattern[];\n\n this.expressionScope.exit();\n }\n\n registerFunctionStatementId(node: N.Function): void {\n if (!node.id) return;\n\n // If it is a regular function declaration in sloppy mode, then it is\n // subject to Annex B semantics (BindingFlag.TYPE_FUNCTION). Otherwise, the binding\n // mode depends on properties of the current scope (see\n // treatFunctionsAsVar).\n this.scope.declareName(\n node.id.name,\n !this.options.annexB || this.state.strict || node.generator || node.async\n ? this.scope.treatFunctionsAsVar\n ? BindingFlag.TYPE_VAR\n : BindingFlag.TYPE_LEXICAL\n : BindingFlag.TYPE_FUNCTION,\n node.id.loc.start,\n );\n }\n\n // Parse a class declaration or literal (depending on the\n // `isStatement` parameter).\n\n parseClass<T extends N.Class>(\n this: Parser,\n node: Undone<T>,\n isStatement: /* T === ClassDeclaration */ boolean,\n optionalId?: boolean,\n ): T {\n this.next(); // 'class'\n\n // A class definition is always strict mode code.\n const oldStrict = this.state.strict;\n this.state.strict = true;\n\n this.parseClassId(node, isStatement, optionalId);\n this.parseClassSuper(node);\n // this.state.strict is restored in parseClassBody\n node.body = this.parseClassBody(!!node.superClass, oldStrict);\n\n return this.finishNode(\n node,\n isStatement ? \"ClassDeclaration\" : \"ClassExpression\",\n );\n }\n\n isClassProperty(): boolean {\n return this.match(tt.eq) || this.match(tt.semi) || this.match(tt.braceR);\n }\n\n isClassMethod(): boolean {\n return this.match(tt.parenL);\n }\n\n nameIsConstructor(key: N.Expression | N.PrivateName): boolean {\n return (\n (key.type === \"Identifier\" && key.name === \"constructor\") ||\n (key.type === \"StringLiteral\" && key.value === \"constructor\")\n );\n }\n\n isNonstaticConstructor(method: N.ClassMethod | N.ClassProperty): boolean {\n return (\n !method.computed && !method.static && this.nameIsConstructor(method.key)\n );\n }\n\n // https://tc39.es/ecma262/#prod-ClassBody\n parseClassBody(\n this: Parser,\n hadSuperClass: boolean,\n oldStrict: boolean,\n ): N.ClassBody {\n this.classScope.enter();\n\n const state: N.ParseClassMemberState = {\n hadConstructor: false,\n hadSuperClass,\n };\n let decorators: N.Decorator[] = [];\n const classBody = this.startNode<N.ClassBody>();\n classBody.body = [];\n\n this.expect(tt.braceL);\n\n // For the smartPipelines plugin: Disable topic references from outer\n // contexts within the class body.\n this.withSmartMixTopicForbiddingContext(() => {\n // Parse the contents within the braces.\n while (!this.match(tt.braceR)) {\n if (this.eat(tt.semi)) {\n if (decorators.length > 0) {\n throw this.raise(\n Errors.DecoratorSemicolon,\n this.state.lastTokEndLoc!,\n );\n }\n continue;\n }\n\n if (this.match(tt.at)) {\n decorators.push(this.parseDecorator());\n continue;\n }\n\n const member = this.startNode<N.ClassMember>();\n\n // steal the decorators if there are any\n if (decorators.length) {\n // @ts-expect-error Fixme\n member.decorators = decorators;\n this.resetStartLocationFromNode(member, decorators[0]);\n decorators = [];\n }\n\n this.parseClassMember(classBody, member, state);\n\n if (\n // @ts-expect-error Fixme\n member.kind === \"constructor\" &&\n // @ts-expect-error Fixme\n member.decorators &&\n // @ts-expect-error Fixme\n member.decorators.length > 0\n ) {\n this.raise(Errors.DecoratorConstructor, member);\n }\n }\n });\n\n this.state.strict = oldStrict;\n\n this.next(); // eat `}`\n\n if (decorators.length) {\n throw this.raise(Errors.TrailingDecorator, this.state.startLoc);\n }\n\n this.classScope.exit();\n\n return this.finishNode(classBody, \"ClassBody\");\n }\n\n // returns true if the current identifier is a method/field name,\n // false if it is a modifier\n parseClassMemberFromModifier(\n this: Parser,\n classBody: Undone<N.ClassBody>,\n member: Undone<N.ClassMember>,\n ): boolean {\n const key = this.parseIdentifier(true); // eats the modifier\n\n if (this.isClassMethod()) {\n const method: N.ClassMethod = member as any;\n\n // a method named like the modifier\n method.kind = \"method\";\n method.computed = false;\n method.key = key;\n method.static = false;\n this.pushClassMethod(\n classBody,\n method,\n false,\n false,\n /* isConstructor */ false,\n false,\n );\n return true;\n } else if (this.isClassProperty()) {\n const prop: N.ClassProperty = member as any;\n\n // a property named like the modifier\n prop.computed = false;\n prop.key = key;\n prop.static = false;\n classBody.body.push(this.parseClassProperty(prop));\n return true;\n }\n this.resetPreviousNodeTrailingComments(key);\n return false;\n }\n\n parseClassMember(\n this: Parser,\n classBody: Undone<N.ClassBody>,\n member: Undone<N.ClassMember>,\n state: N.ParseClassMemberState,\n ): void {\n const isStatic = this.isContextual(tt._static);\n\n if (isStatic) {\n if (this.parseClassMemberFromModifier(classBody, member)) {\n // a class element named 'static'\n return;\n }\n if (this.eat(tt.braceL)) {\n this.parseClassStaticBlock(classBody, member as any as N.StaticBlock);\n return;\n }\n }\n\n this.parseClassMemberWithIsStatic(classBody, member, state, isStatic);\n }\n\n parseClassMemberWithIsStatic(\n this: Parser,\n classBody: Undone<N.ClassBody>,\n member: Undone<N.ClassMember>,\n state: N.ParseClassMemberState,\n isStatic: boolean,\n ) {\n const publicMethod = member as N.ClassMethod;\n const privateMethod = member as N.ClassPrivateMethod;\n const publicProp = member as N.ClassProperty;\n const privateProp = member as N.ClassPrivateProperty;\n const accessorProp = member as N.ClassAccessorProperty;\n\n const method: typeof publicMethod | typeof privateMethod = publicMethod;\n const publicMember: typeof publicMethod | typeof publicProp = publicMethod;\n\n member.static = isStatic;\n this.parsePropertyNamePrefixOperator(member);\n\n if (this.eat(tt.star)) {\n // a generator\n method.kind = \"method\";\n const isPrivateName = this.match(tt.privateName);\n this.parseClassElementName(method);\n this.parsePostMemberNameModifiers(method);\n\n if (isPrivateName) {\n // Private generator method\n this.pushClassPrivateMethod(classBody, privateMethod, true, false);\n return;\n }\n\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(Errors.ConstructorIsGenerator, publicMethod.key);\n }\n\n this.pushClassMethod(\n classBody,\n publicMethod,\n true,\n false,\n /* isConstructor */ false,\n false,\n );\n\n return;\n }\n\n const isContextual =\n !this.state.containsEsc && tokenIsIdentifier(this.state.type);\n const key = this.parseClassElementName(member);\n const maybeContextualKw = isContextual ? (key as N.Identifier).name : null;\n const isPrivate = this.isPrivateName(key);\n const maybeQuestionTokenStartLoc = this.state.startLoc;\n\n this.parsePostMemberNameModifiers(publicMember);\n\n if (this.isClassMethod()) {\n method.kind = \"method\";\n\n if (isPrivate) {\n this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n return;\n }\n\n // a normal method\n const isConstructor = this.isNonstaticConstructor(publicMethod);\n let allowsDirectSuper = false;\n if (isConstructor) {\n publicMethod.kind = \"constructor\";\n\n // TypeScript allows multiple overloaded constructor declarations.\n if (state.hadConstructor && !this.hasPlugin(\"typescript\")) {\n this.raise(Errors.DuplicateConstructor, key);\n }\n if (isConstructor && this.hasPlugin(\"typescript\") && member.override) {\n this.raise(Errors.OverrideOnConstructor, key);\n }\n state.hadConstructor = true;\n allowsDirectSuper = state.hadSuperClass;\n }\n\n this.pushClassMethod(\n classBody,\n publicMethod,\n false,\n false,\n isConstructor,\n allowsDirectSuper,\n );\n } else if (this.isClassProperty()) {\n if (isPrivate) {\n this.pushClassPrivateProperty(classBody, privateProp);\n } else {\n this.pushClassProperty(classBody, publicProp);\n }\n } else if (maybeContextualKw === \"async\" && !this.isLineTerminator()) {\n // an async method\n this.resetPreviousNodeTrailingComments(key);\n const isGenerator = this.eat(tt.star);\n\n if (publicMember.optional) {\n this.unexpected(maybeQuestionTokenStartLoc);\n }\n\n method.kind = \"method\";\n // The so-called parsed name would have been \"async\": get the real name.\n const isPrivate = this.match(tt.privateName);\n this.parseClassElementName(method);\n this.parsePostMemberNameModifiers(publicMember);\n\n if (isPrivate) {\n // private async method\n this.pushClassPrivateMethod(\n classBody,\n privateMethod,\n isGenerator,\n true,\n );\n } else {\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(Errors.ConstructorIsAsync, publicMethod.key);\n }\n\n this.pushClassMethod(\n classBody,\n publicMethod,\n isGenerator,\n true,\n /* isConstructor */ false,\n false,\n );\n }\n } else if (\n (maybeContextualKw === \"get\" || maybeContextualKw === \"set\") &&\n !(this.match(tt.star) && this.isLineTerminator())\n ) {\n // `get\\n*` is an uninitialized property named 'get' followed by a generator.\n // a getter or setter\n this.resetPreviousNodeTrailingComments(key);\n method.kind = maybeContextualKw;\n // The so-called parsed name would have been \"get/set\": get the real name.\n const isPrivate = this.match(tt.privateName);\n this.parseClassElementName(publicMethod);\n\n if (isPrivate) {\n // private getter/setter\n this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n } else {\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(Errors.ConstructorIsAccessor, publicMethod.key);\n }\n this.pushClassMethod(\n classBody,\n publicMethod,\n false,\n false,\n /* isConstructor */ false,\n false,\n );\n }\n\n this.checkGetterSetterParams(publicMethod);\n } else if (maybeContextualKw === \"accessor\" && !this.isLineTerminator()) {\n this.expectPlugin(\"decoratorAutoAccessors\");\n this.resetPreviousNodeTrailingComments(key);\n\n // The so-called parsed name would have been \"accessor\": get the real name.\n const isPrivate = this.match(tt.privateName);\n this.parseClassElementName(publicProp);\n this.pushClassAccessorProperty(classBody, accessorProp, isPrivate);\n } else if (this.isLineTerminator()) {\n // an uninitialized class property (due to ASI, since we don't otherwise recognize the next token)\n if (isPrivate) {\n this.pushClassPrivateProperty(classBody, privateProp);\n } else {\n this.pushClassProperty(classBody, publicProp);\n }\n } else {\n this.unexpected();\n }\n }\n\n // https://tc39.es/ecma262/#prod-ClassElementName\n parseClassElementName(\n this: Parser,\n member: Undone<N.ClassMember>,\n ): N.Expression | N.Identifier | N.PrivateName {\n const { type, value } = this.state;\n if (\n (type === tt.name || type === tt.string) &&\n member.static &&\n value === \"prototype\"\n ) {\n this.raise(Errors.StaticPrototype, this.state.startLoc);\n }\n\n if (type === tt.privateName) {\n if (value === \"constructor\") {\n this.raise(Errors.ConstructorClassPrivateField, this.state.startLoc);\n }\n const key = this.parsePrivateName();\n member.key = key;\n return key;\n }\n\n this.parsePropertyName(member);\n return member.key;\n }\n\n parseClassStaticBlock(\n this: Parser,\n classBody: Undone<N.ClassBody>,\n member: Undone<\n N.StaticBlock & {\n decorators?: N.Decorator[];\n }\n >,\n ) {\n // Start a new lexical scope\n this.scope.enter(\n ScopeFlag.CLASS | ScopeFlag.STATIC_BLOCK | ScopeFlag.SUPER,\n );\n // Start a new scope with regard to loop labels\n const oldLabels = this.state.labels;\n this.state.labels = [];\n // ClassStaticBlockStatementList:\n // StatementList[~Yield, ~Await, ~Return] opt\n this.prodParam.enter(ParamKind.PARAM);\n const body: N.Statement[] = (member.body = []);\n this.parseBlockOrModuleBlockBody(body, undefined, false, tt.braceR);\n this.prodParam.exit();\n this.scope.exit();\n this.state.labels = oldLabels;\n classBody.body.push(this.finishNode<N.StaticBlock>(member, \"StaticBlock\"));\n if (member.decorators?.length) {\n this.raise(Errors.DecoratorStaticBlock, member);\n }\n }\n\n pushClassProperty(\n this: Parser,\n classBody: Undone<N.ClassBody>,\n prop: N.ClassProperty,\n ) {\n if (!prop.computed && this.nameIsConstructor(prop.key)) {\n // Non-computed field, which is either an identifier named \"constructor\"\n // or a string literal named \"constructor\"\n this.raise(Errors.ConstructorClassField, prop.key);\n }\n\n classBody.body.push(this.parseClassProperty(prop));\n }\n\n pushClassPrivateProperty(\n this: Parser,\n classBody: Undone<N.ClassBody>,\n prop: Undone<N.ClassPrivateProperty>,\n ) {\n const node = this.parseClassPrivateProperty(prop);\n classBody.body.push(node);\n\n this.classScope.declarePrivateName(\n this.getPrivateNameSV(node.key),\n ClassElementType.OTHER,\n node.key.loc.start,\n );\n }\n\n pushClassAccessorProperty(\n this: Parser,\n classBody: Undone<N.ClassBody>,\n prop: N.ClassAccessorProperty,\n isPrivate: boolean,\n ) {\n if (!isPrivate && !prop.computed && this.nameIsConstructor(prop.key)) {\n // Non-computed field, which is either an identifier named \"constructor\"\n // or a string literal named \"constructor\"\n this.raise(Errors.ConstructorClassField, prop.key);\n }\n\n const node = this.parseClassAccessorProperty(prop);\n classBody.body.push(node);\n\n if (isPrivate) {\n this.classScope.declarePrivateName(\n this.getPrivateNameSV(node.key as N.PrivateName),\n ClassElementType.OTHER,\n node.key.loc.start,\n );\n }\n }\n\n pushClassMethod(\n this: Parser,\n classBody: Undone<N.ClassBody>,\n method: Undone<N.ClassMethod>,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowsDirectSuper: boolean,\n ): void {\n classBody.body.push(\n this.parseMethod(\n method,\n isGenerator,\n isAsync,\n isConstructor,\n allowsDirectSuper,\n \"ClassMethod\",\n true,\n ),\n );\n }\n\n pushClassPrivateMethod(\n this: Parser,\n classBody: Undone<N.ClassBody>,\n method: Undone<N.ClassPrivateMethod>,\n isGenerator: boolean,\n isAsync: boolean,\n ): void {\n const node = this.parseMethod(\n method,\n isGenerator,\n isAsync,\n /* isConstructor */ false,\n false,\n \"ClassPrivateMethod\",\n true,\n );\n classBody.body.push(node);\n\n const kind =\n node.kind === \"get\"\n ? node.static\n ? ClassElementType.STATIC_GETTER\n : ClassElementType.INSTANCE_GETTER\n : node.kind === \"set\"\n ? node.static\n ? ClassElementType.STATIC_SETTER\n : ClassElementType.INSTANCE_SETTER\n : ClassElementType.OTHER;\n this.declareClassPrivateMethodInScope(node, kind);\n }\n\n declareClassPrivateMethodInScope(\n node: Undone<N.ClassPrivateMethod | N.TSDeclareMethod>,\n kind: number,\n ) {\n this.classScope.declarePrivateName(\n this.getPrivateNameSV(node.key as N.PrivateName),\n kind,\n node.key.loc.start,\n );\n }\n\n // Overridden in typescript.js\n parsePostMemberNameModifiers(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n methodOrProp: Undone<N.ClassMethod | N.ClassProperty>,\n ): void {}\n\n // https://tc39.es/ecma262/#prod-FieldDefinition\n parseClassPrivateProperty(\n this: Parser,\n node: Undone<N.ClassPrivateProperty>,\n ): N.ClassPrivateProperty {\n this.parseInitializer(node);\n this.semicolon();\n return this.finishNode(node, \"ClassPrivateProperty\");\n }\n\n // https://tc39.es/ecma262/#prod-FieldDefinition\n parseClassProperty(this: Parser, node: N.ClassProperty): N.ClassProperty {\n this.parseInitializer(node);\n this.semicolon();\n return this.finishNode(node, \"ClassProperty\");\n }\n\n parseClassAccessorProperty(\n this: Parser,\n node: N.ClassAccessorProperty,\n ): N.ClassAccessorProperty {\n this.parseInitializer(node);\n this.semicolon();\n return this.finishNode(node, \"ClassAccessorProperty\");\n }\n\n // https://tc39.es/ecma262/#prod-Initializer\n parseInitializer(\n this: Parser,\n node: Undone<\n N.ClassProperty | N.ClassPrivateProperty | N.ClassAccessorProperty\n >,\n ): void {\n this.scope.enter(ScopeFlag.CLASS | ScopeFlag.SUPER);\n this.expressionScope.enter(newExpressionScope());\n this.prodParam.enter(ParamKind.PARAM);\n node.value = this.eat(tt.eq) ? this.parseMaybeAssignAllowIn() : null;\n this.expressionScope.exit();\n this.prodParam.exit();\n this.scope.exit();\n }\n\n parseClassId(\n node: Undone<N.Class>,\n isStatement: boolean,\n optionalId?: boolean | null,\n bindingType: BindingFlag = BindingFlag.TYPE_CLASS,\n ): void {\n if (tokenIsIdentifier(this.state.type)) {\n node.id = this.parseIdentifier();\n if (isStatement) {\n this.declareNameFromIdentifier(node.id, bindingType);\n }\n } else {\n if (optionalId || !isStatement) {\n node.id = null;\n } else {\n throw this.raise(Errors.MissingClassName, this.state.startLoc);\n }\n }\n }\n\n // https://tc39.es/ecma262/#prod-ClassHeritage\n parseClassSuper(this: Parser, node: Undone<N.Class>): void {\n node.superClass = this.eat(tt._extends) ? this.parseExprSubscripts() : null;\n }\n\n // Parses module export declaration.\n // https://tc39.es/ecma262/#prod-ExportDeclaration\n\n parseExport(\n this: Parser,\n node: Undone<\n | N.ExportDefaultDeclaration\n | N.ExportAllDeclaration\n | N.ExportNamedDeclaration\n >,\n decorators: N.Decorator[] | null | undefined,\n ): N.AnyExport {\n const maybeDefaultIdentifier = this.parseMaybeImportPhase(\n node,\n /* isExport */ true,\n );\n const hasDefault = this.maybeParseExportDefaultSpecifier(\n node,\n maybeDefaultIdentifier,\n );\n const parseAfterDefault = !hasDefault || this.eat(tt.comma);\n const hasStar = parseAfterDefault && this.eatExportStar(node);\n const hasNamespace =\n hasStar && this.maybeParseExportNamespaceSpecifier(node);\n const parseAfterNamespace =\n parseAfterDefault && (!hasNamespace || this.eat(tt.comma));\n const isFromRequired = hasDefault || hasStar;\n\n if (hasStar && !hasNamespace) {\n if (hasDefault) this.unexpected();\n if (decorators) {\n throw this.raise(Errors.UnsupportedDecoratorExport, node);\n }\n this.parseExportFrom(node, true);\n\n this.sawUnambiguousESM = true;\n\n return this.finishNode(node, \"ExportAllDeclaration\");\n }\n\n const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node);\n\n if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) {\n this.unexpected(null, tt.braceL);\n }\n\n if (hasNamespace && parseAfterNamespace) {\n this.unexpected(null, tt._from);\n }\n\n let hasDeclaration;\n if (isFromRequired || hasSpecifiers) {\n hasDeclaration = false;\n if (decorators) {\n throw this.raise(Errors.UnsupportedDecoratorExport, node);\n }\n this.parseExportFrom(\n node as Undone<N.ExportNamedDeclaration>,\n isFromRequired,\n );\n } else {\n hasDeclaration = this.maybeParseExportDeclaration(\n node as Undone<N.ExportNamedDeclaration>,\n );\n }\n\n if (isFromRequired || hasSpecifiers || hasDeclaration) {\n const node2 = node as Undone<N.ExportNamedDeclaration>;\n this.checkExport(node2, true, false, !!node2.source);\n if (node2.declaration?.type === \"ClassDeclaration\") {\n this.maybeTakeDecorators(decorators, node2.declaration, node2);\n } else if (decorators) {\n throw this.raise(Errors.UnsupportedDecoratorExport, node);\n }\n this.sawUnambiguousESM = true;\n return this.finishNode(node2, \"ExportNamedDeclaration\");\n }\n\n if (this.eat(tt._default)) {\n const node2 = node as Undone<N.ExportDefaultDeclaration>;\n // export default ...\n const decl = this.parseExportDefaultExpression();\n node2.declaration = decl;\n\n if (decl.type === \"ClassDeclaration\") {\n this.maybeTakeDecorators(decorators, decl as N.ClassDeclaration, node2);\n } else if (decorators) {\n throw this.raise(Errors.UnsupportedDecoratorExport, node);\n }\n\n this.checkExport(node2, true, true);\n this.sawUnambiguousESM = true;\n return this.finishNode(node2, \"ExportDefaultDeclaration\");\n }\n\n throw this.unexpected(null, tt.braceL);\n }\n\n eatExportStar(\n node: Undone<N.Node>,\n ): node is Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration> {\n return this.eat(tt.star);\n }\n\n maybeParseExportDefaultSpecifier(\n node: Undone<\n | N.ExportDefaultDeclaration\n | N.ExportAllDeclaration\n | N.ExportNamedDeclaration\n >,\n maybeDefaultIdentifier: N.Identifier | null,\n ): node is Undone<N.ExportNamedDeclaration> {\n if (maybeDefaultIdentifier || this.isExportDefaultSpecifier()) {\n // export defaultObj ...\n this.expectPlugin(\"exportDefaultFrom\", maybeDefaultIdentifier?.loc.start);\n const id = maybeDefaultIdentifier || this.parseIdentifier(true);\n const specifier = this.startNodeAtNode<N.ExportDefaultSpecifier>(id);\n specifier.exported = id;\n (node as Undone<N.ExportNamedDeclaration>).specifiers = [\n this.finishNode(specifier, \"ExportDefaultSpecifier\"),\n ];\n return true;\n }\n return false;\n }\n\n maybeParseExportNamespaceSpecifier(\n node: Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>,\n ): node is Undone<N.ExportNamedDeclaration> {\n if (this.isContextual(tt._as)) {\n (node as Undone<N.ExportNamedDeclaration>).specifiers ??= [];\n\n const specifier = this.startNodeAt<N.ExportNamespaceSpecifier>(\n this.state.lastTokStartLoc!,\n );\n\n this.next();\n\n specifier.exported = this.parseModuleExportName();\n (node as Undone<N.ExportNamedDeclaration>).specifiers.push(\n this.finishNode(specifier, \"ExportNamespaceSpecifier\"),\n );\n return true;\n }\n return false;\n }\n\n maybeParseExportNamedSpecifiers(\n node: Undone<N.Node>,\n ): node is Undone<N.ExportNamedDeclaration> {\n if (this.match(tt.braceL)) {\n const node2 = node as Undone<N.ExportNamedDeclaration>;\n\n if (!node2.specifiers) node2.specifiers = [];\n const isTypeExport = node2.exportKind === \"type\";\n node2.specifiers.push(...this.parseExportSpecifiers(isTypeExport));\n node2.source = null;\n if (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"importAssertions\")) {\n node2.assertions = [];\n } else {\n node2.attributes = [];\n }\n node2.declaration = null;\n return true;\n }\n return false;\n }\n\n maybeParseExportDeclaration(\n this: Parser,\n node: Undone<N.ExportNamedDeclaration>,\n ): boolean {\n if (this.shouldParseExportDeclaration()) {\n node.specifiers = [];\n node.source = null;\n if (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"importAssertions\")) {\n node.assertions = [];\n } else {\n node.attributes = [];\n }\n node.declaration = this.parseExportDeclaration(node);\n return true;\n }\n return false;\n }\n\n isAsyncFunction(): boolean {\n if (!this.isContextual(tt._async)) return false;\n const next = this.nextTokenInLineStart();\n return this.isUnparsedContextual(next, \"function\");\n }\n\n parseExportDefaultExpression(\n this: Parser,\n ): N.ExportDefaultDeclaration[\"declaration\"] {\n const expr = this.startNode();\n\n if (this.match(tt._function)) {\n this.next();\n return this.parseFunction(\n expr as Undone<N.FunctionDeclaration>,\n ParseFunctionFlag.Declaration | ParseFunctionFlag.NullableId,\n );\n } else if (this.isAsyncFunction()) {\n this.next(); // eat 'async'\n this.next(); // eat 'function'\n return this.parseFunction(\n expr as Undone<N.FunctionDeclaration>,\n ParseFunctionFlag.Declaration |\n ParseFunctionFlag.NullableId |\n ParseFunctionFlag.Async,\n );\n }\n\n if (this.match(tt._class)) {\n return this.parseClass(expr as Undone<N.ClassExpression>, true, true);\n }\n\n if (this.match(tt.at)) {\n if (\n this.hasPlugin(\"decorators\") &&\n this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\") === true\n ) {\n this.raise(Errors.DecoratorBeforeExport, this.state.startLoc);\n }\n return this.parseClass(\n this.maybeTakeDecorators(\n this.parseDecorators(false),\n this.startNode<N.ClassDeclaration>(),\n ),\n true,\n true,\n );\n }\n\n if (\n this.match(tt._const) ||\n this.match(tt._var) ||\n this.isLet() ||\n this.isUsing() ||\n this.isAwaitUsing()\n ) {\n throw this.raise(Errors.UnsupportedDefaultExport, this.state.startLoc);\n }\n\n const res = this.parseMaybeAssignAllowIn();\n this.semicolon();\n return res;\n }\n\n // https://tc39.es/ecma262/#prod-ExportDeclaration\n parseExportDeclaration(\n this: Parser,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n node: Undone<N.ExportNamedDeclaration>,\n ): N.Declaration | undefined | null {\n if (this.match(tt._class)) {\n const node = this.parseClass(\n this.startNode<N.ClassDeclaration>(),\n true,\n false,\n );\n return node;\n }\n return this.parseStatementListItem() as N.Declaration;\n }\n\n isExportDefaultSpecifier(): boolean {\n const { type } = this.state;\n if (tokenIsIdentifier(type)) {\n if ((type === tt._async && !this.state.containsEsc) || type === tt._let) {\n return false;\n }\n if (\n (type === tt._type || type === tt._interface) &&\n !this.state.containsEsc\n ) {\n // If we see any variable name other than `from` after `type` keyword,\n // we consider it as flow/typescript type exports\n // note that this approach may fail on some pedantic cases\n // export type from = number\n const next = this.nextTokenStart();\n const nextChar = this.input.charCodeAt(next);\n if (\n nextChar === charCodes.leftCurlyBrace ||\n (this.chStartsBindingIdentifier(nextChar, next) &&\n !this.input.startsWith(\"from\", next))\n ) {\n this.expectOnePlugin([\"flow\", \"typescript\"]);\n return false;\n }\n }\n } else if (!this.match(tt._default)) {\n return false;\n }\n\n const next = this.nextTokenStart();\n const hasFrom = this.isUnparsedContextual(next, \"from\");\n if (\n this.input.charCodeAt(next) === charCodes.comma ||\n (tokenIsIdentifier(this.state.type) && hasFrom)\n ) {\n return true;\n }\n // lookahead again when `export default from` is seen\n if (this.match(tt._default) && hasFrom) {\n const nextAfterFrom = this.input.charCodeAt(\n this.nextTokenStartSince(next + 4),\n );\n return (\n nextAfterFrom === charCodes.quotationMark ||\n nextAfterFrom === charCodes.apostrophe\n );\n }\n return false;\n }\n\n parseExportFrom(\n this: Parser,\n node: Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>,\n expect?: boolean,\n ): void {\n if (this.eatContextual(tt._from)) {\n node.source = this.parseImportSource();\n this.checkExport(node);\n this.maybeParseImportAttributes(node);\n this.checkJSONModuleImport(node);\n } else if (expect) {\n this.unexpected();\n }\n\n this.semicolon();\n }\n\n shouldParseExportDeclaration(): boolean {\n const { type } = this.state;\n if (type === tt.at) {\n this.expectOnePlugin([\"decorators\", \"decorators-legacy\"]);\n if (this.hasPlugin(\"decorators\")) {\n if (\n this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\") === true\n ) {\n this.raise(Errors.DecoratorBeforeExport, this.state.startLoc);\n }\n\n return true;\n }\n }\n\n if (this.isUsing()) {\n this.raise(Errors.UsingDeclarationExport, this.state.startLoc);\n return true;\n }\n\n if (this.isAwaitUsing()) {\n this.raise(Errors.UsingDeclarationExport, this.state.startLoc);\n return true;\n }\n\n return (\n type === tt._var ||\n type === tt._const ||\n type === tt._function ||\n type === tt._class ||\n this.isLet() ||\n this.isAsyncFunction()\n );\n }\n\n checkExport(\n node: Undone<\n | N.ExportNamedDeclaration\n | N.ExportAllDeclaration\n | N.ExportDefaultDeclaration\n >,\n checkNames?: boolean,\n isDefault?: boolean,\n isFrom?: boolean,\n ): void {\n if (checkNames) {\n // Check for duplicate exports\n if (isDefault) {\n // Default exports\n this.checkDuplicateExports(node, \"default\");\n if (this.hasPlugin(\"exportDefaultFrom\")) {\n const declaration = (node as any as N.ExportDefaultDeclaration)\n .declaration;\n if (\n declaration.type === \"Identifier\" &&\n declaration.name === \"from\" &&\n declaration.end - declaration.start === 4 && // does not contain escape\n !declaration.extra?.parenthesized\n ) {\n this.raise(Errors.ExportDefaultFromAsIdentifier, declaration);\n }\n }\n // @ts-expect-error node.specifiers may not exist\n } else if (node.specifiers?.length) {\n // Named exports\n // @ts-expect-error node.specifiers may not exist\n for (const specifier of node.specifiers) {\n const { exported } = specifier;\n const exportName =\n exported.type === \"Identifier\" ? exported.name : exported.value;\n this.checkDuplicateExports(specifier, exportName);\n if (!isFrom && specifier.local) {\n const { local } = specifier;\n if (local.type !== \"Identifier\") {\n this.raise(Errors.ExportBindingIsString, specifier, {\n localName: local.value,\n exportName,\n });\n } else {\n // check for keywords used as local names\n this.checkReservedWord(local.name, local.loc.start, true, false);\n // check if export is defined\n this.scope.checkLocalExport(local);\n }\n }\n }\n } else if ((node as Undone<N.ExportNamedDeclaration>).declaration) {\n const decl = (node as Undone<N.ExportNamedDeclaration>).declaration!;\n // Exported declarations\n if (\n decl.type === \"FunctionDeclaration\" ||\n decl.type === \"ClassDeclaration\"\n ) {\n const { id } = decl;\n if (!id) throw new Error(\"Assertion failure\");\n\n this.checkDuplicateExports(node, id.name);\n } else if (decl.type === \"VariableDeclaration\") {\n for (const declaration of decl.declarations) {\n this.checkDeclaration(declaration.id);\n }\n }\n }\n }\n }\n\n checkDeclaration(node: N.Pattern | N.ObjectProperty): void {\n if (node.type === \"Identifier\") {\n this.checkDuplicateExports(node, node.name);\n } else if (node.type === \"ObjectPattern\") {\n for (const prop of node.properties) {\n this.checkDeclaration(prop);\n }\n } else if (node.type === \"ArrayPattern\") {\n for (const elem of node.elements) {\n if (elem) {\n this.checkDeclaration(elem);\n }\n }\n } else if (node.type === \"ObjectProperty\") {\n // @ts-expect-error migrate to Babel types\n this.checkDeclaration(node.value);\n } else if (node.type === \"RestElement\") {\n this.checkDeclaration(node.argument);\n } else if (node.type === \"AssignmentPattern\") {\n this.checkDeclaration(node.left);\n }\n }\n\n checkDuplicateExports(\n node: Undone<\n | N.Identifier\n | N.StringLiteral\n | N.ExportNamedDeclaration\n | N.ExportSpecifier\n | N.ExportDefaultSpecifier\n >,\n exportName: string,\n ): void {\n if (this.exportedIdentifiers.has(exportName)) {\n if (exportName === \"default\") {\n this.raise(Errors.DuplicateDefaultExport, node);\n } else {\n this.raise(Errors.DuplicateExport, node, { exportName });\n }\n }\n this.exportedIdentifiers.add(exportName);\n }\n\n // Parses a comma-separated list of module exports.\n\n parseExportSpecifiers(isInTypeExport: boolean): N.ExportSpecifier[] {\n const nodes = [];\n let first = true;\n\n // export { x, y as z } [from '...']\n this.expect(tt.braceL);\n\n while (!this.eat(tt.braceR)) {\n if (first) {\n first = false;\n } else {\n this.expect(tt.comma);\n if (this.eat(tt.braceR)) break;\n }\n const isMaybeTypeOnly = this.isContextual(tt._type);\n const isString = this.match(tt.string);\n const node = this.startNode<N.ExportSpecifier>();\n node.local = this.parseModuleExportName() as N.Identifier;\n nodes.push(\n this.parseExportSpecifier(\n node,\n isString,\n isInTypeExport,\n isMaybeTypeOnly,\n ),\n );\n }\n\n return nodes;\n }\n\n parseExportSpecifier(\n node: any,\n isString: boolean,\n /* eslint-disable @typescript-eslint/no-unused-vars -- used in TypeScript parser */\n isInTypeExport: boolean,\n isMaybeTypeOnly: boolean,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ): N.ExportSpecifier {\n if (this.eatContextual(tt._as)) {\n node.exported = this.parseModuleExportName();\n } else if (isString) {\n node.exported = this.cloneStringLiteral(node.local);\n } else if (!node.exported) {\n node.exported = this.cloneIdentifier(node.local);\n }\n return this.finishNode<N.ExportSpecifier>(node, \"ExportSpecifier\");\n }\n\n // https://tc39.es/ecma262/#prod-ModuleExportName\n parseModuleExportName(): N.StringLiteral | N.Identifier {\n if (this.match(tt.string)) {\n const result = this.parseStringLiteral(this.state.value);\n const surrogate = loneSurrogate.exec(result.value);\n if (surrogate) {\n this.raise(Errors.ModuleExportNameHasLoneSurrogate, result, {\n surrogateCharCode: surrogate[0].charCodeAt(0),\n });\n }\n return result;\n }\n return this.parseIdentifier(true);\n }\n\n isJSONModuleImport(\n node: Undone<\n N.ExportAllDeclaration | N.ExportNamedDeclaration | N.ImportDeclaration\n >,\n ): boolean {\n if (node.assertions != null) {\n return node.assertions.some(({ key, value }) => {\n return (\n value.value === \"json\" &&\n (key.type === \"Identifier\"\n ? key.name === \"type\"\n : key.value === \"type\")\n );\n });\n }\n return false;\n }\n\n checkImportReflection(node: Undone<N.ImportDeclaration>) {\n const { specifiers } = node;\n const singleBindingType =\n specifiers.length === 1 ? specifiers[0].type : null;\n\n if (node.phase === \"source\") {\n if (singleBindingType !== \"ImportDefaultSpecifier\") {\n this.raise(\n Errors.SourcePhaseImportRequiresDefault,\n specifiers[0].loc.start,\n );\n }\n } else if (node.phase === \"defer\") {\n if (singleBindingType !== \"ImportNamespaceSpecifier\") {\n this.raise(\n Errors.DeferImportRequiresNamespace,\n specifiers[0].loc.start,\n );\n }\n } else if (node.module) {\n if (singleBindingType !== \"ImportDefaultSpecifier\") {\n this.raise(Errors.ImportReflectionNotBinding, specifiers[0].loc.start);\n }\n // @ts-expect-error comparing undefined and number\n if (node.assertions?.length > 0) {\n this.raise(\n Errors.ImportReflectionHasAssertion,\n specifiers[0].loc.start,\n );\n }\n }\n }\n\n checkJSONModuleImport(\n node: Undone<\n N.ExportAllDeclaration | N.ExportNamedDeclaration | N.ImportDeclaration\n >,\n ) {\n // @ts-expect-error Fixme: node.type must be undefined because they are undone\n if (this.isJSONModuleImport(node) && node.type !== \"ExportAllDeclaration\") {\n // @ts-expect-error specifiers may not index node\n const { specifiers } = node;\n if (specifiers != null) {\n // @ts-expect-error refine specifier types\n const nonDefaultNamedSpecifier = specifiers.find(specifier => {\n let imported;\n if (specifier.type === \"ExportSpecifier\") {\n imported = specifier.local;\n } else if (specifier.type === \"ImportSpecifier\") {\n imported = specifier.imported;\n }\n if (imported !== undefined) {\n return imported.type === \"Identifier\"\n ? imported.name !== \"default\"\n : imported.value !== \"default\";\n }\n });\n if (nonDefaultNamedSpecifier !== undefined) {\n this.raise(\n Errors.ImportJSONBindingNotDefault,\n nonDefaultNamedSpecifier.loc.start,\n );\n }\n }\n }\n }\n\n isPotentialImportPhase(isExport: boolean): boolean {\n if (isExport) return false;\n return (\n this.isContextual(tt._source) ||\n this.isContextual(tt._defer) ||\n (!process.env.BABEL_8_BREAKING && this.isContextual(tt._module))\n );\n }\n\n applyImportPhase(\n node: Undone<N.ImportDeclaration | N.ExportNamedDeclaration>,\n isExport: boolean,\n phase: string | null,\n loc?: Position,\n ): void {\n if (isExport) {\n if (!process.env.IS_PUBLISH) {\n if (\n (!process.env.BABEL_8_BREAKING && phase === \"module\") ||\n phase === \"source\"\n ) {\n throw new Error(\n `Assertion failure: export declarations do not support the '${phase}' phase.`,\n );\n }\n }\n return;\n }\n\n if (!process.env.BABEL_8_BREAKING && phase === \"module\") {\n this.expectPlugin(\"importReflection\", loc);\n (node as N.ImportDeclaration).module = true;\n } else if (this.hasPlugin(\"importReflection\")) {\n (node as N.ImportDeclaration).module = false;\n }\n\n if (phase === \"source\") {\n this.expectPlugin(\"sourcePhaseImports\", loc);\n (node as N.ImportDeclaration).phase = \"source\";\n } else if (phase === \"defer\") {\n this.expectPlugin(\"deferredImportEvaluation\", loc);\n (node as N.ImportDeclaration).phase = \"defer\";\n } else if (this.hasPlugin(\"sourcePhaseImports\")) {\n (node as N.ImportDeclaration).phase = null;\n }\n }\n\n /*\n * Parse `source` in `import source x from \"x\"`, disambiguating\n * `import source from \"x\"` and `import source from from \"x\"`.\n *\n * This function might return an identifier representing the `source`\n * if it eats `source` and then discovers that it was the default import\n * binding and not the import reflection.\n *\n * This function is also used to parse `import type` and `import typeof`\n * in the TS and Flow plugins, and for parsing `import defer`.\n */\n parseMaybeImportPhase(\n node: Undone<N.ImportDeclaration | N.TsImportEqualsDeclaration>,\n isExport: boolean,\n ): N.Identifier | null {\n if (!this.isPotentialImportPhase(isExport)) {\n this.applyImportPhase(\n node as Undone<N.ImportDeclaration>,\n isExport,\n null,\n );\n return null;\n }\n\n const phaseIdentifier = this.startNode<N.Identifier>();\n const phaseIdentifierName = this.parseIdentifierName(true);\n\n const { type } = this.state;\n const isImportPhase = tokenIsKeywordOrIdentifier(type)\n ? // OK: import <phase> x from \"foo\";\n // OK: import <phase> from from \"foo\";\n // NO: import <phase> from \"foo\";\n // NO: import <phase> from 'foo';\n // With the module declarations proposals, we will need further disambiguation\n // for `import module from from;`.\n type !== tt._from || this.lookaheadCharCode() === charCodes.lowercaseF\n : // OK: import <phase> { x } from \"foo\";\n // OK: import <phase> x from \"foo\";\n // OK: import <phase> * as T from \"foo\";\n // NO: import <phase> from \"foo\";\n // OK: import <phase> \"foo\";\n // The last one is invalid, we will continue parsing and throw\n // an error later\n type !== tt.comma;\n\n if (isImportPhase) {\n this.applyImportPhase(\n node as Undone<N.ImportDeclaration>,\n isExport,\n phaseIdentifierName,\n phaseIdentifier.loc.start,\n );\n return null;\n } else {\n this.applyImportPhase(\n node as Undone<N.ImportDeclaration>,\n isExport,\n null,\n );\n // `<phase>` is a default binding, return it to the main import declaration parser\n return this.createIdentifier(phaseIdentifier, phaseIdentifierName);\n }\n }\n\n isPrecedingIdImportPhase(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n phase: string,\n ) {\n const { type } = this.state;\n return tokenIsIdentifier(type)\n ? // OK: import <phase> x from \"foo\";\n // OK: import <phase> from from \"foo\";\n // NO: import <phase> from \"foo\";\n // NO: import <phase> from 'foo';\n // With the module declarations proposals, we will need further disambiguation\n // for `import module from from;`.\n type !== tt._from || this.lookaheadCharCode() === charCodes.lowercaseF\n : // OK: import <phase> { x } from \"foo\";\n // OK: import <phase> x from \"foo\";\n // OK: import <phase> * as T from \"foo\";\n // NO: import <phase> from \"foo\";\n // OK: import <phase> \"foo\";\n // The last one is invalid, we will continue parsing and throw\n // an error later\n type !== tt.comma;\n }\n\n // Parses import declaration.\n // https://tc39.es/ecma262/#prod-ImportDeclaration\n\n parseImport(this: Parser, node: Undone<N.ImportDeclaration>): N.AnyImport {\n if (this.match(tt.string)) {\n // import '...'\n return this.parseImportSourceAndAttributes(node);\n }\n\n return this.parseImportSpecifiersAndAfter(\n node,\n this.parseMaybeImportPhase(node, /* isExport */ false),\n );\n }\n\n parseImportSpecifiersAndAfter(\n this: Parser,\n node: Undone<N.ImportDeclaration>,\n maybeDefaultIdentifier: N.Identifier | null,\n ): N.AnyImport {\n node.specifiers = [];\n\n // check if we have a default import like\n // import React from \"react\";\n const hasDefault = this.maybeParseDefaultImportSpecifier(\n node,\n maybeDefaultIdentifier,\n );\n /* we are checking if we do not have a default import, then it is obvious that we need named imports\n * import { get } from \"axios\";\n * but if we do have a default import\n * we need to check if we have a comma after that and\n * that is where this `|| this.eat` condition comes into play\n */\n const parseNext = !hasDefault || this.eat(tt.comma);\n // if we do have to parse the next set of specifiers, we first check for star imports\n // import React, * from \"react\";\n const hasStar = parseNext && this.maybeParseStarImportSpecifier(node);\n // now we check if we need to parse the next imports\n // but only if they are not importing * (everything)\n if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node);\n this.expectContextual(tt._from);\n\n return this.parseImportSourceAndAttributes(node);\n }\n\n parseImportSourceAndAttributes(\n this: Parser,\n node: Undone<N.ImportDeclaration>,\n ): N.AnyImport {\n node.specifiers ??= [];\n node.source = this.parseImportSource();\n this.maybeParseImportAttributes(node);\n this.checkImportReflection(node);\n this.checkJSONModuleImport(node);\n\n this.semicolon();\n this.sawUnambiguousESM = true;\n return this.finishNode(node, \"ImportDeclaration\");\n }\n\n parseImportSource(this: Parser): N.StringLiteral {\n if (!this.match(tt.string)) this.unexpected();\n return this.parseExprAtom() as N.StringLiteral;\n }\n\n parseImportSpecifierLocal<\n T extends\n | N.ImportSpecifier\n | N.ImportDefaultSpecifier\n | N.ImportNamespaceSpecifier,\n >(\n node: Undone<N.ImportDeclaration>,\n specifier: Undone<T>,\n type: T[\"type\"],\n ): void {\n specifier.local = this.parseIdentifier();\n node.specifiers.push(this.finishImportSpecifier(specifier, type));\n }\n\n finishImportSpecifier<\n T extends\n | N.ImportSpecifier\n | N.ImportDefaultSpecifier\n | N.ImportNamespaceSpecifier,\n >(\n specifier: Undone<T>,\n type: T[\"type\"],\n bindingType: BindingFlag = BindingFlag.TYPE_LEXICAL,\n ) {\n this.checkLVal(specifier.local, { type }, bindingType);\n return this.finishNode(specifier, type);\n }\n\n /**\n * parse assert entries\n *\n * @see {@link https://tc39.es/proposal-import-attributes/#prod-WithEntries WithEntries}\n */\n parseImportAttributes(): N.ImportAttribute[] {\n this.expect(tt.braceL);\n\n const attrs = [];\n const attrNames = new Set();\n\n do {\n if (this.match(tt.braceR)) {\n break;\n }\n\n const node = this.startNode<N.ImportAttribute>();\n\n // parse AssertionKey : IdentifierName, StringLiteral\n const keyName = this.state.value;\n // check if we already have an entry for an attribute\n // if a duplicate entry is found, throw an error\n // for now this logic will come into play only when someone declares `type` twice\n if (attrNames.has(keyName)) {\n this.raise(\n Errors.ModuleAttributesWithDuplicateKeys,\n this.state.startLoc,\n {\n key: keyName,\n },\n );\n }\n attrNames.add(keyName);\n if (this.match(tt.string)) {\n node.key = this.parseStringLiteral(keyName);\n } else {\n node.key = this.parseIdentifier(true);\n }\n this.expect(tt.colon);\n\n if (!this.match(tt.string)) {\n throw this.raise(\n Errors.ModuleAttributeInvalidValue,\n this.state.startLoc,\n );\n }\n node.value = this.parseStringLiteral(this.state.value);\n attrs.push(this.finishNode(node, \"ImportAttribute\"));\n } while (this.eat(tt.comma));\n\n this.expect(tt.braceR);\n\n return attrs;\n }\n\n /**\n * parse module attributes\n * @deprecated It will be removed in Babel 8\n */\n parseModuleAttributes() {\n const attrs: N.ImportAttribute[] = [];\n const attributes = new Set();\n do {\n const node = this.startNode<N.ImportAttribute>();\n node.key = this.parseIdentifier(true);\n\n if (node.key.name !== \"type\") {\n this.raise(Errors.ModuleAttributeDifferentFromType, node.key);\n }\n\n if (attributes.has(node.key.name)) {\n this.raise(Errors.ModuleAttributesWithDuplicateKeys, node.key, {\n key: node.key.name,\n });\n }\n attributes.add(node.key.name);\n this.expect(tt.colon);\n if (!this.match(tt.string)) {\n throw this.raise(\n Errors.ModuleAttributeInvalidValue,\n this.state.startLoc,\n );\n }\n node.value = this.parseStringLiteral(this.state.value);\n attrs.push(this.finishNode(node, \"ImportAttribute\"));\n } while (this.eat(tt.comma));\n\n return attrs;\n }\n\n maybeParseImportAttributes(\n node: Undone<\n N.ImportDeclaration | N.ExportNamedDeclaration | N.ExportAllDeclaration\n >,\n ) {\n let attributes: N.ImportAttribute[];\n if (!process.env.BABEL_8_BREAKING) {\n // eslint-disable-next-line no-var\n var useWith = false;\n }\n\n // https://tc39.es/proposal-import-attributes/#prod-WithClause\n if (this.match(tt._with)) {\n if (\n this.hasPrecedingLineBreak() &&\n this.lookaheadCharCode() === charCodes.leftParenthesis\n ) {\n // This will be parsed as a with statement, and we will throw a\n // better error about it not being supported in strict mode.\n return;\n }\n\n this.next(); // eat `with`\n\n if (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"moduleAttributes\")) {\n attributes = this.parseModuleAttributes();\n this.addExtra(node, \"deprecatedWithLegacySyntax\", true);\n } else {\n attributes = this.parseImportAttributes();\n }\n if (!process.env.BABEL_8_BREAKING) {\n useWith = true;\n }\n } else if (\n !process.env.BABEL_8_BREAKING &&\n this.isContextual(tt._assert) &&\n !this.hasPrecedingLineBreak()\n ) {\n if (\n !this.hasPlugin(\"deprecatedImportAssert\") &&\n !this.hasPlugin(\"importAssertions\")\n ) {\n this.raise(Errors.ImportAttributesUseAssert, this.state.startLoc);\n }\n if (!this.hasPlugin(\"importAssertions\")) {\n this.addExtra(node, \"deprecatedAssertSyntax\", true);\n }\n this.next(); // eat `assert`\n attributes = this.parseImportAttributes();\n } else {\n attributes = [];\n }\n\n if (\n !process.env.BABEL_8_BREAKING &&\n !useWith! &&\n this.hasPlugin(\"importAssertions\")\n ) {\n node.assertions = attributes;\n } else {\n node.attributes = attributes;\n }\n }\n\n maybeParseDefaultImportSpecifier(\n node: Undone<N.ImportDeclaration>,\n maybeDefaultIdentifier: N.Identifier | null,\n ): boolean {\n // import defaultObj, { x, y as z } from '...'\n if (maybeDefaultIdentifier) {\n const specifier = this.startNodeAtNode<N.ImportDefaultSpecifier>(\n maybeDefaultIdentifier,\n );\n specifier.local = maybeDefaultIdentifier;\n node.specifiers.push(\n this.finishImportSpecifier(specifier, \"ImportDefaultSpecifier\"),\n );\n return true;\n } else if (\n // We allow keywords, and parseImportSpecifierLocal will report a recoverable error\n tokenIsKeywordOrIdentifier(this.state.type)\n ) {\n this.parseImportSpecifierLocal(\n node,\n this.startNode<N.ImportDefaultSpecifier>(),\n \"ImportDefaultSpecifier\",\n );\n return true;\n }\n return false;\n }\n\n maybeParseStarImportSpecifier(node: Undone<N.ImportDeclaration>): boolean {\n if (this.match(tt.star)) {\n const specifier = this.startNode<N.ImportNamespaceSpecifier>();\n this.next();\n this.expectContextual(tt._as);\n\n this.parseImportSpecifierLocal(\n node,\n specifier,\n \"ImportNamespaceSpecifier\",\n );\n return true;\n }\n return false;\n }\n\n parseNamedImportSpecifiers(node: Undone<N.ImportDeclaration>) {\n let first = true;\n this.expect(tt.braceL);\n while (!this.eat(tt.braceR)) {\n if (first) {\n first = false;\n } else {\n // Detect an attempt to deep destructure\n if (this.eat(tt.colon)) {\n throw this.raise(Errors.DestructureNamedImport, this.state.startLoc);\n }\n\n this.expect(tt.comma);\n if (this.eat(tt.braceR)) break;\n }\n\n const specifier = this.startNode<N.ImportSpecifier>();\n const importedIsString = this.match(tt.string);\n const isMaybeTypeOnly = this.isContextual(tt._type);\n specifier.imported = this.parseModuleExportName();\n const importSpecifier = this.parseImportSpecifier(\n specifier,\n importedIsString,\n node.importKind === \"type\" || node.importKind === \"typeof\",\n isMaybeTypeOnly,\n undefined,\n );\n node.specifiers.push(importSpecifier);\n }\n }\n\n // https://tc39.es/ecma262/#prod-ImportSpecifier\n parseImportSpecifier(\n specifier: Undone<N.ImportSpecifier>,\n importedIsString: boolean,\n /* used in TypeScript and Flow parser */\n isInTypeOnlyImport: boolean,\n isMaybeTypeOnly: boolean,\n bindingType: BindingFlag | undefined,\n ): N.ImportSpecifier {\n if (this.eatContextual(tt._as)) {\n specifier.local = this.parseIdentifier();\n } else {\n const { imported } = specifier;\n if (importedIsString) {\n throw this.raise(Errors.ImportBindingIsString, specifier, {\n importName: (imported as N.StringLiteral).value,\n });\n }\n this.checkReservedWord(\n (imported as N.Identifier).name,\n specifier.loc.start,\n true,\n true,\n );\n if (!specifier.local) {\n specifier.local = this.cloneIdentifier(imported as N.Identifier);\n }\n }\n return this.finishImportSpecifier(\n specifier,\n \"ImportSpecifier\",\n bindingType,\n );\n }\n\n // This is used in flow and typescript plugin\n // Determine whether a parameter is a this param\n isThisParam(\n param: N.Pattern | N.Identifier | N.TSParameterProperty,\n ): boolean {\n return param.type === \"Identifier\" && param.name === \"this\";\n }\n}\n","import type * as N from \"../types.ts\";\nimport { getOptions, OptionFlags } from \"../options.ts\";\nimport StatementParser from \"./statement.ts\";\nimport ScopeHandler from \"../util/scope.ts\";\nimport type { ParserOptions, ParseResult, File } from \"@babel/parser\";\n\nexport type PluginsMap = Map<string, Record<string, any>>;\n\nexport default class Parser extends StatementParser {\n constructor(\n options: ParserOptions | undefined | null,\n input: string,\n pluginsMap: PluginsMap,\n ) {\n const normalizedOptions = getOptions(options);\n super(normalizedOptions, input);\n\n this.options = normalizedOptions;\n this.initializeScopes();\n this.plugins = pluginsMap;\n this.filename = normalizedOptions.sourceFilename;\n this.startIndex = normalizedOptions.startIndex;\n\n let optionFlags = 0;\n if (normalizedOptions.allowAwaitOutsideFunction) {\n optionFlags |= OptionFlags.AllowAwaitOutsideFunction;\n }\n if (normalizedOptions.allowReturnOutsideFunction) {\n optionFlags |= OptionFlags.AllowReturnOutsideFunction;\n }\n if (normalizedOptions.allowImportExportEverywhere) {\n optionFlags |= OptionFlags.AllowImportExportEverywhere;\n }\n if (normalizedOptions.allowSuperOutsideMethod) {\n optionFlags |= OptionFlags.AllowSuperOutsideMethod;\n }\n if (normalizedOptions.allowUndeclaredExports) {\n optionFlags |= OptionFlags.AllowUndeclaredExports;\n }\n if (normalizedOptions.allowNewTargetOutsideFunction) {\n optionFlags |= OptionFlags.AllowNewTargetOutsideFunction;\n }\n if (normalizedOptions.allowYieldOutsideFunction) {\n optionFlags |= OptionFlags.AllowYieldOutsideFunction;\n }\n if (normalizedOptions.ranges) {\n optionFlags |= OptionFlags.Ranges;\n }\n if (normalizedOptions.tokens) {\n optionFlags |= OptionFlags.Tokens;\n }\n if (normalizedOptions.createImportExpressions) {\n optionFlags |= OptionFlags.CreateImportExpressions;\n }\n if (normalizedOptions.createParenthesizedExpressions) {\n optionFlags |= OptionFlags.CreateParenthesizedExpressions;\n }\n if (normalizedOptions.errorRecovery) {\n optionFlags |= OptionFlags.ErrorRecovery;\n }\n if (normalizedOptions.attachComment) {\n optionFlags |= OptionFlags.AttachComment;\n }\n if (normalizedOptions.annexB) {\n optionFlags |= OptionFlags.AnnexB;\n }\n\n this.optionFlags = optionFlags;\n }\n\n // This can be overwritten, for example, by the TypeScript plugin.\n getScopeHandler(): new (...args: any) => ScopeHandler {\n return ScopeHandler;\n }\n\n parse(): ParseResult<File> {\n this.enterInitialScopes();\n const file = this.startNode<N.File>();\n const program = this.startNode<N.Program>();\n this.nextToken();\n // @ts-expect-error define later\n file.errors = null;\n const result = this.parseTopLevel(file, program);\n result.errors = this.state.errors;\n result.comments.length = this.state.commentsLen;\n return result as ParseResult<File>;\n }\n}\n","import type { Options } from \"./options.ts\";\nimport {\n validatePlugins,\n mixinPluginNames,\n mixinPlugins,\n} from \"./plugin-utils.ts\";\nexport type {\n PluginConfig as ParserPlugin,\n DecoratorsPluginOptions,\n FlowPluginOptions,\n PipelineOperatorPluginOptions,\n RecordAndTuplePluginOptions,\n TypeScriptPluginOptions,\n} from \"./typings.ts\";\nimport Parser, { type PluginsMap } from \"./parser/index.ts\";\nimport type { ParseError as ParseErrorGeneric } from \"./parse-error.ts\";\n\nimport type { ExportedTokenType } from \"./tokenizer/types.ts\";\nimport {\n getExportedToken,\n tt as internalTokenTypes,\n type InternalTokenTypes,\n} from \"./tokenizer/types.ts\";\nexport type { Token } from \"./tokenizer/index.ts\";\n\n// TODO: Rather than type-casting the internal AST definitions to the\n// @babel/types one, we should actually unify them.\nimport type { Expression, File } from \"@babel/types\";\nexport type { Expression, File };\n\nexport type ParserOptions = Partial<Options>;\n\nexport type ParseError = ParseErrorGeneric<object>;\nexport type ParseResult<Result extends File | Expression = File> = Result & {\n comments: File[\"comments\"];\n errors: null | ParseError[];\n tokens?: File[\"tokens\"];\n};\n\n/**\n * Parse the provided code as an entire ECMAScript program.\n */\nexport function parse(\n input: string,\n options?: ParserOptions,\n): ParseResult<File> {\n if (options?.sourceType === \"unambiguous\") {\n options = {\n ...options,\n };\n try {\n options.sourceType = \"module\";\n const parser = getParser(options, input);\n const ast = parser.parse();\n\n if (parser.sawUnambiguousESM) {\n return ast;\n }\n\n if (parser.ambiguousScriptDifferentAst) {\n // Top level await introduces code which can be both a valid script and\n // a valid module, but which produces different ASTs:\n // await\n // 0\n // can be parsed either as an AwaitExpression, or as two ExpressionStatements.\n try {\n options.sourceType = \"script\";\n return getParser(options, input).parse();\n } catch {}\n } else {\n // This is both a valid module and a valid script, but\n // we parse it as a script by default\n ast.program.sourceType = \"script\";\n }\n\n return ast;\n } catch (moduleError) {\n try {\n options.sourceType = \"script\";\n return getParser(options, input).parse();\n } catch {}\n\n throw moduleError;\n }\n } else {\n return getParser(options, input).parse();\n }\n}\n\nexport function parseExpression(\n input: string,\n options?: ParserOptions,\n): ParseResult<Expression> {\n const parser = getParser(options, input);\n if (parser.options.strictMode) {\n parser.state.strict = true;\n }\n return parser.getExpression() as ParseResult<Expression>;\n}\n\nfunction generateExportedTokenTypes(\n internalTokenTypes: InternalTokenTypes,\n): Record<string, ExportedTokenType> {\n const tokenTypes: Record<string, ExportedTokenType> = {};\n for (const typeName of Object.keys(\n internalTokenTypes,\n ) as (keyof InternalTokenTypes)[]) {\n tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]);\n }\n return tokenTypes;\n}\n\nexport const tokTypes = generateExportedTokenTypes(internalTokenTypes);\n\nfunction getParser(\n options: ParserOptions | undefined | null,\n input: string,\n): Parser {\n let cls = Parser;\n const pluginsMap: PluginsMap = new Map();\n if (options?.plugins) {\n for (const plugin of options.plugins) {\n let name, opts;\n if (typeof plugin === \"string\") {\n name = plugin;\n } else {\n [name, opts] = plugin;\n }\n if (!pluginsMap.has(name)) {\n pluginsMap.set(name, opts || {});\n }\n }\n validatePlugins(pluginsMap);\n cls = getParserClass(pluginsMap);\n }\n\n return new cls(options, input, pluginsMap);\n}\n\nconst parserClassCache = new Map<string, new (...args: any) => Parser>();\n\n/** Get a Parser class with plugins applied. */\nfunction getParserClass(\n pluginsMap: Map<string, any>,\n): new (...args: any) => Parser {\n const pluginList = [];\n for (const name of mixinPluginNames) {\n if (pluginsMap.has(name)) {\n pluginList.push(name);\n }\n }\n const key = pluginList.join(\"|\");\n let cls = parserClassCache.get(key)!;\n if (!cls) {\n cls = Parser;\n for (const plugin of pluginList) {\n // @ts-expect-error todo(flow->ts)\n cls = mixinPlugins[plugin](cls);\n }\n parserClassCache.set(key, cls);\n }\n return cls;\n}\n"],"names":["Position","constructor","line","col","index","column","SourceLocation","start","end","filename","identifierName","createPositionWithColumnOffset","position","columnOffset","code","ModuleErrors","ImportMetaOutsideModule","message","ImportOutsideModule","NodeDescriptions","ArrayPattern","AssignmentExpression","AssignmentPattern","ArrowFunctionExpression","ConditionalExpression","CatchClause","ForOfStatement","ForInStatement","ForStatement","FormalParameters","Identifier","ImportSpecifier","ImportDefaultSpecifier","ImportNamespaceSpecifier","ObjectPattern","ParenthesizedExpression","RestElement","UpdateExpression","true","false","VariableDeclarator","YieldExpression","toNodeDescription","node","type","prefix","StandardErrors","AccessorIsGenerator","kind","ArgumentsInClass","AsyncFunctionInSingleStatementContext","AwaitBindingIdentifier","AwaitBindingIdentifierInStaticBlock","AwaitExpressionFormalParameter","AwaitUsingNotInAsyncContext","AwaitNotInAsyncContext","BadGetterArity","BadSetterArity","BadSetterRestParameter","ConstructorClassField","ConstructorClassPrivateField","ConstructorIsAccessor","ConstructorIsAsync","ConstructorIsGenerator","DeclarationMissingInitializer","DecoratorArgumentsOutsideParentheses","DecoratorBeforeExport","DecoratorsBeforeAfterExport","DecoratorConstructor","DecoratorExportClass","DecoratorSemicolon","DecoratorStaticBlock","DeferImportRequiresNamespace","DeletePrivateField","DestructureNamedImport","DuplicateConstructor","DuplicateDefaultExport","DuplicateExport","exportName","DuplicateProto","DuplicateRegExpFlags","ElementAfterRest","EscapedCharNotAnIdentifier","ExportBindingIsString","localName","ExportDefaultFromAsIdentifier","ForInOfLoopInitializer","ForInUsing","ForOfAsync","ForOfLet","GeneratorInSingleStatementContext","IllegalBreakContinue","IllegalLanguageModeDirective","IllegalReturn","ImportAttributesUseAssert","ImportBindingIsString","importName","ImportCallArity","ImportCallNotNewExpression","ImportCallSpreadArgument","ImportJSONBindingNotDefault","ImportReflectionHasAssertion","ImportReflectionNotBinding","IncompatibleRegExpUVFlags","InvalidBigIntLiteral","InvalidCodePoint","InvalidCoverDiscardElement","InvalidCoverInitializedName","InvalidDecimal","InvalidDigit","radix","InvalidEscapeSequence","InvalidEscapeSequenceTemplate","InvalidEscapedReservedWord","reservedWord","InvalidIdentifier","InvalidLhs","ancestor","InvalidLhsBinding","InvalidLhsOptionalChaining","InvalidNumber","InvalidOrMissingExponent","InvalidOrUnexpectedToken","unexpected","InvalidParenthesizedAssignment","InvalidPrivateFieldResolution","InvalidPropertyBindingPattern","InvalidRecordProperty","InvalidRestAssignmentPattern","LabelRedeclaration","labelName","LetInLexicalBinding","LineTerminatorBeforeArrow","MalformedRegExpFlags","MissingClassName","MissingEqInAssignment","MissingSemicolon","MissingPlugin","missingPlugin","map","name","JSON","stringify","join","MissingOneOfPlugins","MissingUnicodeEscape","MixingCoalesceWithLogical","ModuleAttributeDifferentFromType","ModuleAttributeInvalidValue","ModuleAttributesWithDuplicateKeys","key","ModuleExportNameHasLoneSurrogate","surrogateCharCode","toString","ModuleExportUndefined","MultipleDefaultsInSwitch","NewlineAfterThrow","NoCatchOrFinally","NumberIdentifier","NumericSeparatorInEscapeSequence","ObsoleteAwaitStar","OptionalChainingNoNew","OptionalChainingNoTemplate","OverrideOnConstructor","ParamDupe","PatternHasAccessor","PatternHasMethod","PrivateInExpectedIn","PrivateNameRedeclaration","RecordExpressionBarIncorrectEndSyntaxType","RecordExpressionBarIncorrectStartSyntaxType","RecordExpressionHashIncorrectStartSyntaxType","RecordNoProto","RestTrailingComma","SloppyFunction","SloppyFunctionAnnexB","SourcePhaseImportRequiresDefault","StaticPrototype","SuperNotAllowed","SuperPrivateField","TrailingDecorator","TupleExpressionBarIncorrectEndSyntaxType","TupleExpressionBarIncorrectStartSyntaxType","TupleExpressionHashIncorrectStartSyntaxType","UnexpectedArgumentPlaceholder","UnexpectedAwaitAfterPipelineBody","UnexpectedDigitAfterHash","UnexpectedImportExport","UnexpectedKeyword","keyword","UnexpectedLeadingDecorator","UnexpectedLexicalDeclaration","UnexpectedNewTarget","UnexpectedNumericSeparator","UnexpectedPrivateField","UnexpectedReservedWord","UnexpectedSuper","UnexpectedToken","expected","UnexpectedTokenUnaryExponentiation","UnexpectedUsingDeclaration","UnexpectedVoidPattern","UnsupportedBind","UnsupportedDecoratorExport","UnsupportedDefaultExport","UnsupportedImport","UnsupportedMetaProperty","target","onlyValidPropertyName","UnsupportedParameterDecorator","UnsupportedPropertyDecorator","UnsupportedSuper","UnterminatedComment","UnterminatedRegExp","UnterminatedString","UnterminatedTemplate","UsingDeclarationExport","UsingDeclarationHasBindingPattern","VarRedeclaration","VoidPatternCatchClauseParam","VoidPatternInitializer","YieldBindingIdentifier","YieldInParameter","YieldNotInGeneratorFunction","ZeroDigitNumericSeparator","StrictModeErrors","StrictDelete","StrictEvalArguments","referenceName","StrictEvalArgumentsBinding","bindingName","StrictFunction","StrictNumericEscape","StrictOctalLiteral","StrictWith","ParseExpressionErrors","ParseExpressionEmptyInput","ParseExpressionExpectsEOF","String","fromCodePoint","UnparenthesizedPipeBodyDescriptions","Set","Object","assign","PipeBodyIsTighter","PipeTopicRequiresHackPipes","PipeTopicUnbound","PipeTopicUnconfiguredToken","token","PipeTopicUnused","PipeUnparenthesizedBody","PipelineBodyNoArrow","PipelineBodySequenceExpression","PipelineHeadSequenceExpression","PipelineTopicUnused","PrimaryTopicNotAllowed","PrimaryTopicRequiresSmartPipeline","defineHidden","obj","value","defineProperty","enumerable","configurable","toParseErrorConstructor","toMessage","reasonCode","syntaxPlugin","hasMissingPlugin","oldReasonCodes","AccessorCannotDeclareThisParameter","AccessorCannotHaveTypeParameters","ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference","SetAccessorCannotHaveOptionalParameter","SetAccessorCannotHaveRestParameter","SetAccessorCannotHaveReturnType","loc","details","error","SyntaxError","pos","clone","overrides","_overrides$loc","get","set","writable","ParseErrorEnum","argument","Array","isArray","parseErrorTemplates","ParseErrorConstructors","keys","template","_ref","rest","_objectWithoutPropertiesLoose","_excluded","Errors","PipelineOperatorErrors","createDefaultOptions","sourceType","sourceFilename","undefined","startIndex","startColumn","startLine","allowAwaitOutsideFunction","allowReturnOutsideFunction","allowNewTargetOutsideFunction","allowImportExportEverywhere","allowSuperOutsideMethod","allowUndeclaredExports","allowYieldOutsideFunction","plugins","strictMode","ranges","tokens","createImportExpressions","createParenthesizedExpressions","errorRecovery","attachComment","annexB","getOptions","opts","options","Error","toUnenumerable","object","toESTreeLocation","estree","superClass","ESTreeParserMixin","parse","file","optionFlags","parseRegExpLiteral","pattern","flags","regex","RegExp","_","estreeParseLiteral","parseBigIntLiteral","bigInt","BigInt","_unused","bigint","parseDecimalLiteral","decimal","parseLiteral","parseStringLiteral","parseNumericLiteral","parseNullLiteral","parseBooleanLiteral","estreeParseChainExpression","endLoc","chain","startNodeAtNode","expression","finishNodeAt","directiveToStmt","directive","castNodeTo","raw","extra","expressionValue","stmt","rawValue","fillOptionalPropertiesForTSESLint","cloneEstreeStringLiteral","range","cloned","create","prototype","initFunction","isAsync","checkDeclaration","isObjectProperty","getObjectOrClassMethodParams","method","params","isValidDirective","_stmt$expression$extr","parenthesized","parseBlockBody","allowDirectives","topLevel","afterBlockParse","directiveStatements","directives","d","body","concat","parsePrivateName","getPluginOption","convertPrivateNameToPrivateIdentifier","getPrivateNameSV","id","isPrivateName","parseFunctionBody","allowExpression","isMethod","parseMethod","isGenerator","isConstructor","allowDirectSuper","inClassScope","funcNode","startNode","typeParameters","resetStartLocationFromNode","valueNode","computed","shorthand","finishNode","nameIsConstructor","parseClassProperty","args","propertyNode","parseClassPrivateProperty","parseClassAccessorProperty","accessorPropertyNode","abstract","hasPlugin","parseObjectProperty","prop","startLoc","isPattern","refExpressionErrors","finishObjectProperty","isValidLVal","disallowCallExpression","isUnparenthesizedInAssign","binding","isAssignable","isBinding","toAssignable","isLHS","classScope","usePrivateName","toAssignableObjectExpressionProp","isLast","raise","finishCallExpression","unfinished","optional","callee","_ref2","source","arguments","attributes","toReferencedArguments","parseExport","decorators","exportStartLoc","state","lastTokStartLoc","exported","specifiers","length","_declaration$decorato","declaration","resetStartLocation","stopParseSubscript","base","optionalChainMember","parseMember","isOptionalMemberExpression","hasPropertyAsPrivateName","isObjectMethod","result","cloneIdentifier","cloneStringLiteral","resetEndLocation","lastTokEndLoc","TokContext","preserveSpace","types","brace","j_oTag","j_cTag","j_expr","beforeExpr","startsExpr","isLoop","isAssign","postfix","ExportedTokenType","label","conf","rightAssociative","binop","updateContext","keywords","Map","createKeyword","createToken","createBinop","tokenTypeCounter","tokenTypes","tokenLabels","tokenBinops","tokenBeforeExprs","tokenStartsExprs","tokenPrefixes","_options$binop","_options$beforeExpr","_options$startsExpr","_options$prefix","push","createKeywordLike","_options$binop2","_options$beforeExpr2","_options$startsExpr2","_options$prefix2","tt","bracketL","bracketHashL","bracketBarL","bracketR","bracketBarR","braceL","braceBarL","braceHashL","braceR","braceBarR","parenL","parenR","comma","semi","colon","doubleColon","dot","question","questionDot","arrow","ellipsis","backQuote","dollarBraceL","templateTail","templateNonTail","at","hash","interpreterDirective","eq","slashAssign","xorAssign","moduloAssign","incDec","bang","tilde","doubleCaret","doubleAt","pipeline","nullishCoalescing","logicalOR","logicalAND","bitwiseOR","bitwiseXOR","bitwiseAND","equality","lt","gt","relational","bitShift","bitShiftL","bitShiftR","plusMin","modulo","star","slash","exponent","_in","_instanceof","_break","_case","_catch","_continue","_debugger","_default","_else","_finally","_function","_if","_return","_switch","_throw","_try","_var","_const","_with","_new","_this","_super","_class","_extends","_export","_import","_null","_true","_false","_typeof","_void","_delete","_do","_for","_while","_as","_assert","_async","_await","_defer","_from","_get","_let","_meta","_of","_sent","_set","_source","_static","_using","_yield","_asserts","_checks","_exports","_global","_implements","_intrinsic","_infer","_is","_mixins","_proto","_require","_satisfies","_keyof","_readonly","_unique","_abstract","_declare","_enum","_module","_namespace","_interface","_type","_opaque","placeholder","string","num","regexp","privateName","eof","jsxName","jsxText","jsxTagStart","jsxTagEnd","tokenIsIdentifier","tokenKeywordOrIdentifierIsKeyword","tokenIsKeywordOrIdentifier","tokenIsLiteralPropertyName","tokenComesBeforeExpression","tokenCanStartExpression","tokenIsAssignment","tokenIsFlowInterfaceOrTypeOrOpaque","tokenIsLoop","tokenIsKeyword","tokenIsOperator","tokenIsPostfix","tokenIsPrefix","tokenIsTSTypeOperator","tokenIsTSDeclarationStart","tokenLabelName","tokenOperatorPrecedence","tokenIsRightAssociative","tokenIsTemplate","getExportedToken","context","pop","tc","nonASCIIidentifierStartChars","nonASCIIidentifierChars","nonASCIIidentifierStart","nonASCIIidentifier","astralIdentifierStartCodes","astralIdentifierCodes","isInAstralSet","i","isIdentifierStart","test","fromCharCode","isIdentifierChar","reservedWords","strict","strictBind","reservedWordsStrictSet","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword","isIteratorStart","current","next","next2","reservedWordLikeSet","canBeReservedWord","Scope","names","firstLexicalName","ScopeHandler","parser","scopeStack","undefinedExports","inTopLevel","currentScope","inFunction","currentVarScopeFlags","allowSuper","currentThisScopeFlags","allowNewTarget","inClass","inClassAndNotInNonArrowFunction","inStaticBlock","ScopeFlag","inNonArrowFunction","inBareCaseStatement","treatFunctionsAsVar","treatFunctionsAsVarInScope","createScope","enter","exit","scope","declareName","bindingType","checkRedeclarationInScope","maybeExportDefined","delete","isRedeclaredInScope","checkLocalExport","topLevelScope","FlowScope","declareFunctions","FlowScopeHandler","add","reservedTypes","FlowErrors","AmbiguousConditionalArrow","AmbiguousDeclareModuleKind","AssignReservedType","reservedType","DeclareClassElement","DeclareClassFieldInitializer","DuplicateDeclareModuleExports","EnumBooleanMemberNotInitialized","memberName","enumName","EnumDuplicateMemberName","EnumInconsistentMemberValues","EnumInvalidExplicitType","invalidEnumType","EnumInvalidExplicitTypeUnknownSupplied","EnumInvalidMemberInitializerPrimaryType","explicitType","EnumInvalidMemberInitializerSymbolType","EnumInvalidMemberInitializerUnknownType","EnumInvalidMemberName","suggestion","EnumNumberMemberNotInitialized","EnumStringMemberInconsistentlyInitialized","GetterMayNotHaveThisParam","ImportReflectionHasImportType","ImportTypeShorthandOnlyInPureImport","InexactInsideExact","InexactInsideNonObject","InexactVariance","InvalidNonTypeImportInDeclareModule","MissingTypeParamDefault","NestedDeclareModule","NestedFlowComment","PatternIsOptional","SetterMayNotHaveThisParam","SpreadVariance","ThisParamAnnotationRequired","ThisParamBannedInConstructor","ThisParamMayNotBeOptional","ThisParamMustBeFirst","ThisParamNoDefault","TypeBeforeInitializer","TypeCastInPattern","UnexpectedExplicitInexactInObject","UnexpectedReservedType","UnexpectedReservedUnderscore","UnexpectedSpaceBetweenModuloChecks","UnexpectedSpreadType","UnexpectedSubtractionOperand","UnexpectedTokenAfterTypeParameter","UnexpectedTypeParameterBeforeAsyncArrowFunction","UnsupportedDeclareExportKind","unsupportedExportKind","UnsupportedStatementInDeclareModule","UnterminatedFlowComment","isEsModuleType","bodyElement","hasTypeImportKind","importKind","exportSuggestions","const","let","interface","partition","list","list1","list2","FLOW_PRAGMA_REGEX","flow","FlowParserMixin","flowPragma","getScopeHandler","shouldParseTypes","finishToken","val","addComment","comment","matches","exec","flowParseTypeInitialiser","tok","oldInType","inType","expect","flowParseType","flowParsePredicate","moduloLoc","expectContextual","eat","parseExpression","flowParseTypeAndPredicateInitialiser","predicate","match","flowParseDeclareClass","flowParseInterfaceish","flowParseDeclareFunction","parseIdentifier","typeNode","typeContainer","flowParseTypeParameterDeclaration","tmp","flowParseFunctionTypeParams","this","returnType","typeAnnotation","semicolon","flowParseDeclare","insideModule","flowParseDeclareVariable","eatContextual","flowParseDeclareModuleExports","flowParseDeclareModule","isContextual","flowParseDeclareTypeAlias","flowParseDeclareOpaqueType","flowParseDeclareInterface","flowParseDeclareExportDeclaration","flowParseTypeAnnotatableIdentifier","parseExprAtom","bodyNode","parseImport","hasModuleExport","forEach","default","isLet","exportKind","flowParseTypeAnnotation","finished","flowParseTypeAlias","flowParseOpaqueType","isClass","flowParseRestrictedIdentifier","extends","flowParseInterfaceExtends","implements","mixins","flowParseObjectType","allowStatic","allowExact","allowSpread","allowProto","allowInexact","flowParseQualifiedTypeIdentifier","flowParseTypeParameterInstantiation","flowParseInterface","checkNotUnderscore","checkReservedType","liberal","right","declare","supertype","impltype","flowParseTypeParameter","requireDefault","nodeStartLoc","variance","flowParseVariance","ident","bound","defaultRequired","typeParameter","flowInTopLevelContext","cb","curContext","oldContext","flowParseTypeParameterInstantiationInExpression","reScan_lt","oldNoAnonFunctionType","noAnonFunctionType","reScan_lt_gt","flowParseTypeParameterInstantiationCallOrNew","flowParseTypeOrImplicitInstantiation","flowParseInterfaceType","flowParseObjectPropertyKey","flowParseObjectTypeIndexer","isStatic","static","lookahead","flowParseObjectTypeInternalSlot","flowParseObjectTypeMethodish","startNodeAt","flowParseFunctionTypeParam","flowParseObjectTypeCallProperty","nodeStart","callProperties","properties","indexers","internalSlots","endDelim","exact","inexact","protoStartLoc","inexactStartLoc","propOrInexact","flowParseObjectTypeProperty","flowObjectTypeSemicolon","out","isInexactToken","proto","flowCheckGetterSetterParams","property","paramCount","node2","qualification","flowParseGenericType","flowParseTypeofType","flowParsePrimaryType","flowParseTupleType","first","lh","isThis","reinterpretTypeAsFunctionTypeParam","flowIdentToTypeAnnotation","isGroupedType","parseLiteralAtNode","createIdentifier","flowParsePostfixType","seenOptionalIndexedAccess","canInsertSemicolon","elementType","objectType","indexType","flowParsePrefixType","flowParseAnonFunctionWithoutParens","param","flowParseIntersectionType","flowParseUnionType","allowPrimitiveOverride","typeCastToParameter","allowExpressionBody","forwardNoArrowParamsConversionAt","parseFunctionBodyAndFinish","parseStatementLike","flowParseEnumDeclaration","parseExpressionStatement","expr","shouldParseExportDeclaration","containsEsc","isExportDefaultSpecifier","parseExportDefaultExpression","parseConditional","maybeInArrowParameters","nextCh","lookaheadCharCode","setOptionalParametersError","originalNoArrowAt","noArrowAt","consequent","failed","tryParseConditionalConsequent","valid","invalid","getArrowLikeExpressions","alternate","parseMaybeAssign","noArrowParamsConversionAt","parseMaybeAssignAllowIn","disallowInvalid","stack","arrows","finishArrowValidation","every","_node$extra","toAssignableList","trailingCommaLoc","checkParams","includes","offsetToSourcePos","parseParenItem","newNode","typeCastNode","assertModuleNodeAllowed","parseExportDeclaration","declarationNode","parseExportSpecifiers","parseExportFrom","eatExportStar","maybeParseExportNamespaceSpecifier","hasNamespace","parseClassId","isStatement","optionalId","parseClassMember","classBody","member","parseClassMemberFromModifier","isIterator","readIterator","readWord1","fullWord","curPosition","getTokenFromCode","input","charCodeAt","finishOp","left","exprList","toReferencedList","isParenthesizedExpr","_expr$extra","parseArrayLike","close","isTuple","elements","isParenthesized","isClassMethod","isClassProperty","isNonstaticConstructor","pushClassMethod","allowsDirectSuper","isThisParam","pushClassPrivateMethod","parseClassSuper","superTypeParameters","implemented","checkGetterSetterParams","parsePropertyNamePrefixOperator","parseObjPropValue","isAccessor","parseFunctionParamType","parseMaybeDefault","checkImportReflection","module","parseImportSpecifierLocal","specifier","local","finishImportSpecifier","isPotentialImportPhase","isExport","ch","applyImportPhase","phase","parseImportSpecifier","importedIsString","isInTypeOnlyImport","isMaybeTypeOnly","firstIdent","imported","specifierTypeKind","isLookaheadContextual","as_ident","specifierIsTypeImport","checkReservedWord","parseBindingAtom","parseFunctionParams","parseVarId","decl","parseAsyncArrowFromCallExpression","call","shouldParseAsyncArrow","afterLeftParse","_jsx","jsx","tryParse","currentContext","_jsx2","_jsx3","abort","_arrowExpression$extr","arrowExpression","maybeUnwrapTypeCastExpression","aborted","async","failState","thrown","parseArrow","shouldParseArrow","setArrowFunctionParameters","allowDuplicates","isArrowFunction","strictModeChanged","parseParenAndDistinguishExpression","canBeArrow","sourceToOffsetPos","parseSubscripts","noCalls","parseCallExpressionArguments","parseAsyncArrowWithTypeParameters","parseSubscript","subscriptState","isLookaheadToken_lt","stop","typeArguments","parseNewCallee","targs","parseArrowExpression","readToken_mult_modulo","hasFlowComment","nextToken","readToken_pipe_amp","parseTopLevel","program","fileNode","skipBlockComment","skipFlowComment","hasFlowCommentCompletion","commentSkip","shiftToFirstNonWhiteSpace","ch2","ch3","slice","indexOf","flowEnumErrorBooleanMemberNotInitialized","flowEnumErrorInvalidMemberInitializer","enumContext","flowEnumErrorNumberMemberNotInitialized","flowEnumErrorStringMemberInconsistentlyInitialized","flowEnumMemberInit","endOfInit","literal","flowEnumMemberRaw","init","flowEnumCheckExplicitTypeMismatch","expectedType","flowEnumMembers","seenNames","members","booleanMembers","numberMembers","stringMembers","defaultedMembers","hasUnknownMembers","memberNode","toUpperCase","flowEnumStringMembers","initializedMembers","flowEnumParseExplicitType","flowEnumBody","nameLoc","empty","boolsLen","numsLen","strsLen","defaultedLen","jsxParseOpeningElementAfterName","nextTokenStart","afterNext","readToken_lt","readToken_gt","entities","__proto__","quot","amp","apos","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","copy","ordf","laquo","not","shy","reg","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","times","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","divide","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","OElig","oelig","Scaron","scaron","Yuml","fnof","circ","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","alpha","beta","gamma","delta","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omicron","pi","rho","sigmaf","sigma","tau","upsilon","phi","chi","psi","omega","thetasym","upsih","piv","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","bull","hellip","permil","prime","Prime","lsaquo","rsaquo","oline","frasl","euro","image","weierp","real","trade","alefsym","larr","uarr","rarr","darr","harr","crarr","lArr","uArr","rArr","dArr","hArr","forall","part","exist","nabla","isin","notin","ni","prod","sum","minus","lowast","radic","infin","ang","and","or","cap","cup","int","there4","sim","cong","asymp","ne","equiv","le","ge","sub","sup","nsub","sube","supe","oplus","otimes","perp","sdot","lceil","rceil","lfloor","rfloor","lang","rang","loz","spades","clubs","hearts","diams","lineBreak","lineBreakG","isNewLine","hasNewLine","skipWhiteSpace","skipWhiteSpaceInLine","isWhitespace","JsxErrors","AttributeIsEmpty","MissingClosingTagElement","openingTagName","MissingClosingTagFragment","UnexpectedSequenceExpression","HTMLEntity","UnsupportedJsxValue","UnterminatedJsxContent","UnwrappedAdjacentJSXElements","isFragment","getQualifiedJSXName","namespace","JSXParserMixin","jsxReadToken","chunkStart","canStartJSXElement","jsxReadEntity","jsxReadNewLine","normalizeCRLF","curLine","lineStart","jsxReadString","quote","startPos","codePointAtPos","codePoint","readInt","count","desc","entity","XHTMLEntities","jsxReadWord","jsxParseIdentifier","jsxParseNamespacedName","jsxParseElementName","jsxParseAttributeValue","setContext","jsxParseExpressionContainer","jsxParseEmptyExpression","jsxParseSpreadChild","previousContext","jsxParseAttribute","jsxParseOpeningElementAt","selfClosing","jsxParseClosingElementAt","jsxParseElementAt","children","openingElement","closingElement","contents","openingFragment","closingFragment","jsxParseElement","newContext","replaceToken","skipSpace","prevType","splice","TypeScriptScope","tsNames","TypeScriptScopeHandler","importsStack","hasImport","allowShadow","len","isConst","wasConst","ProductionParameterHandler","stacks","currentFlags","hasAwait","hasYield","hasReturn","hasIn","functionFlags","BaseParser","sawUnambiguousESM","ambiguousScriptDifferentAst","sourcePos","offsetPos","pluginConfig","pluginName","pluginOptions","actualOptions","plugin","_this$plugins$get","setTrailingComments","comments","trailingComments","unshift","setLeadingComments","leadingComments","setInnerComments","innerComments","adjustInnerComments","commentWS","lastElement","CommentsParser","commentsLen","processComment","commentStack","commentStackLength","lastCommentWS","leadingNode","commentEnd","containingNode","finalizeComment","trailingNode","_node$options","commentStart","finalizeRemainingComments","resetPreviousNodeTrailingComments","takeSurroundingComments","State","errors","potentialArrowAt","topicContext","maxNumOfResolvableTopics","maxTopicIndex","labels","ct","firstInvalidTemplateEscapePos","strictErrors","tokensLength","v","isAmbientContext","inAbstractClass","inDisallowConditionalTypesContext","soloAwait","inFSharpPipelineDirectBody","hasTopLevelAwait","isDigit","forbiddenNumericSeparatorSiblings","decBinOct","hex","isAllowedNumericSeparatorSibling","bin","oct","dec","readStringContents","initialPos","initialLineStart","initialCurLine","firstInvalidLoc","unterminated","isStringEnd","res","readEscapedChar","str","containsInvalid","inTemplate","throwOnInvalid","readHexChar","readCodePoint","strictNumericEscape","octalStr","octal","parseInt","forceLen","n","invalidEscapeSequence","allowNumSeparator","bailOnError","forbiddenSiblings","isAllowedSibling","total","e","Infinity","prev","numericSeparatorInEscapeSequence","Number","isNaN","unexpectedNumericSeparator","_isDigit","invalidDigit","invalidCodePoint","buildPosition","VALID_REGEX_FLAGS","Token","Tokenizer","isLookahead","errorHandlers_readInt","errorBuilder","errorHandlers_readCodePoint","errorHandlers_readStringContents_string","recordStrictModeErrors","errorHandlers_readStringContents_template","pushToken","checkKeywordEscapes","createLookaheadState","old","curr","nextTokenStartSince","lastIndex","lookaheadCharCodeSince","nextTokenInLineStart","nextTokenInLineStartSince","lookaheadInLineCharCode","cp","trail","setStrict","toParseError","clear","skipLineComment","startSkip","spaceStart","loop","commentWhitespace","readToken_numberSign","readToken_interpreter","nextPos","expectPlugin","readToken_dot","readNumber","readToken_slash","width","readToken_caret","proposal","topicToken","lookaheadCh","codePointAt","readToken_atSign","readToken_plus_min","size","readToken_eq_excl","readToken_question","readTemplateToken","readRadixNumber","readString","readWord","readRegexp","escaped","content","mods","char","isBigInt","replace","startsWithDot","isFloat","hasExponent","isOctal","hasLeadingZero","integer","underscorePos","isDecimal","parseFloat","readTemplateContinuation","opening","firstCode","escStart","identifierCheck","esc","keywordTypes","raiseOverwrite","expectOnePlugin","pluginNames","some","ClassScope","privateNames","loneAccessors","undefinedPrivateNames","ClassScopeHandler","oldClassScope","from","declarePrivateName","redefined","accessor","oldStatic","newStatic","oldKind","newKind","ExpressionScope","canBeArrowParameterDeclaration","isCertainlyParameterDeclaration","ArrowHeadParsingScope","declarationErrors","recordDeclarationError","ParsingErrorClass","clearDeclarationError","iterateErrors","iterator","ExpressionScopeHandler","recordParameterInitializerError","origin","recordArrowParameterBindingError","recordAsyncArrowParametersError","validateAsPattern","newParameterDeclarationScope","newArrowHeadScope","newAsyncArrowScope","newExpressionScope","UtilParser","addExtra","isUnparsedContextual","nameStart","startsWith","hasPrecedingLineBreak","hasFollowingLineBreak","isLineTerminator","allowAsi","fn","oldState","abortSignal","checkExpressionErrors","andThrow","shorthandAssignLoc","doubleProtoLoc","privateKeyLoc","optionalParametersLoc","voidPatternLoc","hasErrors","isLiteralPropertyName","initializeScopes","oldLabels","oldExportedIdentifiers","exportedIdentifiers","oldInModule","oldScope","oldProdParam","prodParam","oldExpressionScope","expressionScope","enterInitialScopes","paramFlags","isCommonJS","scopeFlags","checkDestructuringPrivate","ExpressionErrors","Node","NodePrototype","__clone","NodeUtils","locationNode","unwrapParenthesizedExpression","LValParser","_node$extra3","last","_node$extra2","operator","arg","checkToRestConversion","elt","toAssignableListItem","element","toReferencedListDeep","parseSpread","parseRestBinding","parseBindingList","ParseBindingListFlags","parseObjectLike","parseVoidPattern","closeCharCode","allowEmpty","elts","checkCommaAfterRest","parseDecorator","parseBindingElement","parseBindingRestProperty","parseBindingProperty","parsePropertyName","checkLVal","checkClashes","hasParenthesizedAncestor","_expression$extra","checkIdentifier","unwrappedExpression","validity","ParseErrorClass","isParenthesizedExpression","nextAncestor","child","declareNameFromIdentifier","identifier","allowPattern","keywordAndTSRelationalOperator","nonNull","x","assert","TSErrors","AbstractMethodHasImplementation","methodName","AbstractPropertyHasInitializer","propertyName","AccessorCannotBeOptional","ClassMethodHasDeclare","ClassMethodHasReadonly","ConstructorHasTypeParameters","DeclareAccessor","DeclareClassFieldHasInitializer","DeclareFunctionHasImplementation","DuplicateAccessibilityModifier","modifier","DuplicateModifier","EmptyHeritageClauseType","EmptyTypeArguments","EmptyTypeParameters","ExpectedAmbientAfterExportDeclare","ImportAliasHasImportType","IncompatibleModifiers","modifiers","IndexSignatureHasAbstract","IndexSignatureHasAccessibility","IndexSignatureHasDeclare","IndexSignatureHasOverride","IndexSignatureHasStatic","InitializerNotAllowedInAmbientContext","InvalidHeritageClauseType","InvalidModifierOnAwaitUsingDeclaration","InvalidModifierOnTypeMember","InvalidModifierOnTypeParameter","InvalidModifierOnTypeParameterPositions","InvalidModifierOnUsingDeclaration","InvalidModifiersOrder","orderedModifiers","InvalidPropertyAccessAfterInstantiationExpression","InvalidTupleMemberLabel","MissingInterfaceName","NonAbstractClassHasAbstractMethod","NonClassMethodPropertyHasAbstractModifier","OptionalTypeBeforeRequired","OverrideNotInSubClass","PrivateElementHasAbstract","PrivateElementHasAccessibility","ReadonlyForMethodSignature","ReservedArrowTypeParam","ReservedTypeAssertion","SingleTypeParameterWithoutTrailingComma","typeParameterName","StaticBlockCannotHaveModifier","TupleOptionalAfterType","TypeAnnotationAfterAssign","TypeImportCannotSpecifyDefaultAndNamed","TypeModifierIsUsedInTypeExports","TypeModifierIsUsedInTypeImports","UnexpectedParameterModifier","UnexpectedReadonly","UnexpectedTypeAnnotation","UnexpectedTypeCastInParameter","UnsupportedImportTypeArgument","UnsupportedParameterPropertyKind","UnsupportedSignatureParameterKind","UsingDeclarationInAmbientContext","keywordTypeFromName","tsIsAccessModifier","tsIsVarianceAnnotations","typescript","TypeScriptParserMixin","tsParseInOutModifiers","tsParseModifiers","bind","allowedModifiers","disallowedModifiers","errorTemplate","tsParseConstModifier","tsParseInOutConstModifiers","tsIsIdentifier","tsTokenCanFollowModifier","tsNextTokenOnSameLineAndCanFollowModifier","tsNextTokenCanFollowModifier","tsParseModifier","stopOnStartOfClassStaticBlock","hasSeenStaticModifier","tsIsStartOfStaticBlocks","tsTryParse","modified","enforceOrder","before","after","incompatible","mod1","mod2","accessibility","hasOwnProperty","tsIsListTerminator","tsParseList","parseElement","tsParseDelimitedList","refTrailingCommaPos","tsParseDelimitedListWorker","expectSuccess","trailingCommaPos","tsParseBracketedList","bracket","skipFirstToken","tsParseImportType","tsParseImportTypeOptions","qualifier","tsParseEntityName","tsParseEntityNameFlags","tsParseTypeArguments","withProperty","tsParseImportTypeWithPropertyValue","parsePropertyDefinition","tsParseTypeReference","typeName","tsParseThisTypePredicate","lhs","parameterName","tsParseTypeAnnotation","asserts","tsParseThisTypeNode","tsParseTypeQuery","exprName","tsParseTypeParameter","parseModifiers","tsParseTypeParameterName","constraint","tsEatThenParseType","tsTryParseTypeParameters","tsParseTypeParameters","tsFillSignature","returnToken","signature","returnTokenRequired","paramsKey","returnTypeKey","tsParseBindingListForSignature","tsParseTypeOrTypePredicateAnnotation","tsParseTypeMemberSemicolon","tsParseSignatureMember","tsIsUnambiguouslyIndexSignature","tsTryParseIndexSignature","tsLookAhead","parameters","tsTryParseTypeAnnotation","tsParsePropertyOrMethodSignature","readonly","firstParameter","tsParseTypeMember","idx","tsParseTypeLiteral","tsParseObjectTypeMembers","tsIsStartOfMappedType","tsParseMappedType","tsExpectThenParseType","nameType","tsParseType","tsTryParseType","tsParseTupleType","elementTypes","tsParseTupleElementType","seenOptionalElement","elementNode","restStartLoc","labeled","isWord","chAfterWord","wordName","typeOrLabel","tsParseNonArrayType","labeledNode","optionalTypeNode","restNode","tsParseParenthesizedType","tsParseFunctionOrConstructorType","tsInAllowConditionalTypesContext","tsParseLiteralTypeNode","tsParseTemplateLiteralType","parseTemplate","parseTemplateSubstitution","tsParseThisTypeOrThisTypePredicate","thisKeyword","parseMaybeUnary","nodeType","tsParseArrayTypeOrHigher","tsParseTypeOperator","tsParseTypeOperatorOrHigher","tsCheckTypeAnnotationForReadOnly","tsParseInferType","tsParseConstraintForInferType","tsInDisallowConditionalTypesContext","isTypeOperator","tsParseUnionOrIntersectionType","parseConstituentType","hasLeadingOperator","tsParseIntersectionTypeOrHigher","tsParseUnionTypeOrHigher","tsIsStartOfFunctionType","tsIsUnambiguouslyStartOfFunctionType","tsSkipParameterStart","previousErrorCount","_unused2","tsInType","t","tsParseTypePredicateAsserts","thisTypePredicate","typePredicateVariable","tsParseTypePredicatePrefix","tsTryParseTypeOrTypePredicateAnnotation","eatColon","tsParseNonConditionalType","checkType","extendsType","trueType","falseType","isAbstractConstructorSignature","tsParseTypeAssertion","tsParseHeritageClause","originalStartLoc","delimitedList","tsParseInterfaceDeclaration","tsParseTypeAliasDeclaration","tsInTopLevelContext","oldInDisallowConditionalTypesContext","tsNextThenParseType","tsParseEnumMember","initializer","tsParseEnumDeclaration","tsParseEnumBody","tsParseModuleBlock","parseBlockOrModuleBlockBody","tsParseModuleOrNamespaceDeclaration","nested","inner","tsParseAmbientExternalModuleDeclaration","global","tsParseImportEqualsDeclaration","maybeDefaultIdentifier","moduleReference","tsParseModuleReference","tsIsExternalModuleReference","tsParseExternalModuleReference","f","tsTryParseAndCatch","tsTryParseDeclare","startType","tsInAmbientContext","parseFunctionStatement","parseClass","parseVarStatement","isUsing","isAwaitUsing","tsParseDeclaration","tsTryParseExportDeclaration","tsCheckLineTerminator","tsParseAbstractDeclaration","tsTryParseGenericAsyncArrowFunction","oldMaybeInArrowParameters","tsParseTypeArgumentsInExpression","tsIsDeclarationStart","override","pp","parameter","isSimpleParameter","tsDisallowOptionalPattern","bodilessType","registerFunctionStatementId","tsCheckForInvalidTypeCasts","items","isInParens","nonNullExpression","isOptionalCall","missingParenErrorLoc","atPossibleAsyncArrow","asyncArrowFn","parseTaggedTemplateExpression","tokenType","_callee$extra","parseExprOp","leftStartLoc","minPrec","isSatisfies","checkKeywords","checkDuplicateExports","importNode","parseMaybeImportPhase","parseImportSpecifiersAndAfter","nodeImportEquals","isAbstractClass","cls","allowMissingInitializer","declarations","isValidAmbientConstInitializer","parseStatementContent","nextTokenIsIdentifierAndNotTSRelationalOperatorOnSameLine","nextTokenIsIdentifierOrStringLiteralOnSameLine","nextTokenIsIdentifierOnSameLine","parseAccessModifier","tsHasSomeModifiers","callParseClassMemberWithIsStatic","parseClassStaticBlock","parseClassMemberWithIsStatic","hadSuperClass","parsePostMemberNameModifiers","methodOrProp","isDeclare","isIdentifier","parseClassPropertyAnnotation","definite","declareClassPrivateMethodInScope","tsInstantiationExpression","superTypeArguments","_typeCast","_typeCast2","typeCast","_typeParameters","reportReservedArrowTypeParam","trailingComma","sawUnary","toAssignableParenthesizedExpression","parseMaybeDecoratorArguments","canHaveLeadingDecorator","getGetterSetterExpectedParamCount","baseCount","firstParam","hasContextParam","parseCatchClauseParam","oldIsAmbientContext","oldStrict","oldInAbstractClass","maybeTakeDecorators","hasEstreePlugin","methodFn","shouldParseAsAmbientContext","getExpression","parseExportSpecifier","isString","isInTypeExport","parseTypeOnlyImportExportSpecifier","isImport","isInTypeOnlyImportExport","leftOfAsKey","rightOfAsKey","leftOfAs","rightOfAs","hasTypeSpecifier","canParseAsKeyword","firstAs","secondAs","parseModuleExportName","kindKey","_node$directive","_node$decorators","_node$optional","_node$typeAnnotation","_node$accessibility","_node$decorators2","_node$override","_node$readonly","_node$static","_node$declare","_node$returnType","_node$typeParameters","_node$optional2","_node$optional3","_node$accessibility2","_node$readonly2","_node$static2","_node$declare2","_node$definite","_node$readonly3","_node$typeAnnotation2","_node$accessibility3","_node$decorators3","_node$override2","_node$optional4","_node$id","_node$abstract","_node$declare3","_node$decorators4","_node$implements","_node$superTypeArgume","_node$typeParameters2","_node$declare4","_node$definite2","_node$const","_node$declare5","_node$computed","_node$qualifier","_node$declare6","_node$extends","_node$optional5","_node$readonly4","_node$declare7","_node$global","_node$const2","_node$in","_node$out","in","chStartsBindingIdentifierAndNotRelationalOperator","endCh","chStartsBindingIdentifier","isPossiblyLiteralEnum","expressions","isUncomputedMemberExpressionChain","isNumber","isNegativeNumber","PlaceholderErrors","ClassNameIsRequired","UnexpectedSpace","placeholders","PlaceholdersParserMixin","parsePlaceholder","expectedNode","assertNoSpace","finishPlaceholder","verifyBreakContinue","isBreak","_node$label","parseStatementOrSloppyAnnexBFunctionDeclaration","stmtPlaceholder","parseBlock","createNewLexicalScope","parseFunctionId","requireId","parseClassBody","maybeParseExportDefaultSpecifier","_specifiers","checkExport","filter","hasStarImport","maybeParseStarImportSpecifier","parseNamedImportSpecifiers","parseImportSource","v8intrinsic","V8IntrinsicMixin","parseV8Intrinsic","v8IntrinsicStartLoc","parseIdentifierName","PIPELINE_PROPOSALS","TOPIC_TOKENS","validatePlugins","pluginsMap","decoratorsBeforeExport","allowCallParenthesized","_pluginsMap$get2","proposalList","p","_pluginsMap$get","tokenList","syntaxType","moduleAttributesVersionPluginOption","version","deprecatedAssertSyntax","RECORD_AND_TUPLE_SYNTAX_TYPES","missingPlugins","mixinPlugins","mixinPluginNames","ExpressionParser","checkProto","isRecord","sawProto","shouldExitDescending","disallowIn","disallowInAnd","parseExpressionBase","allowInAnd","parseMaybeAssignDisallowIn","isYield","parseYield","ownExpressionErrors","parseMaybeConditional","isAmbiguousPrefixOrIdentifier","parseExprOps","parseMaybeUnaryOrPrivate","op","prec","checkPipelineAtInfixOperator","logical","coalesce","parseExprOpRightExpr","finishedNode","nextOp","withTopicBindingContext","parseHackPipeBody","withSoloAwaitPermittingContext","parseFSharpPipelineBody","parseSmartPipelineBodyInStyle","parseExprOpBaseRightExpr","_body$extra","requiredParentheses","topicReferenceWasUsedInCurrentContext","checkExponentialAfterUnary","isAwait","recordAwaitIfAllowed","parseAwait","update","isDelete","parseUpdate","updateExpressionNode","parseExprSubscripts","maybeAsyncArrow","parseBind","parseCoverCallAndAsyncArrowHead","parseNoCallExpr","tag","quasi","allowPlaceholder","nodeForExtra","oldInFSharpPipelineDirectBody","addTrailingCommaExtraToNode","parseExprListItem","_call$extra","parseSuper","parseImportMetaPropertyOrPhaseCall","parseImportCall","parseDo","parseFunctionOrFunctionSent","parseDecorators","parseNewOrNewTarget","parseTopicReferenceThenEqualsSign","parseTopicReference","pipeProposal","parseModuleExpression","parseAsyncFunctionExpression","parseAsyncArrowUnaryFunction","topicTokenType","topicTokenValue","finishTopicReference","testTopicReferenceConfiguration","topicReferenceIsAllowedInCurrentContext","registerTopicReference","meta","parseMetaProperty","parseFunction","isSource","createIdentifierAt","innerStartLoc","spreadStartLoc","optionalCommaStartLoc","spreadNodeStartLoc","parseMaybeAssignAllowInOrVoidPattern","innerEndLoc","arrowNode","wrapParenthesis","parenExpression","metaProp","parseNew","parseExprList","parseTemplateElement","isTagged","elemStart","elem","isTail","endOffset","elemEnd","cooked","tail","curElt","quasis","substitutions","maybeAsyncOrAccessorProp","keyName","_params","parseObjectMethod","finishedProp","generator","isExpression","hasStrictModeDirective","nonSimple","isSimpleParamList","formalParameters","reservedTest","isAwaitAllowed","delegating","delegate","childExpr","isSimpleReference","checkSmartPipeTopicBodyEarlyErrors","callback","outerContextTopicState","withSmartMixTopicForbiddingContext","outerContextSoloAwaitState","prodParamToSet","ParamKind","prodParamToClear","ret","revertScopes","parseProgram","nextCode","loopLabel","switchLabel","loneSurrogate","keywordRelationalOperator","babel7CompatTokens","hashEndPos","hashEndLoc","backquoteEnd","backquoteEndLoc","startToken","templateValue","templateElementEnd","templateElementEndLoc","endToken","StatementParser","interpreter","parseInterpreterDirective","finishedProgram","stmtToDirective","directiveLiteral","hasFollowingBindingAtom","isForUsing","nextCharAfterOf","chStartsBindingPattern","hasInLineFollowingBindingIdentifierOrBrace","allowsUsing","parseModuleItem","ParseStatementFlag","parseStatementListItem","allowLabeledFunction","parseStatement","allowDeclaration","allowFunctionDeclaration","parseBreakContinueStatement","parseDebuggerStatement","parseDoWhileStatement","parseForStatement","parseIfStatement","parseReturnStatement","parseSwitchStatement","parseThrowStatement","parseTryStatement","parseWhileStatement","parseWithStatement","parseEmptyStatement","nextTokenCharCode","isAsyncFunction","maybeName","parseLabeledStatement","decoratorsEnabledBeforeExport","maybeDecorators","classNode","exportNode","_classNode$decorators","allowExport","paramsStartLoc","lab","parseHeaderExpression","awaitAt","parseFor","startsWithLet","startsWithAwaitUsing","starsWithUsingDeclaration","isLetOrUsing","initNode","parseVar","isForIn","parseForIn","startsWithAsync","isForOf","isHangingDeclaration","ParseFunctionFlag","discriminant","cases","cur","sawDefault","isCase","block","handler","clause","finalizer","statementStart","parsedNonDirective","await","isFor","hangingDeclaration","isDeclaration","hadConstructor","publicMethod","privateMethod","publicProp","privateProp","accessorProp","publicMember","parseClassElementName","maybeContextualKw","isPrivate","maybeQuestionTokenStartLoc","pushClassPrivateProperty","pushClassProperty","pushClassAccessorProperty","_member$decorators","parseInitializer","hasDefault","parseAfterDefault","hasStar","parseAfterNamespace","isFromRequired","hasSpecifiers","maybeParseExportNamedSpecifiers","hasDeclaration","maybeParseExportDeclaration","_node2$declaration","_ref$specifiers","isTypeExport","assertions","nextChar","hasFrom","nextAfterFrom","maybeParseImportAttributes","checkJSONModuleImport","checkNames","isDefault","isFrom","_node$specifiers","_declaration$extra","nodes","surrogate","isJSONModuleImport","singleBindingType","_node$assertions","nonDefaultNamedSpecifier","find","phaseIdentifier","phaseIdentifierName","isImportPhase","isPrecedingIdImportPhase","parseImportSourceAndAttributes","maybeParseDefaultImportSpecifier","parseNext","_node$specifiers2","parseImportAttributes","attrs","attrNames","parseModuleAttributes","useWith","importSpecifier","Parser","normalizedOptions","_options","getParser","ast","moduleError","generateExportedTokenTypes","internalTokenTypes","tokTypes","getParserClass","parserClassCache","pluginList"],"mappings":"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,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,CAAC;AAEjnD,MAAMC,qBAAqB,GAAG,CAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,MAAM,EAAC,GAAG,CAAC;AAK52B,SAASC,aAAaA,CAAChqB,IAAY,EAAE8Q,GAAsB,EAAW;EACpE,IAAIL,GAAG,GAAG,OAAO;EACjB,KAAK,IAAIwZ,CAAC,GAAG,CAAC,EAAEnO,MAAM,GAAGhL,GAAG,CAACgL,MAAM,EAAEmO,CAAC,GAAGnO,MAAM,EAAEmO,CAAC,IAAI,CAAC,EAAE;IACvDxZ,GAAG,IAAIK,GAAG,CAACmZ,CAAC,CAAC;IACb,IAAIxZ,GAAG,GAAGzQ,IAAI,EAAE,OAAO,KAAK;IAE5ByQ,GAAG,IAAIK,GAAG,CAACmZ,CAAC,GAAG,CAAC,CAAC;IACjB,IAAIxZ,GAAG,IAAIzQ,IAAI,EAAE,OAAO,IAAI;EAC9B;EACA,OAAO,KAAK;AACd;AAIO,SAASkqB,iBAAiBA,CAAClqB,IAAY,EAAW;EACvD,IAAIA,IAAI,GAAA,EAAuB,EAAE,OAAOA,IAAI,KAAyB,EAAA;EACrE,IAAIA,IAAI,IAAA,EAAwB,EAAE,OAAO,IAAI;EAC7C,IAAIA,IAAI,GAAA,EAAuB,EAAE,OAAOA,IAAI,KAAyB,EAAA;EACrE,IAAIA,IAAI,IAAA,GAAwB,EAAE,OAAO,IAAI;EAC7C,IAAIA,IAAI,IAAI,MAAM,EAAE;IAClB,OACEA,IAAI,IAAI,IAAI,IAAI4pB,uBAAuB,CAACO,IAAI,CAACnc,MAAM,CAACoc,YAAY,CAACpqB,IAAI,CAAC,CAAC;EAE3E;EACA,OAAOgqB,aAAa,CAAChqB,IAAI,EAAE8pB,0BAA0B,CAAC;AACxD;AAIO,SAASO,gBAAgBA,CAACrqB,IAAY,EAAW;EACtD,IAAIA,IAAI,GAAA,EAAmB,EAAE,OAAOA,IAAI,KAAyB,EAAA;EACjE,IAAIA,IAAI,GAAA,EAAkB,EAAE,OAAO,IAAI;EACvC,IAAIA,IAAI,GAAA,EAAuB,EAAE,OAAO,KAAK;EAC7C,IAAIA,IAAI,IAAA,EAAwB,EAAE,OAAO,IAAI;EAC7C,IAAIA,IAAI,GAAA,EAAuB,EAAE,OAAOA,IAAI,KAAyB,EAAA;EACrE,IAAIA,IAAI,IAAA,GAAwB,EAAE,OAAO,IAAI;EAC7C,IAAIA,IAAI,IAAI,MAAM,EAAE;IAClB,OAAOA,IAAI,IAAI,IAAI,IAAI6pB,kBAAkB,CAACM,IAAI,CAACnc,MAAM,CAACoc,YAAY,CAACpqB,IAAI,CAAC,CAAC;EAC3E;EACA,OACEgqB,aAAa,CAAChqB,IAAI,EAAE8pB,0BAA0B,CAAC,IAC/CE,aAAa,CAAChqB,IAAI,EAAE+pB,qBAAqB,CAAC;AAE9C;AClFA,MAAMO,aAAa,GAAG;EACpBvf,OAAO,EAAE,CACP,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,SAAS,EACT,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EACL,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,MAAM,EACN,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,QAAQ,CACT;EACDwf,MAAM,EAAE,CACN,YAAY,EACZ,WAAW,EACX,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,CACR;EACDC,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW;AAClC,CAAC;AACD,MAAMxM,QAAQ,GAAG,IAAI7P,GAAG,CAACmc,aAAa,CAACvf,OAAO,CAAC;AAC/C,MAAM0f,sBAAsB,GAAG,IAAItc,GAAG,CAACmc,aAAa,CAACC,MAAM,CAAC;AAC5D,MAAMG,0BAA0B,GAAG,IAAIvc,GAAG,CAACmc,aAAa,CAACE,UAAU,CAAC;AAK7D,SAASG,cAAcA,CAACC,IAAY,EAAEC,QAAiB,EAAW;EACvE,OAAQA,QAAQ,IAAID,IAAI,KAAK,OAAO,IAAKA,IAAI,KAAK,MAAM;AAC1D;AAOO,SAASE,oBAAoBA,CAACF,IAAY,EAAEC,QAAiB,EAAW;EAC7E,OAAOF,cAAc,CAACC,IAAI,EAAEC,QAAQ,CAAC,IAAIJ,sBAAsB,CAACM,GAAG,CAACH,IAAI,CAAC;AAC3E;AAMO,SAASI,4BAA4BA,CAACJ,IAAY,EAAW;EAClE,OAAOF,0BAA0B,CAACK,GAAG,CAACH,IAAI,CAAC;AAC7C;AAOO,SAASK,wBAAwBA,CACtCL,IAAY,EACZC,QAAiB,EACR;EACT,OACEC,oBAAoB,CAACF,IAAI,EAAEC,QAAQ,CAAC,IAAIG,4BAA4B,CAACJ,IAAI,CAAC;AAE9E;AAEO,SAASM,SAASA,CAACN,IAAY,EAAW;EAC/C,OAAO5M,QAAQ,CAAC+M,GAAG,CAACH,IAAI,CAAC;AAC3B;AC9EO,SAASO,eAAeA,CAC7BC,OAAe,EACfC,IAAY,EACZC,KAAa,EACJ;EACT,OACEF,OAAO,OAAqB,IAC5BC,IAAI,OAAqB,IACzBnB,iBAAiB,CAACoB,KAAK,CAAC;AAE5B;AAOA,MAAMC,mBAAmB,GAAG,IAAIpd,GAAG,CAAC,CAClC,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,SAAS,EACT,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EACL,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,MAAM,EACN,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,QAAQ,EAER,YAAY,EACZ,WAAW,EACX,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,EAEP,MAAM,EACN,WAAW,EAEX,MAAM,EACN,OAAO,CACR,CAAC;AAEK,SAASqd,iBAAiBA,CAACZ,IAAY,EAAW;EACvD,OAAOW,mBAAmB,CAACR,GAAG,CAACH,IAAI,CAAC;AACtC;AC1EO,MAAMa,KAAK,CAAC;EAKjBtsB,WAAWA,CAACiV,KAAgB,EAAE;IAAA,IAJ9BA,CAAAA,KAAK,GAAc,CAAC;IAAA,IAAA,CACpBsX,KAAK,GAAG,IAAIzN,GAAG,EAAoB;IAAA,IACnC0N,CAAAA,gBAAgB,GAAG,EAAE;IAGnB,IAAI,CAACvX,KAAK,GAAGA,KAAK;EACpB;AACF;AAIe,MAAMwX,YAAY,CAA+B;EAM9DzsB,WAAWA,CAAC0sB,MAAiB,EAAEhB,QAAiB,EAAE;IAAA,IAAA,CALlDgB,MAAM,GAAA,KAAA,CAAA;IAAA,IACNC,CAAAA,UAAU,GAAa,EAAE;IAAA,IAAA,CACzBjB,QAAQ,GAAA,KAAA,CAAA;IAAA,IAAA,CACRkB,gBAAgB,GAAG,IAAI9N,GAAG,EAAoB;IAG5C,IAAI,CAAC4N,MAAM,GAAGA,MAAM;IACpB,IAAI,CAAChB,QAAQ,GAAGA,QAAQ;EAC1B;EAEA,IAAImB,UAAUA,CAAAA,EAAG;IACf,OAAO,CAAC,IAAI,CAACC,YAAY,CAAE,CAAA,CAAC7X,KAAK,IAAoB,IAAI,CAAC;EAC5D;EACA,IAAI8X,UAAUA,CAAAA,EAAG;IACf,OAAO,CAAC,IAAI,CAACC,oBAAoB,CAAA,CAAE,IAA0B,IAAI,CAAC;EACpE;EACA,IAAIC,UAAUA,CAAAA,EAAG;IACf,OAAO,CAAC,IAAI,CAACC,qBAAqB,CAAA,CAAE,KAAkB,IAAI,CAAC;EAC7D;EACA,IAAI7T,gBAAgBA,CAAAA,EAAG;IACrB,OAAO,CAAC,IAAI,CAAC6T,qBAAqB,CAAA,CAAE,KAAyB,IAAI,CAAC;EACpE;EACA,IAAIC,cAAcA,CAAAA,EAAG;IACnB,OAAO,CAAC,IAAI,CAACD,qBAAqB,CAAA,CAAE,MAAuB,IAAI,CAAC;EAClE;EACA,IAAIE,OAAOA,CAAAA,EAAG;IACZ,OAAO,CAAC,IAAI,CAACF,qBAAqB,CAAA,CAAE,KAAuB,IAAI,CAAC;EAClE;EACA,IAAIG,+BAA+BA,CAAAA,EAAG;IACpC,MAAMpY,KAAK,GAAG,IAAI,CAACiY,qBAAqB,EAAE;IAC1C,OACE,CAACjY,KAAK,KAAuB,IAAI,CAAC,IAClC,CAACA,KAAK,IAA0B,MAAM,CAAC;EAE3C;EACA,IAAIqY,aAAaA,CAAAA,EAAG;IAClB,KAAK,IAAIxC,CAAC,GAAG,IAAI,CAAC6B,UAAU,CAAChQ,MAAM,GAAG,CAAC,GAAImO,CAAC,EAAE,EAAE;MAC9C,MAAM;QAAE7V;MAAM,CAAC,GAAG,IAAI,CAAC0X,UAAU,CAAC7B,CAAC,CAAC;MACpC,IAAI7V,KAAK,MAAyB,EAAE;QAClC,OAAO,IAAI;MACb;MACA,IAAIA,KAAK,IAAIsY,SAAoC,CAAC,EAAE;QAElD,OAAO,KAAK;MACd;IACF;EACF;EACA,IAAIC,kBAAkBA,CAAAA,EAAG;IACvB,OAAO,CAAC,IAAI,CAACN,qBAAqB,CAAA,CAAE,IAA0B,IAAI,CAAC;EACrE;EACA,IAAIO,mBAAmBA,CAAAA,EAAG;IACxB,OAAO,CAAC,IAAI,CAACX,YAAY,CAAE,CAAA,CAAC7X,KAAK,MAAmB,IAAI,CAAC;EAC3D;EACA,IAAIyY,mBAAmBA,CAAAA,EAAG;IACxB,OAAO,IAAI,CAACC,0BAA0B,CAAC,IAAI,CAACb,YAAY,CAAE,CAAA,CAAC;EAC7D;EAEAc,WAAWA,CAAC3Y,KAAgB,EAAS;IACnC,OAAO,IAAIqX,KAAK,CAACrX,KAAK,CAAC;EACzB;EAEA4Y,KAAKA,CAAC5Y,KAAgB,EAAE;IAGtB,IAAI,CAAC0X,UAAU,CAAC9M,IAAI,CAAC,IAAI,CAAC+N,WAAW,CAAC3Y,KAAK,CAAC,CAAC;EAC/C;EAEA6Y,IAAIA,CAAAA,EAAc;IAChB,MAAMC,KAAK,GAAG,IAAI,CAACpB,UAAU,CAACtC,GAAG,CAAA,CAAG;IACpC,OAAO0D,KAAK,CAAC9Y,KAAK;EACpB;EAKA0Y,0BAA0BA,CAACI,KAAa,EAAW;IACjD,OAAO,CAAC,EACNA,KAAK,CAAC9Y,KAAK,IAAIsY,OAAgD,CAAC,IAC/D,CAAC,IAAI,CAACb,MAAM,CAAChB,QAAQ,IAAIqC,KAAK,CAAC9Y,KAAK,IAAqB,CAC3D;EACH;EAEA+Y,WAAWA,CAACrlB,IAAY,EAAEslB,WAAwB,EAAE/c,GAAa,EAAE;IACjE,IAAI6c,KAAK,GAAG,IAAI,CAACjB,YAAY,EAAE;IAC/B,IACEmB,WAAW,IAA4B,IACvCA,WAAW,KAA6B,EACxC;MACA,IAAI,CAACC,yBAAyB,CAACH,KAAK,EAAEplB,IAAI,EAAEslB,WAAW,EAAE/c,GAAG,CAAC;MAE7D,IAAIvO,IAAI,GAAGorB,KAAK,CAACxB,KAAK,CAAC7a,GAAG,CAAC/I,IAAI,CAAC,IAAI,CAAC;MAErC,IAAIslB,WAAW,KAA6B,EAAE;QAC5CtrB,IAAI,GAAGA,IAAI,IAAoB;MACjC,CAAC,MAAM;QACL,IAAI,CAACorB,KAAK,CAACvB,gBAAgB,EAAE;UAC3BuB,KAAK,CAACvB,gBAAgB,GAAG7jB,IAAI;QAC/B;QACAhG,IAAI,GAAGA,IAAI,IAAmB;MAChC;MAEAorB,KAAK,CAACxB,KAAK,CAAC5a,GAAG,CAAChJ,IAAI,EAAEhG,IAAI,CAAC;MAE3B,IAAIsrB,WAAW,IAA4B,EAAE;QAC3C,IAAI,CAACE,kBAAkB,CAACJ,KAAK,EAAEplB,IAAI,CAAC;MACtC;IACF,CAAC,MAAM,IAAIslB,WAAW,IAAwB,EAAE;MAC9C,KAAK,IAAInD,CAAC,GAAG,IAAI,CAAC6B,UAAU,CAAChQ,MAAM,GAAG,CAAC,EAAEmO,CAAC,IAAI,CAAC,EAAE,EAAEA,CAAC,EAAE;QACpDiD,KAAK,GAAG,IAAI,CAACpB,UAAU,CAAC7B,CAAC,CAAC;QAC1B,IAAI,CAACoD,yBAAyB,CAACH,KAAK,EAAEplB,IAAI,EAAEslB,WAAW,EAAE/c,GAAG,CAAC;QAC7D6c,KAAK,CAACxB,KAAK,CAAC5a,GAAG,CAAChJ,IAAI,EAAE,CAAColB,KAAK,CAACxB,KAAK,CAAC7a,GAAG,CAAC/I,IAAI,CAAC,IAAI,CAAC,KAAgB,CAAC;QAClE,IAAI,CAACwlB,kBAAkB,CAACJ,KAAK,EAAEplB,IAAI,CAAC;QAEpC,IAAIolB,KAAK,CAAC9Y,KAAK,OAAgB,EAAE;MACnC;IACF;IACA,IAAI,IAAI,CAACyX,MAAM,CAAChB,QAAQ,IAAIqC,KAAK,CAAC9Y,KAAK,IAAoB,EAAE;MAC3D,IAAI,CAAC2X,gBAAgB,CAACwB,MAAM,CAACzlB,IAAI,CAAC;IACpC;EACF;EAEAwlB,kBAAkBA,CAACJ,KAAa,EAAEplB,IAAY,EAAE;IAC9C,IAAI,IAAI,CAAC+jB,MAAM,CAAChB,QAAQ,IAAIqC,KAAK,CAAC9Y,KAAK,IAAoB,EAAE;MAC3D,IAAI,CAAC2X,gBAAgB,CAACwB,MAAM,CAACzlB,IAAI,CAAC;IACpC;EACF;EAEAulB,yBAAyBA,CACvBH,KAAa,EACbplB,IAAY,EACZslB,WAAwB,EACxB/c,GAAa,EACb;IACA,IAAI,IAAI,CAACmd,mBAAmB,CAACN,KAAK,EAAEplB,IAAI,EAAEslB,WAAW,CAAC,EAAE;MACtD,IAAI,CAACvB,MAAM,CAAChR,KAAK,CAACjJ,MAAM,CAAChF,gBAAgB,EAAEyD,GAAG,EAAE;QAC9CzQ,cAAc,EAAEkI;MAClB,CAAC,CAAC;IACJ;EACF;EAEA0lB,mBAAmBA,CACjBN,KAAa,EACbplB,IAAY,EACZslB,WAAwB,EACf;IACT,IAAI,EAAEA,WAAW,IAAyB,CAAC,EAAE,OAAO,KAAK;IAEzD,IAAIA,WAAW,IAA4B,EAAE;MAC3C,OAAOF,KAAK,CAACxB,KAAK,CAACX,GAAG,CAACjjB,IAAI,CAAC;IAC9B;IAEA,MAAMhG,IAAI,GAAGorB,KAAK,CAACxB,KAAK,CAAC7a,GAAG,CAAC/I,IAAI,CAAC,IAAI,CAAC;IAEvC,IAAIslB,WAAW,KAA6B,EAAE;MAC5C,OACE,CAACtrB,IAAI,IAAmB,IAAI,CAAC,IAC5B,CAAC,IAAI,CAACgrB,0BAA0B,CAACI,KAAK,CAAC,IAAI,CAACprB,IAAI,IAAe,IAAI,CAAE;IAE1E;IAEA,OACG,CAACA,IAAI,IAAmB,IAAI,CAAC,IAG5B,EACEorB,KAAK,CAAC9Y,KAAK,IAAyB,IACpC8Y,KAAK,CAACvB,gBAAgB,KAAK7jB,IAAI,CAChC,IACF,CAAC,IAAI,CAACglB,0BAA0B,CAACI,KAAK,CAAC,IACtC,CAACprB,IAAI,IAAoB,IAAI,CAAE;EAErC;EAEA2rB,gBAAgBA,CAACzV,EAAgB,EAAE;IACjC,MAAM;MAAElQ;IAAM,CAAA,GAAGkQ,EAAE;IACnB,MAAM0V,aAAa,GAAG,IAAI,CAAC5B,UAAU,CAAC,CAAC,CAAC;IACxC,IAAI,CAAC4B,aAAa,CAAChC,KAAK,CAACX,GAAG,CAACjjB,IAAI,CAAC,EAAE;MAClC,IAAI,CAACikB,gBAAgB,CAACjb,GAAG,CAAChJ,IAAI,EAAEkQ,EAAE,CAAC3H,GAAG,CAAC5Q,KAAK,CAAC;IAC/C;EACF;EAEAwsB,YAAYA,CAAAA,EAAW;IACrB,OAAO,IAAI,CAACH,UAAU,CAAC,IAAI,CAACA,UAAU,CAAChQ,MAAM,GAAG,CAAC,CAAC;EACpD;EAEAqQ,oBAAoBA,CAAAA,EAAc;IAChC,KAAK,IAAIlC,CAAC,GAAG,IAAI,CAAC6B,UAAU,CAAChQ,MAAM,GAAG,CAAC,GAAImO,CAAC,EAAE,EAAE;MAC9C,MAAM;QAAE7V;MAAM,CAAC,GAAG,IAAI,CAAC0X,UAAU,CAAC7B,CAAC,CAAC;MACpC,IAAI7V,KAAK,OAAgB,EAAE;QACzB,OAAOA,KAAK;MACd;IACF;EACF;EAGAiY,qBAAqBA,CAAAA,EAAc;IACjC,KAAK,IAAIpC,CAAC,GAAG,IAAI,CAAC6B,UAAU,CAAChQ,MAAM,GAAG,CAAC,GAAImO,CAAC,EAAE,EAAE;MAC9C,MAAM;QAAE7V;MAAM,CAAC,GAAG,IAAI,CAAC0X,UAAU,CAAC7B,CAAC,CAAC;MACpC,IACE7V,KAAK,IAAIsY,SAAoC,CAAC,IAC9C,EAAEtY,KAAK,IAAkB,CAAC,EAC1B;QACA,OAAOA,KAAK;MACd;IACF;EACF;AACF;ACrOA,MAAMuZ,SAAS,SAASlC,KAAK,CAAC;EAAAtsB,WAAAA,CAAA,GAAAia,IAAA,EAAA;IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA;IAAA,IAAA,CAE5BwU,gBAAgB,GAAG,IAAIzf,GAAG,EAAU;EAAA;AACtC;AAEe,MAAM0f,gBAAgB,SAASjC,YAAY,CAAY;EACpEmB,WAAWA,CAAC3Y,KAAgB,EAAa;IACvC,OAAO,IAAIuZ,SAAS,CAACvZ,KAAK,CAAC;EAC7B;EAEA+Y,WAAWA,CAACrlB,IAAY,EAAEslB,WAAwB,EAAE/c,GAAa,EAAE;IACjE,MAAM6c,KAAK,GAAG,IAAI,CAACjB,YAAY,EAAE;IACjC,IAAImB,WAAW,OAAmC,EAAE;MAClD,IAAI,CAACC,yBAAyB,CAACH,KAAK,EAAEplB,IAAI,EAAEslB,WAAW,EAAE/c,GAAG,CAAC;MAC7D,IAAI,CAACid,kBAAkB,CAACJ,KAAK,EAAEplB,IAAI,CAAC;MACpColB,KAAK,CAACU,gBAAgB,CAACE,GAAG,CAAChmB,IAAI,CAAC;MAChC;IACF;IAEA,KAAK,CAACqlB,WAAW,CAACrlB,IAAI,EAAEslB,WAAW,EAAE/c,GAAG,CAAC;EAC3C;EAEAmd,mBAAmBA,CACjBN,KAAgB,EAChBplB,IAAY,EACZslB,WAAwB,EACf;IACT,IAAI,KAAK,CAACI,mBAAmB,CAACN,KAAK,EAAEplB,IAAI,EAAEslB,WAAW,CAAC,EAAE,OAAO,IAAI;IAEpE,IACEA,WAAW,OAAmC,IAC9C,CAACF,KAAK,CAACU,gBAAgB,CAAC7C,GAAG,CAACjjB,IAAI,CAAC,EACjC;MACA,MAAMhG,IAAI,GAAGorB,KAAK,CAACxB,KAAK,CAAC7a,GAAG,CAAC/I,IAAI,CAAE;MACnC,OAAO,CAAChG,IAAI,IAAoB,IAAI,CAAC,IAAI,CAACA,IAAI,IAAmB,IAAI,CAAC;IACxE;IAEA,OAAO,KAAK;EACd;EAEA2rB,gBAAgBA,CAACzV,EAAgB,EAAE;IACjC,IAAI,CAAC,IAAI,CAAC8T,UAAU,CAAC,CAAC,CAAC,CAAC8B,gBAAgB,CAAC7C,GAAG,CAAC/S,EAAE,CAAClQ,IAAI,CAAC,EAAE;MACrD,KAAK,CAAC2lB,gBAAgB,CAACzV,EAAE,CAAC;IAC5B;EACF;AACF;ACzBA,MAAM+V,aAAa,GAAG,IAAI5f,GAAG,CAAC,CAC5B,GAAG,EACH,KAAK,EACL,MAAM,EACN,SAAS,EACT,OAAO,EACP,SAAS,EACT,OAAO,EACP,WAAW,EACX,OAAO,EACP,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,MAAM,CACP,CAAC;AAIF,MAAM6f,UAAU,GAAGhd,cAAc,MAAM,CAAC;EACtCid,yBAAyB,EACvB,gFAAgF;EAClFC,0BAA0B,EACxB,wKAAwK;EAG1KC,kBAAkB,EAAEA,CAAC;IAAEC;GAAwC,KAC7D,kCAAkCA,YAAY,GAAG;EACnDC,mBAAmB,EACjB,yDAAyD;EAC3DC,4BAA4B,EAC1B,qEAAqE;EACvEC,6BAA6B,EAC3B,+CAA+C;EACjDC,+BAA+B,EAAEA,CAAC;IAChCC,UAAU;IACVC;EAIF,CAAC,KACC,6DAA6DD,UAAU,mBAAmBA,UAAU,yBAAyBC,QAAQ,KAAK;EAC5IC,uBAAuB,EAAEA,CAAC;IACxBF,UAAU;IACVC;EAID,CAAA,KACC,uDAAuDD,UAAU,6CAA6CC,QAAQ,KAAK;EAC7HE,4BAA4B,EAAEA,CAAC;IAAEF;GAAgC,KAC/D,UAAUA,QAAQ,uKAAuK;EAC3LG,uBAAuB,EAAEA,CAAC;IACxBC,eAAe;IACfJ;EAID,CAAA,KACC,eAAeI,eAAe,4FAA4FJ,QAAQ,KAAK;EACzIK,sCAAsC,EAAEA,CAAC;IACvCL;GAGD,KACC,4GAA4GA,QAAQ,KAAK;EAa3HM,uCAAuC,EAAEA,CAAC;IACxCN,QAAQ;IACRD,UAAU;IACVQ;GAKD,KACC,UAAUP,QAAQ,iBAAiBO,YAAY,+BAA+BR,UAAU,oBAAoBQ,YAAY,WAAW;EACrIC,sCAAsC,EAAEA,CAAC;IACvCR,QAAQ;IACRD;EAKD,CAAA,KACC,oDAAoDA,UAAU,iBAAiBC,QAAQ,KAAK;EAC9FS,uCAAuC,EAAEA,CAAC;IACxCT,QAAQ;IACRD;EAKD,CAAA,KACC,qCAAqCA,UAAU,4EAA4EC,QAAQ,KAAK;EAC1IU,qBAAqB,EAAEA,CAAC;IACtBV,QAAQ;IACRD,UAAU;IACVY;EAKF,CAAC,KACC,qFAAqFZ,UAAU,wBAAwBY,UAAU,iBAAiBX,QAAQ,KAAK;EACjKY,8BAA8B,EAAEA,CAAC;IAC/BZ,QAAQ;IACRD;EAID,CAAA,KACC,sDAAsDA,UAAU,oBAAoBC,QAAQ,KAAK;EACnGa,yCAAyC,EAAEA,CAAC;IAC1Cb;GAGD,KACC,2GAA2GA,QAAQ,KAAK;EAC1Hc,yBAAyB,EAAE,0CAA0C;EACrEC,6BAA6B,EAC3B,wEAAwE;EAC1EC,mCAAmC,EACjC,wKAAwK;EAC1KC,kBAAkB,EAChB,6EAA6E;EAC/EC,sBAAsB,EACpB,0EAA0E;EAC5EC,eAAe,EAAE,+CAA+C;EAChEC,mCAAmC,EACjC,yFAAyF;EAC3FC,uBAAuB,EACrB,yGAAyG;EAC3GC,mBAAmB,EACjB,kEAAkE;EACpEC,iBAAiB,EAAE,yDAAyD;EAC5EC,iBAAiB,EAAA9hB,MAAA,CAAAC,MAAA,CAAA;IACflO,OAAO,EACL;GAGE,EAAA;IAAEwP,UAAU,EAAE;EAAyB,CAAC,CAE7C;EACDwgB,yBAAyB,EAAE,0CAA0C;EACrEC,cAAc,EAAE,yCAAyC;EACzDC,2BAA2B,EACzB,yDAAyD;EAC3DC,4BAA4B,EAC1B,mGAAmG;EACrGC,yBAAyB,EAAE,0CAA0C;EACrEC,oBAAoB,EAClB,4DAA4D;EAC9DC,kBAAkB,EAAE,oDAAoD;EACxEC,qBAAqB,EACnB,mHAAmH;EACrHC,iBAAiB,EACf,sEAAsE;EACxEC,iCAAiC,EAC/B,sEAAsE;EACxEC,sBAAsB,EAAEA,CAAC;IAAEzC;GAAwC,KACjE,4BAA4BA,YAAY,GAAG;EAC7C0C,4BAA4B,EAC1B,wDAAwD;EAC1DC,kCAAkC,EAChC,uDAAuD;EACzDC,oBAAoB,EAClB,kEAAkE;EACpEC,4BAA4B,EAC1B,kDAAkD;EACpDC,iCAAiC,EAC/B,mEAAmE;EACrEC,+CAA+C,EAC7C,mHAAmH;EACrHC,4BAA4B,EAAEA,CAAC;IAC7BC,qBAAqB;IACrBhC;EAID,CAAA,KACC,oBAAoBgC,qBAAqB,8BAA8BhC,UAAU,aAAa;EAChGiC,mCAAmC,EACjC,mEAAmE;EACrEC,uBAAuB,EAAE;AAC3B,CAAC,CAAC;AAGF,SAASC,cAAcA,CAACC,WAAmB,EAAW;EACpD,OACEA,WAAW,CAAC3vB,IAAI,KAAK,6BAA6B,IACjD2vB,WAAW,CAAC3vB,IAAI,KAAK,0BAA0B,KAC7C,CAAC2vB,WAAW,CAACzV,WAAW,IACtByV,WAAW,CAACzV,WAAW,CAACla,IAAI,KAAK,WAAW,IAC3C2vB,WAAW,CAACzV,WAAW,CAACla,IAAI,KAAK,sBAAuB,CAAE;AAEpE;AAEA,SAAS4vB,iBAAiBA,CACxB7vB,IAAqD,EAC5C;EACT,OAAOA,IAAI,CAAC8vB,UAAU,KAAK,MAAM,IAAI9vB,IAAI,CAAC8vB,UAAU,KAAK,QAAQ;AACnE;AAEA,MAAMC,iBAAiB,GAAG;EACxBC,KAAK,EAAE,oBAAoB;EAC3BC,GAAG,EAAE,oBAAoB;EACzBhwB,IAAI,EAAE,aAAa;EACnBiwB,SAAS,EAAE;AACb,CAAC;AAGD,SAASC,SAASA,CAChBC,IAAS,EACT9H,IAA6D,EACjD;EACZ,MAAM+H,KAAU,GAAG,EAAE;EACrB,MAAMC,KAAU,GAAG,EAAE;EACrB,KAAK,IAAIlI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgI,IAAI,CAACnW,MAAM,EAAEmO,CAAC,EAAE,EAAE;IACpC,CAACE,IAAI,CAAC8H,IAAI,CAAChI,CAAC,CAAC,EAAEA,CAAC,EAAEgI,IAAI,CAAC,GAAGC,KAAK,GAAGC,KAAK,EAAEnT,IAAI,CAACiT,IAAI,CAAChI,CAAC,CAAC,CAAC;EACxD;EACA,OAAO,CAACiI,KAAK,EAAEC,KAAK,CAAC;AACvB;AAEA,MAAMC,iBAAiB,GAAG,wBAAwB;AAoClD,IAAAC,IAAA,GAAgBxe,UAA0D,IACxE,MAAMye,eAAe,SAASze,UAAU,CAAmB;EAAA1U,WAAAA,CAAA,GAAAia,IAAA,EAAA;IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA;IAAA,IAIzDmZ,CAAAA,UAAU,GAAoCtgB,SAAS;EAAA;EAEvDugB,eAAeA,CAAAA,EAA2C;IACxD,OAAO3E,gBAAgB;EACzB;EAEA4E,gBAAgBA,CAAAA,EAAY;IAC1B,OAAO,IAAI,CAAC5a,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC0a,UAAU,KAAK,MAAM;EAC1E;EAEAG,WAAWA,CAAC5wB,IAAe,EAAE6wB,GAAQ,EAAQ;IAC3C,IACE7wB,IAAI,QAAc,IAClBA,IAAI,OAAY,IAChBA,IAAI,OAA4B,EAChC;MACA,IAAI,IAAI,CAACywB,UAAU,KAAKtgB,SAAS,EAAE;QACjC,IAAI,CAACsgB,UAAU,GAAG,IAAI;MACxB;IACF;IACA,KAAK,CAACG,WAAW,CAAC5wB,IAAI,EAAE6wB,GAAG,CAAC;EAC9B;EAEAC,UAAUA,CAACC,OAAkB,EAAQ;IACnC,IAAI,IAAI,CAACN,UAAU,KAAKtgB,SAAS,EAAE;MAEjC,MAAM6gB,OAAO,GAAGV,iBAAiB,CAACW,IAAI,CAACF,OAAO,CAACxjB,KAAK,CAAC;MACrD,IAAI,CAACyjB,OAAO,EAAE,CAEb,KAAM,IAAIA,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;QAChC,IAAI,CAACP,UAAU,GAAG,MAAM;MACzB,CAAA,MAAM,IAAIO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;QAClC,IAAI,CAACP,UAAU,GAAG,QAAQ;MAC5B,CAAC,MAAM;QACL,MAAM,IAAI/e,KAAK,CAAC,wBAAwB,CAAC;MAC3C;IACF;IACA,KAAK,CAACof,UAAU,CAACC,OAAO,CAAC;EAC3B;EAEAG,wBAAwBA,CAACC,GAAe,EAAc;IACpD,MAAMC,SAAS,GAAG,IAAI,CAACxX,KAAK,CAACyX,MAAM;IACnC,IAAI,CAACzX,KAAK,CAACyX,MAAM,GAAG,IAAI;IACxB,IAAI,CAACC,MAAM,CAACH,GAAG,MAAY,CAAC;IAE5B,MAAMnxB,IAAI,GAAG,IAAI,CAACuxB,aAAa,EAAE;IACjC,IAAI,CAAC3X,KAAK,CAACyX,MAAM,GAAGD,SAAS;IAC7B,OAAOpxB,IAAI;EACb;EAEAwxB,kBAAkBA,CAAAA,EAAoB;IACpC,MAAMzxB,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAmB;IAC9C,MAAM4a,SAAS,GAAG,IAAI,CAAC7X,KAAK,CAAC7B,QAAQ;IACrC,IAAI,CAACwR,IAAI,CAAA,CAAE;IACX,IAAI,CAACmI,gBAAgB,CAAA,GAAW,CAAC;IAEjC,IAAI,IAAI,CAAC9X,KAAK,CAACC,eAAe,CAAErc,KAAK,GAAGi0B,SAAS,CAACj0B,KAAK,GAAG,CAAC,EAAE;MAC3D,IAAI,CAACub,KAAK,CAACmT,UAAU,CAAC+C,kCAAkC,EAAEwC,SAAS,CAAC;IACtE;IACA,IAAI,IAAI,CAACE,GAAG,CAAA,EAAU,CAAC,EAAE;MACvB5xB,IAAI,CAACwN,KAAK,GAAG,KAAK,CAACqkB,eAAe,EAAE;MACpC,IAAI,CAACN,MAAM,CAAA,EAAU,CAAC;MACtB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,mBAAmB,CAAC;IACnD,CAAC,MAAM;MACL,OAAO,IAAI,CAACoX,UAAU,CAACpX,IAAI,EAAE,mBAAmB,CAAC;IACnD;EACF;EAEA8xB,oCAAoCA,CAAAA,EAGlC;IACA,MAAMT,SAAS,GAAG,IAAI,CAACxX,KAAK,CAACyX,MAAM;IACnC,IAAI,CAACzX,KAAK,CAACyX,MAAM,GAAG,IAAI;IACxB,IAAI,CAACC,MAAM,CAAA,EAAS,CAAC;IACrB,IAAItxB,IAAI,GAAG,IAAI;IACf,IAAI8xB,SAAS,GAAG,IAAI;IACpB,IAAI,IAAI,CAACC,KAAK,CAAA,EAAU,CAAC,EAAE;MACzB,IAAI,CAACnY,KAAK,CAACyX,MAAM,GAAGD,SAAS;MAC7BU,SAAS,GAAG,IAAI,CAACN,kBAAkB,EAAE;IACvC,CAAC,MAAM;MACLxxB,IAAI,GAAG,IAAI,CAACuxB,aAAa,EAAE;MAC3B,IAAI,CAAC3X,KAAK,CAACyX,MAAM,GAAGD,SAAS;MAC7B,IAAI,IAAI,CAACW,KAAK,CAAA,EAAU,CAAC,EAAE;QACzBD,SAAS,GAAG,IAAI,CAACN,kBAAkB,EAAE;MACvC;IACF;IACA,OAAO,CAACxxB,IAAI,EAAE8xB,SAAS,CAAC;EAC1B;EAEAE,qBAAqBA,CACnBjyB,IAAgC,EACZ;IACpB,IAAI,CAACwpB,IAAI,CAAA,CAAE;IACX,IAAI,CAAC0I,qBAAqB,CAAClyB,IAAI,EAAc,IAAI,CAAC;IAClD,OAAO,IAAI,CAACoX,UAAU,CAACpX,IAAI,EAAE,cAAc,CAAC;EAC9C;EAEAmyB,wBAAwBA,CACtBnyB,IAAmC,EACZ;IACvB,IAAI,CAACwpB,IAAI,CAAA,CAAE;IAEX,MAAMrT,EAAE,GAAInW,IAAI,CAACmW,EAAE,GAAG,IAAI,CAACic,eAAe,CAAA,CAAG;IAE7C,MAAMC,QAAQ,GAAG,IAAI,CAACvb,SAAS,EAAgC;IAC/D,MAAMwb,aAAa,GAAG,IAAI,CAACxb,SAAS,EAAoB;IAExD,IAAI,IAAI,CAACkb,KAAK,CAAA,EAAM,CAAC,EAAE;MACrBK,QAAQ,CAACtb,cAAc,GAAG,IAAI,CAACwb,iCAAiC,EAAE;IACpE,CAAC,MAAM;MACLF,QAAQ,CAACtb,cAAc,GAAG,IAAI;IAChC;IAEA,IAAI,CAACwa,MAAM,CAAA,EAAU,CAAC;IACtB,MAAMiB,GAAG,GAAG,IAAI,CAACC,2BAA2B,EAAE;IAC9CJ,QAAQ,CAACnd,MAAM,GAAGsd,GAAG,CAACtd,MAAM;IAC5Bmd,QAAQ,CAACziB,IAAI,GAAG4iB,GAAG,CAAC5iB,IAAI;IACxByiB,QAAQ,CAACK,IAAI,GAAGF,GAAG,CAAClQ,KAAK;IACzB,IAAI,CAACiP,MAAM,CAAA,EAAU,CAAC;IAEtB,CAACc,QAAQ,CAACM,UAAU,EAAE3yB,IAAI,CAAC+xB,SAAS,CAAC,GACnC,IAAI,CAACD,oCAAoC,EAAE;IAE7CQ,aAAa,CAACM,cAAc,GAAG,IAAI,CAACxb,UAAU,CAC5Cib,QAAQ,EACR,wBACF,CAAC;IAEDlc,EAAE,CAACyc,cAAc,GAAG,IAAI,CAACxb,UAAU,CAACkb,aAAa,EAAE,gBAAgB,CAAC;IAEpE,IAAI,CAACvX,gBAAgB,CAAC5E,EAAE,CAAC;IACzB,IAAI,CAAC0c,SAAS,CAAA,CAAE;IAEhB,IAAI,CAACxH,KAAK,CAACC,WAAW,CACpBtrB,IAAI,CAACmW,EAAE,CAAClQ,IAAI,QAEZjG,IAAI,CAACmW,EAAE,CAAC3H,GAAG,CAAC5Q,KACd,CAAC;IAED,OAAO,IAAI,CAACwZ,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAEA8yB,gBAAgBA,CACd9yB,IAA2B,EAC3B+yB,YAAsB,EACP;IACf,IAAI,IAAI,CAACf,KAAK,CAAA,EAAU,CAAC,EAAE;MACzB,OAAO,IAAI,CAACC,qBAAqB,CAACjyB,IAAI,CAAC;IACxC,CAAA,MAAM,IAAI,IAAI,CAACgyB,KAAK,CAAA,EAAa,CAAC,EAAE;MACnC,OAAO,IAAI,CAACG,wBAAwB,CAACnyB,IAAI,CAAC;IAC3C,CAAA,MAAM,IAAI,IAAI,CAACgyB,KAAK,CAAA,EAAQ,CAAC,EAAE;MAC9B,OAAO,IAAI,CAACgB,wBAAwB,CAAChzB,IAAI,CAAC;IAC3C,CAAA,MAAM,IAAI,IAAI,CAACizB,aAAa,CAAA,GAAW,CAAC,EAAE;MACzC,IAAI,IAAI,CAACjB,KAAK,CAAA,EAAO,CAAC,EAAE;QACtB,OAAO,IAAI,CAACkB,6BAA6B,CAAClzB,IAAI,CAAC;MACjD,CAAC,MAAM;QACL,IAAI+yB,YAAY,EAAE;UAChB,IAAI,CAAC/Z,KAAK,CACRmT,UAAU,CAACgC,mBAAmB,EAC9B,IAAI,CAACtU,KAAK,CAACC,eACb,CAAC;QACH;QACA,OAAO,IAAI,CAACqZ,sBAAsB,CAACnzB,IAAI,CAAC;MAC1C;IACD,CAAA,MAAM,IAAI,IAAI,CAACozB,YAAY,CAAA,GAAS,CAAC,EAAE;MACtC,OAAO,IAAI,CAACC,yBAAyB,CAACrzB,IAAI,CAAC;IAC5C,CAAA,MAAM,IAAI,IAAI,CAACozB,YAAY,CAAA,GAAW,CAAC,EAAE;MACxC,OAAO,IAAI,CAACE,0BAA0B,CAACtzB,IAAI,CAAC;IAC7C,CAAA,MAAM,IAAI,IAAI,CAACozB,YAAY,CAAA,GAAc,CAAC,EAAE;MAC3C,OAAO,IAAI,CAACG,yBAAyB,CAACvzB,IAAI,CAAC;IAC5C,CAAA,MAAM,IAAI,IAAI,CAACgyB,KAAK,CAAA,EAAW,CAAC,EAAE;MACjC,OAAO,IAAI,CAACwB,iCAAiC,CAACxzB,IAAI,EAAE+yB,YAAY,CAAC;IACnE;IACA,MAAM,IAAI,CAAC/tB,UAAU,EAAE;EACzB;EAEAguB,wBAAwBA,CACtBhzB,IAAmC,EACZ;IACvB,IAAI,CAACwpB,IAAI,CAAA,CAAE;IACXxpB,IAAI,CAACmW,EAAE,GAAG,IAAI,CAACsd,kCAAkC,CACpB,IAC7B,CAAC;IACD,IAAI,CAACpI,KAAK,CAACC,WAAW,CACpBtrB,IAAI,CAACmW,EAAE,CAAClQ,IAAI,KAEZjG,IAAI,CAACmW,EAAE,CAAC3H,GAAG,CAAC5Q,KACd,CAAC;IACD,IAAI,CAACi1B,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAACzb,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAEAmzB,sBAAsBA,CACpBnzB,IAAiC,EACZ;IACrB,IAAI,CAACqrB,KAAK,CAACF,KAAK,EAAgB,CAAC;IAEjC,IAAI,IAAI,CAAC6G,KAAK,CAAA,GAAU,CAAC,EAAE;MACzBhyB,IAAI,CAACmW,EAAE,GAAG,KAAK,CAACud,aAAa,EAAE;IACjC,CAAC,MAAM;MACL1zB,IAAI,CAACmW,EAAE,GAAG,IAAI,CAACic,eAAe,EAAE;IAClC;IAEA,MAAMuB,QAAQ,GAAI3zB,IAAI,CAAC6V,IAAI,GAAG,IAAI,CAACiB,SAAS,CAAA,CAAqB;IACjE,MAAMjB,IAAmB,GAAI8d,QAAQ,CAAC9d,IAAI,GAAG,EAAG;IAChD,IAAI,CAAC0b,MAAM,CAAA,CAAU,CAAC;IACtB,OAAO,CAAC,IAAI,CAACS,KAAK,CAAA,CAAU,CAAC,EAAE;MAC7B,MAAM2B,QAAQ,GAAG,IAAI,CAAC7c,SAAS,EAAuB;MAEtD,IAAI,IAAI,CAACkb,KAAK,CAAA,EAAW,CAAC,EAAE;QAC1B,IAAI,CAACxI,IAAI,CAAA,CAAE;QACX,IAAI,CAAC,IAAI,CAAC4J,YAAY,CAAS,GAAA,CAAC,IAAI,CAAC,IAAI,CAACpB,KAAK,CAAA,EAAW,CAAC,EAAE;UAC3D,IAAI,CAAChZ,KAAK,CACRmT,UAAU,CAAC8B,mCAAmC,EAC9C,IAAI,CAACpU,KAAK,CAACC,eACb,CAAC;QACH;QACAjE,IAAI,CAACsH,IAAI,CAAC,KAAK,CAACyW,WAAW,CAACD,QAAQ,CAAC,CAAC;MACxC,CAAC,MAAM;QACL,IAAI,CAAChC,gBAAgB,CAAA,GAAA,EAEnBxF,UAAU,CAACsD,mCACb,CAAC;QACD5Z,IAAI,CAACsH,IAAI,CAAC,IAAI,CAAC2V,gBAAgB,CAACa,QAAQ,EAAE,IAAI,CAAC,CAAC;MAClD;IACF;IAEA,IAAI,CAACtI,KAAK,CAACD,IAAI,EAAE;IAEjB,IAAI,CAACmG,MAAM,CAAA,CAAU,CAAC;IAEtB,IAAI,CAACna,UAAU,CAACuc,QAAQ,EAAE,gBAAgB,CAAC;IAE3C,IAAItzB,IAA8B,GAAG,IAAI;IACzC,IAAIwzB,eAAe,GAAG,KAAK;IAC3Bhe,IAAI,CAACie,OAAO,CAAClE,WAAW,IAAI;MAC1B,IAAID,cAAc,CAACC,WAAW,CAAC,EAAE;QAC/B,IAAIvvB,IAAI,KAAK,UAAU,EAAE;UACvB,IAAI,CAAC2Y,KAAK,CAACmT,UAAU,CAACE,0BAA0B,EAAEuD,WAAW,CAAC;QAChE;QACAvvB,IAAI,GAAG,IAAI;MACb,CAAC,MAAM,IAAIuvB,WAAW,CAAC3vB,IAAI,KAAK,sBAAsB,EAAE;QACtD,IAAI4zB,eAAe,EAAE;UACnB,IAAI,CAAC7a,KAAK,CAACmT,UAAU,CAACO,6BAA6B,EAAEkD,WAAW,CAAC;QACnE;QACA,IAAIvvB,IAAI,KAAK,IAAI,EAAE;UACjB,IAAI,CAAC2Y,KAAK,CAACmT,UAAU,CAACE,0BAA0B,EAAEuD,WAAW,CAAC;QAChE;QACAvvB,IAAI,GAAG,UAAU;QACjBwzB,eAAe,GAAG,IAAI;MACxB;IACF,CAAC,CAAC;IAEF7zB,IAAI,CAACK,IAAI,GAAGA,IAAI,IAAI,UAAU;IAC9B,OAAO,IAAI,CAAC+W,UAAU,CAACpX,IAAI,EAAE,eAAe,CAAC;EAC/C;EAEAwzB,iCAAiCA,CAC/BxzB,IAA4C,EAC5C+yB,YAA6B,EACG;IAChC,IAAI,CAACxB,MAAM,CAAA,EAAW,CAAC;IAEvB,IAAI,IAAI,CAACK,GAAG,CAAA,EAAY,CAAC,EAAE;MACzB,IAAI,IAAI,CAACI,KAAK,CAAa,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAU,EAAA,CAAC,EAAE;QAGrDhyB,IAAI,CAACma,WAAW,GAAG,IAAI,CAAC2Y,gBAAgB,CAAC,IAAI,CAAChc,SAAS,CAAA,CAAE,CAAC;MAC5D,CAAC,MAAM;QAEL9W,IAAI,CAACma,WAAW,GAAG,IAAI,CAACqX,aAAa,EAAE;QACvC,IAAI,CAACqB,SAAS,CAAA,CAAE;MAClB;MACA7yB,IAAI,CAAC+zB,OAAO,GAAG,IAAI;MAEnB,OAAO,IAAI,CAAC3c,UAAU,CAACpX,IAAI,EAAE,0BAA0B,CAAC;IAC1D,CAAC,MAAM;MACL,IACE,IAAI,CAACgyB,KAAK,CAAU,EAAA,CAAC,IACrB,IAAI,CAACgC,KAAK,CAAA,CAAE,IACX,CAAC,IAAI,CAACZ,YAAY,CAAA,GAAS,CAAC,IAAI,IAAI,CAACA,YAAY,CAAA,GAAc,CAAC,KAC/D,CAACL,YAAa,EAChB;QACA,MAAMjX,KAAK,GAAG,IAAI,CAACjC,KAAK,CAACrM,KAIV;QACf,MAAM,IAAI,CAACwL,KAAK,CACdmT,UAAU,CAACoD,4BAA4B,EACvC,IAAI,CAAC1V,KAAK,CAAC7B,QAAQ,EACnB;UACEwX,qBAAqB,EAAE1T,KAAK;UAC5B0R,UAAU,EAAEuC,iBAAiB,CAACjU,KAAK;QACrC,CACF,CAAC;MACH;MAEA,IACE,IAAI,CAACkW,KAAK,CAAA,EAAQ,CAAC,IACnB,IAAI,CAACA,KAAK,CAAa,EAAA,CAAC,IACxB,IAAI,CAACA,KAAK,CAAA,EAAU,CAAC,IACrB,IAAI,CAACoB,YAAY,CAAW,GAAA,CAAC,EAC7B;QACApzB,IAAI,CAACma,WAAW,GAAG,IAAI,CAAC2Y,gBAAgB,CAAC,IAAI,CAAChc,SAAS,CAAA,CAAE,CAAC;QAC1D9W,IAAI,CAAC+zB,OAAO,GAAG,KAAK;QAEpB,OAAO,IAAI,CAAC3c,UAAU,CAACpX,IAAI,EAAE,0BAA0B,CAAC;MAC1D,CAAC,MAAM,IACL,IAAI,CAACgyB,KAAK,CAAA,EAAQ,CAAC,IACnB,IAAI,CAACA,KAAK,CAAA,CAAU,CAAC,IACrB,IAAI,CAACoB,YAAY,CAAc,GAAA,CAAC,IAChC,IAAI,CAACA,YAAY,CAAA,GAAS,CAAC,IAC3B,IAAI,CAACA,YAAY,CAAA,GAAW,CAAC,EAC7B;QACApzB,IAAI,GAAG,IAAI,CAAC0Z,WAAW,CACrB1Z,IAAI,EACa,IACnB,CAAC;QACD,IAAIA,IAAI,CAACC,IAAI,KAAK,wBAAwB,EAAE;UAC1CD,IAAI,CAAC+zB,OAAO,GAAG,KAAK;UACpB,OAAO/zB,IAAI,CAACi0B,UAAU;UACtB,OAAO,IAAI,CAACjgB,UAAU,CACpBhU,IAAI,EACJ,0BACF,CAAC;QACH,CAAC,MAAM;UACL,OAAO,IAAI,CAACgU,UAAU,CACpBhU,IAAI,EACJ,6BACF,CAAC;QACH;MACF;IACF;IAEA,MAAM,IAAI,CAACgF,UAAU,EAAE;EACzB;EAEAkuB,6BAA6BA,CAC3BlzB,IAAwC,EACZ;IAC5B,IAAI,CAACwpB,IAAI,CAAA,CAAE;IACX,IAAI,CAACmI,gBAAgB,CAAA,GAAY,CAAC;IAClC3xB,IAAI,CAAC4yB,cAAc,GAAG,IAAI,CAACsB,uBAAuB,EAAE;IACpD,IAAI,CAACrB,SAAS,CAAA,CAAE;IAEhB,OAAO,IAAI,CAACzb,UAAU,CAACpX,IAAI,EAAE,sBAAsB,CAAC;EACtD;EAEAqzB,yBAAyBA,CACvBrzB,IAAoC,EACZ;IACxB,IAAI,CAACwpB,IAAI,CAAA,CAAE;IACX,MAAM2K,QAAQ,GAAG,IAAI,CAACC,kBAAkB,CACtCp0B,IACF,CAAsC;IAEtC,IAAI,CAACgU,UAAU,CAACmgB,QAAQ,EAAE,kBAAkB,CAAC;IAC7C,OAAOA,QAAQ;EACjB;EAEAb,0BAA0BA,CACxBtzB,IAAqC,EACZ;IACzB,IAAI,CAACwpB,IAAI,CAAA,CAAE;IACX,MAAM2K,QAAQ,GAAG,IAAI,CAACE,mBAAmB,CACvCr0B,IAAI,EACJ,IACF,CAAuC;IAEvC,IAAI,CAACgU,UAAU,CAACmgB,QAAQ,EAAE,mBAAmB,CAAC;IAC9C,OAAOA,QAAQ;EACjB;EAEAZ,yBAAyBA,CACvBvzB,IAAoC,EACZ;IACxB,IAAI,CAACwpB,IAAI,CAAA,CAAE;IACX,IAAI,CAAC0I,qBAAqB,CAAClyB,IAAI,EAAgB,KAAK,CAAC;IACrD,OAAO,IAAI,CAACoX,UAAU,CAACpX,IAAI,EAAE,kBAAkB,CAAC;EAClD;EAIAkyB,qBAAqBA,CAAClyB,IAA2B,EAAEs0B,OAAgB,EAAQ;IACzEt0B,IAAI,CAACmW,EAAE,GAAG,IAAI,CAACoe,6BAA6B,CAC5B,CAACD,OAAO,EACJ,IACpB,CAAC;IAED,IAAI,CAACjJ,KAAK,CAACC,WAAW,CACpBtrB,IAAI,CAACmW,EAAE,CAAClQ,IAAI,EACZquB,OAAO,YAAuD,EAC9Dt0B,IAAI,CAACmW,EAAE,CAAC3H,GAAG,CAAC5Q,KACd,CAAC;IAED,IAAI,IAAI,CAACo0B,KAAK,CAAA,EAAM,CAAC,EAAE;MACrBhyB,IAAI,CAAC+W,cAAc,GAAG,IAAI,CAACwb,iCAAiC,EAAE;IAChE,CAAC,MAAM;MACLvyB,IAAI,CAAC+W,cAAc,GAAG,IAAI;IAC5B;IAEA/W,IAAI,CAACw0B,OAAO,GAAG,EAAE;IAEjB,IAAI,IAAI,CAAC5C,GAAG,CAAA,EAAY,CAAC,EAAE;MACzB,GAAG;QACD5xB,IAAI,CAACw0B,OAAO,CAACrX,IAAI,CAAC,IAAI,CAACsX,yBAAyB,CAAE,CAAA,CAAC;MACpD,CAAA,QAAQ,CAACH,OAAO,IAAI,IAAI,CAAC1C,GAAG,GAAS,CAAC;IACzC;IAEA,IAAI0C,OAAO,EAAE;MACXt0B,IAAI,CAAC00B,UAAU,GAAG,EAAE;MACpB10B,IAAI,CAAC20B,MAAM,GAAG,EAAE;MAEhB,IAAI,IAAI,CAAC1B,aAAa,CAAA,GAAW,CAAC,EAAE;QAClC,GAAG;UACDjzB,IAAI,CAAC20B,MAAM,CAACxX,IAAI,CAAC,IAAI,CAACsX,yBAAyB,CAAE,CAAA,CAAC;QACpD,CAAC,QAAQ,IAAI,CAAC7C,GAAG,GAAS,CAAC;MAC7B;MAEA,IAAI,IAAI,CAACqB,aAAa,CAAA,GAAe,CAAC,EAAE;QACtC,GAAG;UACDjzB,IAAI,CAAC00B,UAAU,CAACvX,IAAI,CAAC,IAAI,CAACsX,yBAAyB,CAAE,CAAA,CAAC;QACxD,CAAC,QAAQ,IAAI,CAAC7C,GAAG,GAAS,CAAC;MAC7B;IACF;IAEA5xB,IAAI,CAAC6V,IAAI,GAAG,IAAI,CAAC+e,mBAAmB,CAAC;MACnCC,WAAW,EAAEP,OAAO;MACpBQ,UAAU,EAAE,KAAK;MACjBC,WAAW,EAAE,KAAK;MAClBC,UAAU,EAAEV,OAAO;MACnBW,YAAY,EAAE;IAChB,CAAC,CAAC;EACJ;EAEAR,yBAAyBA,CAAAA,EAA2B;IAClD,MAAMz0B,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAA0B;IAErD9W,IAAI,CAACmW,EAAE,GAAG,IAAI,CAAC+e,gCAAgC,EAAE;IACjD,IAAI,IAAI,CAAClD,KAAK,CAAA,EAAM,CAAC,EAAE;MACrBhyB,IAAI,CAAC+W,cAAc,GAAG,IAAI,CAACoe,mCAAmC,EAAE;IAClE,CAAC,MAAM;MACLn1B,IAAI,CAAC+W,cAAc,GAAG,IAAI;IAC5B;IAEA,OAAO,IAAI,CAACK,UAAU,CAACpX,IAAI,EAAE,kBAAkB,CAAC;EAClD;EAEAo1B,kBAAkBA,CAACp1B,IAA6B,EAAmB;IACjE,IAAI,CAACkyB,qBAAqB,CAAClyB,IAAI,EAAgB,KAAK,CAAC;IACrD,OAAO,IAAI,CAACoX,UAAU,CAACpX,IAAI,EAAE,sBAAsB,CAAC;EACtD;EAEAq1B,kBAAkBA,CAACtM,IAAY,EAAE;IAC/B,IAAIA,IAAI,KAAK,GAAG,EAAE;MAChB,IAAI,CAAC/P,KAAK,CACRmT,UAAU,CAAC8C,4BAA4B,EACvC,IAAI,CAACpV,KAAK,CAAC7B,QACb,CAAC;IACH;EACF;EAEAsd,iBAAiBA,CAACvM,IAAY,EAAE/Q,QAAkB,EAAEmC,WAAqB,EAAE;IACzE,IAAI,CAAC+R,aAAa,CAAChD,GAAG,CAACH,IAAI,CAAC,EAAE;IAE9B,IAAI,CAAC/P,KAAK,CACRmB,WAAW,GACPgS,UAAU,CAACG,kBAAkB,GAC7BH,UAAU,CAAC6C,sBAAsB,EACrChX,QAAQ,EACR;MACEuU,YAAY,EAAExD;IAChB,CACF,CAAC;EACH;EAEAwL,6BAA6BA,CAC3BgB,OAAiB,EACjBpb,WAAqB,EACP;IACd,IAAI,CAACmb,iBAAiB,CACpB,IAAI,CAACzb,KAAK,CAACrM,KAAK,EAChB,IAAI,CAACqM,KAAK,CAAC7B,QAAQ,EACnBmC,WACF,CAAC;IACD,OAAO,IAAI,CAACiY,eAAe,CAACmD,OAAO,CAAC;EACtC;EAIAnB,kBAAkBA,CAACp0B,IAA6B,EAAmB;IACjEA,IAAI,CAACmW,EAAE,GAAG,IAAI,CAACoe,6BAA6B,CAC5B,KAAK,EACD,IACpB,CAAC;IACD,IAAI,CAAClJ,KAAK,CAACC,WAAW,CACpBtrB,IAAI,CAACmW,EAAE,CAAClQ,IAAI,QAEZjG,IAAI,CAACmW,EAAE,CAAC3H,GAAG,CAAC5Q,KACd,CAAC;IAED,IAAI,IAAI,CAACo0B,KAAK,CAAA,EAAM,CAAC,EAAE;MACrBhyB,IAAI,CAAC+W,cAAc,GAAG,IAAI,CAACwb,iCAAiC,EAAE;IAChE,CAAC,MAAM;MACLvyB,IAAI,CAAC+W,cAAc,GAAG,IAAI;IAC5B;IAEA/W,IAAI,CAACw1B,KAAK,GAAG,IAAI,CAACrE,wBAAwB,GAAM,CAAC;IACjD,IAAI,CAAC0B,SAAS,CAAA,CAAE;IAEhB,OAAO,IAAI,CAACzb,UAAU,CAACpX,IAAI,EAAE,WAAW,CAAC;EAC3C;EAEAq0B,mBAAmBA,CACjBr0B,IAA8B,EAC9By1B,OAAgB,EACE;IAClB,IAAI,CAAC9D,gBAAgB,CAAA,GAAS,CAAC;IAC/B3xB,IAAI,CAACmW,EAAE,GAAG,IAAI,CAACoe,6BAA6B,CAC5B,IAAI,EACA,IACpB,CAAC;IACD,IAAI,CAAClJ,KAAK,CAACC,WAAW,CACpBtrB,IAAI,CAACmW,EAAE,CAAClQ,IAAI,QAEZjG,IAAI,CAACmW,EAAE,CAAC3H,GAAG,CAAC5Q,KACd,CAAC;IAED,IAAI,IAAI,CAACo0B,KAAK,CAAA,EAAM,CAAC,EAAE;MACrBhyB,IAAI,CAAC+W,cAAc,GAAG,IAAI,CAACwb,iCAAiC,EAAE;IAChE,CAAC,MAAM;MACLvyB,IAAI,CAAC+W,cAAc,GAAG,IAAI;IAC5B;IAGA/W,IAAI,CAAC01B,SAAS,GAAG,IAAI;IACrB,IAAI,IAAI,CAAC1D,KAAK,CAAA,EAAS,CAAC,EAAE;MACxBhyB,IAAI,CAAC01B,SAAS,GAAG,IAAI,CAACvE,wBAAwB,GAAS,CAAC;IAC1D;IAEAnxB,IAAI,CAAC21B,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACF,OAAO,EAAE;MACZz1B,IAAI,CAAC21B,QAAQ,GAAG,IAAI,CAACxE,wBAAwB,GAAM,CAAC;IACtD;IACA,IAAI,CAAC0B,SAAS,CAAA,CAAE;IAEhB,OAAO,IAAI,CAACzb,UAAU,CAACpX,IAAI,EAAE,YAAY,CAAC;EAC5C;EAIA41B,sBAAsBA,CAACC,cAAuB,GAAG,KAAK,EAAmB;IACvE,MAAMC,YAAY,GAAG,IAAI,CAACjc,KAAK,CAAC7B,QAAQ;IAExC,MAAMhY,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAmB;IAE9C,MAAMif,QAAQ,GAAG,IAAI,CAACC,iBAAiB,EAAE;IAEzC,MAAMC,KAAK,GAAG,IAAI,CAACxC,kCAAkC,EAAE;IACvDzzB,IAAI,CAACiG,IAAI,GAAGgwB,KAAK,CAAChwB,IAAI;IAEtBjG,IAAI,CAAC+1B,QAAQ,GAAGA,QAAQ;IAExB/1B,IAAI,CAACk2B,KAAK,GAAGD,KAAK,CAACrD,cAAc;IAEjC,IAAI,IAAI,CAACZ,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB,IAAI,CAACJ,GAAG,CAAA,EAAM,CAAC;MAEf5xB,IAAI,CAAC+zB,OAAO,GAAG,IAAI,CAACvC,aAAa,EAAE;IACrC,CAAC,MAAM;MACL,IAAIqE,cAAc,EAAE;QAClB,IAAI,CAAC7c,KAAK,CAACmT,UAAU,CAAC+B,uBAAuB,EAAE4H,YAAY,CAAC;MAC9D;IACF;IAEA,OAAO,IAAI,CAAC1e,UAAU,CAACpX,IAAI,EAAE,eAAe,CAAC;EAC/C;EAEAuyB,iCAAiCA,CAAAA,EAA+B;IAC9D,MAAMlB,SAAS,GAAG,IAAI,CAACxX,KAAK,CAACyX,MAAM;IACnC,MAAMtxB,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAA8B;IACzD9W,IAAI,CAACkV,MAAM,GAAG,EAAE;IAEhB,IAAI,CAAC2E,KAAK,CAACyX,MAAM,GAAG,IAAI;IAGxB,IAAI,IAAI,CAACU,KAAK,CAAM,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAe,GAAA,CAAC,EAAE;MACnD,IAAI,CAACxI,IAAI,CAAA,CAAE;IACb,CAAC,MAAM;MACL,IAAI,CAACxkB,UAAU,CAAA,CAAE;IACnB;IAEA,IAAImxB,eAAe,GAAG,KAAK;IAE3B,GAAG;MACD,MAAMC,aAAa,GAAG,IAAI,CAACR,sBAAsB,CAACO,eAAe,CAAC;MAElEn2B,IAAI,CAACkV,MAAM,CAACiI,IAAI,CAACiZ,aAAa,CAAC;MAE/B,IAAIA,aAAa,CAACrC,OAAO,EAAE;QACzBoC,eAAe,GAAG,IAAI;MACxB;MAEA,IAAI,CAAC,IAAI,CAACnE,KAAK,CAAA,EAAM,CAAC,EAAE;QACtB,IAAI,CAACT,MAAM,CAAA,EAAS,CAAC;MACvB;IACD,CAAA,QAAQ,CAAC,IAAI,CAACS,KAAK,GAAM,CAAC;IAC3B,IAAI,CAACT,MAAM,CAAA,EAAM,CAAC;IAElB,IAAI,CAAC1X,KAAK,CAACyX,MAAM,GAAGD,SAAS;IAE7B,OAAO,IAAI,CAACja,UAAU,CAACpX,IAAI,EAAE,0BAA0B,CAAC;EAC1D;EAGAq2B,qBAAqBA,CAAIC,EAAW,EAAK;IACvC,IAAI,IAAI,CAACC,UAAU,EAAE,KAAK3O,KAAE,CAACxM,KAAK,EAAE;MAClC,MAAMob,UAAU,GAAG,IAAI,CAAC3c,KAAK,CAAC6N,OAAO;MACrC,IAAI,CAAC7N,KAAK,CAAC6N,OAAO,GAAG,CAAC8O,UAAU,CAAC,CAAC,CAAC,CAAC;MACpC,IAAI;QACF,OAAOF,EAAE,CAAA,CAAE;MACb,CAAC,SAAS;QACR,IAAI,CAACzc,KAAK,CAAC6N,OAAO,GAAG8O,UAAU;MACjC;IACF,CAAC,MAAM;MACL,OAAOF,EAAE,CAAA,CAAE;IACb;EACF;EAIAG,+CAA+CA,CAAAA,EAEjC;IACZ,IAAI,IAAI,CAACC,SAAS,EAAE,OAAU,EAAE;IAChC,OAAO,IAAI,CAACvB,mCAAmC,EAAE;EACnD;EAEAA,mCAAmCA,CAAAA,EAAiC;IAClE,MAAMn1B,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAgC;IAC3D,MAAMua,SAAS,GAAG,IAAI,CAACxX,KAAK,CAACyX,MAAM;IAEnC,IAAI,CAACzX,KAAK,CAACyX,MAAM,GAAG,IAAI;IACxBtxB,IAAI,CAACkV,MAAM,GAAG,EAAE;IAChB,IAAI,CAACmhB,qBAAqB,CAAC,MAAM;MAC/B,IAAI,CAAC9E,MAAM,CAAA,EAAM,CAAC;MAClB,MAAMoF,qBAAqB,GAAG,IAAI,CAAC9c,KAAK,CAAC+c,kBAAkB;MAC3D,IAAI,CAAC/c,KAAK,CAAC+c,kBAAkB,GAAG,KAAK;MACrC,OAAO,CAAC,IAAI,CAAC5E,KAAK,CAAA,EAAM,CAAC,EAAE;QACzBhyB,IAAI,CAACkV,MAAM,CAACiI,IAAI,CAAC,IAAI,CAACqU,aAAa,CAAE,CAAA,CAAC;QACtC,IAAI,CAAC,IAAI,CAACQ,KAAK,CAAA,EAAM,CAAC,EAAE;UACtB,IAAI,CAACT,MAAM,CAAA,EAAS,CAAC;QACvB;MACF;MACA,IAAI,CAAC1X,KAAK,CAAC+c,kBAAkB,GAAGD,qBAAqB;IACvD,CAAC,CAAC;IAEF,IAAI,CAAC9c,KAAK,CAACyX,MAAM,GAAGD,SAAS;IAC7B,IAAI,CAAC,IAAI,CAACxX,KAAK,CAACyX,MAAM,IAAI,IAAI,CAACiF,UAAU,CAAE,CAAA,KAAK3O,KAAE,CAACxM,KAAK,EAAE;MAGxD,IAAI,CAACyb,YAAY,CAAA,CAAE;IACrB;IACA,IAAI,CAACtF,MAAM,CAAA,EAAM,CAAC;IAElB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,4BAA4B,CAAC;EAC5D;EAEA82B,4CAA4CA,CAAAA,EAAwC;IAClF,IAAI,IAAI,CAACJ,SAAS,CAAA,CAAE,KAAU,EAAA,EAAE,OAAO,IAAI;IAC3C,MAAM12B,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAgC;IAC3D,MAAMua,SAAS,GAAG,IAAI,CAACxX,KAAK,CAACyX,MAAM;IACnCtxB,IAAI,CAACkV,MAAM,GAAG,EAAE;IAEhB,IAAI,CAAC2E,KAAK,CAACyX,MAAM,GAAG,IAAI;IAExB,IAAI,CAACC,MAAM,CAAA,EAAM,CAAC;IAClB,OAAO,CAAC,IAAI,CAACS,KAAK,CAAA,EAAM,CAAC,EAAE;MACzBhyB,IAAI,CAACkV,MAAM,CAACiI,IAAI,CAAC,IAAI,CAAC4Z,oCAAoC,CAAE,CAAA,CAAC;MAC7D,IAAI,CAAC,IAAI,CAAC/E,KAAK,CAAA,EAAM,CAAC,EAAE;QACtB,IAAI,CAACT,MAAM,CAAA,EAAS,CAAC;MACvB;IACF;IACA,IAAI,CAACA,MAAM,CAAA,EAAM,CAAC;IAElB,IAAI,CAAC1X,KAAK,CAACyX,MAAM,GAAGD,SAAS;IAE7B,OAAO,IAAI,CAACja,UAAU,CAACpX,IAAI,EAAE,4BAA4B,CAAC;EAC5D;EAEAg3B,sBAAsBA,CAAAA,EAAwB;IAC5C,MAAMh3B,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAuB;IAClD,IAAI,CAAC6a,gBAAgB,CAAA,GAAc,CAAC;IAEpC3xB,IAAI,CAACw0B,OAAO,GAAG,EAAE;IACjB,IAAI,IAAI,CAAC5C,GAAG,CAAA,EAAY,CAAC,EAAE;MACzB,GAAG;QACD5xB,IAAI,CAACw0B,OAAO,CAACrX,IAAI,CAAC,IAAI,CAACsX,yBAAyB,CAAE,CAAA,CAAC;MACrD,CAAC,QAAQ,IAAI,CAAC7C,GAAG,GAAS,CAAC;IAC7B;IAEA5xB,IAAI,CAAC6V,IAAI,GAAG,IAAI,CAAC+e,mBAAmB,CAAC;MACnCC,WAAW,EAAE,KAAK;MAClBC,UAAU,EAAE,KAAK;MACjBC,WAAW,EAAE,KAAK;MAClBC,UAAU,EAAE,KAAK;MACjBC,YAAY,EAAE;IAChB,CAAC,CAAC;IAEF,OAAO,IAAI,CAAC7d,UAAU,CAACpX,IAAI,EAAE,yBAAyB,CAAC;EACzD;EAEAi3B,0BAA0BA,CAAAA,EAAiB;IACzC,OAAO,IAAI,CAACjF,KAAK,CAAA,GAAO,CAAC,IAAI,IAAI,CAACA,KAAK,CAAU,GAAA,CAAC,GAC9C,KAAK,CAAC0B,aAAa,CAAE,CAAA,GACrB,IAAI,CAACtB,eAAe,CAAC,IAAI,CAAC;EAChC;EAEA8E,0BAA0BA,CACxBl3B,IAAqC,EACrCm3B,QAAiB,EACjBpB,QAAgC,EACP;IACzB/1B,IAAI,CAACo3B,MAAM,GAAGD,QAAQ;IAGtB,IAAI,IAAI,CAACE,SAAS,EAAE,CAACp3B,IAAI,OAAa,EAAE;MACtCD,IAAI,CAACmW,EAAE,GAAG,IAAI,CAAC8gB,0BAA0B,EAAE;MAC3Cj3B,IAAI,CAAC2G,GAAG,GAAG,IAAI,CAACwqB,wBAAwB,EAAE;IAC5C,CAAC,MAAM;MACLnxB,IAAI,CAACmW,EAAE,GAAG,IAAI;MACdnW,IAAI,CAAC2G,GAAG,GAAG,IAAI,CAAC6qB,aAAa,EAAE;IACjC;IACA,IAAI,CAACD,MAAM,CAAA,CAAY,CAAC;IACxBvxB,IAAI,CAACwN,KAAK,GAAG,IAAI,CAAC2jB,wBAAwB,EAAE;IAC5CnxB,IAAI,CAAC+1B,QAAQ,GAAGA,QAAQ;IAExB,OAAO,IAAI,CAAC3e,UAAU,CAACpX,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAEAs3B,+BAA+BA,CAC7Bt3B,IAA0C,EAC1Cm3B,QAAiB,EACa;IAC9Bn3B,IAAI,CAACo3B,MAAM,GAAGD,QAAQ;IAEtBn3B,IAAI,CAACmW,EAAE,GAAG,IAAI,CAAC8gB,0BAA0B,EAAE;IAC3C,IAAI,CAAC1F,MAAM,CAAA,CAAY,CAAC;IACxB,IAAI,CAACA,MAAM,CAAA,CAAY,CAAC;IACxB,IAAI,IAAI,CAACS,KAAK,CAAM,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAU,EAAA,CAAC,EAAE;MAC9ChyB,IAAI,CAACiV,MAAM,GAAG,IAAI;MAClBjV,IAAI,CAACmZ,QAAQ,GAAG,KAAK;MACrBnZ,IAAI,CAACwN,KAAK,GAAG,IAAI,CAAC+pB,4BAA4B,CAC5C,IAAI,CAACC,WAAW,CAACx3B,IAAI,CAACwO,GAAG,CAAC5Q,KAAK,CACjC,CAAC;IACH,CAAC,MAAM;MACLoC,IAAI,CAACiV,MAAM,GAAG,KAAK;MACnB,IAAI,IAAI,CAAC2c,GAAG,CAAA,EAAY,CAAC,EAAE;QACzB5xB,IAAI,CAACmZ,QAAQ,GAAG,IAAI;MACtB;MACAnZ,IAAI,CAACwN,KAAK,GAAG,IAAI,CAAC2jB,wBAAwB,EAAE;IAC9C;IACA,OAAO,IAAI,CAAC/Z,UAAU,CAACpX,IAAI,EAAE,wBAAwB,CAAC;EACxD;EAEAu3B,4BAA4BA,CAC1Bv3B,IAA0C,EACZ;IAC9BA,IAAI,CAACkV,MAAM,GAAG,EAAE;IAChBlV,IAAI,CAAC4P,IAAI,GAAG,IAAI;IAChB5P,IAAI,CAAC+W,cAAc,GAAG,IAAI;IAC1B/W,IAAI,CAAC0yB,IAAI,GAAG,IAAI;IAEhB,IAAI,IAAI,CAACV,KAAK,CAAA,EAAM,CAAC,EAAE;MACrBhyB,IAAI,CAAC+W,cAAc,GAAG,IAAI,CAACwb,iCAAiC,EAAE;IAChE;IAEA,IAAI,CAAChB,MAAM,CAAA,EAAU,CAAC;IACtB,IAAI,IAAI,CAACS,KAAK,CAAA,EAAS,CAAC,EAAE;MACxBhyB,IAAI,CAAC0yB,IAAI,GAAG,IAAI,CAAC+E,0BAA0B,CAAa,IAAI,CAAC;MAE7Dz3B,IAAI,CAAC0yB,IAAI,CAACzsB,IAAI,GAAG,IAAI;MACrB,IAAI,CAAC,IAAI,CAAC+rB,KAAK,CAAA,EAAU,CAAC,EAAE;QAC1B,IAAI,CAACT,MAAM,CAAA,EAAS,CAAC;MACvB;IACF;IACA,OAAO,CAAC,IAAI,CAACS,KAAK,CAAU,EAAA,CAAC,IAAI,CAAC,IAAI,CAACA,KAAK,CAAA,EAAY,CAAC,EAAE;MACzDhyB,IAAI,CAACkV,MAAM,CAACiI,IAAI,CAAC,IAAI,CAACsa,0BAA0B,CAAC,KAAK,CAAC,CAAC;MACxD,IAAI,CAAC,IAAI,CAACzF,KAAK,CAAA,EAAU,CAAC,EAAE;QAC1B,IAAI,CAACT,MAAM,CAAA,EAAS,CAAC;MACvB;IACF;IAEA,IAAI,IAAI,CAACK,GAAG,CAAA,EAAY,CAAC,EAAE;MACzB5xB,IAAI,CAAC4P,IAAI,GAAG,IAAI,CAAC6nB,0BAA0B,CAAC,KAAK,CAAC;IACpD;IACA,IAAI,CAAClG,MAAM,CAAA,EAAU,CAAC;IACtBvxB,IAAI,CAAC2yB,UAAU,GAAG,IAAI,CAACxB,wBAAwB,EAAE;IAEjD,OAAO,IAAI,CAAC/Z,UAAU,CAACpX,IAAI,EAAE,wBAAwB,CAAC;EACxD;EAEA03B,+BAA+BA,CAC7B13B,IAA0C,EAC1Cm3B,QAAiB,EACa;IAC9B,MAAMlgB,SAAS,GAAG,IAAI,CAACH,SAAS,EAAE;IAClC9W,IAAI,CAACo3B,MAAM,GAAGD,QAAQ;IACtBn3B,IAAI,CAACwN,KAAK,GAAG,IAAI,CAAC+pB,4BAA4B,CAACtgB,SAAS,CAAC;IACzD,OAAO,IAAI,CAACG,UAAU,CAACpX,IAAI,EAAE,wBAAwB,CAAC;EACxD;EAEA40B,mBAAmBA,CAAC;IAClBC,WAAW;IACXC,UAAU;IACVC,WAAW;IACXC,UAAU;IACVC;EAOF,CAAC,EAA8B;IAC7B,MAAM5D,SAAS,GAAG,IAAI,CAACxX,KAAK,CAACyX,MAAM;IACnC,IAAI,CAACzX,KAAK,CAACyX,MAAM,GAAG,IAAI;IAExB,MAAMqG,SAAS,GAAG,IAAI,CAAC7gB,SAAS,EAA8B;IAE9D6gB,SAAS,CAACC,cAAc,GAAG,EAAE;IAC7BD,SAAS,CAACE,UAAU,GAAG,EAAE;IACzBF,SAAS,CAACG,QAAQ,GAAG,EAAE;IACvBH,SAAS,CAACI,aAAa,GAAG,EAAE;IAE5B,IAAIC,QAAQ;IACZ,IAAIC,KAAK;IACT,IAAIC,OAAO,GAAG,KAAK;IACnB,IAAIpD,UAAU,IAAI,IAAI,CAAC9C,KAAK,CAAA,CAAa,CAAC,EAAE;MAC1C,IAAI,CAACT,MAAM,CAAA,CAAa,CAAC;MACzByG,QAAQ,GAAe,CAAA;MACvBC,KAAK,GAAG,IAAI;IACd,CAAC,MAAM;MACL,IAAI,CAAC1G,MAAM,CAAA,CAAU,CAAC;MACtByG,QAAQ,GAAY,CAAA;MACpBC,KAAK,GAAG,KAAK;IACf;IAEAN,SAAS,CAACM,KAAK,GAAGA,KAAK;IAEvB,OAAO,CAAC,IAAI,CAACjG,KAAK,CAACgG,QAAQ,CAAC,EAAE;MAC5B,IAAIb,QAAQ,GAAG,KAAK;MACpB,IAAIgB,aAA0C,GAAG,IAAI;MACrD,IAAIC,eAA4C,GAAG,IAAI;MACvD,MAAMp4B,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAE;MAE7B,IAAIke,UAAU,IAAI,IAAI,CAAC5B,YAAY,CAAA,GAAU,CAAC,EAAE;QAC9C,MAAMiE,SAAS,GAAG,IAAI,CAACA,SAAS,EAAE;QAElC,IAAIA,SAAS,CAACp3B,IAAI,KAAA,EAAa,IAAIo3B,SAAS,CAACp3B,IAAI,KAAA,EAAgB,EAAE;UACjE,IAAI,CAACupB,IAAI,CAAA,CAAE;UACX2O,aAAa,GAAG,IAAI,CAACte,KAAK,CAAC7B,QAAQ;UACnC6c,WAAW,GAAG,KAAK;QACrB;MACF;MAEA,IAAIA,WAAW,IAAI,IAAI,CAACzB,YAAY,CAAA,GAAW,CAAC,EAAE;QAChD,MAAMiE,SAAS,GAAG,IAAI,CAACA,SAAS,EAAE;QAGlC,IAAIA,SAAS,CAACp3B,IAAI,KAAA,EAAa,IAAIo3B,SAAS,CAACp3B,IAAI,KAAA,EAAgB,EAAE;UACjE,IAAI,CAACupB,IAAI,CAAA,CAAE;UACX2N,QAAQ,GAAG,IAAI;QACjB;MACF;MAEA,MAAMpB,QAAQ,GAAG,IAAI,CAACC,iBAAiB,EAAE;MAEzC,IAAI,IAAI,CAACpE,GAAG,CAAA,CAAY,CAAC,EAAE;QACzB,IAAIuG,aAAa,IAAI,IAAI,EAAE;UACzB,IAAI,CAACnzB,UAAU,CAACmzB,aAAa,CAAC;QAChC;QACA,IAAI,IAAI,CAACvG,GAAG,CAAA,CAAY,CAAC,EAAE;UACzB,IAAImE,QAAQ,EAAE;YACZ,IAAI,CAAC/wB,UAAU,CAAC+wB,QAAQ,CAACvnB,GAAG,CAAC5Q,KAAK,CAAC;UACrC;UACA+5B,SAAS,CAACI,aAAa,CAAC5a,IAAI,CAC1B,IAAI,CAACma,+BAA+B,CAACt3B,IAAI,EAAEm3B,QAAQ,CACrD,CAAC;QACH,CAAC,MAAM;UACLQ,SAAS,CAACG,QAAQ,CAAC3a,IAAI,CACrB,IAAI,CAAC+Z,0BAA0B,CAACl3B,IAAI,EAAEm3B,QAAQ,EAAEpB,QAAQ,CAC1D,CAAC;QACH;MACF,CAAC,MAAM,IAAI,IAAI,CAAC/D,KAAK,CAAA,EAAU,CAAC,IAAI,IAAI,CAACA,KAAK,CAAA,EAAM,CAAC,EAAE;QACrD,IAAImG,aAAa,IAAI,IAAI,EAAE;UACzB,IAAI,CAACnzB,UAAU,CAACmzB,aAAa,CAAC;QAChC;QACA,IAAIpC,QAAQ,EAAE;UACZ,IAAI,CAAC/wB,UAAU,CAAC+wB,QAAQ,CAACvnB,GAAG,CAAC5Q,KAAK,CAAC;QACrC;QACA+5B,SAAS,CAACC,cAAc,CAACza,IAAI,CAC3B,IAAI,CAACua,+BAA+B,CAAC13B,IAAI,EAAEm3B,QAAQ,CACrD,CAAC;MACH,CAAC,MAAM;QACL,IAAI92B,IAAI,GAAG,MAAM;QAEjB,IAAI,IAAI,CAAC+yB,YAAY,CAAQ,EAAA,CAAC,IAAI,IAAI,CAACA,YAAY,CAAQ,GAAA,CAAC,EAAE;UAC5D,MAAMiE,SAAS,GAAG,IAAI,CAACA,SAAS,EAAE;UAClC,IAAI5Q,0BAA0B,CAAC4Q,SAAS,CAACp3B,IAAI,CAAC,EAAE;YAC9CI,IAAI,GAAG,IAAI,CAACwZ,KAAK,CAACrM,KAAK;YACvB,IAAI,CAACgc,IAAI,CAAA,CAAE;UACb;QACF;QAEA,MAAM6O,aAAa,GAAG,IAAI,CAACC,2BAA2B,CACpDt4B,IAAI,EACJm3B,QAAQ,EACRgB,aAAa,EACbpC,QAAQ,EACR11B,IAAI,EACJ00B,WAAW,EACXE,YAAY,WAAZA,YAAY,GAAI,CAACgD,KACnB,CAAC;QAED,IAAII,aAAa,KAAK,IAAI,EAAE;UAC1BH,OAAO,GAAG,IAAI;UACdE,eAAe,GAAG,IAAI,CAACve,KAAK,CAACC,eAAe;QAC9C,CAAC,MAAM;UACL6d,SAAS,CAACE,UAAU,CAAC1a,IAAI,CAACkb,aAAa,CAAC;QAC1C;MACF;MAEA,IAAI,CAACE,uBAAuB,CAAA,CAAE;MAE9B,IACEH,eAAe,IACf,CAAC,IAAI,CAACpG,KAAK,CAAA,CAAU,CAAC,IACtB,CAAC,IAAI,CAACA,KAAK,CAAA,CAAa,CAAC,EACzB;QACA,IAAI,CAAChZ,KAAK,CACRmT,UAAU,CAAC4C,iCAAiC,EAC5CqJ,eACF,CAAC;MACH;IACF;IAEA,IAAI,CAAC7G,MAAM,CAACyG,QAAQ,CAAC;IAOrB,IAAIjD,WAAW,EAAE;MACf4C,SAAS,CAACO,OAAO,GAAGA,OAAO;IAC7B;IAEA,MAAMM,GAAG,GAAG,IAAI,CAACphB,UAAU,CAACugB,SAAS,EAAE,sBAAsB,CAAC;IAE9D,IAAI,CAAC9d,KAAK,CAACyX,MAAM,GAAGD,SAAS;IAE7B,OAAOmH,GAAG;EACZ;EAEAF,2BAA2BA,CACzBt4B,IAAuE,EACvEm3B,QAAiB,EACjBgB,aAA0C,EAC1CpC,QAA2C,EAC3C11B,IAAY,EACZ00B,WAAoB,EACpBE,YAAqB,EAC6C;IAClE,IAAI,IAAI,CAACrD,GAAG,CAAA,EAAY,CAAC,EAAE;MACzB,MAAM6G,cAAc,GAClB,IAAI,CAACzG,KAAK,GAAS,CAAC,IACpB,IAAI,CAACA,KAAK,CAAA,EAAQ,CAAC,IACnB,IAAI,CAACA,KAAK,CAAU,CAAA,CAAC,IACrB,IAAI,CAACA,KAAK,CAAA,CAAa,CAAC;MAE1B,IAAIyG,cAAc,EAAE;QAClB,IAAI,CAAC1D,WAAW,EAAE;UAChB,IAAI,CAAC/b,KAAK,CACRmT,UAAU,CAAC4B,sBAAsB,EACjC,IAAI,CAAClU,KAAK,CAACC,eACb,CAAC;QACH,CAAC,MAAM,IAAI,CAACmb,YAAY,EAAE;UACxB,IAAI,CAACjc,KAAK,CACRmT,UAAU,CAAC2B,kBAAkB,EAC7B,IAAI,CAACjU,KAAK,CAACC,eACb,CAAC;QACH;QACA,IAAIic,QAAQ,EAAE;UACZ,IAAI,CAAC/c,KAAK,CAACmT,UAAU,CAAC6B,eAAe,EAAE+H,QAAQ,CAAC;QAClD;QAEA,OAAO,IAAI;MACb;MAEA,IAAI,CAAChB,WAAW,EAAE;QAChB,IAAI,CAAC/b,KAAK,CACRmT,UAAU,CAACgD,oBAAoB,EAC/B,IAAI,CAACtV,KAAK,CAACC,eACb,CAAC;MACH;MACA,IAAIqe,aAAa,IAAI,IAAI,EAAE;QACzB,IAAI,CAACnzB,UAAU,CAACmzB,aAAa,CAAC;MAChC;MACA,IAAIpC,QAAQ,EAAE;QACZ,IAAI,CAAC/c,KAAK,CAACmT,UAAU,CAACoC,cAAc,EAAEwH,QAAQ,CAAC;MACjD;MAEA/1B,IAAI,CAACoP,QAAQ,GAAG,IAAI,CAACoiB,aAAa,EAAE;MACpC,OAAO,IAAI,CAACpa,UAAU,CAACpX,IAAI,EAAE,0BAA0B,CAAC;IAC1D,CAAC,MAAM;MACLA,IAAI,CAAC2G,GAAG,GAAG,IAAI,CAACswB,0BAA0B,EAAE;MAC5Cj3B,IAAI,CAACo3B,MAAM,GAAGD,QAAQ;MACtBn3B,IAAI,CAAC04B,KAAK,GAAGP,aAAa,IAAI,IAAI;MAClCn4B,IAAI,CAACK,IAAI,GAAGA,IAAI;MAEhB,IAAI8Y,QAAQ,GAAG,KAAK;MACpB,IAAI,IAAI,CAAC6Y,KAAK,CAAM,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAU,EAAA,CAAC,EAAE;QAE9ChyB,IAAI,CAACiV,MAAM,GAAG,IAAI;QAElB,IAAIkjB,aAAa,IAAI,IAAI,EAAE;UACzB,IAAI,CAACnzB,UAAU,CAACmzB,aAAa,CAAC;QAChC;QACA,IAAIpC,QAAQ,EAAE;UACZ,IAAI,CAAC/wB,UAAU,CAAC+wB,QAAQ,CAACvnB,GAAG,CAAC5Q,KAAK,CAAC;QACrC;QAEAoC,IAAI,CAACwN,KAAK,GAAG,IAAI,CAAC+pB,4BAA4B,CAC5C,IAAI,CAACC,WAAW,CAACx3B,IAAI,CAACwO,GAAG,CAAC5Q,KAAK,CACjC,CAAC;QACD,IAAIyC,IAAI,KAAK,KAAK,IAAIA,IAAI,KAAK,KAAK,EAAE;UACpC,IAAI,CAACs4B,2BAA2B,CAAC34B,IAAI,CAAC;QACxC;QAEA,IACE,CAAC+0B,WAAW,IACZ/0B,IAAI,CAAC2G,GAAG,CAACV,IAAI,KAAK,aAAa,IAC/BjG,IAAI,CAACwN,KAAK,CAACklB,IAAI,EACf;UACA,IAAI,CAAC1Z,KAAK,CACRmT,UAAU,CAACsC,4BAA4B,EACvCzuB,IAAI,CAACwN,KAAK,CAACklB,IACb,CAAC;QACH;MACF,CAAC,MAAM;QACL,IAAIryB,IAAI,KAAK,MAAM,EAAE,IAAI,CAAC2E,UAAU,CAAA,CAAE;QAEtChF,IAAI,CAACiV,MAAM,GAAG,KAAK;QAEnB,IAAI,IAAI,CAAC2c,GAAG,CAAA,EAAY,CAAC,EAAE;UACzBzY,QAAQ,GAAG,IAAI;QACjB;QACAnZ,IAAI,CAACwN,KAAK,GAAG,IAAI,CAAC2jB,wBAAwB,EAAE;QAC5CnxB,IAAI,CAAC+1B,QAAQ,GAAGA,QAAQ;MAC1B;MAEA/1B,IAAI,CAACmZ,QAAQ,GAAGA,QAAQ;MAExB,OAAO,IAAI,CAAC/B,UAAU,CAACpX,IAAI,EAAE,oBAAoB,CAAC;IACpD;EACF;EAIA24B,2BAA2BA,CACzBC,QAEC,EACK;IACN,MAAMC,UAAU,GAAGD,QAAQ,CAACv4B,IAAI,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC;IAClD,MAAM4Z,MAAM,GACV2e,QAAQ,CAACprB,KAAK,CAAC0H,MAAM,CAAC+E,MAAM,IAAI2e,QAAQ,CAACprB,KAAK,CAACoC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAE9D,IAAIgpB,QAAQ,CAACprB,KAAK,CAACklB,IAAI,EAAE;MACvB,IAAI,CAAC1Z,KAAK,CACR4f,QAAQ,CAACv4B,IAAI,KAAK,KAAK,GACnB8rB,UAAU,CAACwB,yBAAyB,GACpCxB,UAAU,CAACmC,yBAAyB,EACxCsK,QAAQ,CAACprB,KAAK,CAACklB,IACjB,CAAC;IACH;IAEA,IAAIzY,MAAM,KAAK4e,UAAU,EAAE;MACzB,IAAI,CAAC7f,KAAK,CACR4f,QAAQ,CAACv4B,IAAI,KAAK,KAAK,GACnB0P,MAAM,CAAClP,cAAc,GACrBkP,MAAM,CAACjP,cAAc,EACzB83B,QACF,CAAC;IACH;IAEA,IAAIA,QAAQ,CAACv4B,IAAI,KAAK,KAAK,IAAIu4B,QAAQ,CAACprB,KAAK,CAACoC,IAAI,EAAE;MAClD,IAAI,CAACoJ,KAAK,CAACjJ,MAAM,CAAChP,sBAAsB,EAAE63B,QAAQ,CAAC;IACrD;EACF;EAEAL,uBAAuBA,CAAAA,EAAS;IAC9B,IACE,CAAC,IAAI,CAAC3G,GAAG,CAAA,EAAQ,CAAC,IAClB,CAAC,IAAI,CAACA,GAAG,CAAS,EAAA,CAAC,IACnB,CAAC,IAAI,CAACI,KAAK,CAAA,CAAU,CAAC,IACtB,CAAC,IAAI,CAACA,KAAK,CAAa,CAAA,CAAC,EACzB;MACA,IAAI,CAAChtB,UAAU,CAAA,CAAE;IACnB;EACF;EAEAkwB,gCAAgCA,CAC9Bld,QAAmB,EACnB7B,EAAiB,EAC6B;IAC9C6B,QAAQ,IAAA,IAAA,GAARA,QAAQ,GAARA,QAAQ,GAAK,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IAChC,IAAIhY,IAAkD,GACpDmW,EAAE,IAAI,IAAI,CAACoe,6BAA6B,CAAC,IAAI,CAAC;IAEhD,OAAO,IAAI,CAAC3C,GAAG,CAAA,EAAO,CAAC,EAAE;MACvB,MAAMkH,KAAK,GAAG,IAAI,CAACtB,WAAW,CAAgCxf,QAAQ,CAAC;MACvE8gB,KAAK,CAACC,aAAa,GAAG/4B,IAAI;MAC1B84B,KAAK,CAAC3iB,EAAE,GAAG,IAAI,CAACoe,6BAA6B,CAAC,IAAI,CAAC;MACnDv0B,IAAI,GAAG,IAAI,CAACoX,UAAU,CAAC0hB,KAAK,EAAE,yBAAyB,CAAC;IAC1D;IAEA,OAAO94B,IAAI;EACb;EAEAg5B,oBAAoBA,CAClBhhB,QAAkB,EAClB7B,EAAgB,EACa;IAC7B,MAAMnW,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAA8Bxf,QAAQ,CAAC;IAEpEhY,IAAI,CAAC+W,cAAc,GAAG,IAAI;IAC1B/W,IAAI,CAACmW,EAAE,GAAG,IAAI,CAAC+e,gCAAgC,CAACld,QAAQ,EAAE7B,EAAE,CAAC;IAE7D,IAAI,IAAI,CAAC6b,KAAK,CAAA,EAAM,CAAC,EAAE;MACrBhyB,IAAI,CAAC+W,cAAc,GAAG,IAAI,CAACoe,mCAAmC,EAAE;IAClE;IAEA,OAAO,IAAI,CAAC/d,UAAU,CAACpX,IAAI,EAAE,uBAAuB,CAAC;EACvD;EAEAi5B,mBAAmBA,CAAAA,EAA+B;IAChD,MAAMj5B,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAA8B;IACzD,IAAI,CAACya,MAAM,CAAA,EAAW,CAAC;IACvBvxB,IAAI,CAACoP,QAAQ,GAAG,IAAI,CAAC8pB,oBAAoB,EAAE;IAC3C,OAAO,IAAI,CAAC9hB,UAAU,CAACpX,IAAI,EAAE,sBAAsB,CAAC;EACtD;EAEAm5B,kBAAkBA,CAAAA,EAA8B;IAC9C,MAAMn5B,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAA6B;IACxD9W,IAAI,CAACmb,KAAK,GAAG,EAAE;IACf,IAAI,CAACoW,MAAM,CAAA,CAAY,CAAC;IAExB,OAAO,IAAI,CAAC1X,KAAK,CAACjL,GAAG,GAAG,IAAI,CAACqL,MAAM,IAAI,CAAC,IAAI,CAAC+X,KAAK,CAAA,CAAY,CAAC,EAAE;MAC/DhyB,IAAI,CAACmb,KAAK,CAACgC,IAAI,CAAC,IAAI,CAACqU,aAAa,CAAE,CAAA,CAAC;MACrC,IAAI,IAAI,CAACQ,KAAK,CAAA,CAAY,CAAC,EAAE;MAC7B,IAAI,CAACT,MAAM,CAAA,EAAS,CAAC;IACvB;IACA,IAAI,CAACA,MAAM,CAAA,CAAY,CAAC;IACxB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,qBAAqB,CAAC;EACrD;EAEAy3B,0BAA0BA,CAAC2B,KAAc,EAA2B;IAClE,IAAInzB,IAAI,GAAG,IAAI;IACf,IAAIkT,QAAQ,GAAG,KAAK;IACpB,IAAIyZ,cAAc,GAAG,IAAI;IACzB,MAAM5yB,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAA2B;IACtD,MAAMuiB,EAAE,GAAG,IAAI,CAAChC,SAAS,EAAE;IAC3B,MAAMiC,MAAM,GAAG,IAAI,CAACzf,KAAK,CAAC5Z,IAAI,KAAa,EAAA;IAE3C,IAAIo5B,EAAE,CAACp5B,IAAI,KAAA,EAAa,IAAIo5B,EAAE,CAACp5B,IAAI,KAAA,EAAgB,EAAE;MACnD,IAAIq5B,MAAM,IAAI,CAACF,KAAK,EAAE;QACpB,IAAI,CAACpgB,KAAK,CAACmT,UAAU,CAACwC,oBAAoB,EAAE3uB,IAAI,CAAC;MACnD;MACAiG,IAAI,GAAG,IAAI,CAACmsB,eAAe,CAACkH,MAAM,CAAC;MACnC,IAAI,IAAI,CAAC1H,GAAG,CAAA,EAAY,CAAC,EAAE;QACzBzY,QAAQ,GAAG,IAAI;QACf,IAAImgB,MAAM,EAAE;UACV,IAAI,CAACtgB,KAAK,CAACmT,UAAU,CAACuC,yBAAyB,EAAE1uB,IAAI,CAAC;QACxD;MACF;MACA4yB,cAAc,GAAG,IAAI,CAACzB,wBAAwB,EAAE;IAClD,CAAC,MAAM;MACLyB,cAAc,GAAG,IAAI,CAACpB,aAAa,EAAE;IACvC;IACAxxB,IAAI,CAACiG,IAAI,GAAGA,IAAI;IAChBjG,IAAI,CAACmZ,QAAQ,GAAGA,QAAQ;IACxBnZ,IAAI,CAAC4yB,cAAc,GAAGA,cAAc;IACpC,OAAO,IAAI,CAACxb,UAAU,CAACpX,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAEAu5B,kCAAkCA,CAChCt5B,IAAgB,EACS;IACzB,MAAMD,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAA0Bv3B,IAAI,CAACuO,GAAG,CAAC5Q,KAAK,CAAC;IACtEoC,IAAI,CAACiG,IAAI,GAAG,IAAI;IAChBjG,IAAI,CAACmZ,QAAQ,GAAG,KAAK;IACrBnZ,IAAI,CAAC4yB,cAAc,GAAG3yB,IAAI;IAC1B,OAAO,IAAI,CAACmX,UAAU,CAACpX,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAEAyyB,2BAA2BA,CAACvd,MAAiC,GAAG,EAAE,EAIhE;IACA,IAAItF,IAAgD,GAAG,IAAI;IAC3D,IAAI0S,KAAiD,GAAG,IAAI;IAC5D,IAAI,IAAI,CAAC0P,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB1P,KAAK,GAAG,IAAI,CAACmV,0BAA0B,CAAa,IAAI,CAAC;MAEzDnV,KAAK,CAACrc,IAAI,GAAG,IAAI;MACjB,IAAI,CAAC,IAAI,CAAC+rB,KAAK,CAAA,EAAU,CAAC,EAAE;QAC1B,IAAI,CAACT,MAAM,CAAA,EAAS,CAAC;MACvB;IACF;IACA,OAAO,CAAC,IAAI,CAACS,KAAK,CAAU,EAAA,CAAC,IAAI,CAAC,IAAI,CAACA,KAAK,CAAA,EAAY,CAAC,EAAE;MACzD9c,MAAM,CAACiI,IAAI,CAAC,IAAI,CAACsa,0BAA0B,CAAC,KAAK,CAAC,CAAC;MACnD,IAAI,CAAC,IAAI,CAACzF,KAAK,CAAA,EAAU,CAAC,EAAE;QAC1B,IAAI,CAACT,MAAM,CAAA,EAAS,CAAC;MACvB;IACF;IACA,IAAI,IAAI,CAACK,GAAG,CAAA,EAAY,CAAC,EAAE;MACzBhiB,IAAI,GAAG,IAAI,CAAC6nB,0BAA0B,CAAC,KAAK,CAAC;IAC/C;IACA,OAAO;MAAEviB,MAAM;MAAEtF,IAAI;MAAE0S;KAAO;EAChC;EAEAkX,yBAAyBA,CACvBxhB,QAAkB,EAClBhY,IAAwB,EACxBmW,EAAgB,EACJ;IACZ,QAAQA,EAAE,CAAClQ,IAAI;MACb,KAAK,KAAK;QACR,OAAO,IAAI,CAACmR,UAAU,CAACpX,IAAI,EAAE,mBAAmB,CAAC;MAEnD,KAAK,MAAM;MACX,KAAK,SAAS;QACZ,OAAO,IAAI,CAACoX,UAAU,CAACpX,IAAI,EAAE,uBAAuB,CAAC;MAEvD,KAAK,OAAO;QACV,OAAO,IAAI,CAACoX,UAAU,CAACpX,IAAI,EAAE,qBAAqB,CAAC;MAErD,KAAK,OAAO;QACV,OAAO,IAAI,CAACoX,UAAU,CAACpX,IAAI,EAAE,qBAAqB,CAAC;MAErD,KAAK,QAAQ;QACX,OAAO,IAAI,CAACoX,UAAU,CAACpX,IAAI,EAAE,sBAAsB,CAAC;MAEtD,KAAK,QAAQ;QACX,OAAO,IAAI,CAACoX,UAAU,CAACpX,IAAI,EAAE,sBAAsB,CAAC;MAEtD,KAAK,QAAQ;QACX,OAAO,IAAI,CAACoX,UAAU,CAACpX,IAAI,EAAE,sBAAsB,CAAC;MAEtD;QACE,IAAI,CAACq1B,kBAAkB,CAAClf,EAAE,CAAClQ,IAAI,CAAC;QAChC,OAAO,IAAI,CAAC+yB,oBAAoB,CAAChhB,QAAQ,EAAE7B,EAAE,CAAC;IAClD;EACF;EAKA+iB,oBAAoBA,CAAAA,EAAe;IACjC,MAAMlhB,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IACpC,MAAMhY,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAA6B;IACxD,IAAI0b,GAAG;IACP,IAAIvyB,IAAI;IACR,IAAIw5B,aAAa,GAAG,KAAK;IACzB,MAAM9C,qBAAqB,GAAG,IAAI,CAAC9c,KAAK,CAAC+c,kBAAkB;IAE3D,QAAQ,IAAI,CAAC/c,KAAK,CAAC5Z,IAAI;MACrB,KAAA,CAAA;QACE,OAAO,IAAI,CAAC20B,mBAAmB,CAAC;UAC9BC,WAAW,EAAE,KAAK;UAClBC,UAAU,EAAE,KAAK;UACjBC,WAAW,EAAE,IAAI;UACjBC,UAAU,EAAE,KAAK;UACjBC,YAAY,EAAE;QAChB,CAAC,CAAC;MAEJ,KAAA,CAAA;QACE,OAAO,IAAI,CAACL,mBAAmB,CAAC;UAC9BC,WAAW,EAAE,KAAK;UAClBC,UAAU,EAAE,IAAI;UAChBC,WAAW,EAAE,IAAI;UACjBC,UAAU,EAAE,KAAK;UACjBC,YAAY,EAAE;QAChB,CAAC,CAAC;MAEJ,KAAA,CAAA;QACE,IAAI,CAACpb,KAAK,CAAC+c,kBAAkB,GAAG,KAAK;QACrC32B,IAAI,GAAG,IAAI,CAACk5B,kBAAkB,EAAE;QAChC,IAAI,CAACtf,KAAK,CAAC+c,kBAAkB,GAAGD,qBAAqB;QACrD,OAAO12B,IAAI;MAEb,KAAA,EAAA;QAAY;UACV,MAAMD,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAgC;UAC3D9W,IAAI,CAAC+W,cAAc,GAAG,IAAI,CAACwb,iCAAiC,EAAE;UAC9D,IAAI,CAAChB,MAAM,CAAA,EAAU,CAAC;UACtBiB,GAAG,GAAG,IAAI,CAACC,2BAA2B,EAAE;UACxCzyB,IAAI,CAACkV,MAAM,GAAGsd,GAAG,CAACtd,MAAM;UACxBlV,IAAI,CAAC4P,IAAI,GAAG4iB,GAAG,CAAC5iB,IAAI;UACpB5P,IAAI,CAAC0yB,IAAI,GAAGF,GAAG,CAAClQ,KAAK;UACrB,IAAI,CAACiP,MAAM,CAAA,EAAU,CAAC;UAEtB,IAAI,CAACA,MAAM,CAAA,EAAS,CAAC;UAErBvxB,IAAI,CAAC2yB,UAAU,GAAG,IAAI,CAACnB,aAAa,EAAE;UAEtC,OAAO,IAAI,CAACpa,UAAU,CAACpX,IAAI,EAAE,wBAAwB,CAAC;QACxD;MAEA,KAAA,EAAA;QAAgB;UACd,MAAMA,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAgC;UAC3D,IAAI,CAAC0S,IAAI,CAAA,CAAE;UAGX,IAAI,CAAC,IAAI,CAACwI,KAAK,CAAU,EAAA,CAAC,IAAI,CAAC,IAAI,CAACA,KAAK,CAAA,EAAY,CAAC,EAAE;YACtD,IAAI1L,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC,IAAI,IAAI,CAAC+xB,KAAK,CAAA,EAAS,CAAC,EAAE;cAC9D,MAAMnlB,KAAK,GAAG,IAAI,CAACwqB,SAAS,CAAA,CAAE,CAACp3B,IAAI;cACnCw5B,aAAa,GAAG5sB,KAAK,KAAgB,EAAA,IAAIA,KAAK,KAAa,EAAA;YAC7D,CAAC,MAAM;cACL4sB,aAAa,GAAG,IAAI;YACtB;UACF;UAEA,IAAIA,aAAa,EAAE;YACjB,IAAI,CAAC5f,KAAK,CAAC+c,kBAAkB,GAAG,KAAK;YACrC32B,IAAI,GAAG,IAAI,CAACuxB,aAAa,EAAE;YAC3B,IAAI,CAAC3X,KAAK,CAAC+c,kBAAkB,GAAGD,qBAAqB;YAGrD,IACE,IAAI,CAAC9c,KAAK,CAAC+c,kBAAkB,IAC7B,EACE,IAAI,CAAC5E,KAAK,CAAS,EAAA,CAAC,IACnB,IAAI,CAACA,KAAK,CAAU,EAAA,CAAC,IAAI,IAAI,CAACqF,SAAS,CAAA,CAAE,CAACp3B,IAAI,KAAc,EAAA,CAC9D,EACD;cACA,IAAI,CAACsxB,MAAM,CAAA,EAAU,CAAC;cACtB,OAAOtxB,IAAI;YACb,CAAC,MAAM;cAEL,IAAI,CAAC2xB,GAAG,CAAA,EAAS,CAAC;YACpB;UACF;UAEA,IAAI3xB,IAAI,EAAE;YACRuyB,GAAG,GAAG,IAAI,CAACC,2BAA2B,CAAC,CACrC,IAAI,CAAC8G,kCAAkC,CAACt5B,IAAI,CAAC,CAC9C,CAAC;UACJ,CAAC,MAAM;YACLuyB,GAAG,GAAG,IAAI,CAACC,2BAA2B,EAAE;UAC1C;UAEAzyB,IAAI,CAACkV,MAAM,GAAGsd,GAAG,CAACtd,MAAM;UACxBlV,IAAI,CAAC4P,IAAI,GAAG4iB,GAAG,CAAC5iB,IAAI;UACpB5P,IAAI,CAAC0yB,IAAI,GAAGF,GAAG,CAAClQ,KAAK;UAErB,IAAI,CAACiP,MAAM,CAAA,EAAU,CAAC;UAEtB,IAAI,CAACA,MAAM,CAAA,EAAS,CAAC;UAErBvxB,IAAI,CAAC2yB,UAAU,GAAG,IAAI,CAACnB,aAAa,EAAE;UAEtCxxB,IAAI,CAAC+W,cAAc,GAAG,IAAI;UAE1B,OAAO,IAAI,CAACK,UAAU,CAACpX,IAAI,EAAE,wBAAwB,CAAC;QACxD;MAEA,KAAA,GAAA;QACE,OAAO,IAAI,CAACmT,YAAY,CACtB,IAAI,CAAC0G,KAAK,CAACrM,KAAK,EAChB,6BACF,CAAC;MAEH,KAAA,EAAA;MACA,KAAA,EAAA;QACExN,IAAI,CAACwN,KAAK,GAAG,IAAI,CAACwkB,KAAK,GAAS,CAAC;QACjC,IAAI,CAACxI,IAAI,CAAA,CAAE;QACX,OAAO,IAAI,CAACpS,UAAU,CACpBpX,IAAI,EACJ,8BACF,CAAC;MAEH,KAAA,EAAA;QACE,IAAI,IAAI,CAAC6Z,KAAK,CAACrM,KAAK,KAAK,GAAG,EAAE;UAC5B,IAAI,CAACgc,IAAI,CAAA,CAAE;UACX,IAAI,IAAI,CAACwI,KAAK,CAAA,GAAO,CAAC,EAAE;YACtB,OAAO,IAAI,CAAC0H,kBAAkB,CAC5B,CAAC,IAAI,CAAC7f,KAAK,CAACrM,KAAK,EACjB,6BAA6B,EAC7BxN,IACF,CAAC;UACH;UAEA,IAAI,IAAI,CAACgyB,KAAK,CAAA,GAAU,CAAC,EAAE;YACzB,OAAO,IAAI,CAAC0H,kBAAkB,CAC5B,CAAC,IAAI,CAAC7f,KAAK,CAACrM,KAAK,EACjB,6BAA6B,EAC7BxN,IACF,CAAC;UACH;UAEA,MAAM,IAAI,CAACgZ,KAAK,CACdmT,UAAU,CAACiD,4BAA4B,EACvC,IAAI,CAACvV,KAAK,CAAC7B,QACb,CAAC;QACH;QACA,MAAM,IAAI,CAAChT,UAAU,EAAE;MACzB,KAAA,GAAA;QACE,OAAO,IAAI,CAACmO,YAAY,CACtB,IAAI,CAAC0G,KAAK,CAACrM,KAAK,EAChB,6BACF,CAAC;MAEH,KAAA,GAAA;QACE,OAAO,IAAI,CAAC2F,YAAY,CACtB,IAAI,CAAC0G,KAAK,CAACrM,KAAK,EAChB,6BACF,CAAC;MAEH,KAAA,EAAA;QACE,IAAI,CAACgc,IAAI,CAAA,CAAE;QACX,OAAO,IAAI,CAACpS,UAAU,CAACpX,IAAI,EAAE,oBAAoB,CAAC;MAEpD,KAAA,EAAA;QACE,IAAI,CAACwpB,IAAI,CAAA,CAAE;QACX,OAAO,IAAI,CAACpS,UAAU,CAACpX,IAAI,EAAE,2BAA2B,CAAC;MAE3D,KAAA,EAAA;QACE,IAAI,CAACwpB,IAAI,CAAA,CAAE;QACX,OAAO,IAAI,CAACpS,UAAU,CAACpX,IAAI,EAAE,oBAAoB,CAAC;MAEpD,KAAA,EAAA;QACE,IAAI,CAACwpB,IAAI,CAAA,CAAE;QACX,OAAO,IAAI,CAACpS,UAAU,CAACpX,IAAI,EAAE,sBAAsB,CAAC;MAEtD,KAAA,EAAA;QACE,OAAO,IAAI,CAACi5B,mBAAmB,EAAE;MAEnC;QACE,IAAIlS,cAAc,CAAC,IAAI,CAAClN,KAAK,CAAC5Z,IAAI,CAAC,EAAE;UACnC,MAAM6b,KAAK,GAAGuL,cAAc,CAAC,IAAI,CAACxN,KAAK,CAAC5Z,IAAI,CAAC;UAC7C,IAAI,CAACupB,IAAI,CAAA,CAAE;UACX,OAAO,KAAK,CAACmQ,gBAAgB,CAAC35B,IAAI,EAA0B8b,KAAK,CAAC;QACnE,CAAA,MAAM,IAAIwK,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC,EAAE;UAC7C,IAAI,IAAI,CAACmzB,YAAY,CAAA,GAAc,CAAC,EAAE;YACpC,OAAO,IAAI,CAAC4D,sBAAsB,EAAE;UACtC;UAEA,OAAO,IAAI,CAACwC,yBAAyB,CACnCxhB,QAAQ,EACRhY,IAAI,EACJ,IAAI,CAACoyB,eAAe,CAAA,CACtB,CAAC;QACH;IACJ;IAEA,MAAM,IAAI,CAACptB,UAAU,EAAE;EACzB;EAEA40B,oBAAoBA,CAAAA,EAAe;IACjC,MAAM5hB,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IACpC,IAAI/X,IAAI,GAAG,IAAI,CAACi5B,oBAAoB,EAAE;IACtC,IAAIW,yBAAyB,GAAG,KAAK;IACrC,OACE,CAAC,IAAI,CAAC7H,KAAK,CAAY,CAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAe,EAAA,CAAC,KACtD,CAAC,IAAI,CAAC8H,kBAAkB,CAAA,CAAE,EAC1B;MACA,MAAM95B,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAA4Bxf,QAAQ,CAAC;MAClE,MAAMmB,QAAQ,GAAG,IAAI,CAACyY,GAAG,GAAe,CAAC;MACzCiI,yBAAyB,GAAGA,yBAAyB,IAAI1gB,QAAQ;MACjE,IAAI,CAACoY,MAAM,CAAA,CAAY,CAAC;MACxB,IAAI,CAACpY,QAAQ,IAAI,IAAI,CAAC6Y,KAAK,CAAA,CAAY,CAAC,EAAE;QACxChyB,IAAI,CAAC+5B,WAAW,GAAG95B,IAAI;QACvB,IAAI,CAACupB,IAAI,CAAA,CAAE;QACXvpB,IAAI,GAAG,IAAI,CAACmX,UAAU,CAACpX,IAAI,EAAE,qBAAqB,CAAC;MACrD,CAAC,MAAM;QACLA,IAAI,CAACg6B,UAAU,GAAG/5B,IAAI;QACtBD,IAAI,CAACi6B,SAAS,GAAG,IAAI,CAACzI,aAAa,EAAE;QACrC,IAAI,CAACD,MAAM,CAAA,CAAY,CAAC;QACxB,IAAIsI,yBAAyB,EAAE;UAC7B75B,IAAI,CAACmZ,QAAQ,GAAGA,QAAQ;UACxBlZ,IAAI,GAAG,IAAI,CAACmX,UAAU,CAEpBpX,IAAI,EACJ,2BACF,CAAC;QACH,CAAC,MAAM;UACLC,IAAI,GAAG,IAAI,CAACmX,UAAU,CAEpBpX,IAAI,EACJ,mBACF,CAAC;QACH;MACF;IACF;IACA,OAAOC,IAAI;EACb;EAEAi6B,mBAAmBA,CAAAA,EAAe;IAChC,MAAMl6B,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAA6B;IACxD,IAAI,IAAI,CAAC8a,GAAG,CAAA,EAAY,CAAC,EAAE;MACzB5xB,IAAI,CAAC4yB,cAAc,GAAG,IAAI,CAACsH,mBAAmB,EAAE;MAChD,OAAO,IAAI,CAAC9iB,UAAU,CAACpX,IAAI,EAAE,wBAAwB,CAAC;IACxD,CAAC,MAAM;MACL,OAAO,IAAI,CAAC45B,oBAAoB,EAAE;IACpC;EACF;EAEAO,kCAAkCA,CAAAA,EAAe;IAC/C,MAAMC,KAAK,GAAG,IAAI,CAACF,mBAAmB,EAAE;IACxC,IAAI,CAAC,IAAI,CAACrgB,KAAK,CAAC+c,kBAAkB,IAAI,IAAI,CAAChF,GAAG,CAAS,EAAA,CAAC,EAAE;MAExD,MAAM5xB,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAC3B4C,KAAK,CAAC5rB,GAAG,CAAC5Q,KACZ,CAAC;MACDoC,IAAI,CAACkV,MAAM,GAAG,CAAC,IAAI,CAACqkB,kCAAkC,CAACa,KAAK,CAAC,CAAC;MAC9Dp6B,IAAI,CAAC4P,IAAI,GAAG,IAAI;MAChB5P,IAAI,CAAC0yB,IAAI,GAAG,IAAI;MAChB1yB,IAAI,CAAC2yB,UAAU,GAAG,IAAI,CAACnB,aAAa,EAAE;MACtCxxB,IAAI,CAAC+W,cAAc,GAAG,IAAI;MAC1B,OAAO,IAAI,CAACK,UAAU,CAACpX,IAAI,EAAE,wBAAwB,CAAC;IACxD;IACA,OAAOo6B,KAAK;EACd;EAEAC,yBAAyBA,CAAAA,EAAe;IACtC,MAAMr6B,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAA6B;IACxD,IAAI,CAAC8a,GAAG,CAAA,EAAc,CAAC;IACvB,MAAM3xB,IAAI,GAAG,IAAI,CAACk6B,kCAAkC,EAAE;IACtDn6B,IAAI,CAACmb,KAAK,GAAG,CAAClb,IAAI,CAAC;IACnB,OAAO,IAAI,CAAC2xB,GAAG,CAAA,EAAc,CAAC,EAAE;MAC9B5xB,IAAI,CAACmb,KAAK,CAACgC,IAAI,CAAC,IAAI,CAACgd,kCAAkC,CAAE,CAAA,CAAC;IAC5D;IACA,OAAOn6B,IAAI,CAACmb,KAAK,CAAClB,MAAM,KAAK,CAAC,GAC1Bha,IAAI,GACJ,IAAI,CAACmX,UAAU,CAACpX,IAAI,EAAE,4BAA4B,CAAC;EACzD;EAEAs6B,kBAAkBA,CAAAA,EAAe;IAC/B,MAAMt6B,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAA6B;IACxD,IAAI,CAAC8a,GAAG,CAAA,EAAa,CAAC;IACtB,MAAM3xB,IAAI,GAAG,IAAI,CAACo6B,yBAAyB,EAAE;IAC7Cr6B,IAAI,CAACmb,KAAK,GAAG,CAAClb,IAAI,CAAC;IACnB,OAAO,IAAI,CAAC2xB,GAAG,CAAA,EAAa,CAAC,EAAE;MAC7B5xB,IAAI,CAACmb,KAAK,CAACgC,IAAI,CAAC,IAAI,CAACkd,yBAAyB,CAAE,CAAA,CAAC;IACnD;IACA,OAAOr6B,IAAI,CAACmb,KAAK,CAAClB,MAAM,KAAK,CAAC,GAC1Bha,IAAI,GACJ,IAAI,CAACmX,UAAU,CAACpX,IAAI,EAAE,qBAAqB,CAAC;EAClD;EAEAwxB,aAAaA,CAAAA,EAAe;IAC1B,MAAMH,SAAS,GAAG,IAAI,CAACxX,KAAK,CAACyX,MAAM;IACnC,IAAI,CAACzX,KAAK,CAACyX,MAAM,GAAG,IAAI;IACxB,MAAMrxB,IAAI,GAAG,IAAI,CAACq6B,kBAAkB,EAAE;IACtC,IAAI,CAACzgB,KAAK,CAACyX,MAAM,GAAGD,SAAS;IAC7B,OAAOpxB,IAAI;EACb;EAEA82B,oCAAoCA,CAAAA,EAAe;IACjD,IAAI,IAAI,CAACld,KAAK,CAAC5Z,IAAI,KAAY,GAAA,IAAI,IAAI,CAAC4Z,KAAK,CAACrM,KAAK,KAAK,GAAG,EAAE;MAC3D,MAAMwK,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;MACpC,MAAMhY,IAAI,GAAG,IAAI,CAACoyB,eAAe,EAAE;MACnC,OAAO,IAAI,CAAC4G,oBAAoB,CAAChhB,QAAQ,EAAEhY,IAAI,CAAC;IAClD,CAAC,MAAM;MACL,OAAO,IAAI,CAACwxB,aAAa,EAAE;IAC7B;EACF;EAEA0C,uBAAuBA,CAAAA,EAAqB;IAC1C,MAAMl0B,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAoB;IAC/C9W,IAAI,CAAC4yB,cAAc,GAAG,IAAI,CAACzB,wBAAwB,EAAE;IACrD,OAAO,IAAI,CAAC/Z,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;EAChD;EAEAyzB,kCAAkCA,CAChC8G,sBAAgC,EAClB;IACd,MAAMtE,KAAK,GAAGsE,sBAAsB,GAChC,IAAI,CAACnI,eAAe,CAAA,CAAE,GACtB,IAAI,CAACmC,6BAA6B,EAAE;IACxC,IAAI,IAAI,CAACvC,KAAK,CAAA,EAAS,CAAC,EAAE;MACxBiE,KAAK,CAACrD,cAAc,GAAG,IAAI,CAACsB,uBAAuB,EAAE;MACrD,IAAI,CAACnZ,gBAAgB,CAACkb,KAAK,CAAC;IAC9B;IACA,OAAOA,KAAK;EACd;EAEAuE,mBAAmBA,CAACx6B,IAA0B,EAAgB;IAC3DA,IAAI,CAAC4T,UAAU,CAAkBgf,cAAc,GAAG5yB,IAAI,CAAC4yB,cAAc;IAEtE,IAAI,CAAC7X,gBAAgB,CAAC/a,IAAI,CAAC4T,UAAU,EAAE5T,IAAI,CAAC4yB,cAAc,CAACpkB,GAAG,CAAC3Q,GAAG,CAAC;IAEnE,OAAOmC,IAAI,CAAC4T,UAAU;EACxB;EAEAoiB,iBAAiBA,CAAAA,EAAsC;IACrD,IAAID,QAAQ,GAAG,IAAI;IACnB,IAAI,IAAI,CAAC/D,KAAK,CAAA,EAAW,CAAC,EAAE;MAC1B+D,QAAQ,GAAG,IAAI,CAACjf,SAAS,EAAkB;MAC3C,IAAI,IAAI,CAAC+C,KAAK,CAACrM,KAAK,KAAK,GAAG,EAAE;QAC5BuoB,QAAQ,CAAC11B,IAAI,GAAG,MAAM;MACxB,CAAC,MAAM;QACL01B,QAAQ,CAAC11B,IAAI,GAAG,OAAO;MACzB;MACA,IAAI,CAACmpB,IAAI,CAAA,CAAE;MACX,OAAO,IAAI,CAACpS,UAAU,CAAC2e,QAAQ,EAAE,UAAU,CAAC;IAC9C;IACA,OAAOA,QAAQ;EACjB;EAMA1f,iBAAiBA,CACfrW,IAAgB,EAChBy6B,mBAAoC,EACpClkB,QAAiB,GAAG,KAAK,EACnB;IACN,IAAIkkB,mBAAmB,EAAE;MACvB,IAAI,CAACC,gCAAgC,CAAC16B,IAAI,EAAE,MAC1C,KAAK,CAACqW,iBAAiB,CAACrW,IAAI,EAAE,IAAI,EAAEuW,QAAQ,CAC9C,CAAC;MACD;IACF;IAEA,KAAK,CAACF,iBAAiB,CAACrW,IAAI,EAAE,KAAK,EAAEuW,QAAQ,CAAC;EAChD;EAEAokB,0BAA0BA,CAMxB36B,IAAe,EAAEC,IAAe,EAAEsW,QAAiB,GAAG,KAAK,EAAK;IAChE,IAAI,IAAI,CAACyb,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,MAAMK,QAAQ,GAAG,IAAI,CAACvb,SAAS,EAAoB;MAEnD,CACEub,QAAQ,CAACO,cAAc,EAEvB5yB,IAAI,CAAC+xB,SAAS,CACf,GAAG,IAAI,CAACD,oCAAoC,EAG5C;MAED9xB,IAAI,CAAC2yB,UAAU,GAAGN,QAAQ,CAACO,cAAc,GACrC,IAAI,CAACxb,UAAU,CAACib,QAAQ,EAAE,gBAAgB,CAAC,GAC3C,IAAI;IACV;IAEA,OAAO,KAAK,CAACsI,0BAA0B,CAAC36B,IAAI,EAAEC,IAAI,EAAEsW,QAAQ,CAAC;EAC/D;EAGAqkB,kBAAkBA,CAACroB,KAAyB,EAAe;IAEzD,IAAI,IAAI,CAACsH,KAAK,CAAC6O,MAAM,IAAI,IAAI,CAAC0K,YAAY,CAAc,GAAA,CAAC,EAAE;MACzD,MAAMiE,SAAS,GAAG,IAAI,CAACA,SAAS,EAAE;MAClC,IAAI7Q,0BAA0B,CAAC6Q,SAAS,CAACp3B,IAAI,CAAC,EAAE;QAC9C,MAAMD,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAmB;QAC9C,IAAI,CAAC0S,IAAI,CAAA,CAAE;QACX,OAAO,IAAI,CAAC4L,kBAAkB,CAACp1B,IAAI,CAAC;MACtC;IACD,CAAA,MAAM,IAAI,IAAI,CAACozB,YAAY,CAAA,GAAS,CAAC,EAAE;MACtC,MAAMpzB,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAE;MAC7B,IAAI,CAAC0S,IAAI,CAAA,CAAE;MACX,OAAO,IAAI,CAACqR,wBAAwB,CAAC76B,IAAI,CAAC;IAC5C;IACA,MAAMoU,IAAI,GAAG,KAAK,CAACwmB,kBAAkB,CAACroB,KAAK,CAAC;IAE5C,IAAI,IAAI,CAACme,UAAU,KAAKtgB,SAAS,IAAI,CAAC,IAAI,CAAC+E,gBAAgB,CAACf,IAAI,CAAC,EAAE;MACjE,IAAI,CAACsc,UAAU,GAAG,IAAI;IACxB;IACA,OAAOtc,IAAI;EACb;EAGA0mB,wBAAwBA,CACtB96B,IAA2B,EAC3B+6B,IAAkB,EAClBphB,UAAgC,EACT;IACvB,IAAIohB,IAAI,CAAC96B,IAAI,KAAK,YAAY,EAAE;MAC9B,IAAI86B,IAAI,CAAC90B,IAAI,KAAK,SAAS,EAAE;QAC3B,IACE,IAAI,CAAC+rB,KAAK,CAAA,EAAU,CAAC,IACrB1L,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC,IAClC,IAAI,CAAC+xB,KAAK,CAAa,EAAA,CAAC,IACxB,IAAI,CAACA,KAAK,CAAA,EAAQ,CAAC,IACnB,IAAI,CAACA,KAAK,CAAA,EAAW,CAAC,EACtB;UAEA,OAAO,IAAI,CAACc,gBAAgB,CAAC9yB,IAAI,CAAC;QACpC;MACD,CAAA,MAAM,IAAIsmB,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC,EAAE;QAC7C,IAAI86B,IAAI,CAAC90B,IAAI,KAAK,WAAW,EAAE;UAE7B,OAAO,IAAI,CAACmvB,kBAAkB,CAACp1B,IAAI,CAAC;QACtC,CAAC,MAAM,IAAI+6B,IAAI,CAAC90B,IAAI,KAAK,MAAM,EAAE;UAE/B,OAAO,IAAI,CAACmuB,kBAAkB,CAACp0B,IAAI,CAAC;QACtC,CAAC,MAAM,IAAI+6B,IAAI,CAAC90B,IAAI,KAAK,QAAQ,EAAE;UAEjC,OAAO,IAAI,CAACouB,mBAAmB,CAACr0B,IAAI,EAAE,KAAK,CAAC;QAC9C;MACF;IACF;IAEA,OAAO,KAAK,CAAC86B,wBAAwB,CAAC96B,IAAI,EAAE+6B,IAAI,EAAEphB,UAAU,CAAC;EAC/D;EAGAqhB,4BAA4BA,CAAAA,EAAY;IACtC,MAAM;MAAE/6B;KAAM,GAAG,IAAI,CAAC4Z,KAAK;IAC3B,IAAI5Z,IAAI,KAAa,GAAA,IAAI4mB,kCAAkC,CAAC5mB,IAAI,CAAC,EAAE;MACjE,OAAO,CAAC,IAAI,CAAC4Z,KAAK,CAACohB,WAAW;IAChC;IACA,OAAO,KAAK,CAACD,4BAA4B,EAAE;EAC7C;EAEAE,wBAAwBA,CAAAA,EAAY;IAClC,MAAM;MAAEj7B;KAAM,GAAG,IAAI,CAAC4Z,KAAK;IAC3B,IAAI5Z,IAAI,KAAa,GAAA,IAAI4mB,kCAAkC,CAAC5mB,IAAI,CAAC,EAAE;MACjE,OAAO,IAAI,CAAC4Z,KAAK,CAACohB,WAAW;IAC/B;IAEA,OAAO,KAAK,CAACC,wBAAwB,EAAE;EACzC;EAEAC,4BAA4BA,CAAAA,EAAG;IAC7B,IAAI,IAAI,CAAC/H,YAAY,CAAA,GAAS,CAAC,EAAE;MAC/B,MAAMpzB,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAE;MAC7B,IAAI,CAAC0S,IAAI,CAAA,CAAE;MACX,OAAO,IAAI,CAACqR,wBAAwB,CAAC76B,IAAI,CAAC;IAC5C;IACA,OAAO,KAAK,CAACm7B,4BAA4B,EAAE;EAC7C;EAEAC,gBAAgBA,CACdL,IAAkB,EAElB/iB,QAAkB,EAClBE,mBAA6C,EAC/B;IACd,IAAI,CAAC,IAAI,CAAC8Z,KAAK,GAAY,CAAC,EAAE,OAAO+I,IAAI;IAEzC,IAAI,IAAI,CAAClhB,KAAK,CAACwhB,sBAAsB,EAAE;MACrC,MAAMC,MAAM,GAAG,IAAI,CAACC,iBAAiB,EAAE;MAIvC,IACED,MAAM,KAAoB,EAAA,IAC1BA,MAAM,KAAA,EAAuB,IAC7BA,MAAM,KAAoB,EAAA,IAC1BA,MAAM,KAAA,EAA+B,EACrC;QAEA,IAAI,CAACE,0BAA0B,CAACtjB,mBAAoB,CAAC;QACrD,OAAO6iB,IAAI;MACb;IACF;IAEA,IAAI,CAACxJ,MAAM,CAAA,EAAY,CAAC;IACxB,MAAM1X,KAAK,GAAG,IAAI,CAACA,KAAK,CAAChL,KAAK,CAAA,CAAE;IAChC,MAAM4sB,iBAAiB,GAAG,IAAI,CAAC5hB,KAAK,CAAC6hB,SAAS;IAC9C,MAAM17B,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAA0Bxf,QAAQ,CAAC;IAChE,IAAI;MAAE2jB,UAAU;MAAEC;IAAO,CAAC,GAAG,IAAI,CAACC,6BAA6B,EAAE;IACjE,IAAI,CAACC,KAAK,EAAEC,OAAO,CAAC,GAAG,IAAI,CAACC,uBAAuB,CAACL,UAAU,CAAC;IAE/D,IAAIC,MAAM,IAAIG,OAAO,CAAC9hB,MAAM,GAAG,CAAC,EAAE;MAChC,MAAMyhB,SAAS,GAAG,CAAC,GAAGD,iBAAiB,CAAC;MAExC,IAAIM,OAAO,CAAC9hB,MAAM,GAAG,CAAC,EAAE;QACtB,IAAI,CAACJ,KAAK,GAAGA,KAAK;QAClB,IAAI,CAACA,KAAK,CAAC6hB,SAAS,GAAGA,SAAS;QAEhC,KAAK,IAAItT,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2T,OAAO,CAAC9hB,MAAM,EAAEmO,CAAC,EAAE,EAAE;UACvCsT,SAAS,CAACve,IAAI,CAAC4e,OAAO,CAAC3T,CAAC,CAAC,CAACxqB,KAAK,CAAC;QAClC;QAEA,CAAC;UAAE+9B,UAAU;UAAEC;QAAO,CAAC,GAAG,IAAI,CAACC,6BAA6B,EAAE;QAC9D,CAACC,KAAK,EAAEC,OAAO,CAAC,GAAG,IAAI,CAACC,uBAAuB,CAACL,UAAU,CAAC;MAC7D;MAEA,IAAIC,MAAM,IAAIE,KAAK,CAAC7hB,MAAM,GAAG,CAAC,EAAE;QAM9B,IAAI,CAACjB,KAAK,CAACmT,UAAU,CAACC,yBAAyB,EAAEvS,KAAK,CAAC7B,QAAQ,CAAC;MAClE;MAEA,IAAI4jB,MAAM,IAAIE,KAAK,CAAC7hB,MAAM,KAAK,CAAC,EAAE;QAChC,IAAI,CAACJ,KAAK,GAAGA,KAAK;QAClB6hB,SAAS,CAACve,IAAI,CAAC2e,KAAK,CAAC,CAAC,CAAC,CAACl+B,KAAK,CAAC;QAC9B,IAAI,CAACic,KAAK,CAAC6hB,SAAS,GAAGA,SAAS;QAChC,CAAC;UAAEC,UAAU;UAAEC;QAAO,CAAC,GAAG,IAAI,CAACC,6BAA6B,EAAE;MAChE;IACF;IAEA,IAAI,CAACG,uBAAuB,CAACL,UAAU,EAAE,IAAI,CAAC;IAE9C,IAAI,CAAC9hB,KAAK,CAAC6hB,SAAS,GAAGD,iBAAiB;IACxC,IAAI,CAAClK,MAAM,CAAA,EAAS,CAAC;IAErBvxB,IAAI,CAACsoB,IAAI,GAAGyS,IAAI;IAChB/6B,IAAI,CAAC27B,UAAU,GAAGA,UAAU;IAC5B37B,IAAI,CAACi8B,SAAS,GAAG,IAAI,CAACvB,gCAAgC,CAAC16B,IAAI,EAAE,MAC3D,IAAI,CAACk8B,gBAAgB,CAAC9rB,SAAS,EAAEA,SAAS,CAC5C,CAAC;IAED,OAAO,IAAI,CAACgH,UAAU,CAACpX,IAAI,EAAE,uBAAuB,CAAC;EACvD;EAEA67B,6BAA6BA,CAAAA,EAG3B;IACA,IAAI,CAAChiB,KAAK,CAACsiB,yBAAyB,CAAChf,IAAI,CAAC,IAAI,CAACtD,KAAK,CAACjc,KAAK,CAAC;IAE3D,MAAM+9B,UAAU,GAAG,IAAI,CAACS,uBAAuB,EAAE;IACjD,MAAMR,MAAM,GAAG,CAAC,IAAI,CAAC5J,KAAK,GAAS,CAAC;IAEpC,IAAI,CAACnY,KAAK,CAACsiB,yBAAyB,CAACxU,GAAG,EAAE;IAE1C,OAAO;MAAEgU,UAAU;MAAEC;KAAQ;EAC/B;EASAI,uBAAuBA,CACrBh8B,IAAkB,EAClBq8B,eAAyB,EACmC;IAC5D,MAAMC,KAAK,GAAG,CAACt8B,IAAI,CAAC;IACpB,MAAMu8B,MAAmC,GAAG,EAAE;IAE9C,OAAOD,KAAK,CAACriB,MAAM,KAAK,CAAC,EAAE;MACzB,MAAMja,IAAI,GAAGs8B,KAAK,CAAC3U,GAAG,EAAG;MACzB,IACE3nB,IAAI,CAACC,IAAI,KAAK,yBAAyB,IACvCD,IAAI,CAAC6V,IAAI,CAAC5V,IAAI,KAAK,gBAAgB,EACnC;QACA,IAAID,IAAI,CAAC+W,cAAc,IAAI,CAAC/W,IAAI,CAAC2yB,UAAU,EAAE;UAE3C,IAAI,CAAC6J,qBAAqB,CAACx8B,IAAI,CAAC;QAClC,CAAC,MAAM;UACLu8B,MAAM,CAACpf,IAAI,CAACnd,IAAI,CAAC;QACnB;QACAs8B,KAAK,CAACnf,IAAI,CAACnd,IAAI,CAAC6V,IAAI,CAAC;MACvB,CAAC,MAAM,IAAI7V,IAAI,CAACC,IAAI,KAAK,uBAAuB,EAAE;QAChDq8B,KAAK,CAACnf,IAAI,CAACnd,IAAI,CAAC27B,UAAU,CAAC;QAC3BW,KAAK,CAACnf,IAAI,CAACnd,IAAI,CAACi8B,SAAS,CAAC;MAC5B;IACF;IAEA,IAAII,eAAe,EAAE;MACnBE,MAAM,CAACzI,OAAO,CAAC9zB,IAAI,IAAI,IAAI,CAACw8B,qBAAqB,CAACx8B,IAAI,CAAC,CAAC;MACxD,OAAO,CAACu8B,MAAM,EAAE,EAAE,CAAC;IACrB;IAEA,OAAOpM,SAAS,CAACoM,MAAM,EAAEv8B,IAAI,IAC3BA,IAAI,CAACkV,MAAM,CAACunB,KAAK,CAACrC,KAAK,IAAI,IAAI,CAAC5hB,YAAY,CAAC4hB,KAAK,EAAE,IAAI,CAAC,CAC3D,CAAC;EACH;EAEAoC,qBAAqBA,CAACx8B,IAA+B,EAAE;IAAA,IAAA08B,WAAA;IACrD,IAAI,CAACC,gBAAgB,CAGnB38B,IAAI,CAACkV,MAAM,GAAAwnB,WAAA,GACX18B,IAAI,CAACkU,KAAK,KAAVwoB,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAA,CAAYE,gBAAgB,EAChB,KACd,CAAC;IAED,IAAI,CAACvR,KAAK,CAACF,KAAK,CAACN,OAAoC,CAAC;IAEtD,KAAK,CAACgS,WAAW,CAAC78B,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;IACpC,IAAI,CAACqrB,KAAK,CAACD,IAAI,EAAE;EACnB;EAEAsP,gCAAgCA,CAC9B16B,IAAoB,EACpBkS,KAAc,EACX;IACH,IAAI0I,MAAS;IACb,IACE,IAAI,CAACf,KAAK,CAACsiB,yBAAyB,CAACW,QAAQ,CAC3C,IAAI,CAACC,iBAAiB,CAAC/8B,IAAI,CAACpC,KAAK,CACnC,CAAC,EACD;MACA,IAAI,CAACic,KAAK,CAACsiB,yBAAyB,CAAChf,IAAI,CAAC,IAAI,CAACtD,KAAK,CAACjc,KAAK,CAAC;MAC3Dgd,MAAM,GAAG1I,KAAK,CAAA,CAAE;MAChB,IAAI,CAAC2H,KAAK,CAACsiB,yBAAyB,CAACxU,GAAG,EAAE;IAC5C,CAAC,MAAM;MACL/M,MAAM,GAAG1I,KAAK,CAAA,CAAE;IAClB;IAEA,OAAO0I,MAAM;EACf;EAEAoiB,cAAcA,CACZh9B,IAAO,EACPgY,QAAkB,EACiC;IACnD,MAAMilB,OAAO,GAAG,KAAK,CAACD,cAAc,CAACh9B,IAAI,EAAEgY,QAAQ,CAAC;IACpD,IAAI,IAAI,CAAC4Z,GAAG,CAAA,EAAY,CAAC,EAAE;MACxBqL,OAAO,CAAkB9jB,QAAQ,GAAG,IAAI;MAIzC,IAAI,CAAC4B,gBAAgB,CAAC/a,IAAI,CAAC;IAC7B;IAEA,IAAI,IAAI,CAACgyB,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,MAAMkL,YAAY,GAAG,IAAI,CAAC1F,WAAW,CAAuBxf,QAAQ,CAAC;MACrEklB,YAAY,CAACtpB,UAAU,GAAGqpB,OAAuB;MACjDC,YAAY,CAACtK,cAAc,GAAG,IAAI,CAACsB,uBAAuB,EAAE;MAE5D,OAAO,IAAI,CAAC9c,UAAU,CAAC8lB,YAAY,EAAE,oBAAoB,CAAC;IAC5D;IAEA,OAAOD,OAAO;EAChB;EAEAE,uBAAuBA,CAACn9B,IAAY,EAAE;IACpC,IACGA,IAAI,CAACC,IAAI,KAAK,mBAAmB,KAC/BD,IAAI,CAAC8vB,UAAU,KAAK,MAAM,IAAI9vB,IAAI,CAAC8vB,UAAU,KAAK,QAAQ,CAAC,IAC7D9vB,IAAI,CAACC,IAAI,KAAK,wBAAwB,IACrCD,IAAI,CAACi0B,UAAU,KAAK,MAAO,IAC5Bj0B,IAAI,CAACC,IAAI,KAAK,sBAAsB,IAAID,IAAI,CAACi0B,UAAU,KAAK,MAAO,EACpE;MAGA;IACF;IAEA,KAAK,CAACkJ,uBAAuB,CAACn9B,IAAI,CAAC;EACrC;EAEAo9B,sBAAsBA,CACpBp9B,IAA8B,EACI;IAClC,IAAI,IAAI,CAACozB,YAAY,CAAA,GAAS,CAAC,EAAE;MAC/BpzB,IAAI,CAACi0B,UAAU,GAAG,MAAM;MAExB,MAAMoJ,eAAe,GAAG,IAAI,CAACvmB,SAAS,EAAE;MACxC,IAAI,CAAC0S,IAAI,CAAA,CAAE;MAEX,IAAI,IAAI,CAACwI,KAAK,CAAA,CAAU,CAAC,EAAE;QAEzBhyB,IAAI,CAACga,UAAU,GAAG,IAAI,CAACsjB,qBAAqB,CACrB,IACvB,CAAC;QACD,KAAK,CAACC,eAAe,CAACv9B,IAAI,CAAC;QAC3B,OAAO,IAAI;MACb,CAAC,MAAM;QAGL,OAAO,IAAI,CAACo0B,kBAAkB,CAACiJ,eAAe,CAAC;MACjD;IACD,CAAA,MAAM,IAAI,IAAI,CAACjK,YAAY,CAAA,GAAW,CAAC,EAAE;MACxCpzB,IAAI,CAACi0B,UAAU,GAAG,MAAM;MAExB,MAAMoJ,eAAe,GAAG,IAAI,CAACvmB,SAAS,EAAE;MACxC,IAAI,CAAC0S,IAAI,CAAA,CAAE;MAGX,OAAO,IAAI,CAAC6K,mBAAmB,CAACgJ,eAAe,EAAE,KAAK,CAAC;IACxD,CAAA,MAAM,IAAI,IAAI,CAACjK,YAAY,CAAA,GAAc,CAAC,EAAE;MAC3CpzB,IAAI,CAACi0B,UAAU,GAAG,MAAM;MACxB,MAAMoJ,eAAe,GAAG,IAAI,CAACvmB,SAAS,EAAE;MACxC,IAAI,CAAC0S,IAAI,CAAA,CAAE;MAEX,OAAO,IAAI,CAAC4L,kBAAkB,CAACiI,eAAe,CAAC;IAChD,CAAA,MAAM,IAAI,IAAI,CAACjK,YAAY,CAAA,GAAS,CAAC,EAAE;MACtCpzB,IAAI,CAACi0B,UAAU,GAAG,OAAO;MACzB,MAAMoJ,eAAe,GAAG,IAAI,CAACvmB,SAAS,EAAE;MACxC,IAAI,CAAC0S,IAAI,CAAA,CAAE;MAEX,OAAO,IAAI,CAACqR,wBAAwB,CAACwC,eAAe,CAAC;IACvD,CAAC,MAAM;MACL,OAAO,KAAK,CAACD,sBAAsB,CAACp9B,IAAI,CAAC;IAC3C;EACF;EAEAw9B,aAAaA,CACXx9B,IAAoB,EAC+C;IACnE,IAAI,KAAK,CAACw9B,aAAa,CAACx9B,IAAI,CAAC,EAAE,OAAO,IAAI;IAE1C,IAAI,IAAI,CAACozB,YAAY,CAAA,GAAS,CAAC,IAAI,IAAI,CAACiE,SAAS,CAAE,CAAA,CAACp3B,IAAI,OAAY,EAAE;MAElED,IAAI,CACJi0B,UAAU,GAAG,MAAM;MACrB,IAAI,CAACzK,IAAI,CAAA,CAAE;MACX,IAAI,CAACA,IAAI,CAAA,CAAE;MACX,OAAO,IAAI;IACb;IAEA,OAAO,KAAK;EACd;EAEAiU,kCAAkCA,CAChCz9B,IAA+D,EACrB;IAC1C,MAAM;MAAEgY;KAAU,GAAG,IAAI,CAAC6B,KAAK;IAC/B,MAAM6jB,YAAY,GAAG,KAAK,CAACD,kCAAkC,CAACz9B,IAAI,CAAC;IACnE,IAAI09B,YAAY,IAAI19B,IAAI,CAACi0B,UAAU,KAAK,MAAM,EAAE;MAC9C,IAAI,CAACjvB,UAAU,CAACgT,QAAQ,CAAC;IAC3B;IACA,OAAO0lB,YAAY;EACrB;EAEAC,YAAYA,CACV39B,IAAa,EACb49B,WAAoB,EACpBC,UAA2B,EAC3B;IACA,KAAK,CAACF,YAAY,CAAC39B,IAAI,EAAE49B,WAAW,EAAEC,UAAU,CAAC;IACjD,IAAI,IAAI,CAAC7L,KAAK,CAAA,EAAM,CAAC,EAAE;MACrBhyB,IAAI,CAAC+W,cAAc,GAAG,IAAI,CAACwb,iCAAiC,EAAE;IAChE;EACF;EAEAuL,gBAAgBA,CACdC,SAAsB,EACtBC,MAAW,EACXnkB,KAA8B,EACxB;IACN,MAAM;MAAE7B;KAAU,GAAG,IAAI,CAAC6B,KAAK;IAC/B,IAAI,IAAI,CAACuZ,YAAY,CAAA,GAAY,CAAC,EAAE;MAClC,IAAI,KAAK,CAAC6K,4BAA4B,CAACF,SAAS,EAAEC,MAAM,CAAC,EAAE;QAEzD;MACF;MAEAA,MAAM,CAACvI,OAAO,GAAG,IAAI;IACvB;IAEA,KAAK,CAACqI,gBAAgB,CAACC,SAAS,EAAEC,MAAM,EAAEnkB,KAAK,CAAC;IAEhD,IAAImkB,MAAM,CAACvI,OAAO,EAAE;MAClB,IACEuI,MAAM,CAAC/9B,IAAI,KAAK,eAAe,IAC/B+9B,MAAM,CAAC/9B,IAAI,KAAK,sBAAsB,IACtC+9B,MAAM,CAAC/9B,IAAI,KAAK,oBAAoB,EACpC;QACA,IAAI,CAAC+Y,KAAK,CAACmT,UAAU,CAACK,mBAAmB,EAAExU,QAAQ,CAAC;MACtD,CAAC,MAAM,IAAIgmB,MAAM,CAACxwB,KAAK,EAAE;QACvB,IAAI,CAACwL,KAAK,CAACmT,UAAU,CAACM,4BAA4B,EAAEuR,MAAM,CAACxwB,KAAK,CAAC;MACnE;IACF;EACF;EAEA0wB,UAAUA,CAACnV,IAAY,EAAW;IAChC,OAAOA,IAAI,KAAK,UAAU,IAAIA,IAAI,KAAK,eAAe;EACxD;EAEAoV,YAAYA,CAAAA,EAAS;IACnB,MAAMpV,IAAI,GAAG,KAAK,CAACqV,SAAS,EAAE;IAC9B,MAAMC,QAAQ,GAAG,IAAI,GAAGtV,IAAI;IAG5B,IAAI,CAAC,IAAI,CAACmV,UAAU,CAACnV,IAAI,CAAC,IAAI,CAAC,IAAI,CAAClP,KAAK,CAACyX,MAAM,EAAE;MAChD,IAAI,CAACtY,KAAK,CAACjJ,MAAM,CAACvL,iBAAiB,EAAE,IAAI,CAACqV,KAAK,CAACykB,WAAW,EAAE,EAAE;QAC7DvgC,cAAc,EAAEsgC;MAClB,CAAC,CAAC;IACJ;IAEA,IAAI,CAACxN,WAAW,CAAUwN,GAAAA,EAAAA,QAAQ,CAAC;EACrC;EAGAE,gBAAgBA,CAACpgC,IAAY,EAAQ;IACnC,MAAMqrB,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC;IACtD,IAAIzQ,IAAI,KAAA,GAA6B,IAAIqrB,IAAI,QAA0B,EAAE;MACvE,IAAI,CAACkV,QAAQ,CAAe,CAAA,EAAA,CAAC,CAAC;IAChC,CAAC,MAAM,IACL,IAAI,CAAC7kB,KAAK,CAACyX,MAAM,KAChBnzB,IAAI,KAA0B,EAAA,IAAIA,IAAI,KAAA,EAAuB,CAAC,EAC/D;MACA,IAAI,CAACugC,QAAQ,CAACvgC,IAAI,OAA0B,GAAgB,EAAA,GAAA,EAAA,EAAE,CAAC,CAAC;IACjE,CAAA,MAAM,IAAI,IAAI,CAAC0b,KAAK,CAACyX,MAAM,IAAInzB,IAAI,KAAA,EAA2B,EAAE;MAC/D,IAAIqrB,IAAI,OAAkB,EAAE;QAC1B,IAAI,CAACkV,QAAQ,CAAiB,EAAA,EAAA,CAAC,CAAC;MAClC,CAAC,MAAM;QAEL,IAAI,CAACA,QAAQ,CAAc,EAAA,EAAA,CAAC,CAAC;MAC/B;IACD,CAAA,MAAM,IACLpV,eAAe,CAACnrB,IAAI,EAAEqrB,IAAI,EAAE,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC,CAAC,EACtE;MACA,IAAI,CAACiL,KAAK,CAACjL,GAAG,IAAI,CAAC;MACnB,IAAI,CAACuvB,YAAY,CAAA,CAAE;IACrB,CAAC,MAAM;MACL,KAAK,CAACI,gBAAgB,CAACpgC,IAAI,CAAC;IAC9B;EACF;EAEAqa,YAAYA,CAACxY,IAAY,EAAEyY,SAAmB,EAAW;IACvD,IAAIzY,IAAI,CAACC,IAAI,KAAK,oBAAoB,EAAE;MACtC,OAAO,IAAI,CAACuY,YAAY,CAACxY,IAAI,CAAC4T,UAAU,EAAE6E,SAAS,CAAC;IACtD,CAAC,MAAM;MACL,OAAO,KAAK,CAACD,YAAY,CAACxY,IAAI,EAAEyY,SAAS,CAAC;IAC5C;EACF;EAEAC,YAAYA,CAAC1Y,IAAY,EAAE2Y,KAAc,GAAG,KAAK,EAAQ;IACvD,IACE,CAACA,KAAK,IACN3Y,IAAI,CAACC,IAAI,KAAK,sBAAsB,IACpCD,IAAI,CAAC2+B,IAAI,CAAC1+B,IAAI,KAAK,oBAAoB,EACvC;MACAD,IAAI,CAAC2+B,IAAI,GAAG,IAAI,CAACnE,mBAAmB,CAACx6B,IAAI,CAAC2+B,IAAI,CAAiB;IACjE;IACA,KAAK,CAACjmB,YAAY,CAAC1Y,IAAI,EAAE2Y,KAAK,CAAC;EACjC;EAGAgkB,gBAAgBA,CACdiC,QAAwB,EACxBhC,gBAA6C,EAC7CjkB,KAAc,EACR;IACN,KAAK,IAAIyP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwW,QAAQ,CAAC3kB,MAAM,EAAEmO,CAAC,EAAE,EAAE;MACxC,MAAM2S,IAAI,GAAG6D,QAAQ,CAACxW,CAAC,CAAC;MACxB,IAAI,CAAA2S,IAAI,IAAJA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAE96B,IAAI,MAAK,oBAAoB,EAAE;QACvC2+B,QAAQ,CAACxW,CAAC,CAAC,GAAG,IAAI,CAACoS,mBAAmB,CAACO,IAAI,CAAC;MAC9C;IACF;IACA,KAAK,CAAC4B,gBAAgB,CAACiC,QAAQ,EAAEhC,gBAAgB,EAAEjkB,KAAK,CAAC;EAC3D;EAIAkmB,gBAAgBA,CACdD,QAE6C,EAC7CE,mBAA6B,EAGe;IAC5C,KAAK,IAAI1W,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwW,QAAQ,CAAC3kB,MAAM,EAAEmO,CAAC,EAAE,EAAE;MAAA,IAAA2W,WAAA;MACxC,MAAMhE,IAAI,GAAG6D,QAAQ,CAACxW,CAAC,CAAC;MACxB,IACE2S,IAAI,IACJA,IAAI,CAAC96B,IAAI,KAAK,oBAAoB,IAClC,EAAA8+B,CAAAA,WAAA,GAAChE,IAAI,CAAC7mB,KAAK,KAAV6qB,IAAAA,IAAAA,WAAA,CAAY1pB,aAAa,CACzBupB,KAAAA,QAAQ,CAAC3kB,MAAM,GAAG,CAAC,IAAI,CAAC6kB,mBAAmB,CAAC,EAC7C;QACA,IAAI,CAAC9lB,KAAK,CAACmT,UAAU,CAAC2C,iBAAiB,EAAEiM,IAAI,CAACnI,cAAc,CAAC;MAC/D;IACF;IAEA,OAAOgM,QAAQ;EACjB;EAEAI,cAAcA,CACZC,KAAgB,EAChBC,OAAgB,EAChBhnB,mBAA6C,EACN;IACvC,MAAMlY,IAAI,GAAG,KAAK,CAACg/B,cAAc,CAACC,KAAK,EAAEC,OAAO,EAAEhnB,mBAAmB,CAAC;IAOtE,IAAIA,mBAAmB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC2B,KAAK,CAACwhB,sBAAsB,EAAE;MACrE,IAAI,CAACwD,gBAAgB,CAAC7+B,IAAI,CAACm/B,QAAQ,CAAC;IACtC;IAEA,OAAOn/B,IAAI;EACb;EAEAoY,WAAWA,CACTnY,IAAY,EACZoY,sBAA+B,EAC/B+mB,eAAwB,EACxB7mB,OAAoB,EACpB;IACA,OACEtY,IAAI,KAAK,oBAAoB,IAC7B,KAAK,CAACmY,WAAW,CACfnY,IAAI,EACJoY,sBAAsB,EACtB+mB,eAAe,EACf7mB,OACF,CAAC;EAEL;EAGAjB,kBAAkBA,CAACtX,IAAqB,EAAmB;IACzD,IAAI,IAAI,CAACgyB,KAAK,CAAA,EAAS,CAAC,EAAE;MACxBhyB,IAAI,CAAC4yB,cAAc,GAAG,IAAI,CAACsB,uBAAuB,EAAE;IACtD;IACA,OAAO,KAAK,CAAC5c,kBAAkB,CAACtX,IAAI,CAAC;EACvC;EAEAyX,yBAAyBA,CACvBzX,IAA4B,EACJ;IACxB,IAAI,IAAI,CAACgyB,KAAK,CAAA,EAAS,CAAC,EAAE;MACxBhyB,IAAI,CAAC4yB,cAAc,GAAG,IAAI,CAACsB,uBAAuB,EAAE;IACtD;IACA,OAAO,KAAK,CAACzc,yBAAyB,CAACzX,IAAI,CAAC;EAC9C;EAGAq/B,aAAaA,CAAAA,EAAY;IACvB,OAAO,IAAI,CAACrN,KAAK,CAAM,EAAA,CAAC,IAAI,KAAK,CAACqN,aAAa,CAAA,CAAE;EACnD;EAGAC,eAAeA,CAAAA,EAAY;IACzB,OAAO,IAAI,CAACtN,KAAK,CAAS,EAAA,CAAC,IAAI,KAAK,CAACsN,eAAe,CAAA,CAAE;EACxD;EAEAC,sBAAsBA,CAACtqB,MAAuC,EAAW;IACvE,OAAO,CAAC,IAAI,CAAC+c,KAAK,CAAS,EAAA,CAAC,IAAI,KAAK,CAACuN,sBAAsB,CAACtqB,MAAM,CAAC;EACtE;EAGAuqB,eAAeA,CACbzB,SAAsB,EACtB9oB,MAAqB,EACrBwB,WAAoB,EACpB5B,OAAgB,EAChB6B,aAAsB,EACtB+oB,iBAA0B,EACpB;IACN,IAAKxqB,MAAM,CAAS8gB,QAAQ,EAAE;MAC5B,IAAI,CAAC/wB,UAAU,CAAEiQ,MAAM,CAAS8gB,QAAQ,CAACvnB,GAAG,CAAC5Q,KAAK,CAAC;IACrD;IACA,OAAQqX,MAAM,CAAS8gB,QAAQ;IAC/B,IAAI,IAAI,CAAC/D,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB/c,MAAM,CAAC8B,cAAc,GAAG,IAAI,CAACwb,iCAAiC,EAAE;IAClE;IAEA,KAAK,CAACiN,eAAe,CACnBzB,SAAS,EACT9oB,MAAM,EACNwB,WAAW,EACX5B,OAAO,EACP6B,aAAa,EACb+oB,iBACF,CAAC;IAED,IAAIxqB,MAAM,CAACC,MAAM,IAAIwB,aAAa,EAAE;MAClC,MAAMxB,MAAM,GAAGD,MAAM,CAACC,MAAM;MAC5B,IAAIA,MAAM,CAAC+E,MAAM,GAAG,CAAC,IAAI,IAAI,CAACylB,WAAW,CAACxqB,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;QACpD,IAAI,CAAC8D,KAAK,CAACmT,UAAU,CAACsC,4BAA4B,EAAExZ,MAAM,CAAC;MAC7D;IAEF,CAAC,MAAM,IAELA,MAAM,CAAChV,IAAI,KAAK,kBAAkB,IAClCyW,aAAa,IAEbzB,MAAM,CAACzH,KAAK,CAAC0H,MAAM,EACnB;MAEA,MAAMA,MAAM,GAAGD,MAAM,CAACzH,KAAK,CAAC0H,MAAM;MAClC,IAAIA,MAAM,CAAC+E,MAAM,GAAG,CAAC,IAAI,IAAI,CAACylB,WAAW,CAACxqB,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;QACpD,IAAI,CAAC8D,KAAK,CAACmT,UAAU,CAACsC,4BAA4B,EAAExZ,MAAM,CAAC;MAC7D;IACF;EACF;EAEA0qB,sBAAsBA,CACpB5B,SAAsB,EACtB9oB,MAA4B,EAC5BwB,WAAoB,EACpB5B,OAAgB,EACV;IACN,IAAKI,MAAM,CAAS8gB,QAAQ,EAAE;MAC5B,IAAI,CAAC/wB,UAAU,CAAEiQ,MAAM,CAAS8gB,QAAQ,CAACvnB,GAAG,CAAC5Q,KAAK,CAAC;IACrD;IACA,OAAQqX,MAAM,CAAS8gB,QAAQ;IAC/B,IAAI,IAAI,CAAC/D,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB/c,MAAM,CAAC8B,cAAc,GAAG,IAAI,CAACwb,iCAAiC,EAAE;IAClE;IAEA,KAAK,CAACoN,sBAAsB,CAAC5B,SAAS,EAAE9oB,MAAM,EAAEwB,WAAW,EAAE5B,OAAO,CAAC;EACvE;EAGA+qB,eAAeA,CAAC5/B,IAAa,EAAQ;IACnC,KAAK,CAAC4/B,eAAe,CAAC5/B,IAAI,CAAC;IAC3B,IACEA,IAAI,CAACgS,UAAU,KACd,IAAI,CAACggB,KAAK,CAAA,EAAM,CAAC,IAEhB,IAAI,CAACA,KAAK,CAAa,EAAA,CAAC,CAAC,EAC3B;MAKEhyB,IAAI,CAAC6/B,mBAAmB,GACtB,IAAI,CAACpJ,+CAA+C,EAAE;IAE5D;IACA,IAAI,IAAI,CAACrD,YAAY,CAAA,GAAe,CAAC,EAAE;MACrC,IAAI,CAAC5J,IAAI,CAAA,CAAE;MACX,MAAMsW,WAAoC,GAAI9/B,IAAI,CAAC00B,UAAU,GAAG,EAAG;MACnE,GAAG;QACD,MAAM10B,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAyB;QACpD9W,IAAI,CAACmW,EAAE,GAAG,IAAI,CAACoe,6BAA6B,CAAa,IAAI,CAAC;QAC9D,IAAI,IAAI,CAACvC,KAAK,CAAA,EAAM,CAAC,EAAE;UACrBhyB,IAAI,CAAC+W,cAAc,GAAG,IAAI,CAACoe,mCAAmC,EAAE;QAClE,CAAC,MAAM;UACLn1B,IAAI,CAAC+W,cAAc,GAAG,IAAI;QAC5B;QACA+oB,WAAW,CAAC3iB,IAAI,CAAC,IAAI,CAAC/F,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC,CAAC;MAC5D,CAAC,QAAQ,IAAI,CAAC4xB,GAAG,GAAS,CAAC;IAC7B;EACF;EAEAmO,uBAAuBA,CAAC9qB,MAAsC,EAAQ;IACpE,KAAK,CAAC8qB,uBAAuB,CAAC9qB,MAAM,CAAC;IACrC,MAAMC,MAAM,GAAG,IAAI,CAACF,4BAA4B,CAACC,MAAM,CAAC;IACxD,IAAIC,MAAM,CAAC+E,MAAM,GAAG,CAAC,EAAE;MACrB,MAAMmgB,KAAK,GAAGllB,MAAM,CAAC,CAAC,CAAC;MACvB,IAAI,IAAI,CAACwqB,WAAW,CAACtF,KAAK,CAAC,IAAInlB,MAAM,CAAC5U,IAAI,KAAK,KAAK,EAAE;QACpD,IAAI,CAAC2Y,KAAK,CAACmT,UAAU,CAACwB,yBAAyB,EAAEyM,KAAK,CAAC;MACxD,CAAA,MAAM,IAAI,IAAI,CAACsF,WAAW,CAACtF,KAAK,CAAC,EAAE;QAClC,IAAI,CAACphB,KAAK,CAACmT,UAAU,CAACmC,yBAAyB,EAAE8L,KAAK,CAAC;MACzD;IACF;EACF;EAEA4F,+BAA+BA,CAC7BhgC,IAA2C,EACrC;IACNA,IAAI,CAAC+1B,QAAQ,GAAG,IAAI,CAACC,iBAAiB,EAAE;EAC1C;EAGAiK,iBAAiBA,CACfloB,IAAe,EACfC,QAAqC,EACrCvB,WAAoB,EACpB5B,OAAgB,EAChBoD,SAAkB,EAClBioB,UAAmB,EACnBhoB,mBAA6C,EAC1C;IACH,IAAKH,IAAI,CAASge,QAAQ,EAAE;MAC1B,IAAI,CAAC/wB,UAAU,CAAE+S,IAAI,CAASge,QAAQ,CAACvnB,GAAG,CAAC5Q,KAAK,CAAC;IACnD;IACA,OAAQma,IAAI,CAASge,QAAQ;IAE7B,IAAIhf,cAAc;IAGlB,IAAI,IAAI,CAACib,KAAK,CAAA,EAAM,CAAC,IAAI,CAACkO,UAAU,EAAE;MACpCnpB,cAAc,GAAG,IAAI,CAACwb,iCAAiC,EAAE;MACzD,IAAI,CAAC,IAAI,CAACP,KAAK,CAAA,EAAU,CAAC,EAAE,IAAI,CAAChtB,UAAU,EAAE;IAC/C;IAEA,MAAM4V,MAAM,GAAG,KAAK,CAACqlB,iBAAiB,CACpCloB,IAAI,EACJC,QAAQ,EACRvB,WAAW,EACX5B,OAAO,EACPoD,SAAS,EACTioB,UAAU,EACVhoB,mBACF,CAAC;IAGD,IAAInB,cAAc,EAAE;MAElB,CAAC6D,MAAM,CAACpN,KAAK,IAAIoN,MAAM,EAAE7D,cAAc,GAAGA,cAAc;IAC1D;IACA,OAAO6D,MAAM;EACf;EAEAulB,sBAAsBA,CAAC/F,KAAgB,EAAa;IAClD,IAAI,IAAI,CAACxI,GAAG,CAAA,EAAY,CAAC,EAAE;MACzB,IAAIwI,KAAK,CAACn6B,IAAI,KAAK,YAAY,EAAE;QAC/B,IAAI,CAAC+Y,KAAK,CAACmT,UAAU,CAACkC,iBAAiB,EAAE+L,KAAK,CAAC;MACjD;MACA,IAAI,IAAI,CAACsF,WAAW,CAACtF,KAAK,CAAC,EAAE;QAC3B,IAAI,CAACphB,KAAK,CAACmT,UAAU,CAACuC,yBAAyB,EAAE0L,KAAK,CAAC;MACzD;MAECA,KAAK,CAAyBjhB,QAAQ,GAAG,IAAI;IAChD;IACA,IAAI,IAAI,CAAC6Y,KAAK,CAAA,EAAS,CAAC,EAAE;MACxBoI,KAAK,CAACxH,cAAc,GAAG,IAAI,CAACsB,uBAAuB,EAAE;IACtD,CAAA,MAAM,IAAI,IAAI,CAACwL,WAAW,CAACtF,KAAK,CAAC,EAAE;MAClC,IAAI,CAACphB,KAAK,CAACmT,UAAU,CAACqC,2BAA2B,EAAE4L,KAAK,CAAC;IAC3D;IAEA,IAAI,IAAI,CAACpI,KAAK,CAAA,EAAM,CAAC,IAAI,IAAI,CAAC0N,WAAW,CAACtF,KAAK,CAAC,EAAE;MAChD,IAAI,CAACphB,KAAK,CAACmT,UAAU,CAACyC,kBAAkB,EAAEwL,KAAK,CAAC;IAClD;IAEA,IAAI,CAACrf,gBAAgB,CAACqf,KAAK,CAAC;IAC5B,OAAOA,KAAK;EACd;EAEAgG,iBAAiBA,CACfpoB,QAA0B,EAC1B2mB,IAAe,EACU;IACzB,MAAM3+B,IAAI,GAAG,KAAK,CAACogC,iBAAiB,CAACpoB,QAAQ,EAAE2mB,IAAI,CAAC;IAEpD,IACE3+B,IAAI,CAACC,IAAI,KAAK,mBAAmB,IACjCD,IAAI,CAAC4yB,cAAc,IACnB5yB,IAAI,CAACw1B,KAAK,CAAC53B,KAAK,GAAGoC,IAAI,CAAC4yB,cAAc,CAACh1B,KAAK,EAC5C;MACA,IAAI,CAACob,KAAK,CAACmT,UAAU,CAAC0C,qBAAqB,EAAE7uB,IAAI,CAAC4yB,cAAc,CAAC;IACnE;IAEA,OAAO5yB,IAAI;EACb;EAEAqgC,qBAAqBA,CAACrgC,IAAiC,EAAE;IACvD,KAAK,CAACqgC,qBAAqB,CAACrgC,IAAI,CAAC;IACjC,IAAIA,IAAI,CAACsgC,MAAM,IAAItgC,IAAI,CAAC8vB,UAAU,KAAK,OAAO,EAAE;MAC9C,IAAI,CAAC9W,KAAK,CACRmT,UAAU,CAACyB,6BAA6B,EACxC5tB,IAAI,CAACga,UAAU,CAAC,CAAC,CAAC,CAACxL,GAAG,CAAC5Q,KACzB,CAAC;IACH;EACF;EAEA2iC,yBAAyBA,CAKvBvgC,IAAyB,EAAEwgC,SAAoB,EAAEvgC,IAAe,EAAQ;IACxEugC,SAAS,CAACC,KAAK,GAAG5Q,iBAAiB,CAAC7vB,IAAI,CAAC,GACrC,IAAI,CAACu0B,6BAA6B,CAClB,IAAI,EACA,IACpB,CAAC,GACD,IAAI,CAACnC,eAAe,CAAA,CAAE;IAE1BpyB,IAAI,CAACga,UAAU,CAACmD,IAAI,CAAC,IAAI,CAACujB,qBAAqB,CAACF,SAAS,EAAEvgC,IAAI,CAAC,CAAC;EACnE;EAEA0gC,sBAAsBA,CAACC,QAAiB,EAAW;IACjD,IAAI,KAAK,CAACD,sBAAsB,CAACC,QAAQ,CAAC,EAAE,OAAO,IAAI;IACvD,IAAI,IAAI,CAACxN,YAAY,CAAA,GAAS,CAAC,EAAE;MAC/B,IAAI,CAACwN,QAAQ,EAAE,OAAO,IAAI;MAC1B,MAAMC,EAAE,GAAG,IAAI,CAACtF,iBAAiB,EAAE;MACnC,OAAOsF,EAAE,KAAA,GAA6B,IAAIA,EAAE,KAAuB,EAAA;IACrE;IACA,OAAO,CAACD,QAAQ,IAAI,IAAI,CAACxN,YAAY,GAAW,CAAC;EACnD;EAEA0N,gBAAgBA,CACd9gC,IAA4D,EAC5D4gC,QAAiB,EACjBG,KAAoB,EACpBvyB,GAAc,EACR;IACN,KAAK,CAACsyB,gBAAgB,CAAC9gC,IAAI,EAAE4gC,QAAQ,EAAEG,KAAK,EAAEvyB,GAAG,CAAC;IAClD,IAAIoyB,QAAQ,EAAE;MACZ,IAAI,CAACG,KAAK,IAAI,IAAI,CAAC/O,KAAK,CAAA,EAAY,CAAC,EAAE;QAErC;MACF;MACChyB,IAAI,CAA8Bi0B,UAAU,GAC3C8M,KAAK,KAAK,MAAM,GAAGA,KAAK,GAAG,OAAO;IACtC,CAAC,MAAM;MACL,IAAIA,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC/O,KAAK,CAAQ,EAAA,CAAC,EAAE,IAAI,CAAChtB,UAAU,EAAE;MAC7DhF,IAAI,CAAyB8vB,UAAU,GACtCiR,KAAK,KAAK,MAAM,IAAIA,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAG,OAAO;IAC5D;EACF;EAGAC,oBAAoBA,CAClBR,SAAc,EACdS,gBAAyB,EACzBC,kBAA2B,EAE3BC,eAAwB,EAExB5V,WAAoC,EACjB;IACnB,MAAM6V,UAAU,GAAGZ,SAAS,CAACa,QAAQ;IAErC,IAAIC,iBAAiB,GAAG,IAAI;IAC5B,IAAIF,UAAU,CAACnhC,IAAI,KAAK,YAAY,EAAE;MACpC,IAAImhC,UAAU,CAACn7B,IAAI,KAAK,MAAM,EAAE;QAC9Bq7B,iBAAiB,GAAG,MAAM;MAC5B,CAAC,MAAM,IAAIF,UAAU,CAACn7B,IAAI,KAAK,QAAQ,EAAE;QACvCq7B,iBAAiB,GAAG,QAAQ;MAC9B;IACF;IAEA,IAAI7oB,SAAS,GAAG,KAAK;IACrB,IAAI,IAAI,CAAC2a,YAAY,CAAA,EAAO,CAAC,IAAI,CAAC,IAAI,CAACmO,qBAAqB,CAAC,IAAI,CAAC,EAAE;MAClE,MAAMC,QAAQ,GAAG,IAAI,CAACpP,eAAe,CAAC,IAAI,CAAC;MAC3C,IACEkP,iBAAiB,KAAK,IAAI,IAC1B,CAAC9a,0BAA0B,CAAC,IAAI,CAAC3M,KAAK,CAAC5Z,IAAI,CAAC,EAC5C;QAEAugC,SAAS,CAACa,QAAQ,GAAGG,QAAQ;QAC7BhB,SAAS,CAAC1Q,UAAU,GAAGwR,iBAAiB;QACxCd,SAAS,CAACC,KAAK,GAAG,IAAI,CAAC5lB,eAAe,CAAC2mB,QAAQ,CAAC;MAClD,CAAC,MAAM;QAELhB,SAAS,CAACa,QAAQ,GAAGD,UAAU;QAC/BZ,SAAS,CAAC1Q,UAAU,GAAG,IAAI;QAC3B0Q,SAAS,CAACC,KAAK,GAAG,IAAI,CAACrO,eAAe,EAAE;MAC1C;IACF,CAAC,MAAM;MACL,IACEkP,iBAAiB,KAAK,IAAI,IAC1B9a,0BAA0B,CAAC,IAAI,CAAC3M,KAAK,CAAC5Z,IAAI,CAAC,EAC3C;QAEAugC,SAAS,CAACa,QAAQ,GAAG,IAAI,CAACjP,eAAe,CAAC,IAAI,CAAC;QAC/CoO,SAAS,CAAC1Q,UAAU,GAAGwR,iBAAiB;MAC1C,CAAC,MAAM;QACL,IAAIL,gBAAgB,EAAE;UAEpB,MAAM,IAAI,CAACjoB,KAAK,CAACjJ,MAAM,CAAC3M,qBAAqB,EAAEo9B,SAAS,EAAE;YACxDn9B,UAAU,EAAE+9B,UAAU,CAAC5zB;UACzB,CAAC,CAAC;QACJ;QAEAgzB,SAAS,CAACa,QAAQ,GAAGD,UAAU;QAC/BZ,SAAS,CAAC1Q,UAAU,GAAG,IAAI;MAC7B;MAEA,IAAI,IAAI,CAACmD,aAAa,CAAA,EAAO,CAAC,EAAE;QAC9BuN,SAAS,CAACC,KAAK,GAAG,IAAI,CAACrO,eAAe,EAAE;MAC1C,CAAC,MAAM;QACL3Z,SAAS,GAAG,IAAI;QAChB+nB,SAAS,CAACC,KAAK,GAAG,IAAI,CAAC5lB,eAAe,CAAC2lB,SAAS,CAACa,QAAQ,CAAC;MAC5D;IACF;IAEA,MAAMI,qBAAqB,GAAG5R,iBAAiB,CAAC2Q,SAAS,CAAC;IAE1D,IAAIU,kBAAkB,IAAIO,qBAAqB,EAAE;MAC/C,IAAI,CAACzoB,KAAK,CAACmT,UAAU,CAAC0B,mCAAmC,EAAE2S,SAAS,CAAC;IACvE;IAEA,IAAIU,kBAAkB,IAAIO,qBAAqB,EAAE;MAC/C,IAAI,CAACnM,iBAAiB,CACpBkL,SAAS,CAACC,KAAK,CAACx6B,IAAI,EACpBu6B,SAAS,CAACC,KAAK,CAACjyB,GAAG,CAAC5Q,KAAK,EACP,IACpB,CAAC;IACH;IAEA,IAAI6a,SAAS,IAAI,CAACyoB,kBAAkB,IAAI,CAACO,qBAAqB,EAAE;MAC9D,IAAI,CAACC,iBAAiB,CACpBlB,SAAS,CAACC,KAAK,CAACx6B,IAAI,EACpBu6B,SAAS,CAAChyB,GAAG,CAAC5Q,KAAK,EACnB,IAAI,EACJ,IACF,CAAC;IACH;IAEA,OAAO,IAAI,CAAC8iC,qBAAqB,CAACF,SAAS,EAAE,iBAAiB,CAAC;EACjE;EAEAmB,gBAAgBA,CAAAA,EAAc;IAC5B,QAAQ,IAAI,CAAC9nB,KAAK,CAAC5Z,IAAI;MACrB,KAAA,EAAA;QAEE,OAAO,IAAI,CAACmyB,eAAe,CAAe,IAAI,CAAC;MACjD;QACE,OAAO,KAAK,CAACuP,gBAAgB,EAAE;IACnC;EACF;EAGAC,mBAAmBA,CACjB5hC,IAAwB,EACxB0W,aAAsB,EAChB;IAEN,MAAMrW,IAAI,GAAGL,IAAI,CAACK,IAAI;IACtB,IAAIA,IAAI,KAAK,KAAK,IAAIA,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC2xB,KAAK,CAAA,EAAM,CAAC,EAAE;MACzDhyB,IAAI,CAAC+W,cAAc,GAAG,IAAI,CAACwb,iCAAiC,EAAE;IAChE;IACA,KAAK,CAACqP,mBAAmB,CAAC5hC,IAAI,EAAE0W,aAAa,CAAC;EAChD;EAGAmrB,UAAUA,CACRC,IAA0B,EAC1BzhC,IAAuD,EACjD;IACN,KAAK,CAACwhC,UAAU,CAACC,IAAI,EAAEzhC,IAAI,CAAC;IAC5B,IAAI,IAAI,CAAC2xB,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB8P,IAAI,CAAC3rB,EAAE,CAACyc,cAAc,GAAG,IAAI,CAACsB,uBAAuB,CAAA,CAAE;MACvD,IAAI,CAACnZ,gBAAgB,CAAC+mB,IAAI,CAAC3rB,EAAE,CAAC;IAChC;EACF;EAGA4rB,iCAAiCA,CAC/B/hC,IAA+B,EAC/BgiC,IAAsB,EACK;IAC3B,IAAI,IAAI,CAAChQ,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,MAAM2E,qBAAqB,GAAG,IAAI,CAAC9c,KAAK,CAAC+c,kBAAkB;MAC3D,IAAI,CAAC/c,KAAK,CAAC+c,kBAAkB,GAAG,IAAI;MACpC52B,IAAI,CAAC2yB,UAAU,GAAG,IAAI,CAACuB,uBAAuB,EAAE;MAChD,IAAI,CAACra,KAAK,CAAC+c,kBAAkB,GAAGD,qBAAqB;IACvD;IAEA,OAAO,KAAK,CAACoL,iCAAiC,CAAC/hC,IAAI,EAAEgiC,IAAI,CAAC;EAC5D;EAGAC,qBAAqBA,CAAAA,EAAY;IAC/B,OAAO,IAAI,CAACjQ,KAAK,CAAS,EAAA,CAAC,IAAI,KAAK,CAACiQ,qBAAqB,CAAA,CAAE;EAC9D;EAYA/F,gBAAgBA,CACdhkB,mBAA6C,EAC7CgqB,cAAyB,EACX;IAAA,IAAAC,IAAA;IACd,IAAItoB,KAAK,GAAG,IAAI;IAEhB,IAAIuoB,GAAG;IAEP,IACE,IAAI,CAACvqB,SAAS,CAAC,KAAK,CAAC,KACpB,IAAI,CAACma,KAAK,CAAe,GAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAM,EAAA,CAAC,CAAC,EACjD;MACAnY,KAAK,GAAG,IAAI,CAACA,KAAK,CAAChL,KAAK,EAAE;MAE1BuzB,GAAG,GAAG,IAAI,CAACC,QAAQ,CACjB,MAAM,KAAK,CAACnG,gBAAgB,CAAChkB,mBAAmB,EAAEgqB,cAAc,CAAC,EACjEroB,KACF,CAAC;MAID,IAAI,CAACuoB,GAAG,CAAC1zB,KAAK,EAAE,OAAO0zB,GAAG,CAACpiC,IAAI;MAK/B,MAAM;QAAE0nB;OAAS,GAAG,IAAI,CAAC7N,KAAK;MAC9B,MAAMyoB,cAAc,GAAG5a,OAAO,CAACA,OAAO,CAACzN,MAAM,GAAG,CAAC,CAAC;MAClD,IAAIqoB,cAAc,KAAK1a,KAAE,CAACvM,MAAM,IAAIinB,cAAc,KAAK1a,KAAE,CAACrM,MAAM,EAAE;QAChEmM,OAAO,CAACC,GAAG,CAAA,CAAE;MACf;IACF;IAEA,IAAI,CAAAwa,IAAA,GAAAC,GAAG,aAAHD,IAAA,CAAKzzB,KAAK,IAAI,IAAI,CAACsjB,KAAK,CAAA,EAAM,CAAC,EAAE;MAAA,IAAAuQ,KAAA,EAAAC,KAAA;MACnC3oB,KAAK,GAAGA,KAAK,IAAI,IAAI,CAACA,KAAK,CAAChL,KAAK,CAAA,CAAE;MAEnC,IAAIkI,cAA0C;MAE9C,MAAM8H,KAAK,GAAG,IAAI,CAACwjB,QAAQ,CAAEI,KAAkB,IAAK;QAAA,IAAAC,qBAAA;QAClD3rB,cAAc,GAAG,IAAI,CAACwb,iCAAiC,EAAE;QAEzD,MAAMoQ,eAAe,GAAG,IAAI,CAACjI,gCAAgC,CAC3D3jB,cAAc,EACd,MAAM;UACJ,MAAM6D,MAAM,GAAG,KAAK,CAACshB,gBAAgB,CACnChkB,mBAAmB,EACnBgqB,cACF,CAAC;UAED,IAAI,CAAClrB,0BAA0B,CAAC4D,MAAM,EAAE7D,cAAc,CAAC;UAEvD,OAAO6D,MAAM;QACf,CACF,CAAC;QAID,IAAA,CAAA8nB,qBAAA,GAAIC,eAAe,CAACzuB,KAAK,KAAA,IAAA,IAArBwuB,qBAAA,CAAuBrtB,aAAa,EAAEotB,KAAK,EAAE;QAKjD,MAAM1H,IAAI,GAAG,IAAI,CAAC6H,6BAA6B,CAACD,eAAe,CAAC;QAEhE,IAAI5H,IAAI,CAAC96B,IAAI,KAAK,yBAAyB,EAAEwiC,KAAK,CAAA,CAAE;QAEpD1H,IAAI,CAAChkB,cAAc,GAAGA,cAAc;QACpC,IAAI,CAACC,0BAA0B,CAAC+jB,IAAI,EAAEhkB,cAAc,CAAC;QAErD,OAAO4rB,eAAe;MACvB,CAAA,EAAE9oB,KAAK,CAAC;MAET,IAAI8oB,eAII,GAAG,IAAI;MAEf,IACE9jB,KAAK,CAAC7e,IAAI,IACV,IAAI,CAAC4iC,6BAA6B,CAAC/jB,KAAK,CAAC7e,IAAI,CAAC,CAACC,IAAI,KACjD,yBAAyB,EAC3B;QACA,IAAI,CAAC4e,KAAK,CAACnQ,KAAK,IAAI,CAACmQ,KAAK,CAACgkB,OAAO,EAAE;UAGlC,IAAIhkB,KAAK,CAAC7e,IAAI,CAAC8iC,KAAK,EAAE;YAEpB,IAAI,CAAC9pB,KAAK,CACRmT,UAAU,CAACmD,+CAA+C,EAC1DvY,cACF,CAAC;UACH;UACA,OAAO8H,KAAK,CAAC7e,IAAI;QACnB;QAGA2iC,eAAe,GAAG9jB,KAAK,CAAC7e,IAAI;MAC9B;MAQA,IAAA,CAAAuiC,KAAA,GAAIH,GAAG,aAAHG,KAAA,CAAKviC,IAAI,EAAE;QAEb,IAAI,CAAC6Z,KAAK,GAAGuoB,GAAG,CAACW,SAAS;QAC1B,OAAOX,GAAG,CAACpiC,IAAI;MACjB;MAEA,IAAI2iC,eAAe,EAAE;QAEnB,IAAI,CAAC9oB,KAAK,GAAGgF,KAAK,CAACkkB,SAAU;QAC7B,OAAOJ,eAAe;MACxB;MAEA,IAAAH,CAAAA,KAAA,GAAIJ,GAAG,KAAHI,IAAAA,IAAAA,KAAA,CAAKQ,MAAM,EAAE,MAAMZ,GAAG,CAAC1zB,KAAK;MAChC,IAAImQ,KAAK,CAACmkB,MAAM,EAAE,MAAMnkB,KAAK,CAACnQ,KAAK;MAGnC,MAAM,IAAI,CAACsK,KAAK,CACdmT,UAAU,CAACkD,iCAAiC,EAC5CtY,cACF,CAAC;IACH;IAEA,OAAO,KAAK,CAACmlB,gBAAgB,CAAChkB,mBAAmB,EAAEgqB,cAAc,CAAC;EACpE;EAGAe,UAAUA,CACRjjC,IAAuC,EACe;IACtD,IAAI,IAAI,CAACgyB,KAAK,CAAA,EAAS,CAAC,EAAE;MAExB,MAAMpX,MAAM,GAAG,IAAI,CAACynB,QAAQ,CAAmB,MAAM;QACnD,MAAM1L,qBAAqB,GAAG,IAAI,CAAC9c,KAAK,CAAC+c,kBAAkB;QAC3D,IAAI,CAAC/c,KAAK,CAAC+c,kBAAkB,GAAG,IAAI;QAEpC,MAAMvE,QAAQ,GAAG,IAAI,CAACvb,SAAS,EAAoB;QAEnD,CACEub,QAAQ,CAACO,cAAc,EAEvB5yB,IAAI,CAAC+xB,SAAS,CACf,GAAG,IAAI,CAACD,oCAAoC,EAG5C;QAED,IAAI,CAACjY,KAAK,CAAC+c,kBAAkB,GAAGD,qBAAqB;QAErD,IAAI,IAAI,CAACmD,kBAAkB,CAAA,CAAE,EAAE,IAAI,CAAC90B,UAAU,CAAA,CAAE;QAChD,IAAI,CAAC,IAAI,CAACgtB,KAAK,CAAA,EAAS,CAAC,EAAE,IAAI,CAAChtB,UAAU,EAAE;QAE5C,OAAOqtB,QAAQ;MACjB,CAAC,CAAC;MAEF,IAAIzX,MAAM,CAACooB,MAAM,EAAE,OAAO,IAAI;MAG9B,IAAIpoB,MAAM,CAAClM,KAAK,EAAE,IAAI,CAACmL,KAAK,GAAGe,MAAM,CAACmoB,SAAS;MAI/C/iC,IAAI,CAAC2yB,UAAU,GAAG/X,MAAM,CAAC5a,IAAI,CAAC4yB,cAAc,GACxC,IAAI,CAACxb,UAAU,CAACwD,MAAM,CAAC5a,IAAI,EAAG,gBAAgB,CAAC,GAC/C,IAAI;IACV;IAEA,OAAO,KAAK,CAACijC,UAAU,CAACjjC,IAAI,CAAC;EAC/B;EAEAkjC,gBAAgBA,CAAChuB,MAAgB,EAAW;IAC1C,OAAO,IAAI,CAAC8c,KAAK,CAAS,EAAA,CAAC,IAAI,KAAK,CAACkR,gBAAgB,CAAChuB,MAAM,CAAC;EAC/D;EAEAiuB,0BAA0BA,CACxBnjC,IAAuC,EACvCkV,MAEoC,EAC9B;IACN,IACE,IAAI,CAAC2E,KAAK,CAACsiB,yBAAyB,CAACW,QAAQ,CAC3C,IAAI,CAACC,iBAAiB,CAAC/8B,IAAI,CAACpC,KAAK,CACnC,CAAC,EACD;MACAoC,IAAI,CAACkV,MAAM,GAAGA,MAA6C;IAC7D,CAAC,MAAM;MACL,KAAK,CAACiuB,0BAA0B,CAACnjC,IAAI,EAAEkV,MAAM,CAAC;IAChD;EACF;EAEA2nB,WAAWA,CACT78B,IAAgB,EAChBojC,eAAwB,EACxBC,eAAgC,EAChCC,iBAA0B,GAAG,IAAI,EAC3B;IACN,IACED,eAAe,IACf,IAAI,CAACxpB,KAAK,CAACsiB,yBAAyB,CAACW,QAAQ,CAC3C,IAAI,CAACC,iBAAiB,CAAC/8B,IAAI,CAACpC,KAAK,CACnC,CAAC,EACD;MACA;IACF;IAGA,KAAK,IAAIwqB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGpoB,IAAI,CAACkV,MAAM,CAAC+E,MAAM,EAAEmO,CAAC,EAAE,EAAE;MAC3C,IAAI,IAAI,CAACsX,WAAW,CAAC1/B,IAAI,CAACkV,MAAM,CAACkT,CAAC,CAAC,CAAC,IAAIA,CAAC,GAAG,CAAC,EAAE;QAC7C,IAAI,CAACpP,KAAK,CAACmT,UAAU,CAACwC,oBAAoB,EAAE3uB,IAAI,CAACkV,MAAM,CAACkT,CAAC,CAAC,CAAC;MAC7D;IACF;IAEA,KAAK,CAACyU,WAAW,CACf78B,IAAI,EACJojC,eAAe,EACfC,eAAe,EACfC,iBACF,CAAC;EACH;EAEAC,kCAAkCA,CAACC,UAAmB,EAAgB;IACpE,OAAO,KAAK,CAACD,kCAAkC,CAC7CC,UAAU,IACR,CAAC,IAAI,CAAC3pB,KAAK,CAAC6hB,SAAS,CAACoB,QAAQ,CAC5B,IAAI,CAAC2G,iBAAiB,CAAC,IAAI,CAAC5pB,KAAK,CAACjc,KAAK,CACzC,CACJ,CAAC;EACH;EAEA8lC,eAAeA,CACbppB,IAAkB,EAClBtC,QAAkB,EAClB2rB,OAAwB,EACV;IACd,IACErpB,IAAI,CAACra,IAAI,KAAK,YAAY,IAC1Bqa,IAAI,CAACrU,IAAI,KAAK,OAAO,IACrB,IAAI,CAAC4T,KAAK,CAAC6hB,SAAS,CAACoB,QAAQ,CAAC9kB,QAAQ,CAACva,KAAK,CAAC,EAC7C;MACA,IAAI,CAAC+rB,IAAI,CAAA,CAAE;MAEX,MAAMxpB,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAAmBxf,QAAQ,CAAC;MACzDhY,IAAI,CAACoZ,MAAM,GAAGkB,IAAI;MAClBta,IAAI,CAACuZ,SAAS,GAAG,KAAK,CAACqqB,4BAA4B,EAAE;MACrDtpB,IAAI,GAAG,IAAI,CAAClD,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;IAC/C,CAAA,MAAM,IACLsa,IAAI,CAACra,IAAI,KAAK,YAAY,IAC1Bqa,IAAI,CAACrU,IAAI,KAAK,OAAO,IACrB,IAAI,CAAC+rB,KAAK,CAAA,EAAM,CAAC,EACjB;MACA,MAAMnY,KAAK,GAAG,IAAI,CAACA,KAAK,CAAChL,KAAK,CAAA,CAAE;MAChC,MAAMgQ,KAAK,GAAG,IAAI,CAACwjB,QAAQ,CACzBI,KAAK,IAAI,IAAI,CAACoB,iCAAiC,CAAC7rB,QAAQ,CAAC,IAAIyqB,KAAK,CAAE,CAAA,EACpE5oB,KACF,CAAC;MAID,IAAI,CAACgF,KAAK,CAACnQ,KAAK,IAAI,CAACmQ,KAAK,CAACgkB,OAAO,EAAE,OAAOhkB,KAAK,CAAC7e,IAAI;MAErD,MAAM4a,MAAM,GAAG,IAAI,CAACynB,QAAQ,CAC1B,MAAM,KAAK,CAACqB,eAAe,CAACppB,IAAI,EAAEtC,QAAQ,EAAE2rB,OAAO,CAAC,EACpD9pB,KACF,CAAC;MAED,IAAIe,MAAM,CAAC5a,IAAI,IAAI,CAAC4a,MAAM,CAAClM,KAAK,EAAE,OAAOkM,MAAM,CAAC5a,IAAI;MAEpD,IAAI6e,KAAK,CAAC7e,IAAI,EAAE;QACd,IAAI,CAAC6Z,KAAK,GAAGgF,KAAK,CAACkkB,SAAS;QAE5B,OAAOlkB,KAAK,CAAC7e,IAAI;MACnB;MAEA,IAAI4a,MAAM,CAAC5a,IAAI,EAAE;QACf,IAAI,CAAC6Z,KAAK,GAAGe,MAAM,CAACmoB,SAAU;QAC9B,OAAOnoB,MAAM,CAAC5a,IAAI;MACpB;MAEA,MAAM6e,KAAK,CAACnQ,KAAK,IAAIkM,MAAM,CAAClM,KAAM;IACpC;IAEA,OAAO,KAAK,CAACg1B,eAAe,CAACppB,IAAI,EAAEtC,QAAQ,EAAE2rB,OAAO,CAAC;EACvD;EAEAG,cAAcA,CACZxpB,IAAkB,EAClBtC,QAAkB,EAClB2rB,OAAmC,EACnCI,cAAqC,EACvB;IACd,IAAI,IAAI,CAAC/R,KAAK,CAAe,EAAA,CAAC,IAAI,IAAI,CAACgS,mBAAmB,CAAA,CAAE,EAAE;MAC5DD,cAAc,CAACxpB,mBAAmB,GAAG,IAAI;MACzC,IAAIopB,OAAO,EAAE;QACXI,cAAc,CAACE,IAAI,GAAG,IAAI;QAC1B,OAAO3pB,IAAI;MACb;MACA,IAAI,CAACkP,IAAI,CAAA,CAAE;MACX,MAAMxpB,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAA2Bxf,QAAQ,CAAC;MACjEhY,IAAI,CAACoZ,MAAM,GAAGkB,IAAI;MAClBta,IAAI,CAACkkC,aAAa,GAChB,IAAI,CAACzN,+CAA+C,EAAE;MACxD,IAAI,CAAClF,MAAM,CAAA,EAAU,CAAC;MACtBvxB,IAAI,CAACuZ,SAAS,GAAG,IAAI,CAACqqB,4BAA4B,EAAE;MACpD5jC,IAAI,CAACmZ,QAAQ,GAAG,IAAI;MACpB,OAAO,IAAI,CAACF,oBAAoB,CAACjZ,IAAI,EAAiB,IAAI,CAAC;IAC5D,CAAA,MAAM,IACL,CAAC2jC,OAAO,IACR,IAAI,CAAC/S,gBAAgB,CAAE,CAAA,KACtB,IAAI,CAACoB,KAAK,CAAM,EAAA,CAAC,IAEhB,IAAI,CAACA,KAAK,CAAA,EAAa,CAAC,CAAC,EAC3B;MACA,MAAMhyB,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAE3Bxf,QAAQ,CAAC;MACXhY,IAAI,CAACoZ,MAAM,GAAGkB,IAAI;MAElB,MAAMM,MAAM,GAAG,IAAI,CAACynB,QAAQ,CAAC,MAAM;QACjCriC,IAAI,CAACkkC,aAAa,GAChB,IAAI,CAACpN,4CAA4C,EAAE;QACrD,IAAI,CAACvF,MAAM,CAAA,EAAU,CAAC;QACtBvxB,IAAI,CAACuZ,SAAS,GAAG,KAAK,CAACqqB,4BAA4B,EAAE;QACrD,IAAIG,cAAc,CAACxpB,mBAAmB,EAAE;UACrCva,IAAI,CAAsCmZ,QAAQ,GAAG,KAAK;QAC7D;QACA,OAAO,IAAI,CAACF,oBAAoB,CAC9BjZ,IAAI,EACJ+jC,cAAc,CAACxpB,mBACjB,CAAC;MACH,CAAC,CAAC;MAEF,IAAIK,MAAM,CAAC5a,IAAI,EAAE;QACf,IAAI4a,MAAM,CAAClM,KAAK,EAAE,IAAI,CAACmL,KAAK,GAAGe,MAAM,CAACmoB,SAAS;QAC/C,OAAOnoB,MAAM,CAAC5a,IAAI;MACpB;IACF;IAEA,OAAO,KAAK,CAAC8jC,cAAc,CAACxpB,IAAI,EAAEtC,QAAQ,EAAE2rB,OAAO,EAAEI,cAAc,CAAC;EACtE;EAEAI,cAAcA,CAACnkC,IAAqB,EAAQ;IAC1C,KAAK,CAACmkC,cAAc,CAACnkC,IAAI,CAAC;IAE1B,IAAIokC,KAAK,GAAG,IAAI;IAChB,IAAI,IAAI,CAACxT,gBAAgB,CAAE,CAAA,IAAI,IAAI,CAACoB,KAAK,CAAM,EAAA,CAAC,EAAE;MAChDoS,KAAK,GAAG,IAAI,CAAC/B,QAAQ,CAAC,MACpB,IAAI,CAACvL,4CAA4C,CAAA,CACnD,CAAC,CAAC92B,IAAI;IACR;IACAA,IAAI,CAACkkC,aAAa,GAAGE,KAAK;EAC5B;EAEAP,iCAAiCA,CAC/B7rB,QAAkB,EAC4B;IAC9C,MAAMhY,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAA4Bxf,QAAQ,CAAC;IAClE,IAAI,CAAC4pB,mBAAmB,CAAC5hC,IAAI,EAAE,KAAK,CAAC;IACrC,IAAI,CAAC,IAAI,CAACijC,UAAU,CAACjjC,IAAI,CAAC,EAAE;IAC5B,OAAO,KAAK,CAACqkC,oBAAoB,CAC/BrkC,IAAI,EACSoQ,SAAS,EACR,IAChB,CAAC;EACH;EAEAk0B,qBAAqBA,CAACnmC,IAAY,EAAQ;IACxC,MAAMqrB,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC;IACtD,IACEzQ,IAAI,KAAuB,EAAA,IAC3BqrB,IAAI,KAAA,EAAoB,IACxB,IAAI,CAAC3P,KAAK,CAAC0qB,cAAc,EACzB;MACA,IAAI,CAAC1qB,KAAK,CAAC0qB,cAAc,GAAG,KAAK;MACjC,IAAI,CAAC1qB,KAAK,CAACjL,GAAG,IAAI,CAAC;MACnB,IAAI,CAAC41B,SAAS,CAAA,CAAE;MAChB;IACF;IAEA,KAAK,CAACF,qBAAqB,CAACnmC,IAAI,CAAC;EACnC;EAEAsmC,kBAAkBA,CAACtmC,IAAY,EAAQ;IACrC,MAAMqrB,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC;IACtD,IACEzQ,IAAI,KAAA,GAA0B,IAC9BqrB,IAAI,QAA8B,EAClC;MAEA,IAAI,CAACkV,QAAQ,CAAe,CAAA,EAAA,CAAC,CAAC;MAC9B;IACF;IAEA,KAAK,CAAC+F,kBAAkB,CAACtmC,IAAI,CAAC;EAChC;EAEAumC,aAAaA,CAACvyB,IAAY,EAAEwyB,OAAkB,EAAU;IACtD,MAAMC,QAAQ,GAAG,KAAK,CAACF,aAAa,CAACvyB,IAAI,EAAEwyB,OAAO,CAAC;IACnD,IAAI,IAAI,CAAC9qB,KAAK,CAAC0qB,cAAc,EAAE;MAC7B,IAAI,CAACvrB,KAAK,CACRmT,UAAU,CAACuD,uBAAuB,EAClC,IAAI,CAAC7V,KAAK,CAACykB,WAAW,CAAA,CACxB,CAAC;IACH;IACA,OAAOsG,QAAQ;EACjB;EAEAC,gBAAgBA,CAAAA,EAA+B;IAC7C,IAAI,IAAI,CAAChtB,SAAS,CAAC,cAAc,CAAC,IAAI,IAAI,CAACitB,eAAe,CAAA,CAAE,EAAE;MAC5D,IAAI,IAAI,CAACjrB,KAAK,CAAC0qB,cAAc,EAAE;QAC7B,MAAM,IAAI,CAACvrB,KAAK,CAACmT,UAAU,CAACiC,iBAAiB,EAAE,IAAI,CAACvU,KAAK,CAAC7B,QAAQ,CAAC;MACrE;MACA,IAAI,CAAC+sB,wBAAwB,CAAA,CAAE;MAC/B,MAAMC,WAAW,GAAG,IAAI,CAACF,eAAe,EAAE;MAC1C,IAAIE,WAAW,EAAE;QACf,IAAI,CAACnrB,KAAK,CAACjL,GAAG,IAAIo2B,WAAW;QAC7B,IAAI,CAACnrB,KAAK,CAAC0qB,cAAc,GAAG,IAAI;MAClC;MACA;IACF;IAEA,OAAO,KAAK,CAACM,gBAAgB,CAAC,IAAI,CAAChrB,KAAK,CAAC0qB,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC;EACzE;EAEAO,eAAeA,CAAAA,EAAmB;IAChC,MAAM;MAAEl2B;KAAK,GAAG,IAAI,CAACiL,KAAK;IAC1B,IAAIorB,yBAAyB,GAAG,CAAC;IACjC,OACE,CAAgC,EAAA,EAAA,CAAA,CAAA,CAACnI,QAAQ,CAEvC,IAAI,CAAC0B,KAAK,CAACC,UAAU,CAAC7vB,GAAG,GAAGq2B,yBAAyB,CACvD,CAAC,EACD;MACAA,yBAAyB,EAAE;IAC7B;IAEA,MAAMC,GAAG,GAAG,IAAI,CAAC1G,KAAK,CAACC,UAAU,CAACwG,yBAAyB,GAAGr2B,GAAG,CAAC;IAClE,MAAMu2B,GAAG,GAAG,IAAI,CAAC3G,KAAK,CAACC,UAAU,CAACwG,yBAAyB,GAAGr2B,GAAG,GAAG,CAAC,CAAC;IAEtE,IAAIs2B,GAAG,KAAA,EAAoB,IAAIC,GAAG,OAAoB,EAAE;MACtD,OAAOF,yBAAyB,GAAG,CAAC;IACtC;IACA,IACE,IAAI,CAACzG,KAAK,CAAC4G,KAAK,CACdH,yBAAyB,GAAGr2B,GAAG,EAC/Bq2B,yBAAyB,GAAGr2B,GAAG,GAAG,EACpC,CAAC,KAAK,cAAc,EACpB;MACA,OAAOq2B,yBAAyB,GAAG,EAAE;IACvC;IACA,IAAIC,GAAG,KAAA,EAAoB,IAAIC,GAAG,OAAoB,EAAE;MACtD,OAAOF,yBAAyB;IAClC;IACA,OAAO,KAAK;EACd;EAEAF,wBAAwBA,CAAAA,EAAS;IAC/B,MAAMlnC,GAAG,GAAG,IAAI,CAAC2gC,KAAK,CAAC6G,OAAO,CAAC,IAAI,EAAE,IAAI,CAACxrB,KAAK,CAACjL,GAAG,CAAC;IACpD,IAAI/Q,GAAG,KAAK,CAAC,CAAC,EAAE;MACd,MAAM,IAAI,CAACmb,KAAK,CAACjJ,MAAM,CAACtF,mBAAmB,EAAE,IAAI,CAACoP,KAAK,CAACykB,WAAW,CAAA,CAAE,CAAC;IACxE;EACF;EAIAgH,wCAAwCA,CACtC92B,GAAa,EACb;IACEqe,QAAQ;IACRD;EAIF,CAAC,EACK;IACN,IAAI,CAAC5T,KAAK,CAACmT,UAAU,CAACQ,+BAA+B,EAAEne,GAAG,EAAE;MAC1Doe,UAAU;MACVC;IACF,CAAC,CAAC;EACJ;EAEA0Y,qCAAqCA,CACnC/2B,GAAa,EACbg3B,WAAwB,EACxB;IACA,OAAO,IAAI,CAACxsB,KAAK,CACf,CAACwsB,WAAW,CAACpY,YAAY,GACrBjB,UAAU,CAACmB,uCAAuC,GAClDkY,WAAW,CAACpY,YAAY,KAAK,QAAQ,GACnCjB,UAAU,CAACkB,sCAAsC,GACjDlB,UAAU,CAACgB,uCAAuC,EACxD3e,GAAG,EACHg3B,WACF,CAAC;EACH;EAEAC,uCAAuCA,CACrCj3B,GAAa,EACbC,OAGC,EACK;IACN,IAAI,CAACuK,KAAK,CAACmT,UAAU,CAACsB,8BAA8B,EAAEjf,GAAG,EAAEC,OAAO,CAAC;EACrE;EAEAi3B,kDAAkDA,CAChD1lC,IAAY,EACZyO,OAEC,EACK;IACN,IAAI,CAACuK,KAAK,CACRmT,UAAU,CAACuB,yCAAyC,EACpD1tB,IAAI,EACJyO,OACF,CAAC;EACH;EAEAk3B,kBAAkBA,CAAAA,EAAmB;IACnC,MAAM3tB,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IACpC,MAAM4tB,SAAS,GAAGA,CAAAA,KAAM,IAAI,CAAC5T,KAAK,CAAS,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,EAAU,CAAC;IACrE,QAAQ,IAAI,CAACnY,KAAK,CAAC5Z,IAAI;MACrB,KAAA,GAAA;QAAa;UACX,MAAM4lC,OAAO,GAAG,IAAI,CAACxyB,mBAAmB,CAAC,IAAI,CAACwG,KAAK,CAACrM,KAAK,CAAC;UAC1D,IAAIo4B,SAAS,CAAA,CAAE,EAAE;YACf,OAAO;cAAE3lC,IAAI,EAAE,QAAQ;cAAEuO,GAAG,EAAEq3B,OAAO,CAACr3B,GAAG,CAAC5Q,KAAK;cAAE4P,KAAK,EAAEq4B;aAAS;UACnE;UACA,OAAO;YAAE5lC,IAAI,EAAE,SAAS;YAAEuO,GAAG,EAAEwJ;WAAU;QAC3C;MACA,KAAA,GAAA;QAAgB;UACd,MAAM6tB,OAAO,GAAG,IAAI,CAACzyB,kBAAkB,CAAC,IAAI,CAACyG,KAAK,CAACrM,KAAK,CAAC;UACzD,IAAIo4B,SAAS,CAAA,CAAE,EAAE;YACf,OAAO;cAAE3lC,IAAI,EAAE,QAAQ;cAAEuO,GAAG,EAAEq3B,OAAO,CAACr3B,GAAG,CAAC5Q,KAAK;cAAE4P,KAAK,EAAEq4B;aAAS;UACnE;UACA,OAAO;YAAE5lC,IAAI,EAAE,SAAS;YAAEuO,GAAG,EAAEwJ;WAAU;QAC3C;MACA,KAAA,EAAA;MACA,KAAA,EAAA;QAAgB;UACd,MAAM6tB,OAAO,GAAG,IAAI,CAACtyB,mBAAmB,CAAC,IAAI,CAACye,KAAK,CAAS,EAAA,CAAC,CAAC;UAC9D,IAAI4T,SAAS,CAAA,CAAE,EAAE;YACf,OAAO;cACL3lC,IAAI,EAAE,SAAS;cACfuO,GAAG,EAAEq3B,OAAO,CAACr3B,GAAG,CAAC5Q,KAAK;cACtB4P,KAAK,EAAEq4B;aACR;UACH;UACA,OAAO;YAAE5lC,IAAI,EAAE,SAAS;YAAEuO,GAAG,EAAEwJ;WAAU;QAC3C;MACA;QACE,OAAO;UAAE/X,IAAI,EAAE,SAAS;UAAEuO,GAAG,EAAEwJ;SAAU;IAC7C;EACF;EAEA8tB,iBAAiBA,CAAAA,EAGf;IACA,MAAMt3B,GAAG,GAAG,IAAI,CAACqL,KAAK,CAAC7B,QAAQ;IAC/B,MAAM7B,EAAE,GAAG,IAAI,CAACic,eAAe,CAAC,IAAI,CAAC;IACrC,MAAM2T,IAAI,GAAG,IAAI,CAACnU,GAAG,CAAA,EAAM,CAAC,GACxB,IAAI,CAAC+T,kBAAkB,EAAE,GACzB;MAAE1lC,IAAI,EAAE,MAAe;MAAEuO;KAAK;IAClC,OAAO;MAAE2H,EAAE;MAAE4vB;KAAM;EACrB;EAEAC,iCAAiCA,CAC/Bx3B,GAAa,EACbkZ,OAAoB,EACpBue,YAA8B,EACxB;IACN,MAAM;MAAE7Y;IAAc,CAAA,GAAG1F,OAAO;IAChC,IAAI0F,YAAY,KAAK,IAAI,EAAE;MACzB;IACF;IACA,IAAIA,YAAY,KAAK6Y,YAAY,EAAE;MACjC,IAAI,CAACV,qCAAqC,CAAC/2B,GAAG,EAAEkZ,OAAO,CAAC;IAC1D;EACF;EAEAwe,eAAeA,CAAC;IACdrZ,QAAQ;IACRO;EAIF,CAAC,EAoBC;IACA,MAAM+Y,SAAS,GAAG,IAAI75B,GAAG,EAAE;IAC3B,MAAM85B,OAAO,GAAG;MACdC,cAAc,EAAE,EAAE;MAClBC,aAAa,EAAE,EAAE;MACjBC,aAAa,EAAE,EAAE;MACjBC,gBAAgB,EAAE;KACnB;IACD,IAAIC,iBAAiB,GAAG,KAAK;IAC7B,OAAO,CAAC,IAAI,CAACzU,KAAK,CAAA,CAAU,CAAC,EAAE;MAC7B,IAAI,IAAI,CAACJ,GAAG,CAAA,EAAY,CAAC,EAAE;QACzB6U,iBAAiB,GAAG,IAAI;QACxB;MACF;MACA,MAAMC,UAAU,GAAG,IAAI,CAAC5vB,SAAS,EAAoB;MACrD,MAAM;QAAEX,EAAE;QAAE4vB;MAAK,CAAC,GAAG,IAAI,CAACD,iBAAiB,EAAE;MAC7C,MAAMlZ,UAAU,GAAGzW,EAAE,CAAClQ,IAAI;MAC1B,IAAI2mB,UAAU,KAAK,EAAE,EAAE;QACrB;MACF;MACA,IAAI,QAAQ,CAACtE,IAAI,CAACsE,UAAU,CAAC,EAAE;QAC7B,IAAI,CAAC5T,KAAK,CAACmT,UAAU,CAACoB,qBAAqB,EAAEpX,EAAE,EAAE;UAC/CyW,UAAU;UACVY,UAAU,EAAEZ,UAAU,CAAC,CAAC,CAAC,CAAC+Z,WAAW,CAAA,CAAE,GAAG/Z,UAAU,CAACwY,KAAK,CAAC,CAAC,CAAC;UAC7DvY;QACF,CAAC,CAAC;MACJ;MACA,IAAIsZ,SAAS,CAACjd,GAAG,CAAC0D,UAAU,CAAC,EAAE;QAC7B,IAAI,CAAC5T,KAAK,CAACmT,UAAU,CAACW,uBAAuB,EAAE3W,EAAE,EAAE;UACjDyW,UAAU;UACVC;QACF,CAAC,CAAC;MACJ;MACAsZ,SAAS,CAACla,GAAG,CAACW,UAAU,CAAC;MACzB,MAAMlF,OAAO,GAAG;QAAEmF,QAAQ;QAAEO,YAAY;QAAER;OAAY;MACtD8Z,UAAU,CAACvwB,EAAE,GAAGA,EAAE;MAClB,QAAQ4vB,IAAI,CAAC9lC,IAAI;QACf,KAAK,SAAS;UAAE;YACd,IAAI,CAAC+lC,iCAAiC,CACpCD,IAAI,CAACv3B,GAAG,EACRkZ,OAAO,EACP,SACF,CAAC;YACDgf,UAAU,CAACX,IAAI,GAAGA,IAAI,CAACv4B,KAAK;YAC5B44B,OAAO,CAACC,cAAc,CAAClpB,IAAI,CAEzB,IAAI,CAAC/F,UAAU,CAACsvB,UAAU,EAAE,mBAAmB,CACjD,CAAC;YACD;UACF;QACA,KAAK,QAAQ;UAAE;YACb,IAAI,CAACV,iCAAiC,CAACD,IAAI,CAACv3B,GAAG,EAAEkZ,OAAO,EAAE,QAAQ,CAAC;YACnEgf,UAAU,CAACX,IAAI,GAAGA,IAAI,CAACv4B,KAAK;YAC5B44B,OAAO,CAACE,aAAa,CAACnpB,IAAI,CAExB,IAAI,CAAC/F,UAAU,CAACsvB,UAAU,EAAE,kBAAkB,CAChD,CAAC;YACD;UACF;QACA,KAAK,QAAQ;UAAE;YACb,IAAI,CAACV,iCAAiC,CAACD,IAAI,CAACv3B,GAAG,EAAEkZ,OAAO,EAAE,QAAQ,CAAC;YACnEgf,UAAU,CAACX,IAAI,GAAGA,IAAI,CAACv4B,KAAK;YAC5B44B,OAAO,CAACG,aAAa,CAACppB,IAAI,CAExB,IAAI,CAAC/F,UAAU,CAACsvB,UAAU,EAAE,kBAAkB,CAChD,CAAC;YACD;UACF;QACA,KAAK,SAAS;UAAE;YACd,MAAM,IAAI,CAACnB,qCAAqC,CAACQ,IAAI,CAACv3B,GAAG,EAAEkZ,OAAO,CAAC;UACrE;QACA,KAAK,MAAM;UAAE;YACX,QAAQ0F,YAAY;cAClB,KAAK,SAAS;gBACZ,IAAI,CAACkY,wCAAwC,CAC3CS,IAAI,CAACv3B,GAAG,EACRkZ,OACF,CAAC;gBACD;cACF,KAAK,QAAQ;gBACX,IAAI,CAAC+d,uCAAuC,CAACM,IAAI,CAACv3B,GAAG,EAAEkZ,OAAO,CAAC;gBAC/D;cACF;gBACE0e,OAAO,CAACI,gBAAgB,CAACrpB,IAAI,CAE3B,IAAI,CAAC/F,UAAU,CAACsvB,UAAU,EAAE,qBAAqB,CACnD,CAAC;YACL;UACF;MACF;MAEA,IAAI,CAAC,IAAI,CAAC1U,KAAK,CAAA,CAAU,CAAC,EAAE;QAC1B,IAAI,CAACT,MAAM,CAAA,EAAS,CAAC;MACvB;IACF;IACA,OAAO;MAAE6U,OAAO;MAAEK;KAAmB;EACvC;EAEAG,qBAAqBA,CACnBC,kBAA4B,EAC5BL,gBAA0B,EAC1B;IACE3Z;EAGF,CAAC,EACS;IACV,IAAIga,kBAAkB,CAAC5sB,MAAM,KAAK,CAAC,EAAE;MACnC,OAAOusB,gBAAgB;IACzB,CAAC,MAAM,IAAIA,gBAAgB,CAACvsB,MAAM,KAAK,CAAC,EAAE;MACxC,OAAO4sB,kBAAkB;IAC1B,CAAA,MAAM,IAAIL,gBAAgB,CAACvsB,MAAM,GAAG4sB,kBAAkB,CAAC5sB,MAAM,EAAE;MAC9D,KAAK,MAAM+jB,MAAM,IAAI6I,kBAAkB,EAAE;QACvC,IAAI,CAACnB,kDAAkD,CAAC1H,MAAM,EAAE;UAC9DnR;QACF,CAAC,CAAC;MACJ;MACA,OAAO2Z,gBAAgB;IACzB,CAAC,MAAM;MACL,KAAK,MAAMxI,MAAM,IAAIwI,gBAAgB,EAAE;QACrC,IAAI,CAACd,kDAAkD,CAAC1H,MAAM,EAAE;UAC9DnR;QACF,CAAC,CAAC;MACJ;MACA,OAAOga,kBAAkB;IAC3B;EACF;EAEAC,yBAAyBA,CAAC;IACxBja;EAGF,CAAC,EAAoB;IACnB,IAAI,CAAC,IAAI,CAACoG,aAAa,IAAO,CAAC,EAAE,OAAO,IAAI;IAE5C,IAAI,CAAC3M,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC,EAAE;MACvC,MAAM,IAAI,CAAC+Y,KAAK,CACdmT,UAAU,CAACe,sCAAsC,EACjD,IAAI,CAACrT,KAAK,CAAC7B,QAAQ,EACnB;QACE6U;MACF,CACF,CAAC;IACH;IAEA,MAAM;MAAErf;KAAO,GAAG,IAAI,CAACqM,KAAK;IAC5B,IAAI,CAAC2P,IAAI,CAAA,CAAE;IAEX,IACEhc,KAAK,KAAK,SAAS,IACnBA,KAAK,KAAK,QAAQ,IAClBA,KAAK,KAAK,QAAQ,IAClBA,KAAK,KAAK,QAAQ,EAClB;MACA,IAAI,CAACwL,KAAK,CAACmT,UAAU,CAACa,uBAAuB,EAAE,IAAI,CAACnT,KAAK,CAAC7B,QAAQ,EAAE;QAClE6U,QAAQ;QACRI,eAAe,EAAEzf;MACnB,CAAC,CAAC;IACJ;IAEA,OAAOA,KAAK;EACd;EAEAu5B,YAAYA,CAAC/mC,IAA4B,EAAEmW,EAAgB,EAAU;IACnE,MAAM0W,QAAQ,GAAG1W,EAAE,CAAClQ,IAAI;IACxB,MAAM+gC,OAAO,GAAG7wB,EAAE,CAAC3H,GAAG,CAAC5Q,KAAK;IAC5B,MAAMwvB,YAAY,GAAG,IAAI,CAAC0Z,yBAAyB,CAAC;MAAEja;IAAS,CAAC,CAAC;IACjE,IAAI,CAAC0E,MAAM,CAAA,CAAU,CAAC;IACtB,MAAM;MAAE6U,OAAO;MAAEK;IAAkB,CAAC,GAAG,IAAI,CAACP,eAAe,CAAC;MAC1DrZ,QAAQ;MACRO;IACF,CAAC,CAAC;IACFptB,IAAI,CAACymC,iBAAiB,GAAGA,iBAAiB;IAE1C,QAAQrZ,YAAY;MAClB,KAAK,SAAS;QACZptB,IAAI,CAACotB,YAAY,GAAG,IAAI;QACxBptB,IAAI,CAAComC,OAAO,GAAGA,OAAO,CAACC,cAAc;QACrC,IAAI,CAAC9U,MAAM,CAAA,CAAU,CAAC;QACtB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC;MACjD,KAAK,QAAQ;QACXA,IAAI,CAACotB,YAAY,GAAG,IAAI;QACxBptB,IAAI,CAAComC,OAAO,GAAGA,OAAO,CAACE,aAAa;QACpC,IAAI,CAAC/U,MAAM,CAAA,CAAU,CAAC;QACtB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;MAChD,KAAK,QAAQ;QACXA,IAAI,CAACotB,YAAY,GAAG,IAAI;QACxBptB,IAAI,CAAComC,OAAO,GAAG,IAAI,CAACQ,qBAAqB,CACvCR,OAAO,CAACG,aAAa,EACrBH,OAAO,CAACI,gBAAgB,EACxB;UAAE3Z;QAAS,CACb,CAAC;QACD,IAAI,CAAC0E,MAAM,CAAA,CAAU,CAAC;QACtB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;MAChD,KAAK,QAAQ;QACXA,IAAI,CAAComC,OAAO,GAAGA,OAAO,CAACI,gBAAgB;QACvC,IAAI,CAACjV,MAAM,CAAA,CAAU,CAAC;QACtB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;MAChD;QAAS;UAEP,MAAMinC,KAAK,GAAGA,CAAAA,KAAM;YAClBjnC,IAAI,CAAComC,OAAO,GAAG,EAAE;YACjB,IAAI,CAAC7U,MAAM,CAAA,CAAU,CAAC;YACtB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;WAC/C;UACDA,IAAI,CAACotB,YAAY,GAAG,KAAK;UAEzB,MAAM8Z,QAAQ,GAAGd,OAAO,CAACC,cAAc,CAACpsB,MAAM;UAC9C,MAAMktB,OAAO,GAAGf,OAAO,CAACE,aAAa,CAACrsB,MAAM;UAC5C,MAAMmtB,OAAO,GAAGhB,OAAO,CAACG,aAAa,CAACtsB,MAAM;UAC5C,MAAMotB,YAAY,GAAGjB,OAAO,CAACI,gBAAgB,CAACvsB,MAAM;UAEpD,IAAI,CAACitB,QAAQ,IAAI,CAACC,OAAO,IAAI,CAACC,OAAO,IAAI,CAACC,YAAY,EAAE;YACtD,OAAOJ,KAAK,CAAA,CAAE;UAChB,CAAC,MAAM,IAAI,CAACC,QAAQ,IAAI,CAACC,OAAO,EAAE;YAChCnnC,IAAI,CAAComC,OAAO,GAAG,IAAI,CAACQ,qBAAqB,CACvCR,OAAO,CAACG,aAAa,EACrBH,OAAO,CAACI,gBAAgB,EACxB;cAAE3Z;YAAS,CACb,CAAC;YACD,IAAI,CAAC0E,MAAM,CAAA,CAAU,CAAC;YACtB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;UAC/C,CAAA,MAAM,IAAI,CAACmnC,OAAO,IAAI,CAACC,OAAO,IAAIF,QAAQ,IAAIG,YAAY,EAAE;YAC3D,KAAK,MAAMrJ,MAAM,IAAIoI,OAAO,CAACI,gBAAgB,EAAE;cAC7C,IAAI,CAAClB,wCAAwC,CAACtH,MAAM,CAACxvB,GAAG,CAAC5Q,KAAK,EAAE;gBAC9DivB,QAAQ;gBACRD,UAAU,EAAEoR,MAAM,CAAC7nB,EAAE,CAAClQ;cACxB,CAAC,CAAC;YACJ;YACAjG,IAAI,CAAComC,OAAO,GAAGA,OAAO,CAACC,cAAc;YACrC,IAAI,CAAC9U,MAAM,CAAA,CAAU,CAAC;YACtB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC;UAChD,CAAA,MAAM,IAAI,CAACknC,QAAQ,IAAI,CAACE,OAAO,IAAID,OAAO,IAAIE,YAAY,EAAE;YAC3D,KAAK,MAAMrJ,MAAM,IAAIoI,OAAO,CAACI,gBAAgB,EAAE;cAC7C,IAAI,CAACf,uCAAuC,CAACzH,MAAM,CAACxvB,GAAG,CAAC5Q,KAAK,EAAE;gBAC7DivB,QAAQ;gBACRD,UAAU,EAAEoR,MAAM,CAAC7nB,EAAE,CAAClQ;cACxB,CAAC,CAAC;YACJ;YACAjG,IAAI,CAAComC,OAAO,GAAGA,OAAO,CAACE,aAAa;YACpC,IAAI,CAAC/U,MAAM,CAAA,CAAU,CAAC;YACtB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;UAChD,CAAC,MAAM;YACL,IAAI,CAACgZ,KAAK,CAACmT,UAAU,CAACY,4BAA4B,EAAEia,OAAO,EAAE;cAC3Dna;YACF,CAAC,CAAC;YACF,OAAOoa,KAAK,CAAA,CAAE;UAChB;QACF;IACF;EACF;EAEApM,wBAAwBA,CACtB76B,IAAmC,EACZ;IACvB,MAAMmW,EAAE,GAAG,IAAI,CAACic,eAAe,EAAE;IACjCpyB,IAAI,CAACmW,EAAE,GAAGA,EAAE;IACZnW,IAAI,CAAC6V,IAAI,GAAG,IAAI,CAACkxB,YAAY,CAAC,IAAI,CAACjwB,SAAS,CAAA,CAAE,EAAEX,EAAE,CAAC;IACnD,OAAO,IAAI,CAACiB,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAEAsnC,+BAA+BA,CAC7BtnC,IAAyB,EACJ;IACrB,IAAI,IAAI,CAAC4wB,gBAAgB,EAAE,EAAE;MAC3B,IAAI,IAAI,CAACoB,KAAK,CAAM,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAa,EAAA,CAAC,EAAE;QACjDhyB,IAAI,CAACkkC,aAAa,GAChB,IAAI,CAACzN,+CAA+C,EAAE;MAC1D;IACF;IAEA,OAAO,KAAK,CAAC6Q,+BAA+B,CAACtnC,IAAI,CAAC;EACpD;EAGAgkC,mBAAmBA,CAAAA,EAAY;IAC7B,MAAMxa,IAAI,GAAG,IAAI,CAAC+d,cAAc,EAAE;IAClC,IAAI,IAAI,CAAC/I,KAAK,CAACC,UAAU,CAACjV,IAAI,CAAC,KAAA,EAAuB,EAAE;MACtD,MAAMge,SAAS,GAAG,IAAI,CAAChJ,KAAK,CAACC,UAAU,CAACjV,IAAI,GAAG,CAAC,CAAC;MACjD,OACEge,SAAS,KAAA,EAAuB,IAAIA,SAAS,KAAuB,EAAA;IAExE;IACA,OAAO,KAAK;EACd;EAGA3Q,YAAYA,CAAAA,EAAG;IACb,MAAM;MAAE52B;KAAM,GAAG,IAAI,CAAC4Z,KAAK;IAC3B,IAAI5Z,IAAI,OAAU,EAAE;MAClB,IAAI,CAAC4Z,KAAK,CAACjL,GAAG,IAAI,CAAC;MACnB,IAAI,CAAC64B,YAAY,CAAA,CAAE;IACrB,CAAC,MAAM,IAAIxnC,IAAI,KAAA,EAAU,EAAE;MACzB,IAAI,CAAC4Z,KAAK,CAACjL,GAAG,IAAI,CAAC;MACnB,IAAI,CAAC84B,YAAY,CAAA,CAAE;IACrB;EACF;EAEAhR,SAASA,CAAAA,EAAG;IACV,MAAM;MAAEz2B;KAAM,GAAG,IAAI,CAAC4Z,KAAK;IAC3B,IAAI5Z,IAAI,OAAiB,EAAE;MACzB,IAAI,CAAC4Z,KAAK,CAACjL,GAAG,IAAI,CAAC;MACnB,IAAI,CAAC8vB,QAAQ,CAAQ,EAAA,EAAA,CAAC,CAAC;MACvB,OAAA,EAAA;IACF;IACA,OAAOz+B,IAAI;EACb;EAEA2iC,6BAA6BA,CAAC5iC,IAAY,EAAE;IAC1C,OAAOA,IAAI,CAACC,IAAI,KAAK,oBAAoB,GAAGD,IAAI,CAAC4T,UAAU,GAAG5T,IAAI;EACpE;AACF,CAAC;ACnzHH,MAAM2nC,QAAgC,GAAG;EAEvCC,SAAS,EAAE,IAAI;EACfC,IAAI,EAAE,QAAQ;EACdC,GAAG,EAAE,GAAG;EACRC,IAAI,EAAE,QAAQ;EACdxnB,EAAE,EAAE,GAAG;EACPC,EAAE,EAAE,GAAG;EACPwnB,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,GAAG,EAAE,QAAQ;EACbC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,GAAG,EAAE,QAAQ;EACbC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,IAAI,EAAE,QAAQ;EACdC,GAAG,EAAE,QAAQ;EACbC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,GAAG,EAAE,QAAQ;EACbC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,GAAG,EAAE,QAAQ;EACbC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACd1uB,KAAK,EAAE,QAAQ;EACf2uB,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,OAAO,EAAE,QAAQ;EACjBC,IAAI,EAAE,QAAQ;EACdC,GAAG,EAAE,QAAQ;EACbC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,EAAE,EAAE,QAAQ;EACZC,EAAE,EAAE,QAAQ;EACZC,EAAE,EAAE,QAAQ;EACZC,OAAO,EAAE,QAAQ;EACjBC,EAAE,EAAE,QAAQ;EACZC,GAAG,EAAE,QAAQ;EACbC,KAAK,EAAE,QAAQ;EACfC,GAAG,EAAE,QAAQ;EACbC,OAAO,EAAE,QAAQ;EACjBC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,OAAO,EAAE,QAAQ;EACjBC,IAAI,EAAE,QAAQ;EACdC,GAAG,EAAE,QAAQ;EACbC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,EAAE,EAAE,QAAQ;EACZC,EAAE,EAAE,QAAQ;EACZC,EAAE,EAAE,QAAQ;EACZC,OAAO,EAAE,QAAQ;EACjBC,EAAE,EAAE,QAAQ;EACZC,GAAG,EAAE,QAAQ;EACbC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,GAAG,EAAE,QAAQ;EACbC,OAAO,EAAE,QAAQ;EACjBC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,KAAK,EAAE,QAAQ;EACfC,QAAQ,EAAE,QAAQ;EAClBC,KAAK,EAAE,QAAQ;EACfC,GAAG,EAAE,QAAQ;EACbC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,OAAO,EAAE,QAAQ;EACjBC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfvN,KAAK,EAAE,QAAQ;EACfwN,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,EAAE,EAAE,QAAQ;EACZC,IAAI,EAAE,QAAQ;EACdC,GAAG,EAAE,QAAQ;EACbC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfl9B,IAAI,EAAE,QAAQ;EACdm9B,KAAK,EAAE,QAAQ;EACfC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,EAAE,EAAE,QAAQ;EACZC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,MAAM,EAAE,QAAQ;EAChBC,GAAG,EAAE,QAAQ;EACbC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,EAAE,EAAE,QAAQ;EACZC,KAAK,EAAE,QAAQ;EACfC,EAAE,EAAE,QAAQ;EACZC,EAAE,EAAE,QAAQ;EACZC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,GAAG,EAAE,QAAQ;EACbC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE;AACT,CAAU;AC5PH,MAAMC,SAAS,GAAG,yBAAyB;AAC3C,MAAMC,UAAU,GAAG,IAAI7kC,MAAM,CAAC4kC,SAAS,CAAC/9B,MAAM,EAAE,GAAG,CAAC;AAGpD,SAASi+B,SAASA,CAACp5C,IAAY,EAAW;EAC/C,QAAQA,IAAI;IACV,KAAA,EAAA;IACA,KAAA,EAAA;IACA,KAAA,IAAA;IACA,KAAA,IAAA;MACE,OAAO,IAAI;IAEb;MACE,OAAO,KAAK;EAChB;AACF;AAEO,SAASq5C,UAAUA,CAAChZ,KAAa,EAAE5gC,KAAa,EAAEC,GAAW,EAAW;EAC7E,KAAK,IAAIuqB,CAAC,GAAGxqB,KAAK,EAAEwqB,CAAC,GAAGvqB,GAAG,EAAEuqB,CAAC,EAAE,EAAE;IAChC,IAAImvB,SAAS,CAAC/Y,KAAK,CAACC,UAAU,CAACrW,CAAC,CAAC,CAAC,EAAE;MAClC,OAAO,IAAI;IACb;EACF;EACA,OAAO,KAAK;AACd;AAEO,MAAMqvB,cAAc,GAAG,+BAA+B;AAEtD,MAAMC,oBAAoB,GAC/B,gDAAgD;AAG3C,SAASC,YAAYA,CAACx5C,IAAY,EAAW;EAClD,QAAQA,IAAI;IACV,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAA,EAAA;IACA,KAAA,GAAA;IACA,KAAA,IAAA;IACA,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;MACT,OAAO,IAAI;IAEb;MACE,OAAO,KAAK;EAChB;AACF;AC1CA,MAAMy5C,SAAS,GAAGzoC,cAAc,KAAK,CAAC;EACpC0oC,gBAAgB,EACd,8DAA8D;EAChEC,wBAAwB,EAAEA,CAAC;IAAEC;GAA4C,KACvE,+CAA+CA,cAAc,IAAI;EACnEC,yBAAyB,EAAE,gDAAgD;EAC3EC,4BAA4B,EAC1B,0GAA0G;EAE5GvuC,eAAe,EAAEA,CAAC;IAChB1E,UAAU;IACVkzC;EAIF,CAAC,KACC,sBAAsBlzC,UAAU,sBAAsBkzC,UAAU,aAAalzC,UAAU,OAAO;EAChGmzC,mBAAmB,EACjB,gEAAgE;EAClEC,sBAAsB,EAAE,4BAA4B;EACpDC,4BAA4B,EAC1B;AACJ,CAAC,CAAC;AAIF,SAASC,UAAUA,CAACzmC,MAAwB,EAA8B;EACxE,OAAOA,MAAM,GACTA,MAAM,CAAC5R,IAAI,KAAK,oBAAoB,IAClC4R,MAAM,CAAC5R,IAAI,KAAK,oBAAoB,GACtC,KAAK;AACX;AAIA,SAASs4C,mBAAmBA,CAC1B1mC,MAAqE,EAC7D;EACR,IAAIA,MAAM,CAAC5R,IAAI,KAAK,eAAe,EAAE;IACnC,OAAO4R,MAAM,CAAC5L,IAAI;EACpB;EAEA,IAAI4L,MAAM,CAAC5R,IAAI,KAAK,mBAAmB,EAAE;IACvC,OAAO4R,MAAM,CAAC2mC,SAAS,CAACvyC,IAAI,GAAG,GAAG,GAAG4L,MAAM,CAAC5L,IAAI,CAACA,IAAI;EACvD;EAEA,IAAI4L,MAAM,CAAC5R,IAAI,KAAK,qBAAqB,EAAE;IACzC,OACEs4C,mBAAmB,CAAC1mC,MAAM,CAACA,MAAM,CAAC,GAClC,GAAG,GACH0mC,mBAAmB,CAAC1mC,MAAM,CAAC+mB,QAAQ,CAAC;EAExC;EAIA,MAAM,IAAIjnB,KAAK,CAAC,4BAA4B,GAAGE,MAAM,CAAC5R,IAAI,CAAC;AAC7D;AAeA,IAAAmiC,GAAA,GAAgBpwB,UAAyB,IACvC,MAAMymC,cAAc,SAASzmC,UAAU,CAAoC;EAGzE0mC,YAAYA,CAAAA,EAAS;IACnB,IAAIlgB,GAAG,GAAG,EAAE;IACZ,IAAImgB,UAAU,GAAG,IAAI,CAAC9+B,KAAK,CAACjL,GAAG;IAC/B,SAAS;MACP,IAAI,IAAI,CAACiL,KAAK,CAACjL,GAAG,IAAI,IAAI,CAACqL,MAAM,EAAE;QACjC,MAAM,IAAI,CAACjB,KAAK,CACd4+B,SAAS,CAACQ,sBAAsB,EAChC,IAAI,CAACv+B,KAAK,CAAC7B,QACb,CAAC;MACH;MAEA,MAAM6oB,EAAE,GAAG,IAAI,CAACrC,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,CAAC;MAEhD,QAAQiyB,EAAE;QACR,KAAA,EAAA;QACA,KAAA,GAAA;UACE,IAAI,IAAI,CAAChnB,KAAK,CAACjL,GAAG,KAAK,IAAI,CAACiL,KAAK,CAACjc,KAAK,EAAE;YACvC,IAAIijC,EAAE,OAAuB,IAAI,IAAI,CAAChnB,KAAK,CAAC++B,kBAAkB,EAAE;cAC9D,EAAE,IAAI,CAAC/+B,KAAK,CAACjL,GAAG;cAChB,IAAI,CAACiiB,WAAW,CAAA,GAAe,CAAC;YAClC,CAAC,MAAM;cACL,KAAK,CAAC0N,gBAAgB,CAACsC,EAAE,CAAC;YAC5B;YACA;UACF;UACArI,GAAG,IAAI,IAAI,CAACgG,KAAK,CAAC4G,KAAK,CAACuT,UAAU,EAAE,IAAI,CAAC9+B,KAAK,CAACjL,GAAG,CAAC;UACnD,IAAI,CAACiiB,WAAW,CAAa2H,GAAAA,EAAAA,GAAG,CAAC;UACjC;QAEF,KAAA,EAAA;UACEA,GAAG,IAAI,IAAI,CAACgG,KAAK,CAAC4G,KAAK,CAACuT,UAAU,EAAE,IAAI,CAAC9+B,KAAK,CAACjL,GAAG,CAAC;UACnD4pB,GAAG,IAAI,IAAI,CAACqgB,aAAa,EAAE;UAC3BF,UAAU,GAAG,IAAI,CAAC9+B,KAAK,CAACjL,GAAG;UAC3B;QAEF,KAAA,EAAA;QACA,KAAA,GAAA;QAUA;UACE,IAAI2oC,SAAS,CAAC1W,EAAE,CAAC,EAAE;YACjBrI,GAAG,IAAI,IAAI,CAACgG,KAAK,CAAC4G,KAAK,CAACuT,UAAU,EAAE,IAAI,CAAC9+B,KAAK,CAACjL,GAAG,CAAC;YACnD4pB,GAAG,IAAI,IAAI,CAACsgB,cAAc,CAAC,IAAI,CAAC;YAChCH,UAAU,GAAG,IAAI,CAAC9+B,KAAK,CAACjL,GAAG;UAC7B,CAAC,MAAM;YACL,EAAE,IAAI,CAACiL,KAAK,CAACjL,GAAG;UAClB;MACJ;IACF;EACF;EAEAkqC,cAAcA,CAACC,aAAsB,EAAU;IAC7C,MAAMlY,EAAE,GAAG,IAAI,CAACrC,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,CAAC;IAChD,IAAI4pB,GAAG;IACP,EAAE,IAAI,CAAC3e,KAAK,CAACjL,GAAG;IAChB,IACEiyB,EAAE,KAA6B,EAAA,IAC/B,IAAI,CAACrC,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,CAAC,OAAuB,EAC5D;MACA,EAAE,IAAI,CAACiL,KAAK,CAACjL,GAAG;MAChB4pB,GAAG,GAAGugB,aAAa,GAAG,IAAI,GAAG,MAAM;IACrC,CAAC,MAAM;MACLvgB,GAAG,GAAGrsB,MAAM,CAACoc,YAAY,CAACsY,EAAE,CAAC;IAC/B;IACA,EAAE,IAAI,CAAChnB,KAAK,CAACm/B,OAAO;IACpB,IAAI,CAACn/B,KAAK,CAACo/B,SAAS,GAAG,IAAI,CAACp/B,KAAK,CAACjL,GAAG;IAErC,OAAO4pB,GAAG;EACZ;EAEA0gB,aAAaA,CAACC,KAAa,EAAQ;IACjC,IAAI3gB,GAAG,GAAG,EAAE;IACZ,IAAImgB,UAAU,GAAG,EAAE,IAAI,CAAC9+B,KAAK,CAACjL,GAAG;IACjC,SAAS;MACP,IAAI,IAAI,CAACiL,KAAK,CAACjL,GAAG,IAAI,IAAI,CAACqL,MAAM,EAAE;QACjC,MAAM,IAAI,CAACjB,KAAK,CAACjJ,MAAM,CAACpF,kBAAkB,EAAE,IAAI,CAACkP,KAAK,CAAC7B,QAAQ,CAAC;MAClE;MAEA,MAAM6oB,EAAE,GAAG,IAAI,CAACrC,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,CAAC;MAChD,IAAIiyB,EAAE,KAAKsY,KAAK,EAAE;MAClB,IAAItY,EAAE,OAAwB,EAAE;QAC9BrI,GAAG,IAAI,IAAI,CAACgG,KAAK,CAAC4G,KAAK,CAACuT,UAAU,EAAE,IAAI,CAAC9+B,KAAK,CAACjL,GAAG,CAAC;QACnD4pB,GAAG,IAAI,IAAI,CAACqgB,aAAa,EAAE;QAC3BF,UAAU,GAAG,IAAI,CAAC9+B,KAAK,CAACjL,GAAG;MAC7B,CAAC,MAAM,IAAI2oC,SAAS,CAAC1W,EAAE,CAAC,EAAE;QACxBrI,GAAG,IAAI,IAAI,CAACgG,KAAK,CAAC4G,KAAK,CAACuT,UAAU,EAAE,IAAI,CAAC9+B,KAAK,CAACjL,GAAG,CAAC;QACnD4pB,GAAG,IAAI,IAAI,CAACsgB,cAAc,CAAC,KAAK,CAAC;QACjCH,UAAU,GAAG,IAAI,CAAC9+B,KAAK,CAACjL,GAAG;MAC7B,CAAC,MAAM;QACL,EAAE,IAAI,CAACiL,KAAK,CAACjL,GAAG;MAClB;IACF;IACA4pB,GAAG,IAAI,IAAI,CAACgG,KAAK,CAAC4G,KAAK,CAACuT,UAAU,EAAE,IAAI,CAAC9+B,KAAK,CAACjL,GAAG,EAAE,CAAC;IACrD,IAAI,CAACiiB,WAAW,CAAY2H,GAAAA,EAAAA,GAAG,CAAC;EAClC;EAEAqgB,aAAaA,CAAAA,EAAW;IACtB,MAAMO,QAAQ,GAAG,EAAE,IAAI,CAACv/B,KAAK,CAACjL,GAAG;IACjC,IAAI,IAAI,CAACyqC,cAAc,CAAC,IAAI,CAACx/B,KAAK,CAACjL,GAAG,CAAC,KAAA,EAAyB,EAAE;MAChE,EAAE,IAAI,CAACiL,KAAK,CAACjL,GAAG;MAEhB,IAAIzK,KAAK,GAAG,EAAE;MACd,IAAI,IAAI,CAACk1C,cAAc,CAAC,IAAI,CAACx/B,KAAK,CAACjL,GAAG,CAAC,KAAA,GAAyB,EAAE;QAChEzK,KAAK,GAAG,EAAE;QACV,EAAE,IAAI,CAAC0V,KAAK,CAACjL,GAAG;MAClB;MAEA,MAAM0qC,SAAS,GAAG,IAAI,CAACC,OAAO,CAC5Bp1C,KAAK,EACKiM,SAAS,EACJ,KAAK,EACI,MAC1B,CAAC;MACD,IACEkpC,SAAS,KAAK,IAAI,IAClB,IAAI,CAACD,cAAc,CAAC,IAAI,CAACx/B,KAAK,CAACjL,GAAG,CAAC,OAAwB,EAC3D;QACA,EAAE,IAAI,CAACiL,KAAK,CAACjL,GAAG;QAChB,OAAOzC,MAAM,CAACC,aAAa,CAACktC,SAAS,CAAC;MACxC;IACF,CAAC,MAAM;MACL,IAAIE,KAAK,GAAG,CAAC;MACb,IAAIj7B,IAAI,GAAG,KAAK;MAChB,OACEi7B,KAAK,EAAE,GAAG,EAAE,IACZ,IAAI,CAAC3/B,KAAK,CAACjL,GAAG,GAAG,IAAI,CAACqL,MAAM,IAC5B,EAAEsE,IAAI,GAAG,IAAI,CAAC86B,cAAc,CAAC,IAAI,CAACx/B,KAAK,CAACjL,GAAG,CAAC,KAAA,EAAwB,CAAC,EACrE;QACA,EAAE,IAAI,CAACiL,KAAK,CAACjL,GAAG;MAClB;MAEA,IAAI2P,IAAI,EAAE;QACR,MAAMk7B,IAAI,GAAG,IAAI,CAACjb,KAAK,CAAC4G,KAAK,CAACgU,QAAQ,EAAE,IAAI,CAACv/B,KAAK,CAACjL,GAAG,CAAC;QACvD,MAAM8qC,MAAM,GAAGC,QAAa,CAACF,IAAI,CAAC;QAClC,EAAE,IAAI,CAAC5/B,KAAK,CAACjL,GAAG;QAEhB,IAAI8qC,MAAM,EAAE;UACV,OAAOA,MAAM;QACf;MACF;IACF;IAGA,IAAI,CAAC7/B,KAAK,CAACjL,GAAG,GAAGwqC,QAAQ;IACzB,OAAO,GAAG;EACZ;EASAQ,WAAWA,CAAAA,EAAS;IAClB,IAAI/Y,EAAE;IACN,MAAMjjC,KAAK,GAAG,IAAI,CAACic,KAAK,CAACjL,GAAG;IAC5B,GAAG;MACDiyB,EAAE,GAAG,IAAI,CAACrC,KAAK,CAACC,UAAU,CAAC,EAAE,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,CAAC;IAC7C,CAAA,QAAQ4Z,gBAAgB,CAACqY,EAAE,CAAC,IAAIA,EAAE,KAAmB,EAAA;IACtD,IAAI,CAAChQ,WAAW,CAAA,GAAA,EAAa,IAAI,CAAC2N,KAAK,CAAC4G,KAAK,CAACxnC,KAAK,EAAE,IAAI,CAACic,KAAK,CAACjL,GAAG,CAAC,CAAC;EACvE;EAIAirC,kBAAkBA,CAAAA,EAAoB;IACpC,MAAM75C,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAmB;IAC9C,IAAI,IAAI,CAACkb,KAAK,CAAA,GAAW,CAAC,EAAE;MAC1BhyB,IAAI,CAACiG,IAAI,GAAG,IAAI,CAAC4T,KAAK,CAACrM,KAAK;IAC7B,CAAA,MAAM,IAAIuZ,cAAc,CAAC,IAAI,CAAClN,KAAK,CAAC5Z,IAAI,CAAC,EAAE;MAC1CD,IAAI,CAACiG,IAAI,GAAGohB,cAAc,CAAC,IAAI,CAACxN,KAAK,CAAC5Z,IAAI,CAAC;IAC7C,CAAC,MAAM;MACL,IAAI,CAAC+E,UAAU,CAAA,CAAE;IACnB;IACA,IAAI,CAACwkB,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACpS,UAAU,CAACpX,IAAI,EAAE,eAAe,CAAC;EAC/C;EAIA85C,sBAAsBA,CAAAA,EAA0C;IAC9D,MAAM9hC,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IACpC,MAAM/R,IAAI,GAAG,IAAI,CAAC4zC,kBAAkB,EAAE;IACtC,IAAI,CAAC,IAAI,CAACjoB,GAAG,GAAS,CAAC,EAAE,OAAO3rB,IAAI;IAEpC,MAAMjG,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAAsBxf,QAAQ,CAAC;IAC5DhY,IAAI,CAACw4C,SAAS,GAAGvyC,IAAI;IACrBjG,IAAI,CAACiG,IAAI,GAAG,IAAI,CAAC4zC,kBAAkB,EAAE;IACrC,OAAO,IAAI,CAACziC,UAAU,CAACpX,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAKA+5C,mBAAmBA,CAAAA,EAGO;IACxB,MAAM/hC,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IACpC,IAAIhY,IAAmE,GACrE,IAAI,CAAC85C,sBAAsB,EAAE;IAC/B,IAAI95C,IAAI,CAACC,IAAI,KAAK,mBAAmB,EAAE;MACrC,OAAOD,IAAI;IACb;IACA,OAAO,IAAI,CAAC4xB,GAAG,CAAA,EAAO,CAAC,EAAE;MACvB,MAAMqL,OAAO,GAAG,IAAI,CAACzF,WAAW,CAAwBxf,QAAQ,CAAC;MACjEilB,OAAO,CAACprB,MAAM,GAAG7R,IAAI;MACrBi9B,OAAO,CAACrE,QAAQ,GAAG,IAAI,CAACihB,kBAAkB,EAAE;MAC5C75C,IAAI,GAAG,IAAI,CAACoX,UAAU,CAAC6lB,OAAO,EAAE,qBAAqB,CAAC;IACxD;IACA,OAAOj9B,IAAI;EACb;EAIAg6C,sBAAsBA,CAAAA,EAGF;IAClB,IAAIh6C,IAAI;IACR,QAAQ,IAAI,CAAC6Z,KAAK,CAAC5Z,IAAI;MACrB,KAAA,CAAA;QACED,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAE;QACvB,IAAI,CAACmjC,UAAU,CAACryB,KAAE,CAACxM,KAAK,CAAC;QACzB,IAAI,CAACoO,IAAI,CAAA,CAAE;QACXxpB,IAAI,GAAG,IAAI,CAACk6C,2BAA2B,CAACl6C,IAAI,EAAE4nB,KAAE,CAACvM,MAAM,CAAC;QACxD,IAAIrb,IAAI,CAAC4T,UAAU,CAAC3T,IAAI,KAAK,oBAAoB,EAAE;UACjD,IAAI,CAAC+Y,KAAK,CAAC4+B,SAAS,CAACC,gBAAgB,EAAE73C,IAAI,CAAC;QAC9C;QACA,OAAOA,IAAI;MAEb,KAAA,GAAA;MACA,KAAA,GAAA;QACE,OAAO,IAAI,CAAC0zB,aAAa,EAAE;MAE7B;QACE,MAAM,IAAI,CAAC1a,KAAK,CAAC4+B,SAAS,CAACO,mBAAmB,EAAE,IAAI,CAACt+B,KAAK,CAAC7B,QAAQ,CAAC;IACxE;EACF;EAMAmiC,uBAAuBA,CAAAA,EAAyB;IAC9C,MAAMn6C,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAAC,IAAI,CAAC3d,KAAK,CAACmB,aAAc,CAAC;IACxD,OAAO,IAAI,CAACnH,YAAY,CAAC7T,IAAI,EAAE,oBAAoB,EAAE,IAAI,CAAC6Z,KAAK,CAAC7B,QAAQ,CAAC;EAC3E;EAIAoiC,mBAAmBA,CAACp6C,IAA8B,EAAoB;IACpE,IAAI,CAACwpB,IAAI,CAAA,CAAE;IACXxpB,IAAI,CAAC4T,UAAU,GAAG,IAAI,CAACie,eAAe,EAAE;IACxC,IAAI,CAACooB,UAAU,CAACryB,KAAE,CAACrM,MAAM,CAAC;IAC1B,IAAI,CAAC1B,KAAK,CAAC++B,kBAAkB,GAAG,IAAI;IACpC,IAAI,CAACrnB,MAAM,CAAA,CAAU,CAAC;IAEtB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;EAChD;EAIAk6C,2BAA2BA,CACzBl6C,IAAsC,EACtCq6C,eAA2B,EACD;IAC1B,IAAI,IAAI,CAACroB,KAAK,CAAA,CAAU,CAAC,EAAE;MACzBhyB,IAAI,CAAC4T,UAAU,GAAG,IAAI,CAACumC,uBAAuB,EAAE;IAClD,CAAC,MAAM;MACL,MAAMvmC,UAAU,GAAG,IAAI,CAACie,eAAe,EAAE;MAczC7xB,IAAI,CAAC4T,UAAU,GAAGA,UAAU;IAC9B;IACA,IAAI,CAACqmC,UAAU,CAACI,eAAe,CAAC;IAChC,IAAI,CAACxgC,KAAK,CAAC++B,kBAAkB,GAAG,IAAI;IACpC,IAAI,CAACrnB,MAAM,CAAA,CAAU,CAAC;IAEtB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,wBAAwB,CAAC;EACxD;EAIAs6C,iBAAiBA,CAAAA,EAA0C;IACzD,MAAMt6C,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAyC;IACpE,IAAI,IAAI,CAACkb,KAAK,CAAA,CAAU,CAAC,EAAE;MACzB,IAAI,CAACioB,UAAU,CAACryB,KAAE,CAACxM,KAAK,CAAC;MACzB,IAAI,CAACoO,IAAI,CAAA,CAAE;MACX,IAAI,CAAC+H,MAAM,CAAA,EAAY,CAAC;MACxBvxB,IAAI,CAACoP,QAAQ,GAAG,IAAI,CAACgtB,uBAAuB,EAAE;MAC9C,IAAI,CAAC6d,UAAU,CAACryB,KAAE,CAACvM,MAAM,CAAC;MAC1B,IAAI,CAACxB,KAAK,CAAC++B,kBAAkB,GAAG,IAAI;MACpC,IAAI,CAACrnB,MAAM,CAAA,CAAU,CAAC;MACtB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,oBAAoB,CAAC;IACpD;IACAA,IAAI,CAACiG,IAAI,GAAG,IAAI,CAAC6zC,sBAAsB,EAAE;IACzC95C,IAAI,CAACwN,KAAK,GAAG,IAAI,CAACokB,GAAG,CAAA,EAAM,CAAC,GAAG,IAAI,CAACooB,sBAAsB,CAAE,CAAA,GAAG,IAAI;IACnE,OAAO,IAAI,CAAC5iC,UAAU,CAACpX,IAAI,EAAE,cAAc,CAAC;EAC9C;EAIAu6C,wBAAwBA,CACtBviC,QAAkB,EAC0B;IAC5C,MAAMhY,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAC3Bxf,QACF,CAAC;IACD,IAAI,IAAI,CAAC4Z,GAAG,CAAA,GAAa,CAAC,EAAE;MAC1B,OAAO,IAAI,CAACxa,UAAU,CAACpX,IAAI,EAAE,oBAAoB,CAAC;IACpD;IACAA,IAAI,CAACiG,IAAI,GAAG,IAAI,CAAC8zC,mBAAmB,EAAE;IACtC,OAAO,IAAI,CAACzS,+BAA+B,CACzCtnC,IACF,CAAC;EACH;EAEAsnC,+BAA+BA,CAC7BtnC,IAAiC,EACZ;IACrB,MAAMwZ,UAAqD,GAAG,EAAE;IAChE,OAAO,CAAC,IAAI,CAACwY,KAAK,CAAS,EAAA,CAAC,IAAI,CAAC,IAAI,CAACA,KAAK,CAAA,GAAa,CAAC,EAAE;MACzDxY,UAAU,CAAC2D,IAAI,CAAC,IAAI,CAACm9B,iBAAiB,CAAE,CAAA,CAAC;IAC3C;IACAt6C,IAAI,CAACwZ,UAAU,GAAGA,UAAU;IAC5BxZ,IAAI,CAACw6C,WAAW,GAAG,IAAI,CAAC5oB,GAAG,GAAS,CAAC;IACrC,IAAI,CAACL,MAAM,CAAA,GAAa,CAAC;IACzB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAIAy6C,wBAAwBA,CACtBziC,QAAkB,EAC0B;IAC5C,MAAMhY,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAC3Bxf,QACF,CAAC;IACD,IAAI,IAAI,CAAC4Z,GAAG,CAAA,GAAa,CAAC,EAAE;MAC1B,OAAO,IAAI,CAACxa,UAAU,CAACpX,IAAI,EAAE,oBAAoB,CAAC;IACpD;IACAA,IAAI,CAACiG,IAAI,GAAG,IAAI,CAAC8zC,mBAAmB,EAAE;IACtC,IAAI,CAACxoB,MAAM,CAAA,GAAa,CAAC;IACzB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAKA06C,iBAAiBA,CAAC1iC,QAAkB,EAAgC;IAClE,MAAMhY,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAA+Bxf,QAAQ,CAAC;IACrE,MAAM2iC,QAAQ,GAAG,EAAE;IACnB,MAAMC,cAAc,GAAG,IAAI,CAACL,wBAAwB,CAACviC,QAAQ,CAAC;IAC9D,IAAI6iC,cAAc,GAAG,IAAI;IAEzB,IAAI,CAACD,cAAc,CAACJ,WAAW,EAAE;MAC/BM,QAAQ,EAAE,SAAS;QACjB,QAAQ,IAAI,CAACjhC,KAAK,CAAC5Z,IAAI;UACrB,KAAA,GAAA;YACE+X,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;YAC9B,IAAI,CAACwR,IAAI,CAAA,CAAE;YACX,IAAI,IAAI,CAACoI,GAAG,CAAA,EAAS,CAAC,EAAE;cACtBipB,cAAc,GAAG,IAAI,CAACJ,wBAAwB,CAACziC,QAAQ,CAAC;cACxD,MAAM8iC,QAAQ;YAChB;YACAH,QAAQ,CAACx9B,IAAI,CAAC,IAAI,CAACu9B,iBAAiB,CAAC1iC,QAAQ,CAAC,CAAC;YAC/C;UAEF,KAAA,GAAA;YACE2iC,QAAQ,CAACx9B,IAAI,CAAC,IAAI,CAAChK,YAAY,CAAC,IAAI,CAAC0G,KAAK,CAACrM,KAAK,EAAE,SAAS,CAAC,CAAC;YAC7D;UAEF,KAAA,CAAA;YAAgB;cACd,MAAMxN,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAExB;cACH,IAAI,CAACmjC,UAAU,CAACryB,KAAE,CAACxM,KAAK,CAAC;cACzB,IAAI,CAACoO,IAAI,CAAA,CAAE;cACX,IAAI,IAAI,CAACwI,KAAK,CAAA,EAAY,CAAC,EAAE;gBAC3B2oB,QAAQ,CAACx9B,IAAI,CAAC,IAAI,CAACi9B,mBAAmB,CAACp6C,IAAI,CAAC,CAAC;cAC/C,CAAC,MAAM;gBACL26C,QAAQ,CAACx9B,IAAI,CACX,IAAI,CAAC+8B,2BAA2B,CAACl6C,IAAI,EAAE4nB,KAAE,CAACrM,MAAM,CAClD,CAAC;cACH;cAEA;YACF;UAEA;YACE,IAAI,CAACvW,UAAU,CAAA,CAAE;QACrB;MACF;MAEA,IACEszC,UAAU,CAACsC,cAAc,CAAC,IAC1B,CAACtC,UAAU,CAACuC,cAAc,CAAC,IAC3BA,cAAc,KAAK,IAAI,EACvB;QACA,IAAI,CAAC7hC,KAAK,CAAC4+B,SAAS,CAACI,yBAAyB,EAAE6C,cAAc,CAAC;MACjE,CAAC,MAAM,IAAI,CAACvC,UAAU,CAACsC,cAAc,CAAC,IAAItC,UAAU,CAACuC,cAAc,CAAC,EAAE;QACpE,IAAI,CAAC7hC,KAAK,CAAC4+B,SAAS,CAACE,wBAAwB,EAAE+C,cAAc,EAAE;UAC7D9C,cAAc,EAAEQ,mBAAmB,CAACqC,cAAc,CAAC30C,IAAI;QACzD,CAAC,CAAC;MACJ,CAAC,MAAM,IAAI,CAACqyC,UAAU,CAACsC,cAAc,CAAC,IAAI,CAACtC,UAAU,CAACuC,cAAc,CAAC,EAAE;QACrE,IACEtC,mBAAmB,CAACsC,cAAc,CAAC50C,IAAI,CAAC,KACxCsyC,mBAAmB,CAACqC,cAAc,CAAC30C,IAAI,CAAC,EACxC;UACA,IAAI,CAAC+S,KAAK,CAAC4+B,SAAS,CAACE,wBAAwB,EAAE+C,cAAc,EAAE;YAC7D9C,cAAc,EAAEQ,mBAAmB,CAACqC,cAAc,CAAC30C,IAAI;UACzD,CAAC,CAAC;QACJ;MACF;IACF;IAEA,IAAIqyC,UAAU,CAACsC,cAAc,CAAC,EAAE;MAC9B56C,IAAI,CAAC+6C,eAAe,GAAGH,cAAc;MACrC56C,IAAI,CAACg7C,eAAe,GAAGH,cAAc;IACvC,CAAC,MAAM;MACL76C,IAAI,CAAC46C,cAAc,GAAGA,cAAc;MACpC56C,IAAI,CAAC66C,cAAc,GAAGA,cAAc;IACtC;IACA76C,IAAI,CAAC26C,QAAQ,GAAGA,QAAQ;IACxB,IAAI,IAAI,CAAC3oB,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB,MAAM,IAAI,CAAChZ,KAAK,CACd4+B,SAAS,CAACS,4BAA4B,EACtC,IAAI,CAACx+B,KAAK,CAAC7B,QACb,CAAC;IACH;IAEA,OAAOsgC,UAAU,CAACsC,cAAc,CAAC,GAC7B,IAAI,CAACxjC,UAAU,CAACpX,IAAI,EAAE,aAAa,CAAC,GACpC,IAAI,CAACoX,UAAU,CAACpX,IAAI,EAAE,YAAY,CAAC;EACzC;EAIAi7C,eAAeA,CAAAA,EAAiC;IAC9C,MAAMjjC,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IACpC,IAAI,CAACwR,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACkxB,iBAAiB,CAAC1iC,QAAQ,CAAC;EACzC;EAEAiiC,UAAUA,CAACiB,UAAsB,EAAE;IACjC,MAAM;MAAExzB;KAAS,GAAG,IAAI,CAAC7N,KAAK;IAC9B6N,OAAO,CAACA,OAAO,CAACzN,MAAM,GAAG,CAAC,CAAC,GAAGihC,UAAU;EAC1C;EAMAxnB,aAAaA,CAACxb,mBAA6C,EAAgB;IACzE,IAAI,IAAI,CAAC8Z,KAAK,CAAA,GAAe,CAAC,EAAE;MAC9B,OAAO,IAAI,CAACipB,eAAe,EAAE;IAC9B,CAAA,MAAM,IACL,IAAI,CAACjpB,KAAK,CAAM,EAAA,CAAC,IACjB,IAAI,CAACwM,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,CAAC,KAAA,EAA8B,EACnE;MAGA,IAAI,CAACusC,YAAY,CAAA,GAAe,CAAC;MACjC,OAAO,IAAI,CAACF,eAAe,EAAE;IAC/B,CAAC,MAAM;MACL,OAAO,KAAK,CAACvnB,aAAa,CAACxb,mBAAmB,CAAC;IACjD;EACF;EAEAkjC,SAASA,CAAAA,EAAG;IACV,MAAM7kB,UAAU,GAAG,IAAI,CAACA,UAAU,EAAE;IACpC,IAAI,CAACA,UAAU,CAACrb,aAAa,EAAE,KAAK,CAACkgC,SAAS,CAAA,CAAE;EAClD;EAEA7c,gBAAgBA,CAACpgC,IAAY,EAAQ;IACnC,MAAMupB,OAAO,GAAG,IAAI,CAAC6O,UAAU,EAAE;IAEjC,IAAI7O,OAAO,KAAKE,KAAE,CAACrM,MAAM,EAAE;MACzB,IAAI,CAACm9B,YAAY,CAAA,CAAE;MACnB;IACF;IAEA,IAAIhxB,OAAO,KAAKE,KAAE,CAACvM,MAAM,IAAIqM,OAAO,KAAKE,KAAE,CAACtM,MAAM,EAAE;MAClD,IAAI+M,iBAAiB,CAAClqB,IAAI,CAAC,EAAE;QAC3B,IAAI,CAACy7C,WAAW,CAAA,CAAE;QAClB;MACF;MAEA,IAAIz7C,IAAI,OAA0B,EAAE;QAClC,EAAE,IAAI,CAAC0b,KAAK,CAACjL,GAAG;QAChB,IAAI,CAACiiB,WAAW,CAAA,GAAa,CAAC;QAC9B;MACF;MAEA,IACE,CAAC1yB,IAAI,KAA4B,EAAA,IAAIA,IAAI,KAAA,EAAyB,KAClEupB,OAAO,KAAKE,KAAE,CAACvM,MAAM,EACrB;QACA,IAAI,CAAC69B,aAAa,CAAC/6C,IAAI,CAAC;QACxB;MACF;IACF;IAEA,IACEA,IAAI,KAAuB,EAAA,IAC3B,IAAI,CAAC0b,KAAK,CAAC++B,kBAAkB,IAC7B,IAAI,CAACpa,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC,KAAA,EAA8B,EACvE;MACA,EAAE,IAAI,CAACiL,KAAK,CAACjL,GAAG;MAChB,IAAI,CAACiiB,WAAW,CAAA,GAAe,CAAC;MAChC;IACF;IAEA,KAAK,CAAC0N,gBAAgB,CAACpgC,IAAI,CAAC;EAC9B;EAEA+d,aAAaA,CAACm/B,QAAmB,EAAQ;IACvC,MAAM;MAAE3zB,OAAO;MAAEznB;KAAM,GAAG,IAAI,CAAC4Z,KAAK;IACpC,IAAI5Z,IAAI,KAAA,EAAa,IAAIo7C,QAAQ,QAAmB,EAAE;MAGpD3zB,OAAO,CAAC4zB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE1zB,KAAE,CAACtM,MAAM,CAAC;MAChC,IAAI,CAACzB,KAAK,CAAC++B,kBAAkB,GAAG,KAAK;IACvC,CAAC,MAAM,IAAI34C,IAAI,KAAA,GAAmB,EAAE;MAElCynB,OAAO,CAACvK,IAAI,CAACyK,KAAE,CAACvM,MAAM,CAAC;IACzB,CAAC,MAAM,IAAIpb,IAAI,KAAA,GAAiB,EAAE;MAChC,MAAMu4B,GAAG,GAAG9Q,OAAO,CAACA,OAAO,CAACzN,MAAM,GAAG,CAAC,CAAC;MACvC,IAAKue,GAAG,KAAK5Q,KAAE,CAACvM,MAAM,IAAIggC,QAAQ,KAAa,EAAA,IAAK7iB,GAAG,KAAK5Q,KAAE,CAACtM,MAAM,EAAE;QACrEoM,OAAO,CAACC,GAAG,CAAA,CAAE;QACb,IAAI,CAAC9N,KAAK,CAAC++B,kBAAkB,GAC3BlxB,OAAO,CAACA,OAAO,CAACzN,MAAM,GAAG,CAAC,CAAC,KAAK2N,KAAE,CAACrM,MAAM;MAC7C,CAAC,MAAM;QACL,IAAI,CAAC0+B,UAAU,CAACryB,KAAE,CAACrM,MAAM,CAAC;QAC1B,IAAI,CAAC1B,KAAK,CAAC++B,kBAAkB,GAAG,IAAI;MACtC;IACF,CAAC,MAAM;MACL,IAAI,CAAC/+B,KAAK,CAAC++B,kBAAkB,GAAGlyB,0BAA0B,CAACzmB,IAAI,CAAC;IAClE;EACF;AACF,CAAC;AC5nBH,MAAMs7C,eAAe,SAAS3xB,KAAK,CAAC;EAAAtsB,WAAAA,CAAA,GAAAia,IAAA,EAAA;IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA;IAAA,IAAA,CAClCikC,OAAO,GAAG,IAAIp/B,GAAG,EAAsB;EAAA;AACzC;AAKe,MAAMq/B,sBAAsB,SAAS1xB,YAAY,CAAkB;EAAAzsB,WAAAA,CAAA,GAAAia,IAAA,EAAA;IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA;IAAA,IAChFmkC,CAAAA,YAAY,GAAkB,EAAE;EAAA;EAEhCxwB,WAAWA,CAAC3Y,KAAgB,EAAmB;IAC7C,IAAI,CAACmpC,YAAY,CAACv+B,IAAI,CAAC,IAAI7Q,GAAG,CAAE,CAAA,CAAC;IAEjC,OAAO,IAAIivC,eAAe,CAAChpC,KAAK,CAAC;EACnC;EAEA4Y,KAAKA,CAAC5Y,KAAgB,EAAQ;IAC5B,IAAIA,KAAK,SAAwB,EAAE;MACjC,IAAI,CAACmpC,YAAY,CAACv+B,IAAI,CAAC,IAAI7Q,GAAG,CAAE,CAAA,CAAC;IACnC;IAEA,KAAK,CAAC6e,KAAK,CAAC5Y,KAAK,CAAC;EACpB;EAEA6Y,IAAIA,CAAAA,EAAG;IACL,MAAM7Y,KAAK,GAAG,KAAK,CAAC6Y,IAAI,EAAE;IAE1B,IAAI7Y,KAAK,SAAwB,EAAE;MACjC,IAAI,CAACmpC,YAAY,CAAC/zB,GAAG,EAAE;IACzB;IAEA,OAAOpV,KAAK;EACd;EAEAopC,SAASA,CAAC11C,IAAY,EAAE21C,WAAqB,EAAE;IAC7C,MAAMC,GAAG,GAAG,IAAI,CAACH,YAAY,CAACzhC,MAAM;IACpC,IAAI,IAAI,CAACyhC,YAAY,CAACG,GAAG,GAAG,CAAC,CAAC,CAAC3yB,GAAG,CAACjjB,IAAI,CAAC,EAAE;MACxC,OAAO,IAAI;IACb;IACA,IAAI,CAAC21C,WAAW,IAAIC,GAAG,GAAG,CAAC,EAAE;MAC3B,KAAK,IAAIzzB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyzB,GAAG,GAAG,CAAC,EAAEzzB,CAAC,EAAE,EAAE;QAChC,IAAI,IAAI,CAACszB,YAAY,CAACtzB,CAAC,CAAC,CAACc,GAAG,CAACjjB,IAAI,CAAC,EAAE,OAAO,IAAI;MACjD;IACF;IACA,OAAO,KAAK;EACd;EAEAqlB,WAAWA,CAACrlB,IAAY,EAAEslB,WAAwB,EAAE/c,GAAa,EAAE;IACjE,IAAI+c,WAAW,OAA6B,EAAE;MAC5C,IAAI,IAAI,CAACowB,SAAS,CAAC11C,IAAI,EAAE,IAAI,CAAC,EAAE;QAC9B,IAAI,CAAC+jB,MAAM,CAAChR,KAAK,CAACjJ,MAAM,CAAChF,gBAAgB,EAAEyD,GAAG,EAAE;UAC9CzQ,cAAc,EAAEkI;QAClB,CAAC,CAAC;MACJ;MACA,IAAI,CAACy1C,YAAY,CAAC,IAAI,CAACA,YAAY,CAACzhC,MAAM,GAAG,CAAC,CAAC,CAACgS,GAAG,CAAChmB,IAAI,CAAC;MACzD;IACF;IAEA,MAAMolB,KAAK,GAAG,IAAI,CAACjB,YAAY,EAAE;IACjC,IAAInqB,IAAI,GAAGorB,KAAK,CAACmwB,OAAO,CAACxsC,GAAG,CAAC/I,IAAI,CAAC,IAAI,CAAC;IAEvC,IAAIslB,WAAW,OAAkC,EAAE;MACjD,IAAI,CAACE,kBAAkB,CAACJ,KAAK,EAAEplB,IAAI,CAAC;MACpColB,KAAK,CAACmwB,OAAO,CAACvsC,GAAG,CAAChJ,IAAI,EAAEhG,IAAI,GAAA,EAAgC,CAAC;MAC7D;IACF;IAEA,KAAK,CAACqrB,WAAW,CAACrlB,IAAI,EAAEslB,WAAW,EAAE/c,GAAG,CAAC;IAEzC,IAAI+c,WAAW,IAAwB,EAAE;MACvC,IAAI,EAAEA,WAAW,IAAyB,CAAC,EAAE;QAE3C,IAAI,CAACC,yBAAyB,CAACH,KAAK,EAAEplB,IAAI,EAAEslB,WAAW,EAAE/c,GAAG,CAAC;QAC7D,IAAI,CAACid,kBAAkB,CAACJ,KAAK,EAAEplB,IAAI,CAAC;MACtC;MACAhG,IAAI,GAAGA,IAAI,GAAmB,CAAA;IAChC;IACA,IAAIsrB,WAAW,MAA2B,EAAE;MAC1CtrB,IAAI,GAAGA,IAAI,GAAmB,CAAA;IAChC;IACA,IAAIsrB,WAAW,MAAiC,EAAE;MAChDtrB,IAAI,GAAGA,IAAI,GAAwB,CAAA;IACrC;IACA,IAAIsrB,WAAW,MAAyB,EAAE;MACxCtrB,IAAI,GAAGA,IAAI,GAAqB,CAAA;IAClC;IACA,IAAIA,IAAI,EAAEorB,KAAK,CAACmwB,OAAO,CAACvsC,GAAG,CAAChJ,IAAI,EAAEhG,IAAI,CAAC;EACzC;EAEA0rB,mBAAmBA,CACjBN,KAAsB,EACtBplB,IAAY,EACZslB,WAAwB,EACf;IACT,MAAMtrB,IAAI,GAAGorB,KAAK,CAACmwB,OAAO,CAACxsC,GAAG,CAAC/I,IAAI,CAAE;IACrC,IAAI,CAAChG,IAAI,GAAmB,CAAA,IAAI,CAAC,EAAE;MACjC,IAAIsrB,WAAW,MAA2B,EAAE;QAG1C,MAAMuwB,OAAO,GAAG,CAAC,EAAEvwB,WAAW,MAAiC,CAAC;QAChE,MAAMwwB,QAAQ,GAAG,CAAC97C,IAAI,GAAA,CAAwB,IAAI,CAAC;QACnD,OAAO67C,OAAO,KAAKC,QAAQ;MAC7B;MACA,OAAO,IAAI;IACb;IACA,IACExwB,WAAW,MAAyB,IACpC,CAACtrB,IAAI,GAAA,CAAqB,IAAI,CAAC,EAC/B;MACA,IAAIorB,KAAK,CAACxB,KAAK,CAAC7a,GAAG,CAAC/I,IAAI,CAAC,IAAoB,EAAE;QAE7C,OAAO,CAAC,EAAEslB,WAAW,IAAyB,CAAC;MACjD,CAAC,MAAM;QAEL,OAAO,KAAK;MACd;IACF;IACA,IAAIA,WAAW,IAAwB,IAAI,CAACtrB,IAAI,GAAA,CAAmB,IAAI,CAAC,EAAE;MACxE,OAAO,IAAI;IACb;IAEA,OAAO,KAAK,CAAC0rB,mBAAmB,CAACN,KAAK,EAAEplB,IAAI,EAAEslB,WAAW,CAAC;EAC5D;EAEAK,gBAAgBA,CAACzV,EAAgB,EAAE;IACjC,MAAM;MAAElQ;IAAM,CAAA,GAAGkQ,EAAE;IAEnB,IAAI,IAAI,CAACwlC,SAAS,CAAC11C,IAAI,CAAC,EAAE;IAE1B,MAAM41C,GAAG,GAAG,IAAI,CAAC5xB,UAAU,CAAChQ,MAAM;IAClC,KAAK,IAAImO,CAAC,GAAGyzB,GAAG,GAAG,CAAC,EAAEzzB,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MACjC,MAAMiD,KAAK,GAAG,IAAI,CAACpB,UAAU,CAAC7B,CAAC,CAAC;MAChC,MAAMnoB,IAAI,GAAGorB,KAAK,CAACmwB,OAAO,CAACxsC,GAAG,CAAC/I,IAAI,CAAE;MACrC,IACE,CAAChG,IAAI,GAAA,CAAmB,IAAI,CAAC,IAC7B,CAACA,IAAI,GAAA,EAAgC,IAAI,CAAC,EAC1C;QACA;MACF;IACF;IAEA,KAAK,CAAC2rB,gBAAgB,CAACzV,EAAE,CAAC;EAC5B;AACF;ACzHe,MAAM6lC,0BAA0B,CAAC;EAAA1+C,WAAAA,CAAA,EAAA;IAAA,IAC9C2+C,CAAAA,MAAM,GAAgB,EAAE;EAAA;EACxB9wB,KAAKA,CAAC5Y,KAAgB,EAAE;IACtB,IAAI,CAAC0pC,MAAM,CAAC9+B,IAAI,CAAC5K,KAAK,CAAC;EACzB;EAEA6Y,IAAIA,CAAAA,EAAG;IACL,IAAI,CAAC6wB,MAAM,CAACt0B,GAAG,EAAE;EACnB;EAEAu0B,YAAYA,CAAAA,EAAc;IACxB,OAAO,IAAI,CAACD,MAAM,CAAC,IAAI,CAACA,MAAM,CAAChiC,MAAM,GAAG,CAAC,CAAC;EAC5C;EAEA,IAAIkiC,QAAQA,CAAAA,EAAY;IACtB,OAAO,CAAC,IAAI,CAACD,YAAY,CAAA,CAAE,IAAwB,IAAI,CAAC;EAC1D;EAEA,IAAIE,QAAQA,CAAAA,EAAY;IACtB,OAAO,CAAC,IAAI,CAACF,YAAY,CAAA,CAAE,IAAwB,IAAI,CAAC;EAC1D;EAEA,IAAIG,SAASA,CAAAA,EAAY;IACvB,OAAO,CAAC,IAAI,CAACH,YAAY,CAAA,CAAE,IAAyB,IAAI,CAAC;EAC3D;EAEA,IAAII,KAAKA,CAAAA,EAAY;IACnB,OAAO,CAAC,IAAI,CAACJ,YAAY,CAAA,CAAE,IAAqB,IAAI,CAAC;EACvD;AACF;AAEO,SAASK,aAAaA,CAC3B1nC,OAAgB,EAChB4B,WAAoB,EACT;EACX,OACE,CAAC5B,OAAO,OAA2B,CAAC,KACnC4B,WAAW,OAA2B,CAAC,CAAC;AAE7C;ACpEe,MAAM+lC,UAAU,CAAC;EAAAl/C,WAAAA,CAAA,EAAA;IAAA,IAe9Bm/C,CAAAA,iBAAiB,GAAY,KAAK;IAAA,IAClCC,CAAAA,2BAA2B,GAAY,KAAK;EAAA;EAW5CjZ,iBAAiBA,CAACkZ,SAAiB,EAAE;IACnC,OAAOA,SAAS,GAAG,IAAI,CAACtsC,UAAU;EACpC;EAEA0sB,iBAAiBA,CAAC6f,SAAiB,EAAE;IACnC,OAAOA,SAAS,GAAG,IAAI,CAACvsC,UAAU;EACpC;EAMAwH,SAASA,CAACglC,YAA0B,EAAW;IAC7C,IAAI,OAAOA,YAAY,KAAK,QAAQ,EAAE;MACpC,OAAO,IAAI,CAAC9rC,OAAO,CAACmY,GAAG,CAAC2zB,YAAY,CAAC;IACvC,CAAC,MAAM;MACL,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGF,YAAY;MAChD,IAAI,CAAC,IAAI,CAAChlC,SAAS,CAACilC,UAAU,CAAC,EAAE;QAC/B,OAAO,KAAK;MACd;MACA,MAAME,aAAa,GAAG,IAAI,CAACjsC,OAAO,CAAC/B,GAAG,CAAC8tC,UAAU,CAAC;MAClD,KAAK,MAAMn2C,GAAG,IAAI4F,MAAM,CAACkD,IAAI,CAC3BstC,aACF,CAAC,EAAoC;QACnC,IAAI,CAAAC,aAAa,IAAbA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAa,CAAGr2C,GAAG,CAAC,MAAKo2C,aAAa,CAACp2C,GAAG,CAAC,EAAE;UAC/C,OAAO,KAAK;QACd;MACF;MACA,OAAO,IAAI;IACb;EACF;EAEAqP,eAAeA,CAGbinC,MAAkB,EAAEh3C,IAAgB,EAAE;IAAA,IAAAi3C,iBAAA;IACtC,OAAA,CAAAA,iBAAA,GAAQ,IAAI,CAACnsC,OAAO,CAAC/B,GAAG,CAACiuC,MAAM,CAAC,KAAA,IAAA,GAAA,KAAA,CAAA,GAAzBC,iBAAA,CACLj3C,IAAI,CACL;EACH;AACF;ACvCA,SAASk3C,mBAAmBA,CAACn9C,IAAkB,EAAEo9C,QAAmB,EAAE;EACpE,IAAIp9C,IAAI,CAACq9C,gBAAgB,KAAKjtC,SAAS,EAAE;IACvCpQ,IAAI,CAACq9C,gBAAgB,GAAGD,QAAQ;EAClC,CAAC,MAAM;IACLp9C,IAAI,CAACq9C,gBAAgB,CAACC,OAAO,CAAC,GAAGF,QAAQ,CAAC;EAC5C;AACF;AAOA,SAASG,kBAAkBA,CAACv9C,IAAkB,EAAEo9C,QAAmB,EAAE;EACnE,IAAIp9C,IAAI,CAACw9C,eAAe,KAAKptC,SAAS,EAAE;IACtCpQ,IAAI,CAACw9C,eAAe,GAAGJ,QAAQ;EACjC,CAAC,MAAM;IACLp9C,IAAI,CAACw9C,eAAe,CAACF,OAAO,CAAC,GAAGF,QAAQ,CAAC;EAC3C;AACF;AAOO,SAASK,gBAAgBA,CAACz9C,IAAkB,EAAEo9C,QAAmB,EAAE;EACxE,IAAIp9C,IAAI,CAAC09C,aAAa,KAAKttC,SAAS,EAAE;IACpCpQ,IAAI,CAAC09C,aAAa,GAAGN,QAAQ;EAC/B,CAAC,MAAM;IACLp9C,IAAI,CAAC09C,aAAa,CAACJ,OAAO,CAAC,GAAGF,QAAQ,CAAC;EACzC;AACF;AAOA,SAASO,mBAAmBA,CAC1B39C,IAAkB,EAClBm/B,QAAyB,EACzBye,SAA4B,EAC5B;EACA,IAAIC,WAAW,GAAG,IAAI;EACtB,IAAIz1B,CAAC,GAAG+W,QAAQ,CAACllB,MAAM;EACvB,OAAO4jC,WAAW,KAAK,IAAI,IAAIz1B,CAAC,GAAG,CAAC,EAAE;IACpCy1B,WAAW,GAAG1e,QAAQ,CAAC,EAAE/W,CAAC,CAAC;EAC7B;EACA,IAAIy1B,WAAW,KAAK,IAAI,IAAIA,WAAW,CAACjgD,KAAK,GAAGggD,SAAS,CAAChgD,KAAK,EAAE;IAC/D6/C,gBAAgB,CAACz9C,IAAI,EAAE49C,SAAS,CAACR,QAAQ,CAAC;EAC5C,CAAC,MAAM;IACLD,mBAAmB,CAACU,WAAW,EAAED,SAAS,CAACR,QAAQ,CAAC;EACtD;AACF;AAEe,MAAMU,cAAc,SAAStB,UAAU,CAAC;EACrDzrB,UAAUA,CAACC,OAAgB,EAAQ;IACjC,IAAI,IAAI,CAAClzB,QAAQ,EAAEkzB,OAAO,CAACxiB,GAAG,CAAC1Q,QAAQ,GAAG,IAAI,CAACA,QAAQ;IACvD,MAAM;MAAEigD;KAAa,GAAG,IAAI,CAAClkC,KAAK;IAClC,IAAI,IAAI,CAACujC,QAAQ,CAACnjC,MAAM,KAAK8jC,WAAW,EAAE;MACxC,IAAI,CAACX,QAAQ,CAACnjC,MAAM,GAAG8jC,WAAW;IACpC;IACA,IAAI,CAACX,QAAQ,CAACjgC,IAAI,CAAC6T,OAAO,CAAC;IAC3B,IAAI,CAACnX,KAAK,CAACkkC,WAAW,EAAE;EAC1B;EAMAC,cAAcA,CAACh+C,IAAU,EAAQ;IAC/B,MAAM;MAAEi+C;KAAc,GAAG,IAAI,CAACpkC,KAAK;IACnC,MAAMqkC,kBAAkB,GAAGD,YAAY,CAAChkC,MAAM;IAC9C,IAAIikC,kBAAkB,KAAK,CAAC,EAAE;IAC9B,IAAI91B,CAAC,GAAG81B,kBAAkB,GAAG,CAAC;IAC9B,MAAMC,aAAa,GAAGF,YAAY,CAAC71B,CAAC,CAAC;IAErC,IAAI+1B,aAAa,CAACvgD,KAAK,KAAKoC,IAAI,CAACnC,GAAG,EAAE;MACpCsgD,aAAa,CAACC,WAAW,GAAGp+C,IAAI;MAChCooB,CAAC,EAAE;IACL;IAEA,MAAM;MAAExqB,KAAK,EAAE+5B;IAAW,CAAA,GAAG33B,IAAI;IAEjC,OAAOooB,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MAClB,MAAMw1B,SAAS,GAAGK,YAAY,CAAC71B,CAAC,CAAC;MACjC,MAAMi2B,UAAU,GAAGT,SAAS,CAAC//C,GAAG;MAChC,IAAIwgD,UAAU,GAAG1mB,SAAS,EAAE;QAO1BimB,SAAS,CAACU,cAAc,GAAGt+C,IAAI;QAC/B,IAAI,CAACu+C,eAAe,CAACX,SAAS,CAAC;QAC/BK,YAAY,CAAC3C,MAAM,CAAClzB,CAAC,EAAE,CAAC,CAAC;MAC3B,CAAC,MAAM;QACL,IAAIi2B,UAAU,KAAK1mB,SAAS,EAAE;UAC5BimB,SAAS,CAACY,YAAY,GAAGx+C,IAAI;QAC/B;QAEA;MACF;IACF;EACF;EAMAu+C,eAAeA,CAACX,SAA4B,EAAE;IAAA,IAAAa,aAAA;IAC5C,MAAM;MAAErB;IAAU,CAAA,GAAGQ,SAAS;IAC9B,IAAIA,SAAS,CAACQ,WAAW,KAAK,IAAI,IAAIR,SAAS,CAACY,YAAY,KAAK,IAAI,EAAE;MACrE,IAAIZ,SAAS,CAACQ,WAAW,KAAK,IAAI,EAAE;QAClCjB,mBAAmB,CAACS,SAAS,CAACQ,WAAW,EAAEhB,QAAQ,CAAC;MACtD;MACA,IAAIQ,SAAS,CAACY,YAAY,KAAK,IAAI,EAAE;QACnCjB,kBAAkB,CAACK,SAAS,CAACY,YAAY,EAAEpB,QAAQ,CAAC;MACtD;IACF,CAAC,MAAM;MAEL,MAAMp9C,IAAI,GAAG49C,SAAS,CAACU,cAAe;MACtC,MAAMI,YAAY,GAAGd,SAAS,CAAChgD,KAAK;MACpC,IACE,IAAI,CAAC4gC,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC1B,iBAAiB,CAAC2hB,YAAY,CAAC,GAAG,CAAC,CAAC,OAChD,EACf;QAIA,QAAQ1+C,IAAI,CAACC,IAAI;UACf,KAAK,kBAAkB;UACvB,KAAK,eAAe;YAClB09C,mBAAmB,CAAC39C,IAAI,EAAEA,IAAI,CAAC63B,UAAU,EAAE+lB,SAAS,CAAC;YACrD;UACF,KAAK,gBAAgB;UACrB,KAAK,wBAAwB;YAC3BD,mBAAmB,CAAC39C,IAAI,EAAEA,IAAI,CAACuZ,SAAS,EAAEqkC,SAAS,CAAC;YACpD;UACF,KAAK,kBAAkB;YACrBD,mBAAmB,CACjB39C,IAAI,EACJ,CAACA,IAAI,CAACsZ,MAAM,GAAAmlC,aAAA,GAAEz+C,IAAI,CAAC0R,OAAO,YAAA+sC,aAAA,GAAI,IAAI,CAAC,EACnCb,SACF,CAAC;YACD;UACF,KAAK,qBAAqB;UAC1B,KAAK,oBAAoB;UACzB,KAAK,yBAAyB;UAC9B,KAAK,cAAc;UACnB,KAAK,aAAa;UAClB,KAAK,oBAAoB;YACvBD,mBAAmB,CAAC39C,IAAI,EAAEA,IAAI,CAACkV,MAAM,EAAE0oC,SAAS,CAAC;YACjD;UACF,KAAK,iBAAiB;UACtB,KAAK,cAAc;YACjBD,mBAAmB,CAAC39C,IAAI,EAAEA,IAAI,CAACm/B,QAAQ,EAAEye,SAAS,CAAC;YACnD;UACF,KAAK,wBAAwB;UAC7B,KAAK,mBAAmB;YACtBD,mBAAmB,CAAC39C,IAAI,EAAEA,IAAI,CAACga,UAAU,EAAE4jC,SAAS,CAAC;YACrD;UACF,KAAK,mBAAmB;YAEpBD,mBAAmB,CAAC39C,IAAI,EAAEA,IAAI,CAAComC,OAAO,EAAGwX,SAAS,CAAC;YAIrD;UACF,KAAK,YAAY;YACfD,mBAAmB,CAAC39C,IAAI,EAAEA,IAAI,CAAComC,OAAO,EAAEwX,SAAS,CAAC;YAClD;UACF;YAAS;cAEL,IAAI59C,IAAI,CAACC,IAAI,KAAK,kBAAkB,EAAE;gBACpC09C,mBAAmB,CAAC39C,IAAI,EAAEA,IAAI,CAAC63B,UAAU,EAAE+lB,SAAS,CAAC;gBACrD;cACF;cACA,IAAI59C,IAAI,CAACC,IAAI,KAAK,iBAAiB,EAAE;gBACnC09C,mBAAmB,CAAC39C,IAAI,EAAEA,IAAI,CAACm/B,QAAQ,EAAEye,SAAS,CAAC;gBACnD;cACF;cAEFH,gBAAgB,CAACz9C,IAAI,EAAEo9C,QAAQ,CAAC;YAClC;QACF;MACF,CAAC,MAAM;QACLK,gBAAgB,CAACz9C,IAAI,EAAEo9C,QAAQ,CAAC;MAClC;IACF;EACF;EAQAuB,yBAAyBA,CAAAA,EAAG;IAC1B,MAAM;MAAEV;KAAc,GAAG,IAAI,CAACpkC,KAAK;IACnC,KAAK,IAAIuO,CAAC,GAAG61B,YAAY,CAAChkC,MAAM,GAAG,CAAC,EAAEmO,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MACjD,IAAI,CAACm2B,eAAe,CAACN,YAAY,CAAC71B,CAAC,CAAC,CAAC;IACvC;IACA,IAAI,CAACvO,KAAK,CAACokC,YAAY,GAAG,EAAE;EAC9B;EAqBAW,iCAAiCA,CAAC5+C,IAAU,EAAE;IAC5C,MAAM;MAAEi+C;KAAc,GAAG,IAAI,CAACpkC,KAAK;IACnC,MAAM;MAAEI;IAAQ,CAAA,GAAGgkC,YAAY;IAC/B,IAAIhkC,MAAM,KAAK,CAAC,EAAE;IAClB,MAAM2jC,SAAS,GAAGK,YAAY,CAAChkC,MAAM,GAAG,CAAC,CAAC;IAC1C,IAAI2jC,SAAS,CAACQ,WAAW,KAAKp+C,IAAI,EAAE;MAClC49C,SAAS,CAACQ,WAAW,GAAG,IAAI;IAC9B;EACF;EASAS,uBAAuBA,CAAC7+C,IAAU,EAAEpC,KAAa,EAAEC,GAAW,EAAE;IAC9D,MAAM;MAAEogD;KAAc,GAAG,IAAI,CAACpkC,KAAK;IACnC,MAAMqkC,kBAAkB,GAAGD,YAAY,CAAChkC,MAAM;IAC9C,IAAIikC,kBAAkB,KAAK,CAAC,EAAE;IAC9B,IAAI91B,CAAC,GAAG81B,kBAAkB,GAAG,CAAC;IAE9B,OAAO91B,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MAClB,MAAMw1B,SAAS,GAAGK,YAAY,CAAC71B,CAAC,CAAC;MACjC,MAAMi2B,UAAU,GAAGT,SAAS,CAAC//C,GAAG;MAChC,MAAM6gD,YAAY,GAAGd,SAAS,CAAChgD,KAAK;MAEpC,IAAI8gD,YAAY,KAAK7gD,GAAG,EAAE;QACxB+/C,SAAS,CAACQ,WAAW,GAAGp+C,IAAI;MAC9B,CAAC,MAAM,IAAIq+C,UAAU,KAAKzgD,KAAK,EAAE;QAC/BggD,SAAS,CAACY,YAAY,GAAGx+C,IAAI;MAC/B,CAAC,MAAM,IAAIq+C,UAAU,GAAGzgD,KAAK,EAAE;QAC7B;MACF;IACF;EACF;AACF;AClRe,MAAMkhD,KAAK,CAAC;EAAAxhD,WAAAA,CAAA,EAAA;IAAA,IAAA,CACZiV,KAAK,GAAA,IAAA;IAAA,IAAA,CAIlBlC,UAAU,GAAA,KAAA,CAAA;IAAA,IAAA,CACV2oC,OAAO,GAAA,KAAA,CAAA;IAAA,IAAA,CACPC,SAAS,GAAA,KAAA,CAAA;IAAA,IAAA,CAITjhC,QAAQ,GAAA,KAAA,CAAA;IAAA,IAAA,CACRvE,MAAM,GAAA,KAAA,CAAA;IAAA,IA0BNsrC,CAAAA,MAAM,GAAsB,EAAE;IAAA,IAG9BC,CAAAA,gBAAgB,GAAW,CAAC,CAAC;IAAA,IAM7BtjB,CAAAA,SAAS,GAAa,EAAE;IAAA,IAQxBS,CAAAA,yBAAyB,GAAa,EAAE;IAAA,IAAA,CAYxC8iB,YAAY,GAAsB;MAChCC,wBAAwB,EAAE,CAAC;MAC3BC,aAAa,EAAE;KAChB;IAAA,IAODC,CAAAA,MAAM,GAIA,EAAE;IAAA,IAERrB,CAAAA,WAAW,GAAG,CAAC;IAAA,IAEfE,CAAAA,YAAY,GAAwB,EAAE;IAAA,IAGtCrvC,CAAAA,GAAG,GAAW,CAAC;IAAA,IAAA,CAIf3O,IAAI,GAAA,GAAA;IAAA,IAGJuN,CAAAA,KAAK,GAAQ,IAAI;IAAA,IAGjB5P,CAAAA,KAAK,GAAW,CAAC;IAAA,IACjBC,CAAAA,GAAG,GAAW,CAAC;IAAA,IAIfmd,CAAAA,aAAa,GAAoB,IAAI;IAAA,IAErClB,CAAAA,eAAe,GAAoB,IAAI;IAAA,IAAA,CAIvC4N,OAAO,GAAiB,CAAC23B,KAAE,CAACjkC,KAAK,CAAC;IAAA,IAYlCkkC,CAAAA,6BAA6B,GAAoB,IAAI;IAAA,IAAA,CAYrDC,YAAY,GAAG,IAAInjC,GAAG,EAA2C;IAAA,IAGjEojC,CAAAA,YAAY,GAAW,CAAC;EAAA;EAAA,IArIV92B,MAAMA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CAFPnW,KAAK,GAAA,CAAA,IAAA,CAAA;EAAA;EAAA,IAEJmW,MAAMA,CAAA+2B,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CAFPltC,KAAK,IAAA,CAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,CAAA;EAAA;EAalBwzB,IAAIA,CAAC;IACH/0B,UAAU;IACVd,UAAU;IACVG,UAAU;IACVE,SAAS;IACTD;EACmB,CAAC,EAAQ;IAC5B,IAAI,CAACoY,MAAM,GACT1X,UAAU,KAAK,KAAK,GAChB,KAAK,GACLA,UAAU,KAAK,IAAI,GACjB,IAAI,GACJd,UAAU,KAAK,QAAQ;IAE/B,IAAI,CAACG,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAAC2oC,OAAO,GAAGzoC,SAAS;IACxB,IAAI,CAAC0oC,SAAS,GAAG,CAAC3oC,WAAW;IAC7B,IAAI,CAAC0H,QAAQ,GAAG,IAAI,CAACvE,MAAM,GAAG,IAAIpW,QAAQ,CACxCkT,SAAS,EACTD,WAAW,EACXD,UACF,CAAC;EACH;EAAC,IAsBagrB,sBAAsBA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CAzDvB9oB,KAAK,GAAA,CAAA,IAAA,CAAA;EAAA;EAAA,IAyDJ8oB,sBAAsBA,CAAAokB,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CAzDvBltC,KAAK,IAAA,CAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,CAAA;EAAA;EAAA,IA0DJ+e,MAAMA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CA1DP/e,KAAK,GAAA,CAAA,IAAA,CAAA;EAAA;EAAA,IA0DJ+e,MAAMA,CAAAmuB,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CA1DPltC,KAAK,IAAA,CAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,CAAA;EAAA;EAAA,IA2DJqkB,kBAAkBA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CA3DnBrkB,KAAK,GAAA,CAAA,IAAA,CAAA;EAAA;EAAA,IA2DJqkB,kBAAkBA,CAAA6oB,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CA3DnBltC,KAAK,IAAA,CAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,CAAA;EAAA;EAAA,IA4DJgyB,cAAcA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CA5DfhyB,KAAK,GAAA,EAAA,IAAA,CAAA;EAAA;EAAA,IA4DJgyB,cAAcA,CAAAkb,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CA5DfltC,KAAK,IAAA,EAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,EAAA;EAAA;EAAA,IA6DJmtC,gBAAgBA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CA7DjBntC,KAAK,GAAA,EAAA,IAAA,CAAA;EAAA;EAAA,IA6DJmtC,gBAAgBA,CAAAD,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CA7DjBltC,KAAK,IAAA,EAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,EAAA;EAAA;EAAA,IA8DJotC,eAAeA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CA9DhBptC,KAAK,GAAA,EAAA,IAAA,CAAA;EAAA;EAAA,IA8DJotC,eAAeA,CAAAF,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CA9DhBltC,KAAK,IAAA,EAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,EAAA;EAAA;EAAA,IA+DJqtC,iCAAiCA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CA/DlCrtC,KAAK,GAAA,GAAA,IAAA,CAAA;EAAA;EAAA,IA+DJqtC,iCAAiCA,CAAAH,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CA/DlCltC,KAAK,IAAA,GAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,GAAA;EAAA;EAAA,IAwEJstC,SAASA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CAxEVttC,KAAK,GAAA,GAAA,IAAA,CAAA;EAAA;EAAA,IAwEJstC,SAASA,CAAAJ,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CAxEVltC,KAAK,IAAA,GAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,GAAA;EAAA;EAAA,IAyEJutC,0BAA0BA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CAzE3BvtC,KAAK,GAAA,GAAA,IAAA,CAAA;EAAA;EAAA,IAyEJutC,0BAA0BA,CAAAL,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CAzE3BltC,KAAK,IAAA,GAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,GAAA;EAAA;EAAA,IA+GJqmC,kBAAkBA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CA/GnBrmC,KAAK,GAAA,IAAA,IAAA,CAAA;EAAA;EAAA,IA+GJqmC,kBAAkBA,CAAA6G,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CA/GnBltC,KAAK,IAAA,IAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,IAAA;EAAA;EAAA,IAoHJ0oB,WAAWA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CApHZ1oB,KAAK,GAAA,IAAA,IAAA,CAAA;EAAA;EAAA,IAoHJ0oB,WAAWA,CAAAwkB,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CApHZltC,KAAK,IAAA,IAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,IAAA;EAAA;EAAA,IA0HJwtC,gBAAgBA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CA1HjBxtC,KAAK,GAAA,IAAA,IAAA,CAAA;EAAA;EAAA,IA0HJwtC,gBAAgBA,CAAAN,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CA1HjBltC,KAAK,IAAA,IAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,IAAA;EAAA;EA8IlB+rB,WAAWA,CAAAA,EAAa;IACtB,OAAO,IAAIjhC,QAAQ,CACjB,IAAI,CAAC27C,OAAO,EACZ,IAAI,CAACpqC,GAAG,GAAG,IAAI,CAACqqC,SAAS,EACzB,IAAI,CAACrqC,GAAG,GAAG,IAAI,CAACyB,UAClB,CAAC;EACH;EAEAxB,KAAKA,CAAAA,EAAU;IACb,MAAMgL,KAAK,GAAG,IAAIilC,KAAK,EAAE;IACzBjlC,KAAK,CAACtH,KAAK,GAAG,IAAI,CAACA,KAAK;IACxBsH,KAAK,CAACxJ,UAAU,GAAG,IAAI,CAACA,UAAU;IAClCwJ,KAAK,CAACm/B,OAAO,GAAG,IAAI,CAACA,OAAO;IAC5Bn/B,KAAK,CAACo/B,SAAS,GAAG,IAAI,CAACA,SAAS;IAChCp/B,KAAK,CAAC7B,QAAQ,GAAG,IAAI,CAACA,QAAQ;IAC9B6B,KAAK,CAACpG,MAAM,GAAG,IAAI,CAACA,MAAM;IAC1BoG,KAAK,CAACklC,MAAM,GAAG,IAAI,CAACA,MAAM,CAAC3Z,KAAK,CAAA,CAAE;IAClCvrB,KAAK,CAACmlC,gBAAgB,GAAG,IAAI,CAACA,gBAAgB;IAC9CnlC,KAAK,CAAC6hB,SAAS,GAAG,IAAI,CAACA,SAAS,CAAC0J,KAAK,CAAA,CAAE;IACxCvrB,KAAK,CAACsiB,yBAAyB,GAAG,IAAI,CAACA,yBAAyB,CAACiJ,KAAK,CAAA,CAAE;IACxEvrB,KAAK,CAAColC,YAAY,GAAG,IAAI,CAACA,YAAY;IACtCplC,KAAK,CAACulC,MAAM,GAAG,IAAI,CAACA,MAAM,CAACha,KAAK,CAAA,CAAE;IAClCvrB,KAAK,CAACkkC,WAAW,GAAG,IAAI,CAACA,WAAW;IACpClkC,KAAK,CAACokC,YAAY,GAAG,IAAI,CAACA,YAAY,CAAC7Y,KAAK,CAAA,CAAE;IAC9CvrB,KAAK,CAACjL,GAAG,GAAG,IAAI,CAACA,GAAG;IACpBiL,KAAK,CAAC5Z,IAAI,GAAG,IAAI,CAACA,IAAI;IACtB4Z,KAAK,CAACrM,KAAK,GAAG,IAAI,CAACA,KAAK;IACxBqM,KAAK,CAACjc,KAAK,GAAG,IAAI,CAACA,KAAK;IACxBic,KAAK,CAAChc,GAAG,GAAG,IAAI,CAACA,GAAG;IACpBgc,KAAK,CAACmB,aAAa,GAAG,IAAI,CAACA,aAAa;IACxCnB,KAAK,CAACC,eAAe,GAAG,IAAI,CAACA,eAAe;IAC5CD,KAAK,CAAC6N,OAAO,GAAG,IAAI,CAACA,OAAO,CAAC0d,KAAK,CAAA,CAAE;IACpCvrB,KAAK,CAACylC,6BAA6B,GAAG,IAAI,CAACA,6BAA6B;IACxEzlC,KAAK,CAAC0lC,YAAY,GAAG,IAAI,CAACA,YAAY;IACtC1lC,KAAK,CAAC2lC,YAAY,GAAG,IAAI,CAACA,YAAY;IAEtC,OAAO3lC,KAAK;EACd;AACF;eCrNA,SAASmmC,OAAOA,CAAC7hD,IAAI,EAAE;EACrB,OAAOA,IAAI,IAAA,EAAU,IAAIA,IAAI,IAAU,EAAA;AACzC,CAAC;AAID,MAAM8hD,iCAAiC,GAAG;EACxCC,SAAS,EAAE,IAAI5zC,GAAG,CAAS,kCAS1B,CAAC;EACF6zC,GAAG,EAAE,IAAI7zC,GAAG,CAAS,CAKpB,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,CAAA;AACH,CAAC;AAED,MAAM8zC,gCAAgC,GAAG;EAEvCC,GAAG,EAAGxf,EAAU,IAAKA,EAAE,KAAqB,EAAA,IAAIA,EAAE,KAAqB,EAAA;EAGvEyf,GAAG,EAAGzf,EAAU,IAAKA,EAAE,IAAoB,EAAA,IAAIA,EAAE,IAAoB,EAAA;EAGrE0f,GAAG,EAAG1f,EAAU,IAAKA,EAAE,IAAoB,EAAA,IAAIA,EAAE,IAAoB,EAAA;EAGrEsf,GAAG,EAAGtf,EAAU,IACbA,EAAE,IAAoB,EAAA,IAAIA,EAAE,IAAoB,EAAA,IAChDA,EAAE,IAAA,EAAwB,IAAIA,EAAE,IAAA,EAAyB,IACzDA,EAAE,IAAA,EAAwB,IAAIA,EAAE,IAAA;AACrC,CAAC;AAUM,SAAS2f,kBAAkBA,CAChCvgD,IAAsC,EACtCu+B,KAAa,EACb5vB,GAAW,EACXqqC,SAAiB,EACjBD,OAAe,EACf+F,MAAmC,EACnC;EACA,MAAM0B,UAAU,GAAG7xC,GAAG;EACtB,MAAM8xC,gBAAgB,GAAGzH,SAAS;EAClC,MAAM0H,cAAc,GAAG3H,OAAO;EAE9B,IAAIxgB,GAAG,GAAG,EAAE;EACZ,IAAIooB,eAAe,GAAG,IAAI;EAC1B,IAAIjI,UAAU,GAAG/pC,GAAG;EACpB,MAAM;IAAEqL;EAAQ,CAAA,GAAGukB,KAAK;EACxB,SAAS;IACP,IAAI5vB,GAAG,IAAIqL,MAAM,EAAE;MACjB8kC,MAAM,CAAC8B,YAAY,CAACJ,UAAU,EAAEC,gBAAgB,EAAEC,cAAc,CAAC;MACjEnoB,GAAG,IAAIgG,KAAK,CAAC4G,KAAK,CAACuT,UAAU,EAAE/pC,GAAG,CAAC;MACnC;IACF;IACA,MAAMiyB,EAAE,GAAGrC,KAAK,CAACC,UAAU,CAAC7vB,GAAG,CAAC;IAChC,IAAIkyC,WAAW,CAAC7gD,IAAI,EAAE4gC,EAAE,EAAErC,KAAK,EAAE5vB,GAAG,CAAC,EAAE;MACrC4pB,GAAG,IAAIgG,KAAK,CAAC4G,KAAK,CAACuT,UAAU,EAAE/pC,GAAG,CAAC;MACnC;IACF;IACA,IAAIiyB,EAAE,OAAwB,EAAE;MAC9BrI,GAAG,IAAIgG,KAAK,CAAC4G,KAAK,CAACuT,UAAU,EAAE/pC,GAAG,CAAC;MACnC,MAAMmyC,GAAG,GAAGC,eAAe,CACzBxiB,KAAK,EACL5vB,GAAG,EACHqqC,SAAS,EACTD,OAAO,EACP/4C,IAAI,KAAK,UAAU,EACnB8+C,MACF,CAAC;MACD,IAAIgC,GAAG,CAAClgB,EAAE,KAAK,IAAI,IAAI,CAAC+f,eAAe,EAAE;QACvCA,eAAe,GAAG;UAAEhyC,GAAG;UAAEqqC,SAAS;UAAED;SAAS;MAC/C,CAAC,MAAM;QACLxgB,GAAG,IAAIuoB,GAAG,CAAClgB,EAAE;MACf;MACA,CAAC;QAAEjyB,GAAG;QAAEqqC,SAAS;QAAED;MAAS,CAAA,GAAG+H,GAAG;MAClCpI,UAAU,GAAG/pC,GAAG;IACjB,CAAA,MAAM,IACLiyB,EAAE,SAA4B,IAC9BA,EAAE,SAAiC,EACnC;MACA,EAAEjyB,GAAG;MACL,EAAEoqC,OAAO;MACTC,SAAS,GAAGrqC,GAAG;IAChB,CAAA,MAAM,IAAIiyB,EAAE,OAAuB,IAAIA,EAAE,OAA6B,EAAE;MACvE,IAAI5gC,IAAI,KAAK,UAAU,EAAE;QACvBu4B,GAAG,IAAIgG,KAAK,CAAC4G,KAAK,CAACuT,UAAU,EAAE/pC,GAAG,CAAC,GAAG,IAAI;QAC1C,EAAEA,GAAG;QACL,IACEiyB,EAAE,KAA6B,EAAA,IAC/BrC,KAAK,CAACC,UAAU,CAAC7vB,GAAG,CAAC,KAAA,EAAuB,EAC5C;UACA,EAAEA,GAAG;QACP;QACA,EAAEoqC,OAAO;QACTL,UAAU,GAAGM,SAAS,GAAGrqC,GAAG;MAC9B,CAAC,MAAM;QACLmwC,MAAM,CAAC8B,YAAY,CAACJ,UAAU,EAAEC,gBAAgB,EAAEC,cAAc,CAAC;MACnE;IACF,CAAC,MAAM;MACL,EAAE/xC,GAAG;IACP;EACF;EACA,OAEI;IACEA,GAAG;IACHqyC,GAAG,EAAEzoB,GAAG;IACRooB,eAAe;IACf3H,SAAS;IACTD,OAAO;IACPkI,eAAe,EAAE,CAAC,CAACN;GACpB;AACP;AAEA,SAASE,WAAWA,CAClB7gD,IAAsC,EACtC4gC,EAAU,EACVrC,KAAa,EACb5vB,GAAW,EACX;EACA,IAAI3O,IAAI,KAAK,UAAU,EAAE;IACvB,OACE4gC,EAAE,KAAA,EAA0B,IAC3BA,EAAE,OAAyB,IAC1BrC,KAAK,CAACC,UAAU,CAAC7vB,GAAG,GAAG,CAAC,CAAC,KAA8B,GAAA;EAE7D;EACA,OACEiyB,EAAE,MAAM5gC,IAAI,KAAK,QAAQ,UAAiD,CAAC;AAE/E;AAOA,SAAS+gD,eAAeA,CACtBxiB,KAAa,EACb5vB,GAAW,EACXqqC,SAAiB,EACjBD,OAAe,EACfmI,UAAmB,EACnBpC,MAAgC,EAChC;EACA,MAAMqC,cAAc,GAAG,CAACD,UAAU;EAClCvyC,GAAG,EAAE;EAEL,MAAMmyC,GAAG,GAAIlgB,EAAiB,KAAM;IAAEjyB,GAAG;IAAEiyB,EAAE;IAAEoY,SAAS;IAAED;EAAQ,CAAC,CAAC;EAEpE,MAAMnY,EAAE,GAAGrC,KAAK,CAACC,UAAU,CAAC7vB,GAAG,EAAE,CAAC;EAClC,QAAQiyB,EAAE;IACR,KAAA,GAAA;MACE,OAAOkgB,GAAG,CAAC,IAAI,CAAC;IAClB,KAAA,GAAA;MACE,OAAOA,GAAG,CAAC,IAAI,CAAC;IAClB,KAAA,GAAA;MAA2B;QACzB,IAAI5iD,IAAI;QACR,CAAC;UAAEA,IAAI;UAAEyQ;QAAI,CAAC,GAAGyyC,WAAW,CAC1B7iB,KAAK,EACL5vB,GAAG,EACHqqC,SAAS,EACTD,OAAO,EACP,CAAC,EACD,KAAK,EACLoI,cAAc,EACdrC,MACF,CAAC;QACD,OAAOgC,GAAG,CAAC5iD,IAAI,KAAK,IAAI,GAAG,IAAI,GAAGgO,MAAM,CAACoc,YAAY,CAACpqB,IAAI,CAAC,CAAC;MAC9D;IACA,KAAA,GAAA;MAA2B;QACzB,IAAIA,IAAI;QACR,CAAC;UAAEA,IAAI;UAAEyQ;QAAI,CAAC,GAAG0yC,aAAa,CAC5B9iB,KAAK,EACL5vB,GAAG,EACHqqC,SAAS,EACTD,OAAO,EACPoI,cAAc,EACdrC,MACF,CAAC;QACD,OAAOgC,GAAG,CAAC5iD,IAAI,KAAK,IAAI,GAAG,IAAI,GAAGgO,MAAM,CAACC,aAAa,CAACjO,IAAI,CAAC,CAAC;MAC/D;IACA,KAAA,GAAA;MACE,OAAO4iD,GAAG,CAAC,IAAI,CAAC;IAClB,KAAA,EAAA;MACE,OAAOA,GAAG,CAAC,IAAI,CAAC;IAClB,KAAA,GAAA;MACE,OAAOA,GAAG,CAAC,QAAQ,CAAC;IACtB,KAAA,GAAA;MACE,OAAOA,GAAG,CAAC,IAAI,CAAC;IAClB,KAAA,EAAA;MACE,IAAIviB,KAAK,CAACC,UAAU,CAAC7vB,GAAG,CAAC,OAAuB,EAAE;QAChD,EAAEA,GAAG;MACP;IAEF,KAAA,EAAA;MACEqqC,SAAS,GAAGrqC,GAAG;MACf,EAAEoqC,OAAO;IAEX,KAAA,IAAA;IACA,KAAA,IAAA;MACE,OAAO+H,GAAG,CAAC,EAAE,CAAC;IAChB,KAAA,EAAA;IACA,KAAA,EAAA;MACE,IAAII,UAAU,EAAE;QACd,OAAOJ,GAAG,CAAC,IAAI,CAAC;MAClB,CAAC,MAAM;QACLhC,MAAM,CAACwC,mBAAmB,CAAC3yC,GAAG,GAAG,CAAC,EAAEqqC,SAAS,EAAED,OAAO,CAAC;MACzD;IAEF;MACE,IAAInY,EAAE,IAAA,EAAoB,IAAIA,EAAE,MAAoB,EAAE;QACpD,MAAMuY,QAAQ,GAAGxqC,GAAG,GAAG,CAAC;QACxB,MAAMojB,KAAK,GAAG,SAAS,CAACd,IAAI,CAACsN,KAAK,CAAC4G,KAAK,CAACgU,QAAQ,EAAExqC,GAAG,GAAG,CAAC,CAAC,CAAC;QAE5D,IAAI4yC,QAAQ,GAAGxvB,KAAK,CAAC,CAAC,CAAC;QAEvB,IAAIyvB,KAAK,GAAGC,QAAQ,CAACF,QAAQ,EAAE,CAAC,CAAC;QACjC,IAAIC,KAAK,GAAG,GAAG,EAAE;UACfD,QAAQ,GAAGA,QAAQ,CAACpc,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;UAChCqc,KAAK,GAAGC,QAAQ,CAACF,QAAQ,EAAE,CAAC,CAAC;QAC/B;QACA5yC,GAAG,IAAI4yC,QAAQ,CAACvnC,MAAM,GAAG,CAAC;QAC1B,MAAMuP,IAAI,GAAGgV,KAAK,CAACC,UAAU,CAAC7vB,GAAG,CAAC;QAClC,IACE4yC,QAAQ,KAAK,GAAG,IAChBh4B,IAAI,KAAqB,EAAA,IACzBA,IAAI,KAAA,EAAqB,EACzB;UACA,IAAI23B,UAAU,EAAE;YACd,OAAOJ,GAAG,CAAC,IAAI,CAAC;UAClB,CAAC,MAAM;YACLhC,MAAM,CAACwC,mBAAmB,CAACnI,QAAQ,EAAEH,SAAS,EAAED,OAAO,CAAC;UAC1D;QACF;QAEA,OAAO+H,GAAG,CAAC50C,MAAM,CAACoc,YAAY,CAACk5B,KAAK,CAAC,CAAC;MACxC;MAEA,OAAOV,GAAG,CAAC50C,MAAM,CAACoc,YAAY,CAACsY,EAAE,CAAC,CAAC;EACvC;AACF;AAOA,SAASwgB,WAAWA,CAClB7iB,KAAa,EACb5vB,GAAW,EACXqqC,SAAiB,EACjBD,OAAe,EACf6C,GAAW,EACX8F,QAAiB,EACjBP,cAAuB,EACvBrC,MAA4B,EAC5B;EACA,MAAM0B,UAAU,GAAG7xC,GAAG;EACtB,IAAIgzC,CAAC;EACL,CAAC;IAAEA,CAAC;IAAEhzC;EAAK,CAAA,GAAG2qC,OAAO,CACnB/a,KAAK,EACL5vB,GAAG,EACHqqC,SAAS,EACTD,OAAO,EACP,EAAE,EACF6C,GAAG,EACH8F,QAAQ,EACR,KAAK,EACL5C,MAAM,EACY,CAACqC,cACrB,CAAC;EACD,IAAIQ,CAAC,KAAK,IAAI,EAAE;IACd,IAAIR,cAAc,EAAE;MAClBrC,MAAM,CAAC8C,qBAAqB,CAACpB,UAAU,EAAExH,SAAS,EAAED,OAAO,CAAC;IAC9D,CAAC,MAAM;MACLpqC,GAAG,GAAG6xC,UAAU,GAAG,CAAC;IACtB;EACF;EACA,OAAO;IAAEtiD,IAAI,EAAEyjD,CAAC;IAAEhzC;GAAK;AACzB;AAuBO,SAAS2qC,OAAOA,CACrB/a,KAAa,EACb5vB,GAAW,EACXqqC,SAAiB,EACjBD,OAAe,EACf70C,KAAa,EACb03C,GAAuB,EACvB8F,QAAiB,EACjBG,iBAAmC,EACnC/C,MAAwB,EACxBgD,WAAoB,EACpB;EACA,MAAMnkD,KAAK,GAAGgR,GAAG;EACjB,MAAMozC,iBAAiB,GACrB79C,KAAK,KAAK,EAAE,GACR87C,iCAAiC,CAACE,GAAG,GACrCF,iCAAiC,CAACC,SAAS;EACjD,MAAM+B,gBAAgB,GACpB99C,KAAK,KAAK,EAAE,GACRi8C,gCAAgC,CAACD,GAAG,GACpCh8C,KAAK,KAAK,EAAE,GACVi8C,gCAAgC,CAACG,GAAG,GACpCp8C,KAAK,KAAK,CAAC,GACTi8C,gCAAgC,CAACE,GAAG,GACpCF,gCAAgC,CAACC,GAAG;EAE9C,IAAItkB,OAAO,GAAG,KAAK;EACnB,IAAImmB,KAAK,GAAG,CAAC;EAEb,KAAK,IAAI95B,CAAC,GAAG,CAAC,EAAE+5B,CAAC,GAAGtG,GAAG,IAAI,IAAI,GAAGuG,QAAQ,GAAGvG,GAAG,EAAEzzB,CAAC,GAAG+5B,CAAC,EAAE,EAAE/5B,CAAC,EAAE;IAC5D,MAAMjqB,IAAI,GAAGqgC,KAAK,CAACC,UAAU,CAAC7vB,GAAG,CAAC;IAClC,IAAIkiB,GAAG;IAEP,IAAI3yB,IAAI,KAAyB,EAAA,IAAI2jD,iBAAiB,KAAK,MAAM,EAAE;MACjE,MAAMO,IAAI,GAAG7jB,KAAK,CAACC,UAAU,CAAC7vB,GAAG,GAAG,CAAC,CAAC;MACtC,MAAM4a,IAAI,GAAGgV,KAAK,CAACC,UAAU,CAAC7vB,GAAG,GAAG,CAAC,CAAC;MAEtC,IAAI,CAACkzC,iBAAiB,EAAE;QACtB,IAAIC,WAAW,EAAE,OAAO;UAAEH,CAAC,EAAE,IAAI;UAAEhzC;SAAK;QACxCmwC,MAAM,CAACuD,gCAAgC,CAAC1zC,GAAG,EAAEqqC,SAAS,EAAED,OAAO,CAAC;MAClE,CAAC,MAAM,IACLuJ,MAAM,CAACC,KAAK,CAACh5B,IAAI,CAAC,IAClB,CAACy4B,gBAAgB,CAACz4B,IAAI,CAAC,IACvBw4B,iBAAiB,CAAC94B,GAAG,CAACm5B,IAAI,CAAC,IAC3BL,iBAAiB,CAAC94B,GAAG,CAACM,IAAI,CAAC,EAC3B;QACA,IAAIu4B,WAAW,EAAE,OAAO;UAAEH,CAAC,EAAE,IAAI;UAAEhzC;SAAK;QACxCmwC,MAAM,CAAC0D,0BAA0B,CAAC7zC,GAAG,EAAEqqC,SAAS,EAAED,OAAO,CAAC;MAC5D;MAGA,EAAEpqC,GAAG;MACL;IACF;IAEA,IAAIzQ,IAAI,MAAwB,EAAE;MAChC2yB,GAAG,GAAG3yB,IAAI,GAAA,EAAuB,GAAqB,EAAA;IACxD,CAAC,MAAM,IAAIA,IAAI,IAAA,EAAwB,EAAE;MACvC2yB,GAAG,GAAG3yB,IAAI,GAAA,EAAuB,GAAqB,EAAA;IACxD,CAAC,MAAM,IAAIukD,QAAA,CAAkBvkD,IAAI,CAAC,EAAE;MAClC2yB,GAAG,GAAG3yB,IAAI,GAAmB,EAAA;IAC/B,CAAC,MAAM;MACL2yB,GAAG,GAAGsxB,QAAQ;IAChB;IACA,IAAItxB,GAAG,IAAI3sB,KAAK,EAAE;MAGhB,IAAI2sB,GAAG,IAAI,CAAC,IAAIixB,WAAW,EAAE;QAC3B,OAAO;UAAEH,CAAC,EAAE,IAAI;UAAEhzC;SAAK;MACzB,CAAC,MAAM,IACLkiB,GAAG,IAAI,CAAC,IACRiuB,MAAM,CAAC4D,YAAY,CAAC/zC,GAAG,EAAEqqC,SAAS,EAAED,OAAO,EAAE70C,KAAK,CAAC,EACnD;QACA2sB,GAAG,GAAG,CAAC;MACR,CAAA,MAAM,IAAI6wB,QAAQ,EAAE;QACnB7wB,GAAG,GAAG,CAAC;QACPiL,OAAO,GAAG,IAAI;MAChB,CAAC,MAAM;QACL;MACF;IACF;IACA,EAAEntB,GAAG;IACLszC,KAAK,GAAGA,KAAK,GAAG/9C,KAAK,GAAG2sB,GAAG;EAC7B;EACA,IAAIliB,GAAG,KAAKhR,KAAK,IAAKi+C,GAAG,IAAI,IAAI,IAAIjtC,GAAG,GAAGhR,KAAK,KAAKi+C,GAAI,IAAI9f,OAAO,EAAE;IACpE,OAAO;MAAE6lB,CAAC,EAAE,IAAI;MAAEhzC;KAAK;EACzB;EAEA,OAAO;IAAEgzC,CAAC,EAAEM,KAAK;IAAEtzC;GAAK;AAC1B;AAMO,SAAS0yC,aAAaA,CAC3B9iB,KAAa,EACb5vB,GAAW,EACXqqC,SAAiB,EACjBD,OAAe,EACfoI,cAAuB,EACvBrC,MAA8B,EAC9B;EACA,MAAMle,EAAE,GAAGrC,KAAK,CAACC,UAAU,CAAC7vB,GAAG,CAAC;EAChC,IAAIzQ,IAAI;EAER,IAAI0iC,EAAE,QAA6B,EAAE;IACnC,EAAEjyB,GAAG;IACL,CAAC;MAAEzQ,IAAI;MAAEyQ;KAAK,GAAGyyC,WAAW,CAC1B7iB,KAAK,EACL5vB,GAAG,EACHqqC,SAAS,EACTD,OAAO,EACPxa,KAAK,CAAC6G,OAAO,CAAC,GAAG,EAAEz2B,GAAG,CAAC,GAAGA,GAAG,EAC7B,IAAI,EACJwyC,cAAc,EACdrC,MACF,CAAC;IACD,EAAEnwC,GAAG;IACL,IAAIzQ,IAAI,KAAK,IAAI,IAAIA,IAAI,GAAG,QAAQ,EAAE;MACpC,IAAIijD,cAAc,EAAE;QAClBrC,MAAM,CAAC6D,gBAAgB,CAACh0C,GAAG,EAAEqqC,SAAS,EAAED,OAAO,CAAC;MAClD,CAAC,MAAM;QACL,OAAO;UAAE76C,IAAI,EAAE,IAAI;UAAEyQ;SAAK;MAC5B;IACF;EACF,CAAC,MAAM;IACL,CAAC;MAAEzQ,IAAI;MAAEyQ;IAAI,CAAC,GAAGyyC,WAAW,CAC1B7iB,KAAK,EACL5vB,GAAG,EACHqqC,SAAS,EACTD,OAAO,EACP,CAAC,EACD,KAAK,EACLoI,cAAc,EACdrC,MACF,CAAC;EACH;EACA,OAAO;IAAE5gD,IAAI;IAAEyQ;GAAK;AACtB;AC3ZA,SAASi0C,aAAaA,CAACj0C,GAAW,EAAEqqC,SAAiB,EAAED,OAAe,EAAE;EACtE,OAAO,IAAI37C,QAAQ,CAAC27C,OAAO,EAAEpqC,GAAG,GAAGqqC,SAAS,EAAErqC,GAAG,CAAC;AACpD;AAEA,MAAMk0C,iBAAiB,GAAG,IAAIx2C,GAAG,CAAC,wCASjC,CAAC;AAMK,MAAMy2C,KAAK,CAAC;EACjBzlD,WAAWA,CAACuc,KAAY,EAAE;IACxB,MAAMxJ,UAAU,GAAGwJ,KAAK,CAACxJ,UAAU,IAAI,CAAC;IACxC,IAAI,CAACpQ,IAAI,GAAG4Z,KAAK,CAAC5Z,IAAI;IACtB,IAAI,CAACuN,KAAK,GAAGqM,KAAK,CAACrM,KAAK;IACxB,IAAI,CAAC5P,KAAK,GAAGyS,UAAU,GAAGwJ,KAAK,CAACjc,KAAK;IACrC,IAAI,CAACC,GAAG,GAAGwS,UAAU,GAAGwJ,KAAK,CAAChc,GAAG;IACjC,IAAI,CAAC2Q,GAAG,GAAG,IAAI7Q,cAAc,CAACkc,KAAK,CAAC7B,QAAQ,EAAE6B,KAAK,CAACpG,MAAM,CAAC;EAC7D;AAOF;AAIe,MAAeuvC,SAAS,SAASlF,cAAc,CAAC;EAM7DxgD,WAAWA,CAACoU,OAA4B,EAAE8sB,KAAa,EAAE;IACvD,KAAK,EAAE;IAAC,IAAA,CANVykB,WAAW,GAAA,KAAA,CAAA;IAAA,IAGX/xC,CAAAA,MAAM,GAA0B,EAAE;IAAA,IAAA,CAi9ClCgyC,qBAAqB,GAAqB;MACxCP,YAAY,EAAEA,CAAC/zC,GAAG,EAAEqqC,SAAS,EAAED,OAAO,EAAE70C,KAAK,KAAK;QAChD,IAAI,EAAE,IAAI,CAACiO,WAAW,OAA4B,CAAC,EAAE,OAAO,KAAK;QAEjE,IAAI,CAAC4G,KAAK,CAACjJ,MAAM,CAAC7L,YAAY,EAAE2+C,aAAa,CAACj0C,GAAG,EAAEqqC,SAAS,EAAED,OAAO,CAAC,EAAE;UACtE70C;QACF,CAAC,CAAC;QAEF,OAAO,IAAI;MACZ,CAAA;MACDm+C,gCAAgC,EAAE,IAAI,CAACa,YAAY,CACjDpzC,MAAM,CAAC3I,gCACT,CAAC;MACDq7C,0BAA0B,EAAE,IAAI,CAACU,YAAY,CAC3CpzC,MAAM,CAACzG,0BACT;KACD;IAAA,IAED85C,CAAAA,2BAA2B,GAAA72C,MAAA,CAAAC,MAAA,CACtB,CAAA,CAAA,EAAA,IAAI,CAAC02C,qBAAqB,EAAA;MAC7BrB,qBAAqB,EAAE,IAAI,CAACsB,YAAY,CAACpzC,MAAM,CAAC3L,qBAAqB,CAAC;MACtEw+C,gBAAgB,EAAE,IAAI,CAACO,YAAY,CAACpzC,MAAM,CAACjM,gBAAgB;IAAC,CAAA,CAAA;IAAA,IAG9Du/C,CAAAA,uCAAuC,GAAA92C,MAAA,CAAAC,MAAA,CAClC,CAAA,CAAA,EAAA,IAAI,CAAC42C,2BAA2B,EAAA;MACnC7B,mBAAmB,EAAEA,CAAC3yC,GAAG,EAAEqqC,SAAS,EAAED,OAAO,KAAK;QAChD,IAAI,CAACsK,sBAAsB,CACzBvzC,MAAM,CAAClE,mBAAmB,EAC1Bg3C,aAAa,CAACj0C,GAAG,EAAEqqC,SAAS,EAAED,OAAO,CACvC,CAAC;MACF,CAAA;MACD6H,YAAY,EAAEA,CAACjyC,GAAG,EAAEqqC,SAAS,EAAED,OAAO,KAAK;QACzC,MAAM,IAAI,CAAChgC,KAAK,CACdjJ,MAAM,CAACpF,kBAAkB,EACzBk4C,aAAa,CAACj0C,GAAG,GAAG,CAAC,EAAEqqC,SAAS,EAAED,OAAO,CAC3C,CAAC;MACH;IAAC,CAAA,CAAA;IAAA,IAGHuK,CAAAA,yCAAyC,GAAAh3C,MAAA,CAAAC,MAAA,CACpC,CAAA,CAAA,EAAA,IAAI,CAAC42C,2BAA2B,EAAA;MACnC7B,mBAAmB,EAAE,IAAI,CAAC4B,YAAY,CAACpzC,MAAM,CAAClE,mBAAmB,CAAC;MAClEg1C,YAAY,EAAEA,CAACjyC,GAAG,EAAEqqC,SAAS,EAAED,OAAO,KAAK;QACzC,MAAM,IAAI,CAAChgC,KAAK,CACdjJ,MAAM,CAACnF,oBAAoB,EAC3Bi4C,aAAa,CAACj0C,GAAG,EAAEqqC,SAAS,EAAED,OAAO,CACvC,CAAC;MACH;IAAC,CAAA,CAAA;IA7/CD,IAAI,CAACn/B,KAAK,GAAG,IAAIilC,KAAK,EAAE;IACxB,IAAI,CAACjlC,KAAK,CAACksB,IAAI,CAACr0B,OAAO,CAAC;IACxB,IAAI,CAAC8sB,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACvkB,MAAM,GAAGukB,KAAK,CAACvkB,MAAM;IAC1B,IAAI,CAACmjC,QAAQ,GAAG,EAAE;IAClB,IAAI,CAAC6F,WAAW,GAAG,KAAK;EAC1B;EAEAO,SAASA,CAAC32C,KAAwB,EAAE;IAGlC,IAAI,CAACqE,MAAM,CAAC+I,MAAM,GAAG,IAAI,CAACJ,KAAK,CAAC2lC,YAAY;IAC5C,IAAI,CAACtuC,MAAM,CAACiM,IAAI,CAACtQ,KAAK,CAAC;IACvB,EAAE,IAAI,CAACgN,KAAK,CAAC2lC,YAAY;EAC3B;EAIAh2B,IAAIA,CAAAA,EAAS;IACX,IAAI,CAACi6B,mBAAmB,CAAA,CAAE;IAC1B,IAAI,IAAI,CAACrxC,WAAW,MAAqB,EAAE;MACzC,IAAI,CAACoxC,SAAS,CAAC,IAAIT,KAAK,CAAC,IAAI,CAAClpC,KAAK,CAAC,CAAC;IACvC;IAEA,IAAI,CAACA,KAAK,CAACmB,aAAa,GAAG,IAAI,CAACnB,KAAK,CAACpG,MAAM;IAC5C,IAAI,CAACoG,KAAK,CAACC,eAAe,GAAG,IAAI,CAACD,KAAK,CAAC7B,QAAQ;IAChD,IAAI,CAACwsB,SAAS,CAAA,CAAE;EAClB;EAEA5S,GAAGA,CAAC3xB,IAAe,EAAW;IAC5B,IAAI,IAAI,CAAC+xB,KAAK,CAAC/xB,IAAI,CAAC,EAAE;MACpB,IAAI,CAACupB,IAAI,CAAA,CAAE;MACX,OAAO,IAAI;IACb,CAAC,MAAM;MACL,OAAO,KAAK;IACd;EACF;EAKAwI,KAAKA,CAAC/xB,IAAe,EAAW;IAC9B,OAAO,IAAI,CAAC4Z,KAAK,CAAC5Z,IAAI,KAAKA,IAAI;EACjC;EAKAyjD,oBAAoBA,CAAC7pC,KAAY,EAAkB;IACjD,OAAO;MACLjL,GAAG,EAAEiL,KAAK,CAACjL,GAAG;MACdpB,KAAK,EAAE,IAAI;MACXvN,IAAI,EAAE4Z,KAAK,CAAC5Z,IAAI;MAChBrC,KAAK,EAAEic,KAAK,CAACjc,KAAK;MAClBC,GAAG,EAAEgc,KAAK,CAAChc,GAAG;MACd6pB,OAAO,EAAE,CAAC,IAAI,CAAC6O,UAAU,EAAE,CAAC;MAC5BjF,MAAM,EAAEzX,KAAK,CAACyX,MAAM;MACpBtZ,QAAQ,EAAE6B,KAAK,CAAC7B,QAAQ;MACxBgD,aAAa,EAAEnB,KAAK,CAACmB,aAAa;MAClCg+B,OAAO,EAAEn/B,KAAK,CAACm/B,OAAO;MACtBC,SAAS,EAAEp/B,KAAK,CAACo/B,SAAS;MAC1B3a,WAAW,EAAEzkB,KAAK,CAACykB;KACpB;EACH;EAeAjH,SAASA,CAAAA,EAAmB;IAC1B,MAAMssB,GAAG,GAAG,IAAI,CAAC9pC,KAAK;IAEtB,IAAI,CAACA,KAAK,GAAG,IAAI,CAAC6pC,oBAAoB,CAACC,GAAG,CAAC;IAE3C,IAAI,CAACV,WAAW,GAAG,IAAI;IACvB,IAAI,CAACze,SAAS,CAAA,CAAE;IAChB,IAAI,CAACye,WAAW,GAAG,KAAK;IAExB,MAAMW,IAAI,GAAG,IAAI,CAAC/pC,KAAK;IACvB,IAAI,CAACA,KAAK,GAAG8pC,GAAG;IAChB,OAAOC,IAAI;EACb;EAEArc,cAAcA,CAAAA,EAAW;IACvB,OAAO,IAAI,CAACsc,mBAAmB,CAAC,IAAI,CAAChqC,KAAK,CAACjL,GAAG,CAAC;EACjD;EAEAi1C,mBAAmBA,CAACj1C,GAAW,EAAU;IACvC6oC,cAAc,CAACqM,SAAS,GAAGl1C,GAAG;IAC9B,OAAO6oC,cAAc,CAACnvB,IAAI,CAAC,IAAI,CAACkW,KAAK,CAAC,GAAGiZ,cAAc,CAACqM,SAAS,GAAGl1C,GAAG;EACzE;EAEA2sB,iBAAiBA,CAAAA,EAAW;IAC1B,OAAO,IAAI,CAACwoB,sBAAsB,CAAC,IAAI,CAAClqC,KAAK,CAACjL,GAAG,CAAC;EACpD;EAEAm1C,sBAAsBA,CAACn1C,GAAW,EAAU;IAC1C,OAAO,IAAI,CAAC4vB,KAAK,CAACC,UAAU,CAAC,IAAI,CAAColB,mBAAmB,CAACj1C,GAAG,CAAC,CAAC;EAC7D;EAQAo1C,oBAAoBA,CAAAA,EAAW;IAC7B,OAAO,IAAI,CAACC,yBAAyB,CAAC,IAAI,CAACpqC,KAAK,CAACjL,GAAG,CAAC;EACvD;EAEAq1C,yBAAyBA,CAACr1C,GAAW,EAAU;IAC7C8oC,oBAAoB,CAACoM,SAAS,GAAGl1C,GAAG;IACpC,OAAO8oC,oBAAoB,CAACpvB,IAAI,CAAC,IAAI,CAACkW,KAAK,CAAC,GACxCkZ,oBAAoB,CAACoM,SAAS,GAC9Bl1C,GAAG;EACT;EASAs1C,uBAAuBA,CAAAA,EAAW;IAChC,OAAO,IAAI,CAAC1lB,KAAK,CAACC,UAAU,CAAC,IAAI,CAACulB,oBAAoB,CAAE,CAAA,CAAC;EAC3D;EAEA3K,cAAcA,CAACzqC,GAAW,EAAU;IAKlC,IAAIu1C,EAAE,GAAG,IAAI,CAAC3lB,KAAK,CAACC,UAAU,CAAC7vB,GAAG,CAAC;IACnC,IAAI,CAACu1C,EAAE,GAAG,MAAM,MAAM,MAAM,IAAI,EAAEv1C,GAAG,GAAG,IAAI,CAAC4vB,KAAK,CAACvkB,MAAM,EAAE;MACzD,MAAMmqC,KAAK,GAAG,IAAI,CAAC5lB,KAAK,CAACC,UAAU,CAAC7vB,GAAG,CAAC;MACxC,IAAI,CAACw1C,KAAK,GAAG,MAAM,MAAM,MAAM,EAAE;QAC/BD,EAAE,GAAG,OAAO,IAAI,CAACA,EAAE,GAAG,KAAK,KAAK,EAAE,CAAC,IAAIC,KAAK,GAAG,KAAK,CAAC;MACvD;IACF;IACA,OAAOD,EAAE;EACX;EAKAE,SAASA,CAAC37B,MAAe,EAAQ;IAC/B,IAAI,CAAC7O,KAAK,CAAC6O,MAAM,GAAGA,MAAM;IAC1B,IAAIA,MAAM,EAAE;MAKV,IAAI,CAAC7O,KAAK,CAAC0lC,YAAY,CAACzrB,OAAO,CAAC,CAAC,CAACwwB,YAAY,EAAEnlC,EAAE,CAAC,KACjD,IAAI,CAACnG,KAAK,CAACsrC,YAAY,EAAEnlC,EAAE,CAC7B,CAAC;MACD,IAAI,CAACtF,KAAK,CAAC0lC,YAAY,CAACgF,KAAK,EAAE;IACjC;EACF;EAEAhuB,UAAUA,CAAAA,EAAe;IACvB,OAAO,IAAI,CAAC1c,KAAK,CAAC6N,OAAO,CAAC,IAAI,CAAC7N,KAAK,CAAC6N,OAAO,CAACzN,MAAM,GAAG,CAAC,CAAC;EAC1D;EAGAuqB,SAASA,CAAAA,EAAS;IAChB,IAAI,CAAC4W,SAAS,CAAA,CAAE;IAChB,IAAI,CAACvhC,KAAK,CAACjc,KAAK,GAAG,IAAI,CAACic,KAAK,CAACjL,GAAG;IACjC,IAAI,CAAC,IAAI,CAACq0C,WAAW,EAAE,IAAI,CAACppC,KAAK,CAAC7B,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAACykB,WAAW,EAAE;IACrE,IAAI,IAAI,CAACzkB,KAAK,CAACjL,GAAG,IAAI,IAAI,CAACqL,MAAM,EAAE;MACjC,IAAI,CAAC4W,WAAW,CAAA,GAAO,CAAC;MACxB;IACF;IAEA,IAAI,CAAC0N,gBAAgB,CAAC,IAAI,CAAC8a,cAAc,CAAC,IAAI,CAACx/B,KAAK,CAACjL,GAAG,CAAC,CAAC;EAC5D;EAKAi2B,gBAAgBA,CAACwZ,UAAwB,EAA8B;IACrE,IAAIrmC,QAAQ;IACZ,IAAI,CAAC,IAAI,CAACirC,WAAW,EAAEjrC,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAACykB,WAAW,EAAE;IAC1D,MAAM1gC,KAAK,GAAG,IAAI,CAACic,KAAK,CAACjL,GAAG;IAC5B,MAAM/Q,GAAG,GAAG,IAAI,CAAC2gC,KAAK,CAAC6G,OAAO,CAACgZ,UAAU,EAAEzgD,KAAK,GAAG,CAAC,CAAC;IACrD,IAAIC,GAAG,KAAK,CAAC,CAAC,EAAE;MAId,MAAM,IAAI,CAACmb,KAAK,CAACjJ,MAAM,CAACtF,mBAAmB,EAAE,IAAI,CAACoP,KAAK,CAACykB,WAAW,CAAA,CAAE,CAAC;IACxE;IAEA,IAAI,CAACzkB,KAAK,CAACjL,GAAG,GAAG/Q,GAAG,GAAGwgD,UAAU,CAACpkC,MAAM;IACxCq9B,UAAU,CAACwM,SAAS,GAAGlmD,KAAK,GAAG,CAAC;IAChC,OAAO05C,UAAU,CAAChvB,IAAI,CAAC,IAAI,CAACkW,KAAK,CAAC,IAAI8Y,UAAU,CAACwM,SAAS,IAAIjmD,GAAG,EAAE;MACjE,EAAE,IAAI,CAACgc,KAAK,CAACm/B,OAAO;MACpB,IAAI,CAACn/B,KAAK,CAACo/B,SAAS,GAAG3B,UAAU,CAACwM,SAAS;IAC7C;IAIA,IAAI,IAAI,CAACb,WAAW,EAAE;IAGtB,MAAMjyB,OAAuB,GAAG;MAC9B/wB,IAAI,EAAE,cAAc;MACpBuN,KAAK,EAAE,IAAI,CAACgxB,KAAK,CAAC4G,KAAK,CAACxnC,KAAK,GAAG,CAAC,EAAEC,GAAG,CAAC;MACvCD,KAAK,EAAE,IAAI,CAAC6lC,iBAAiB,CAAC7lC,KAAK,CAAC;MACpCC,GAAG,EAAE,IAAI,CAAC4lC,iBAAiB,CAAC5lC,GAAG,GAAGwgD,UAAU,CAACpkC,MAAM,CAAC;MAEpDzL,GAAG,EAAE,IAAI7Q,cAAc,CAACqa,QAAQ,EAAG,IAAI,CAAC6B,KAAK,CAACykB,WAAW,EAAE;KAC5D;IACD,IAAI,IAAI,CAAClsB,WAAW,MAAqB,EAAE,IAAI,CAACoxC,SAAS,CAACxyB,OAAO,CAAC;IAClE,OAAOA,OAAO;EAChB;EAEAwzB,eAAeA,CAACC,SAAiB,EAA6B;IAC5D,MAAM7mD,KAAK,GAAG,IAAI,CAACic,KAAK,CAACjL,GAAG;IAC5B,IAAIoJ,QAAQ;IACZ,IAAI,CAAC,IAAI,CAACirC,WAAW,EAAEjrC,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAACykB,WAAW,EAAE;IAC1D,IAAIuC,EAAE,GAAG,IAAI,CAACrC,KAAK,CAACC,UAAU,CAAE,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,IAAI61C,SAAU,CAAC;IAC7D,IAAI,IAAI,CAAC5qC,KAAK,CAACjL,GAAG,GAAG,IAAI,CAACqL,MAAM,EAAE;MAChC,OAAO,CAACs9B,SAAS,CAAC1W,EAAE,CAAC,IAAI,EAAE,IAAI,CAAChnB,KAAK,CAACjL,GAAG,GAAG,IAAI,CAACqL,MAAM,EAAE;QACvD4mB,EAAE,GAAG,IAAI,CAACrC,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,CAAC;MAC5C;IACF;IAIA,IAAI,IAAI,CAACq0C,WAAW,EAAE;IAEtB,MAAMplD,GAAG,GAAG,IAAI,CAACgc,KAAK,CAACjL,GAAG;IAC1B,MAAMpB,KAAK,GAAG,IAAI,CAACgxB,KAAK,CAAC4G,KAAK,CAACxnC,KAAK,GAAG6mD,SAAS,EAAE5mD,GAAG,CAAC;IAEtD,MAAMmzB,OAAsB,GAAG;MAC7B/wB,IAAI,EAAE,aAAa;MACnBuN,KAAK;MACL5P,KAAK,EAAE,IAAI,CAAC6lC,iBAAiB,CAAC7lC,KAAK,CAAC;MACpCC,GAAG,EAAE,IAAI,CAAC4lC,iBAAiB,CAAC5lC,GAAG,CAAC;MAEhC2Q,GAAG,EAAE,IAAI7Q,cAAc,CAACqa,QAAQ,EAAG,IAAI,CAAC6B,KAAK,CAACykB,WAAW,EAAE;KAC5D;IACD,IAAI,IAAI,CAAClsB,WAAW,MAAqB,EAAE,IAAI,CAACoxC,SAAS,CAACxyB,OAAO,CAAC;IAClE,OAAOA,OAAO;EAChB;EAKAoqB,SAASA,CAAAA,EAAS;IAChB,MAAMsJ,UAAU,GAAG,IAAI,CAAC7qC,KAAK,CAACjL,GAAG;IACjC,MAAMwuC,QAA4B,GAChC,IAAI,CAAChrC,WAAW,OAA4B,GAAG,EAAE,GAAG,IAAI;IAC1DuyC,IAAI,EAAE,OAAO,IAAI,CAAC9qC,KAAK,CAACjL,GAAG,GAAG,IAAI,CAACqL,MAAM,EAAE;MACzC,MAAM4mB,EAAE,GAAG,IAAI,CAACrC,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,CAAC;MAChD,QAAQiyB,EAAE;QACR,KAAA,EAAA;QACA,KAAA,GAAA;QACA,KAAA,CAAA;UACE,EAAE,IAAI,CAAChnB,KAAK,CAACjL,GAAG;UAChB;QACF,KAAA,EAAA;UACE,IACE,IAAI,CAAC4vB,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC,OAAuB,EAChE;YACA,EAAE,IAAI,CAACiL,KAAK,CAACjL,GAAG;UAClB;QAEF,KAAA,EAAA;QACA,KAAA,IAAA;QACA,KAAA,IAAA;UACE,EAAE,IAAI,CAACiL,KAAK,CAACjL,GAAG;UAChB,EAAE,IAAI,CAACiL,KAAK,CAACm/B,OAAO;UACpB,IAAI,CAACn/B,KAAK,CAACo/B,SAAS,GAAG,IAAI,CAACp/B,KAAK,CAACjL,GAAG;UACrC;QAEF,KAAA,EAAA;UACE,QAAQ,IAAI,CAAC4vB,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC;YAC/C,KAAA,EAAA;cAAyB;gBACvB,MAAMoiB,OAAO,GAAG,IAAI,CAAC6T,gBAAgB,CAAC,IAAI,CAAC;gBAC3C,IAAI7T,OAAO,KAAK5gB,SAAS,EAAE;kBACzB,IAAI,CAAC2gB,UAAU,CAACC,OAAO,CAAC;kBACxBosB,QAAQ,YAARA,QAAQ,CAAEjgC,IAAI,CAAC6T,OAAO,CAAC;gBACzB;gBACA;cACF;YAEA,KAAA,EAAA;cAAsB;gBACpB,MAAMA,OAAO,GAAG,IAAI,CAACwzB,eAAe,CAAC,CAAC,CAAC;gBACvC,IAAIxzB,OAAO,KAAK5gB,SAAS,EAAE;kBACzB,IAAI,CAAC2gB,UAAU,CAACC,OAAO,CAAC;kBACxBosB,QAAQ,YAARA,QAAQ,CAAEjgC,IAAI,CAAC6T,OAAO,CAAC;gBACzB;gBACA;cACF;YAEA;cACE,MAAM2zB,IAAI;UACd;UACA;QAEF;UACE,IAAIhN,YAAY,CAAC9W,EAAE,CAAC,EAAE;YACpB,EAAE,IAAI,CAAChnB,KAAK,CAACjL,GAAG;UAClB,CAAC,MAAM,IACLiyB,EAAE,KAAmB,EAAA,IACrB,CAAC,IAAI,CAAC7X,QAAQ,IACd,IAAI,CAAC5W,WAAW,OAAqB,EACrC;YACA,MAAMxD,GAAG,GAAG,IAAI,CAACiL,KAAK,CAACjL,GAAG;YAC1B,IACE,IAAI,CAAC4vB,KAAK,CAACC,UAAU,CAAC7vB,GAAG,GAAG,CAAC,CAAC,OAAmB,IACjD,IAAI,CAAC4vB,KAAK,CAACC,UAAU,CAAC7vB,GAAG,GAAG,CAAC,CAAC,KAAA,EAA0B,KACvD81C,UAAU,KAAK,CAAC,IAAI,IAAI,CAAC7qC,KAAK,CAACo/B,SAAS,GAAGyL,UAAU,CAAC,EACvD;cAEA,MAAM1zB,OAAO,GAAG,IAAI,CAACwzB,eAAe,CAAC,CAAC,CAAC;cACvC,IAAIxzB,OAAO,KAAK5gB,SAAS,EAAE;gBACzB,IAAI,CAAC2gB,UAAU,CAACC,OAAO,CAAC;gBACxBosB,QAAQ,YAARA,QAAQ,CAAEjgC,IAAI,CAAC6T,OAAO,CAAC;cACzB;YACF,CAAC,MAAM;cACL,MAAM2zB,IAAI;YACZ;UACF,CAAC,MAAM,IACL9jB,EAAE,KAAuB,EAAA,IACzB,CAAC,IAAI,CAAC7X,QAAQ,IACd,IAAI,CAAC5W,WAAW,OAAqB,EACrC;YACA,MAAMxD,GAAG,GAAG,IAAI,CAACiL,KAAK,CAACjL,GAAG;YAC1B,IACE,IAAI,CAAC4vB,KAAK,CAACC,UAAU,CAAC7vB,GAAG,GAAG,CAAC,CAAC,KAA8B,EAAA,IAC5D,IAAI,CAAC4vB,KAAK,CAACC,UAAU,CAAC7vB,GAAG,GAAG,CAAC,CAAC,KAAmB,EAAA,IACjD,IAAI,CAAC4vB,KAAK,CAACC,UAAU,CAAC7vB,GAAG,GAAG,CAAC,CAAC,OAAmB,EACjD;cAEA,MAAMoiB,OAAO,GAAG,IAAI,CAACwzB,eAAe,CAAC,CAAC,CAAC;cACvC,IAAIxzB,OAAO,KAAK5gB,SAAS,EAAE;gBACzB,IAAI,CAAC2gB,UAAU,CAACC,OAAO,CAAC;gBACxBosB,QAAQ,YAARA,QAAQ,CAAEjgC,IAAI,CAAC6T,OAAO,CAAC;cACzB;YACF,CAAC,MAAM;cACL,MAAM2zB,IAAI;YACZ;UACF,CAAC,MAAM;YACL,MAAMA,IAAI;UACZ;MACJ;IACF;IAGA,IAAI,CAAAvH,QAAQ,IAARA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAEnjC,MAAM,IAAG,CAAC,EAAE;MACxB,MAAMpc,GAAG,GAAG,IAAI,CAACgc,KAAK,CAACjL,GAAG;MAC1B,MAAMg2C,iBAAoC,GAAG;QAC3ChnD,KAAK,EAAE,IAAI,CAAC6lC,iBAAiB,CAACihB,UAAU,CAAC;QACzC7mD,GAAG,EAAE,IAAI,CAAC4lC,iBAAiB,CAAC5lC,GAAG,CAAC;QAChCu/C,QAAQ,EAAEA,QAAS;QACnBgB,WAAW,EAAE,IAAI;QACjBI,YAAY,EAAE,IAAI;QAClBF,cAAc,EAAE;OACjB;MACD,IAAI,CAACzkC,KAAK,CAACokC,YAAY,CAAC9gC,IAAI,CAACynC,iBAAiB,CAAC;IACjD;EACF;EAOA/zB,WAAWA,CAAC5wB,IAAe,EAAE6wB,GAAS,EAAQ;IAC5C,IAAI,CAACjX,KAAK,CAAChc,GAAG,GAAG,IAAI,CAACgc,KAAK,CAACjL,GAAG;IAC/B,IAAI,CAACiL,KAAK,CAACpG,MAAM,GAAG,IAAI,CAACoG,KAAK,CAACykB,WAAW,CAAA,CAAE;IAC5C,MAAM+c,QAAQ,GAAG,IAAI,CAACxhC,KAAK,CAAC5Z,IAAI;IAChC,IAAI,CAAC4Z,KAAK,CAAC5Z,IAAI,GAAGA,IAAI;IACtB,IAAI,CAAC4Z,KAAK,CAACrM,KAAK,GAAGsjB,GAAG;IAEtB,IAAI,CAAC,IAAI,CAACmyB,WAAW,EAAE;MACrB,IAAI,CAAC/mC,aAAa,CAACm/B,QAAQ,CAAC;IAC9B;EACF;EAEAF,YAAYA,CAACl7C,IAAe,EAAQ;IAClC,IAAI,CAAC4Z,KAAK,CAAC5Z,IAAI,GAAGA,IAAI;IAGtB,IAAI,CAACic,aAAa,CAAA,CAAE;EACtB;EAYA2oC,oBAAoBA,CAAAA,EAAS;IAC3B,IAAI,IAAI,CAAChrC,KAAK,CAACjL,GAAG,KAAK,CAAC,IAAI,IAAI,CAACk2C,qBAAqB,EAAE,EAAE;MACxD;IACF;IAEA,MAAMC,OAAO,GAAG,IAAI,CAAClrC,KAAK,CAACjL,GAAG,GAAG,CAAC;IAClC,MAAM4a,IAAI,GAAG,IAAI,CAAC6vB,cAAc,CAAC0L,OAAO,CAAC;IACzC,IAAIv7B,IAAI,IAAA,EAAoB,IAAIA,IAAI,MAAoB,EAAE;MACxD,MAAM,IAAI,CAACxQ,KAAK,CACdjJ,MAAM,CAAChH,wBAAwB,EAC/B,IAAI,CAAC8Q,KAAK,CAACykB,WAAW,CAAA,CACxB,CAAC;IACH;IAEA,IAEG9U,IAAI,KAAA,GAA6B,IAC/BA,IAAI,KAAgC,EAAA,IACnC,IAAI,CAAC3R,SAAS,CAAC,gBAAgB,CAAE,EACrC;MAKA,IAAI,CAACmtC,YAAY,CAAC,gBAAgB,CAAC;MACnC,IAAI,IAAI,CAAChvC,eAAe,CAAC,gBAAgB,EAAE,YAAY,CAAC,KAAK,KAAK,EAAE;QAClE,MAAM,IAAI,CAACgD,KAAK,CACdwQ,IAAI,KAA6B,GAAA,GAC7BzZ,MAAM,CAAC/H,4CAA4C,GACnD+H,MAAM,CAACnH,2CAA2C,EACtD,IAAI,CAACiR,KAAK,CAACykB,WAAW,CACxB,CAAA,CAAC;MACH;MAEA,IAAI,CAACzkB,KAAK,CAACjL,GAAG,IAAI,CAAC;MACnB,IAAI4a,IAAI,QAA6B,EAAE;QAErC,IAAI,CAACqH,WAAW,CAAA,CAAc,CAAC;MACjC,CAAC,MAAM;QAEL,IAAI,CAACA,WAAW,CAAA,CAAgB,CAAC;MACnC;IACF,CAAC,MAAM,IAAIxI,iBAAiB,CAACmB,IAAI,CAAC,EAAE;MAClC,EAAE,IAAI,CAAC3P,KAAK,CAACjL,GAAG;MAChB,IAAI,CAACiiB,WAAW,CAAiB,GAAA,EAAA,IAAI,CAACuN,SAAS,CAAC5U,IAAI,CAAC,CAAC;IACxD,CAAC,MAAM,IAAIA,IAAI,KAAA,EAAwB,EAAE;MACvC,EAAE,IAAI,CAAC3P,KAAK,CAACjL,GAAG;MAChB,IAAI,CAACiiB,WAAW,CAAiB,GAAA,EAAA,IAAI,CAACuN,SAAS,CAAE,CAAA,CAAC;IACpD,CAAC,MAAM;MACL,IAAI,CAACM,QAAQ,CAAU,EAAA,EAAA,CAAC,CAAC;IAC3B;EACF;EAEAumB,aAAaA,CAAAA,EAAS;IACpB,MAAMz7B,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC;IACtD,IAAI4a,IAAI,IAAA,EAAoB,IAAIA,IAAI,MAAoB,EAAE;MACxD,IAAI,CAAC07B,UAAU,CAAC,IAAI,CAAC;MACrB;IACF;IAEA,IACE17B,IAAI,KAAkB,EAAA,IACtB,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC,OAAkB,EAC3D;MACA,IAAI,CAACiL,KAAK,CAACjL,GAAG,IAAI,CAAC;MACnB,IAAI,CAACiiB,WAAW,CAAA,EAAY,CAAC;IAC/B,CAAC,MAAM;MACL,EAAE,IAAI,CAAChX,KAAK,CAACjL,GAAG;MAChB,IAAI,CAACiiB,WAAW,CAAA,EAAO,CAAC;IAC1B;EACF;EAEAs0B,eAAeA,CAAAA,EAAS;IACtB,MAAM37B,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC;IACtD,IAAI4a,IAAI,OAAuB,EAAE;MAC/B,IAAI,CAACkV,QAAQ,CAAiB,EAAA,EAAA,CAAC,CAAC;IAClC,CAAC,MAAM;MACL,IAAI,CAACA,QAAQ,CAAW,EAAA,EAAA,CAAC,CAAC;IAC5B;EACF;EAEAomB,qBAAqBA,CAAAA,EAAY;IAC/B,IAAI,IAAI,CAACjrC,KAAK,CAACjL,GAAG,KAAK,CAAC,IAAI,IAAI,CAACqL,MAAM,GAAG,CAAC,EAAE,OAAO,KAAK;IAEzD,IAAI4mB,EAAE,GAAG,IAAI,CAACrC,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC;IAClD,IAAIiyB,EAAE,KAAA,EAA8B,EAAE,OAAO,KAAK;IAElD,MAAMjjC,KAAK,GAAG,IAAI,CAACic,KAAK,CAACjL,GAAG;IAC5B,IAAI,CAACiL,KAAK,CAACjL,GAAG,IAAI,CAAC;IAEnB,OAAO,CAAC2oC,SAAS,CAAC1W,EAAE,CAAC,IAAI,EAAE,IAAI,CAAChnB,KAAK,CAACjL,GAAG,GAAG,IAAI,CAACqL,MAAM,EAAE;MACvD4mB,EAAE,GAAG,IAAI,CAACrC,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,CAAC;IAC5C;IAEA,MAAMpB,KAAK,GAAG,IAAI,CAACgxB,KAAK,CAAC4G,KAAK,CAACxnC,KAAK,GAAG,CAAC,EAAE,IAAI,CAACic,KAAK,CAACjL,GAAG,CAAC;IAEzD,IAAI,CAACiiB,WAAW,CAA0BrjB,EAAAA,EAAAA,KAAK,CAAC;IAEhD,OAAO,IAAI;EACb;EAEA82B,qBAAqBA,CAACnmC,IAAY,EAAQ;IAExC,IAAI8B,IAAI,GAAG9B,IAAI,KAAA,EAAuB,GAAsB,EAAA,GAAA,EAAA;IAC5D,IAAIinD,KAAK,GAAG,CAAC;IACb,IAAI57B,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC;IAGpD,IAAIzQ,IAAI,KAAA,EAAuB,IAAIqrB,IAAI,OAAuB,EAAE;MAC9D47B,KAAK,EAAE;MACP57B,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC;MAChD3O,IAAI,GAAc,EAAA;IACpB;IAGA,IAAIupB,IAAI,OAAuB,IAAI,CAAC,IAAI,CAAC3P,KAAK,CAACyX,MAAM,EAAE;MACrD8zB,KAAK,EAAE;MAIPnlD,IAAI,GAAG9B,IAAI,KAAA,EAA0B,GAA8B,EAAA,GAAA,EAAA;IACrE;IAEA,IAAI,CAACugC,QAAQ,CAACz+B,IAAI,EAAEmlD,KAAK,CAAC;EAC5B;EAEA3gB,kBAAkBA,CAACtmC,IAAY,EAAQ;IAErC,MAAMqrB,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC;IAEtD,IAAI4a,IAAI,KAAKrrB,IAAI,EAAE;MACjB,IAAI,IAAI,CAACqgC,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC,OAAuB,EAAE;QACpE,IAAI,CAAC8vB,QAAQ,CAAY,EAAA,EAAA,CAAC,CAAC;MAC7B,CAAC,MAAM;QACL,IAAI,CAACA,QAAQ,CACXvgC,IAAI,QAA0B,GAA+B,EAAA,GAAA,EAAA,EAC7D,CACF,CAAC;MACH;MACA;IACF;IAEA,IAAIA,IAAI,QAA0B,EAAE;MAElC,IAAIqrB,IAAI,OAA0B,EAAE;QAClC,IAAI,CAACkV,QAAQ,CAAc,EAAA,EAAA,CAAC,CAAC;QAC7B;MACF;MAEA,IAEE,IAAI,CAAC7mB,SAAS,CAAC,gBAAgB,CAAC,IAChC2R,IAAI,KAAA,GAA8B,EAClC;QACA,IAAI,IAAI,CAACxT,eAAe,CAAC,gBAAgB,EAAE,YAAY,CAAC,KAAK,KAAK,EAAE;UAClE,MAAM,IAAI,CAACgD,KAAK,CACdjJ,MAAM,CAACjI,yCAAyC,EAChD,IAAI,CAAC+R,KAAK,CAACykB,WAAW,CAAA,CACxB,CAAC;QACH;QACA,IAAI,CAACzkB,KAAK,CAACjL,GAAG,IAAI,CAAC;QACnB,IAAI,CAACiiB,WAAW,CAAA,CAAa,CAAC;QAC9B;MACF;MAGA,IAEE,IAAI,CAAChZ,SAAS,CAAC,gBAAgB,CAAC,IAChC2R,IAAI,KAAA,EAAiC,EACrC;QACA,IAAI,IAAI,CAACxT,eAAe,CAAC,gBAAgB,EAAE,YAAY,CAAC,KAAK,KAAK,EAAE;UAClE,MAAM,IAAI,CAACgD,KAAK,CACdjJ,MAAM,CAACrH,wCAAwC,EAC/C,IAAI,CAACmR,KAAK,CAACykB,WAAW,CAAA,CACxB,CAAC;QACH;QACA,IAAI,CAACzkB,KAAK,CAACjL,GAAG,IAAI,CAAC;QACnB,IAAI,CAACiiB,WAAW,CAAA,CAAe,CAAC;QAChC;MACF;IACF;IAEA,IAAIrH,IAAI,OAAuB,EAAE;MAC/B,IAAI,CAACkV,QAAQ,CAAY,EAAA,EAAA,CAAC,CAAC;MAC3B;IACF;IAEA,IAAI,CAACA,QAAQ,CACXvgC,IAAI,QAA0B,GAA+B,EAAA,GAAA,EAAA,EAC7D,CACF,CAAC;EACH;EAEAknD,eAAeA,CAAAA,EAAS;IACtB,MAAM77B,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC;IAGtD,IAAI4a,IAAI,OAAuB,IAAI,CAAC,IAAI,CAAC3P,KAAK,CAACyX,MAAM,EAAE;MAIrD,IAAI,CAACoN,QAAQ,CAAe,EAAA,EAAA,CAAC,CAAC;KAC/B,MAEI,IACHlV,IAAI,KAAoB,EAAA,IAGxB,IAAI,CAAC3R,SAAS,CAAC,CACb,kBAAkB,EAClB;MAAEytC,QAAQ,EAAE,MAAM;MAAEC,UAAU,EAAE;IAAM,CAAA,CACvC,CAAC,EACF;MACA,IAAI,CAAC7mB,QAAQ,CAAiB,EAAA,EAAA,CAAC,CAAC;MAGhC,MAAM8mB,WAAW,GAAG,IAAI,CAAChnB,KAAK,CAACinB,WAAW,CAAC,IAAI,CAAC5rC,KAAK,CAACjL,GAAG,CAAC;MAC1D,IAAI42C,WAAW,OAAoB,EAAE;QACnC,IAAI,CAACxgD,UAAU,CAAA,CAAE;MACnB;IACF,CAAC,MAEI;MACH,IAAI,CAAC05B,QAAQ,CAAgB,EAAA,EAAA,CAAC,CAAC;IACjC;EACF;EAEAgnB,gBAAgBA,CAAAA,EAAS;IACvB,MAAMl8B,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC;IAGtD,IACE4a,IAAI,OAAqB,IACzB,IAAI,CAAC3R,SAAS,CAAC,CACb,kBAAkB,EAClB;MAAEytC,QAAQ,EAAE,MAAM;MAAEC,UAAU,EAAE;IAAM,CAAA,CACvC,CAAC,EACF;MACA,IAAI,CAAC7mB,QAAQ,CAAc,EAAA,EAAA,CAAC,CAAC;IAC/B,CAAC,MAEI;MACH,IAAI,CAACA,QAAQ,CAAQ,EAAA,EAAA,CAAC,CAAC;IACzB;EACF;EAEAinB,kBAAkBA,CAACxnD,IAAY,EAAQ;IAErC,MAAMqrB,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC;IAEtD,IAAI4a,IAAI,KAAKrrB,IAAI,EAAE;MACjB,IAAI,CAACugC,QAAQ,CAAY,EAAA,EAAA,CAAC,CAAC;MAC3B;IACF;IAEA,IAAIlV,IAAI,OAAuB,EAAE;MAC/B,IAAI,CAACkV,QAAQ,CAAY,EAAA,EAAA,CAAC,CAAC;IAC7B,CAAC,MAAM;MACL,IAAI,CAACA,QAAQ,CAAa,EAAA,EAAA,CAAC,CAAC;IAC9B;EACF;EAEA+I,YAAYA,CAAAA,EAAS;IAEnB,MAAM;MAAE74B;KAAK,GAAG,IAAI,CAACiL,KAAK;IAC1B,MAAM2P,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC7vB,GAAG,GAAG,CAAC,CAAC;IAE3C,IAAI4a,IAAI,OAAuB,EAAE;MAC/B,IAAI,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC7vB,GAAG,GAAG,CAAC,CAAC,KAAA,EAAuB,EAAE;QACzD,IAAI,CAAC8vB,QAAQ,CAAY,EAAA,EAAA,CAAC,CAAC;QAC3B;MACF;MACA,IAAI,CAACA,QAAQ,CAAe,EAAA,EAAA,CAAC,CAAC;MAC9B;IACF;IAEA,IAAIlV,IAAI,OAAuB,EAAE;MAE/B,IAAI,CAACkV,QAAQ,CAAgB,EAAA,EAAA,CAAC,CAAC;MAC/B;IACF;IAEA,IAAI,CAACA,QAAQ,CAAQ,EAAA,EAAA,CAAC,CAAC;EACzB;EAEAgJ,YAAYA,CAAAA,EAAS;IAEnB,MAAM;MAAE94B;KAAK,GAAG,IAAI,CAACiL,KAAK;IAC1B,MAAM2P,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC7vB,GAAG,GAAG,CAAC,CAAC;IAE3C,IAAI4a,IAAI,OAA0B,EAAE;MAClC,MAAMo8B,IAAI,GACR,IAAI,CAACpnB,KAAK,CAACC,UAAU,CAAC7vB,GAAG,GAAG,CAAC,CAAC,KAAA,EAA0B,GAAG,CAAC,GAAG,CAAC;MAClE,IAAI,IAAI,CAAC4vB,KAAK,CAACC,UAAU,CAAC7vB,GAAG,GAAGg3C,IAAI,CAAC,KAAA,EAAuB,EAAE;QAC5D,IAAI,CAAClnB,QAAQ,CAAA,EAAA,EAAYknB,IAAI,GAAG,CAAC,CAAC;QAClC;MACF;MACA,IAAI,CAAClnB,QAAQ,CAAeknB,EAAAA,EAAAA,IAAI,CAAC;MACjC;IACF;IAEA,IAAIp8B,IAAI,OAAuB,EAAE;MAE/B,IAAI,CAACkV,QAAQ,CAAgB,EAAA,EAAA,CAAC,CAAC;MAC/B;IACF;IAEA,IAAI,CAACA,QAAQ,CAAQ,EAAA,EAAA,CAAC,CAAC;EACzB;EAEAmnB,iBAAiBA,CAAC1nD,IAAY,EAAQ;IAEpC,MAAMqrB,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC;IACtD,IAAI4a,IAAI,OAAuB,EAAE;MAC/B,IAAI,CAACkV,QAAQ,CAEX,EAAA,EAAA,IAAI,CAACF,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC,OAAuB,GAC5D,CAAC,GACD,CACN,CAAC;MACD;IACF;IACA,IAAIzQ,IAAI,KAAA,EAAuB,IAAIqrB,IAAI,OAA0B,EAAE;MAEjE,IAAI,CAAC3P,KAAK,CAACjL,GAAG,IAAI,CAAC;MACnB,IAAI,CAACiiB,WAAW,CAAA,EAAS,CAAC;MAC1B;IACF;IACA,IAAI,CAAC6N,QAAQ,CAACvgC,IAAI,OAAuB,GAAkB,EAAA,GAAA,EAAA,EAAE,CAAC,CAAC;EACjE;EAEA2nD,kBAAkBA,CAAAA,EAAS;IAEzB,MAAMt8B,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC;IACtD,MAAM6a,KAAK,GAAG,IAAI,CAAC+U,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC;IACvD,IAAI4a,IAAI,OAA2B,EAAE;MACnC,IAAIC,KAAK,OAAuB,EAAE;QAEhC,IAAI,CAACiV,QAAQ,CAAY,EAAA,EAAA,CAAC,CAAC;MAC7B,CAAC,MAAM;QAEL,IAAI,CAACA,QAAQ,CAAuB,EAAA,EAAA,CAAC,CAAC;MACxC;IACF,CAAC,MAAM,IACLlV,IAAI,KAAA,EAAkB,IACtB,EAAEC,KAAK,IAAA,EAAoB,IAAIA,KAAK,IAAoB,EAAA,CAAC,EACzD;MAEA,IAAI,CAAC5P,KAAK,CAACjL,GAAG,IAAI,CAAC;MACnB,IAAI,CAACiiB,WAAW,CAAA,EAAe,CAAC;IAClC,CAAC,MAAM;MACL,EAAE,IAAI,CAAChX,KAAK,CAACjL,GAAG;MAChB,IAAI,CAACiiB,WAAW,CAAA,EAAY,CAAC;IAC/B;EACF;EAEA0N,gBAAgBA,CAACpgC,IAAY,EAAQ;IACnC,QAAQA,IAAI;MAIV,KAAA,EAAA;QACE,IAAI,CAAC8mD,aAAa,CAAA,CAAE;QACpB;MAEF,KAAA,EAAA;QACE,EAAE,IAAI,CAACprC,KAAK,CAACjL,GAAG;QAChB,IAAI,CAACiiB,WAAW,CAAA,EAAU,CAAC;QAC3B;MACF,KAAA,EAAA;QACE,EAAE,IAAI,CAAChX,KAAK,CAACjL,GAAG;QAChB,IAAI,CAACiiB,WAAW,CAAA,EAAU,CAAC;QAC3B;MACF,KAAA,EAAA;QACE,EAAE,IAAI,CAAChX,KAAK,CAACjL,GAAG;QAChB,IAAI,CAACiiB,WAAW,CAAA,EAAQ,CAAC;QACzB;MACF,KAAA,EAAA;QACE,EAAE,IAAI,CAAChX,KAAK,CAACjL,GAAG;QAChB,IAAI,CAACiiB,WAAW,CAAA,EAAS,CAAC;QAC1B;MACF,KAAA,EAAA;QACE,IAEE,IAAI,CAAChZ,SAAS,CAAC,gBAAgB,CAAC,IAChC,IAAI,CAAC2mB,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC,KAAA,GAA0B,EACnE;UACA,IAAI,IAAI,CAACoH,eAAe,CAAC,gBAAgB,EAAE,YAAY,CAAC,KAAK,KAAK,EAAE;YAClE,MAAM,IAAI,CAACgD,KAAK,CACdjJ,MAAM,CAACpH,0CAA0C,EACjD,IAAI,CAACkR,KAAK,CAACykB,WAAW,CAAA,CACxB,CAAC;UACH;UAGA,IAAI,CAACzkB,KAAK,CAACjL,GAAG,IAAI,CAAC;UACnB,IAAI,CAACiiB,WAAW,CAAA,CAAe,CAAC;QAClC,CAAC,MAAM;UACL,EAAE,IAAI,CAAChX,KAAK,CAACjL,GAAG;UAChB,IAAI,CAACiiB,WAAW,CAAA,CAAY,CAAC;QAC/B;QACA;MACF,KAAA,EAAA;QACE,EAAE,IAAI,CAAChX,KAAK,CAACjL,GAAG;QAChB,IAAI,CAACiiB,WAAW,CAAA,CAAY,CAAC;QAC7B;MACF,KAAA,GAAA;QACE,IAEE,IAAI,CAAChZ,SAAS,CAAC,gBAAgB,CAAC,IAChC,IAAI,CAAC2mB,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC,KAAA,GAA0B,EACnE;UACA,IAAI,IAAI,CAACoH,eAAe,CAAC,gBAAgB,EAAE,YAAY,CAAC,KAAK,KAAK,EAAE;YAClE,MAAM,IAAI,CAACgD,KAAK,CACdjJ,MAAM,CAAChI,2CAA2C,EAClD,IAAI,CAAC8R,KAAK,CAACykB,WAAW,CAAA,CACxB,CAAC;UACH;UAGA,IAAI,CAACzkB,KAAK,CAACjL,GAAG,IAAI,CAAC;UACnB,IAAI,CAACiiB,WAAW,CAAA,CAAa,CAAC;QAChC,CAAC,MAAM;UACL,EAAE,IAAI,CAAChX,KAAK,CAACjL,GAAG;UAChB,IAAI,CAACiiB,WAAW,CAAA,CAAU,CAAC;QAC7B;QACA;MACF,KAAA,GAAA;QACE,EAAE,IAAI,CAAChX,KAAK,CAACjL,GAAG;QAChB,IAAI,CAACiiB,WAAW,CAAA,CAAU,CAAC;QAC3B;MAEF,KAAA,EAAA;QACE,IACE,IAAI,CAAChZ,SAAS,CAAC,cAAc,CAAC,IAC9B,IAAI,CAAC2mB,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC,KAAA,EAAoB,EAC7D;UACA,IAAI,CAAC8vB,QAAQ,CAAiB,EAAA,EAAA,CAAC,CAAC;QAClC,CAAC,MAAM;UACL,EAAE,IAAI,CAAC7kB,KAAK,CAACjL,GAAG;UAChB,IAAI,CAACiiB,WAAW,CAAA,EAAS,CAAC;QAC5B;QACA;MAEF,KAAA,EAAA;QACE,IAAI,CAACi1B,kBAAkB,CAAA,CAAE;QACzB;MAEF,KAAA,EAAA;QACE,IAAI,CAACC,iBAAiB,CAAA,CAAE;QACxB;MAEF,KAAA,EAAA;QAAuB;UACrB,MAAMv8B,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC;UAEtD,IAAI4a,IAAI,KAAA,GAAyB,IAAIA,IAAI,OAAyB,EAAE;YAClE,IAAI,CAACw8B,eAAe,CAAC,EAAE,CAAC;YACxB;UACF;UAEA,IAAIx8B,IAAI,KAAA,GAAyB,IAAIA,IAAI,OAAyB,EAAE;YAClE,IAAI,CAACw8B,eAAe,CAAC,CAAC,CAAC;YACvB;UACF;UAEA,IAAIx8B,IAAI,KAAA,EAAyB,IAAIA,IAAI,OAAyB,EAAE;YAClE,IAAI,CAACw8B,eAAe,CAAC,CAAC,CAAC;YACvB;UACF;QACF;MAGA,KAAA,EAAA;MACA,KAAA,EAAA;MACA,KAAA,EAAA;MACA,KAAA,EAAA;MACA,KAAA,EAAA;MACA,KAAA,EAAA;MACA,KAAA,EAAA;MACA,KAAA,EAAA;MACA,KAAA,EAAA;QACE,IAAI,CAACd,UAAU,CAAC,KAAK,CAAC;QACtB;MAGF,KAAA,EAAA;MACA,KAAA,EAAA;QACE,IAAI,CAACe,UAAU,CAAC9nD,IAAI,CAAC;QACrB;MAOF,KAAA,EAAA;QACE,IAAI,CAACgnD,eAAe,CAAA,CAAE;QACtB;MAEF,KAAA,EAAA;MACA,KAAA,EAAA;QACE,IAAI,CAAC7gB,qBAAqB,CAACnmC,IAAI,CAAC;QAChC;MAEF,KAAA,GAAA;MACA,KAAA,EAAA;QACE,IAAI,CAACsmC,kBAAkB,CAACtmC,IAAI,CAAC;QAC7B;MAEF,KAAA,EAAA;QACE,IAAI,CAACknD,eAAe,CAAA,CAAE;QACtB;MAEF,KAAA,EAAA;MACA,KAAA,EAAA;QACE,IAAI,CAACM,kBAAkB,CAACxnD,IAAI,CAAC;QAC7B;MAEF,KAAA,EAAA;QACE,IAAI,CAACspC,YAAY,CAAA,CAAE;QACnB;MAEF,KAAA,EAAA;QACE,IAAI,CAACC,YAAY,CAAA,CAAE;QACnB;MAEF,KAAA,EAAA;MACA,KAAA,EAAA;QACE,IAAI,CAACme,iBAAiB,CAAC1nD,IAAI,CAAC;QAC5B;MAEF,KAAA,GAAA;QACE,IAAI,CAACugC,QAAQ,CAAW,EAAA,EAAA,CAAC,CAAC;QAC1B;MAEF,KAAA,EAAA;QACE,IAAI,CAACgnB,gBAAgB,CAAA,CAAE;QACvB;MAEF,KAAA,EAAA;QACE,IAAI,CAACb,oBAAoB,CAAA,CAAE;QAC3B;MAEF,KAAA,EAAA;QACE,IAAI,CAACqB,QAAQ,CAAA,CAAE;QACf;MAEF;QACE,IAAI79B,iBAAiB,CAAClqB,IAAI,CAAC,EAAE;UAC3B,IAAI,CAAC+nD,QAAQ,CAAC/nD,IAAI,CAAC;UACnB;QACF;IACJ;IAEA,MAAM,IAAI,CAAC6a,KAAK,CACdjJ,MAAM,CAAChL,wBAAwB,EAC/B,IAAI,CAAC8U,KAAK,CAACykB,WAAW,EAAE,EACxB;MACEt5B,UAAU,EAAEmH,MAAM,CAACC,aAAa,CAACjO,IAAI;IACvC,CACF,CAAC;EACH;EAEAugC,QAAQA,CAACz+B,IAAe,EAAE2lD,IAAY,EAAQ;IAC5C,MAAM3E,GAAG,GAAG,IAAI,CAACziB,KAAK,CAAC4G,KAAK,CAAC,IAAI,CAACvrB,KAAK,CAACjL,GAAG,EAAE,IAAI,CAACiL,KAAK,CAACjL,GAAG,GAAGg3C,IAAI,CAAC;IACnE,IAAI,CAAC/rC,KAAK,CAACjL,GAAG,IAAIg3C,IAAI;IACtB,IAAI,CAAC/0B,WAAW,CAAC5wB,IAAI,EAAEghD,GAAG,CAAC;EAC7B;EAEAkF,UAAUA,CAAAA,EAAS;IACjB,MAAMnuC,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IACpC,MAAMpa,KAAK,GAAG,IAAI,CAACic,KAAK,CAACjc,KAAK,GAAG,CAAC;IAClC,IAAIwoD,OAAO,EAAE17B,OAAO;IACpB,IAAI;MAAE9b;KAAK,GAAG,IAAI,CAACiL,KAAK;IACxB,QAAS,EAAEjL,GAAG,EAAE;MACd,IAAIA,GAAG,IAAI,IAAI,CAACqL,MAAM,EAAE;QAEtB,MAAM,IAAI,CAACjB,KAAK,CACdjJ,MAAM,CAACrF,kBAAkB,EACzB1M,8BAA8B,CAACga,QAAQ,EAAE,CAAC,CAC5C,CAAC;MACH;MACA,MAAM6oB,EAAE,GAAG,IAAI,CAACrC,KAAK,CAACC,UAAU,CAAC7vB,GAAG,CAAC;MACrC,IAAI2oC,SAAS,CAAC1W,EAAE,CAAC,EAAE;QACjB,MAAM,IAAI,CAAC7nB,KAAK,CACdjJ,MAAM,CAACrF,kBAAkB,EACzB1M,8BAA8B,CAACga,QAAQ,EAAE,CAAC,CAC5C,CAAC;MACH;MACA,IAAIouC,OAAO,EAAE;QACXA,OAAO,GAAG,KAAK;MACjB,CAAC,MAAM;QACL,IAAIvlB,EAAE,OAAgC,EAAE;UACtCnW,OAAO,GAAG,IAAI;QAChB,CAAC,MAAM,IAAImW,EAAE,KAAiC,EAAA,IAAInW,OAAO,EAAE;UACzDA,OAAO,GAAG,KAAK;QAChB,CAAA,MAAM,IAAImW,EAAE,OAAoB,IAAI,CAACnW,OAAO,EAAE;UAC7C;QACF;QACA07B,OAAO,GAAGvlB,EAAE,KAAwB,EAAA;MACtC;IACF;IACA,MAAMwlB,OAAO,GAAG,IAAI,CAAC7nB,KAAK,CAAC4G,KAAK,CAACxnC,KAAK,EAAEgR,GAAG,CAAC;IAC5C,EAAEA,GAAG;IAEL,IAAI03C,IAAI,GAAG,EAAE;IAEb,MAAMvB,OAAO,GAAGA,CAAAA,KAEd/mD,8BAA8B,CAACga,QAAQ,EAAEpJ,GAAG,GAAG,CAAC,GAAGhR,KAAK,CAAC;IAE3D,OAAOgR,GAAG,GAAG,IAAI,CAACqL,MAAM,EAAE;MACxB,MAAMkqC,EAAE,GAAG,IAAI,CAAC9K,cAAc,CAACzqC,GAAG,CAAC;MAEnC,MAAM23C,IAAI,GAAGp6C,MAAM,CAACoc,YAAY,CAAC47B,EAAE,CAAC;MAGpC,IAAIrB,iBAAiB,CAAC55B,GAAG,CAACi7B,EAAE,CAAC,EAAE;QAC7B,IAAIA,EAAE,QAAyB,EAAE;UAC/B,IAAImC,IAAI,CAACxpB,QAAQ,CAAC,GAAG,CAAC,EAAE;YACtB,IAAI,CAAC9jB,KAAK,CAACjJ,MAAM,CAACnM,yBAAyB,EAAEmhD,OAAO,CAAE,CAAA,CAAC;UACzD;QACF,CAAC,MAAM,IAAIZ,EAAE,KAAA,GAAyB,EAAE;UACtC,IAAImC,IAAI,CAACxpB,QAAQ,CAAC,GAAG,CAAC,EAAE;YACtB,IAAI,CAAC9jB,KAAK,CAACjJ,MAAM,CAACnM,yBAAyB,EAAEmhD,OAAO,CAAE,CAAA,CAAC;UACzD;QACF;QACA,IAAIuB,IAAI,CAACxpB,QAAQ,CAACypB,IAAI,CAAC,EAAE;UACvB,IAAI,CAACvtC,KAAK,CAACjJ,MAAM,CAAC1N,oBAAoB,EAAE0iD,OAAO,CAAE,CAAA,CAAC;QACpD;MACD,CAAA,MAAM,IAAIv8B,gBAAgB,CAAC27B,EAAE,CAAC,IAAIA,EAAE,KAAA,EAAwB,EAAE;QAC7D,IAAI,CAACnrC,KAAK,CAACjJ,MAAM,CAACrK,oBAAoB,EAAEq/C,OAAO,CAAE,CAAA,CAAC;MACpD,CAAC,MAAM;QACL;MACF;MAEA,EAAEn2C,GAAG;MACL03C,IAAI,IAAIC,IAAI;IACd;IACA,IAAI,CAAC1sC,KAAK,CAACjL,GAAG,GAAGA,GAAG;IAEpB,IAAI,CAACiiB,WAAW,CAAY,GAAA,EAAA;MAC1Bve,OAAO,EAAE+zC,OAAO;MAChB9zC,KAAK,EAAE+zC;IACT,CAAC,CAAC;EACJ;EAWA/M,OAAOA,CACLp1C,KAAa,EACb03C,GAAY,EACZ8F,QAAiB,GAAG,KAAK,EACzBG,iBAAmC,GAAG,IAAI,EAC3B;IACf,MAAM;MAAEF,CAAC;MAAEhzC;IAAI,CAAC,GAAG2qC,OAAO,CACxB,IAAI,CAAC/a,KAAK,EACV,IAAI,CAAC3kB,KAAK,CAACjL,GAAG,EACd,IAAI,CAACiL,KAAK,CAACo/B,SAAS,EACpB,IAAI,CAACp/B,KAAK,CAACm/B,OAAO,EAClB70C,KAAK,EACL03C,GAAG,EACH8F,QAAQ,EACRG,iBAAiB,EACjB,IAAI,CAACoB,qBAAqB,EACR,KACpB,CAAC;IACD,IAAI,CAACrpC,KAAK,CAACjL,GAAG,GAAGA,GAAG;IACpB,OAAOgzC,CAAC;EACV;EAEAoE,eAAeA,CAAC7hD,KAAa,EAAQ;IACnC,MAAMvG,KAAK,GAAG,IAAI,CAACic,KAAK,CAACjL,GAAG;IAC5B,MAAMoJ,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAACykB,WAAW,CAAA,CAAE;IACzC,IAAIkoB,QAAQ,GAAG,KAAK;IAEpB,IAAI,CAAC3sC,KAAK,CAACjL,GAAG,IAAI,CAAC;IACnB,MAAMkiB,GAAG,GAAG,IAAI,CAACyoB,OAAO,CAACp1C,KAAK,CAAC;IAC/B,IAAI2sB,GAAG,IAAI,IAAI,EAAE;MACf,IAAI,CAAC9X,KAAK,CACRjJ,MAAM,CAAC7L,YAAY,EAEnBlG,8BAA8B,CAACga,QAAQ,EAAE,CAAC,CAAC,EAC3C;QACE7T;MACF,CACF,CAAC;IACH;IACA,MAAMqlB,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,CAAC;IAElD,IAAI4a,IAAI,QAAyB,EAAE;MACjC,EAAE,IAAI,CAAC3P,KAAK,CAACjL,GAAG;MAChB43C,QAAQ,GAAG,IAAI;IACjB,CAAC,MAAM,IAAIh9B,IAAI,KAAA,GAAyB,EAAE;MACxC,MAAM,IAAI,CAACxQ,KAAK,CAACjJ,MAAM,CAAC9L,cAAc,EAAE+T,QAAQ,CAAC;IACnD;IAEA,IAAIqQ,iBAAiB,CAAC,IAAI,CAACgxB,cAAc,CAAC,IAAI,CAACx/B,KAAK,CAACjL,GAAG,CAAC,CAAC,EAAE;MAC1D,MAAM,IAAI,CAACoK,KAAK,CAACjJ,MAAM,CAAC5I,gBAAgB,EAAE,IAAI,CAAC0S,KAAK,CAACykB,WAAW,CAAA,CAAE,CAAC;IACrE;IAEA,IAAIkoB,QAAQ,EAAE;MACZ,MAAMvF,GAAG,GAAG,IAAI,CAACziB,KAAK,CAAC4G,KAAK,CAACxnC,KAAK,EAAE,IAAI,CAACic,KAAK,CAACjL,GAAG,CAAC,CAAC63C,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;MACxE,IAAI,CAAC51B,WAAW,CAAYowB,GAAAA,EAAAA,GAAG,CAAC;MAChC;IACF;IAEA,IAAI,CAACpwB,WAAW,CAASC,GAAAA,EAAAA,GAAG,CAAC;EAC/B;EAIAo0B,UAAUA,CAACwB,aAAsB,EAAQ;IACvC,MAAM9oD,KAAK,GAAG,IAAI,CAACic,KAAK,CAACjL,GAAG;IAC5B,MAAMoJ,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAACykB,WAAW,CAAA,CAAE;IACzC,IAAIqoB,OAAO,GAAG,KAAK;IACnB,IAAIH,QAAQ,GAAG,KAAK;IACpB,IAAII,WAAW,GAAG,KAAK;IACvB,IAAIC,OAAO,GAAG,KAAK;IAEnB,IAAI,CAACH,aAAa,IAAI,IAAI,CAACnN,OAAO,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE;MAC/C,IAAI,CAACvgC,KAAK,CAACjJ,MAAM,CAAClL,aAAa,EAAE,IAAI,CAACgV,KAAK,CAACykB,WAAW,CAAA,CAAE,CAAC;IAC5D;IACA,MAAMwoB,cAAc,GAClB,IAAI,CAACjtC,KAAK,CAACjL,GAAG,GAAGhR,KAAK,IAAI,CAAC,IAC3B,IAAI,CAAC4gC,KAAK,CAACC,UAAU,CAAC7gC,KAAK,CAAC,KAAqB,EAAA;IAEnD,IAAIkpD,cAAc,EAAE;MAClB,MAAMC,OAAO,GAAG,IAAI,CAACvoB,KAAK,CAAC4G,KAAK,CAACxnC,KAAK,EAAE,IAAI,CAACic,KAAK,CAACjL,GAAG,CAAC;MACvD,IAAI,CAAC00C,sBAAsB,CAACvzC,MAAM,CAACjE,kBAAkB,EAAEkM,QAAQ,CAAC;MAChE,IAAI,CAAC,IAAI,CAAC6B,KAAK,CAAC6O,MAAM,EAAE;QAEtB,MAAMs+B,aAAa,GAAGD,OAAO,CAAC1hB,OAAO,CAAC,GAAG,CAAC;QAC1C,IAAI2hB,aAAa,GAAG,CAAC,EAAE;UAErB,IAAI,CAAChuC,KAAK,CACRjJ,MAAM,CAAC1E,yBAAyB,EAChCrN,8BAA8B,CAACga,QAAQ,EAAEgvC,aAAa,CACxD,CAAC;QACH;MACF;MACAH,OAAO,GAAGC,cAAc,IAAI,CAAC,MAAM,CAACx+B,IAAI,CAACy+B,OAAO,CAAC;IACnD;IAEA,IAAIv9B,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,CAAC;IAChD,IAAI4a,IAAI,KAAA,EAAkB,IAAI,CAACq9B,OAAO,EAAE;MACtC,EAAE,IAAI,CAAChtC,KAAK,CAACjL,GAAG;MAChB,IAAI,CAAC2qC,OAAO,CAAC,EAAE,CAAC;MAChBoN,OAAO,GAAG,IAAI;MACdn9B,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,CAAC;IAC9C;IAEA,IACE,CAAC4a,IAAI,KAAyB,EAAA,IAAIA,IAAI,KAAyB,GAAA,KAC/D,CAACq9B,OAAO,EACR;MACAr9B,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,EAAE,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,CAAC;MAC9C,IAAI4a,IAAI,KAAA,EAAuB,IAAIA,IAAI,OAAmB,EAAE;QAC1D,EAAE,IAAI,CAAC3P,KAAK,CAACjL,GAAG;MAClB;MACA,IAAI,IAAI,CAAC2qC,OAAO,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE;QAC7B,IAAI,CAACvgC,KAAK,CAACjJ,MAAM,CAACjL,wBAAwB,EAAEkT,QAAQ,CAAC;MACvD;MACA2uC,OAAO,GAAG,IAAI;MACdC,WAAW,GAAG,IAAI;MAClBp9B,IAAI,GAAG,IAAI,CAACgV,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,CAAC;IAC9C;IAEA,IAAI4a,IAAI,QAAyB,EAAE;MAGjC,IAAIm9B,OAAO,IAAIG,cAAc,EAAE;QAC7B,IAAI,CAAC9tC,KAAK,CAACjJ,MAAM,CAAClM,oBAAoB,EAAEmU,QAAQ,CAAC;MACnD;MACA,EAAE,IAAI,CAAC6B,KAAK,CAACjL,GAAG;MAChB43C,QAAQ,GAAG,IAAI;IACjB;IAEA,IAAqCh9B,IAAI,QAAyB,EAAE;MAClE,IAAI,CAACw7B,YAAY,CAAC,SAAS,EAAE,IAAI,CAACnrC,KAAK,CAACykB,WAAW,CAAA,CAAE,CAAC;MACtD,IAAIsoB,WAAW,IAAIE,cAAc,EAAE;QACjC,IAAI,CAAC9tC,KAAK,CAACjJ,MAAM,CAAC9L,cAAc,EAAE+T,QAAQ,CAAC;MAC7C;MACA,EAAE,IAAI,CAAC6B,KAAK,CAACjL,GAAG;MAEhB,IAAIq4C,SAAS,GAAG,IAAI;IACtB;IAEA,IAAI5+B,iBAAiB,CAAC,IAAI,CAACgxB,cAAc,CAAC,IAAI,CAACx/B,KAAK,CAACjL,GAAG,CAAC,CAAC,EAAE;MAC1D,MAAM,IAAI,CAACoK,KAAK,CAACjJ,MAAM,CAAC5I,gBAAgB,EAAE,IAAI,CAAC0S,KAAK,CAACykB,WAAW,CAAA,CAAE,CAAC;IACrE;IAGA,MAAM2iB,GAAG,GAAG,IAAI,CAACziB,KAAK,CAAC4G,KAAK,CAACxnC,KAAK,EAAE,IAAI,CAACic,KAAK,CAACjL,GAAG,CAAC,CAAC63C,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;IAEzE,IAAID,QAAQ,EAAE;MACZ,IAAI,CAAC31B,WAAW,CAAYowB,GAAAA,EAAAA,GAAG,CAAC;MAChC;IACF;IAEA,IAAqCgG,SAAS,EAAG;MAC/C,IAAI,CAACp2B,WAAW,CAAaowB,GAAAA,EAAAA,GAAG,CAAC;MACjC;IACF;IAEA,MAAMnwB,GAAG,GAAG+1B,OAAO,GAAGnF,QAAQ,CAACT,GAAG,EAAE,CAAC,CAAC,GAAGiG,UAAU,CAACjG,GAAG,CAAC;IACxD,IAAI,CAACpwB,WAAW,CAASC,GAAAA,EAAAA,GAAG,CAAC;EAC/B;EAIAwwB,aAAaA,CAACF,cAAuB,EAAiB;IACpD,MAAM;MAAEjjD,IAAI;MAAEyQ;IAAI,CAAC,GAAG0yC,aAAa,CACjC,IAAI,CAAC9iB,KAAK,EACV,IAAI,CAAC3kB,KAAK,CAACjL,GAAG,EACd,IAAI,CAACiL,KAAK,CAACo/B,SAAS,EACpB,IAAI,CAACp/B,KAAK,CAACm/B,OAAO,EAClBoI,cAAc,EACd,IAAI,CAACgC,2BACP,CAAC;IACD,IAAI,CAACvpC,KAAK,CAACjL,GAAG,GAAGA,GAAG;IACpB,OAAOzQ,IAAI;EACb;EAEA8nD,UAAUA,CAAC9M,KAAa,EAAQ;IAC9B,MAAM;MAAE8H,GAAG;MAAEryC,GAAG;MAAEoqC,OAAO;MAAEC;IAAU,CAAC,GAAGuH,kBAAkB,CACzDrH,KAAK,KAAA,EAA4B,GAAG,QAAQ,GAAG,QAAQ,EACvD,IAAI,CAAC3a,KAAK,EACV,IAAI,CAAC3kB,KAAK,CAACjL,GAAG,GAAG,CAAC,EAClB,IAAI,CAACiL,KAAK,CAACo/B,SAAS,EACpB,IAAI,CAACp/B,KAAK,CAACm/B,OAAO,EAClB,IAAI,CAACqK,uCACP,CAAC;IACD,IAAI,CAACxpC,KAAK,CAACjL,GAAG,GAAGA,GAAG,GAAG,CAAC;IACxB,IAAI,CAACiL,KAAK,CAACo/B,SAAS,GAAGA,SAAS;IAChC,IAAI,CAACp/B,KAAK,CAACm/B,OAAO,GAAGA,OAAO;IAC5B,IAAI,CAACnoB,WAAW,CAAYowB,GAAAA,EAAAA,GAAG,CAAC;EAClC;EAGAkG,wBAAwBA,CAAAA,EAAS;IAC/B,IAAI,CAAC,IAAI,CAACn1B,KAAK,CAAA,CAAU,CAAC,EAAE;MAC1B,IAAI,CAAChtB,UAAU,CAAC,IAAI,GAAW,CAAC;IAClC;IAEA,IAAI,CAAC6U,KAAK,CAACjL,GAAG,EAAE;IAChB,IAAI,CAACm3C,iBAAiB,CAAA,CAAE;EAC1B;EAGAA,iBAAiBA,CAAAA,EAAS;IACxB,MAAMqB,OAAO,GAAG,IAAI,CAAC5oB,KAAK,CAAC,IAAI,CAAC3kB,KAAK,CAACjL,GAAG,CAAC;IAC1C,MAAM;MAAEqyC,GAAG;MAAEL,eAAe;MAAEhyC,GAAG;MAAEoqC,OAAO;MAAEC;IAAU,CAAC,GACrDuH,kBAAkB,CAChB,UAAU,EACV,IAAI,CAAChiB,KAAK,EACV,IAAI,CAAC3kB,KAAK,CAACjL,GAAG,GAAG,CAAC,EAClB,IAAI,CAACiL,KAAK,CAACo/B,SAAS,EACpB,IAAI,CAACp/B,KAAK,CAACm/B,OAAO,EAClB,IAAI,CAACuK,yCACP,CAAC;IACH,IAAI,CAAC1pC,KAAK,CAACjL,GAAG,GAAGA,GAAG,GAAG,CAAC;IACxB,IAAI,CAACiL,KAAK,CAACo/B,SAAS,GAAGA,SAAS;IAChC,IAAI,CAACp/B,KAAK,CAACm/B,OAAO,GAAGA,OAAO;IAE5B,IAAI4H,eAAe,EAAE;MACnB,IAAI,CAAC/mC,KAAK,CAACylC,6BAA6B,GAAG,IAAIjiD,QAAQ,CACrDujD,eAAe,CAAC5H,OAAO,EACvB4H,eAAe,CAAChyC,GAAG,GAAGgyC,eAAe,CAAC3H,SAAS,EAC/C,IAAI,CAACxV,iBAAiB,CAACmd,eAAe,CAAChyC,GAAG,CAC5C,CAAC;IACH;IAEA,IAAI,IAAI,CAAC4vB,KAAK,CAACinB,WAAW,CAAC72C,GAAG,CAAC,KAAA,EAA0B,EAAE;MACzD,IAAI,CAACiiB,WAAW,CAEd+vB,EAAAA,EAAAA,eAAe,GAAG,IAAI,GAAGwG,OAAO,GAAGnG,GAAG,GAAG,GAC3C,CAAC;IACH,CAAC,MAAM;MACL,IAAI,CAACpnC,KAAK,CAACjL,GAAG,EAAE;MAChB,IAAI,CAACiiB,WAAW,CAEd+vB,EAAAA,EAAAA,eAAe,GAAG,IAAI,GAAGwG,OAAO,GAAGnG,GAAG,GAAG,IAC3C,CAAC;IACH;EACF;EAEAqC,sBAAsBA,CAACgB,YAAiC,EAAEnlC,EAAY,EAAE;IACtE,MAAM1hB,KAAK,GAAG0hB,EAAE,CAAC1hB,KAAK;IAEtB,IAAI,IAAI,CAACoc,KAAK,CAAC6O,MAAM,IAAI,CAAC,IAAI,CAAC7O,KAAK,CAAC0lC,YAAY,CAACr2B,GAAG,CAACzrB,KAAK,CAAC,EAAE;MAC5D,IAAI,CAACub,KAAK,CAACsrC,YAAY,EAAEnlC,EAAE,CAAC;IAC9B,CAAC,MAAM;MACL,IAAI,CAACtF,KAAK,CAAC0lC,YAAY,CAACtwC,GAAG,CAACxR,KAAK,EAAE,CAAC6mD,YAAY,EAAEnlC,EAAE,CAAC,CAAC;IACxD;EACF;EAWAif,SAASA,CAACipB,SAAkB,EAAU;IACpC,IAAI,CAACxtC,KAAK,CAACohB,WAAW,GAAG,KAAK;IAC9B,IAAIlS,IAAI,GAAG,EAAE;IACb,MAAMnrB,KAAK,GAAG,IAAI,CAACic,KAAK,CAACjL,GAAG;IAC5B,IAAI+pC,UAAU,GAAG,IAAI,CAAC9+B,KAAK,CAACjL,GAAG;IAC/B,IAAIy4C,SAAS,KAAKj3C,SAAS,EAAE;MAC3B,IAAI,CAACyJ,KAAK,CAACjL,GAAG,IAAIy4C,SAAS,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC;IAC/C;IAEA,OAAO,IAAI,CAACxtC,KAAK,CAACjL,GAAG,GAAG,IAAI,CAACqL,MAAM,EAAE;MACnC,MAAM4mB,EAAE,GAAG,IAAI,CAACwY,cAAc,CAAC,IAAI,CAACx/B,KAAK,CAACjL,GAAG,CAAC;MAC9C,IAAI4Z,gBAAgB,CAACqY,EAAE,CAAC,EAAE;QACxB,IAAI,CAAChnB,KAAK,CAACjL,GAAG,IAAIiyB,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC;MACxC,CAAC,MAAM,IAAIA,EAAE,KAAA,EAAwB,EAAE;QACrC,IAAI,CAAChnB,KAAK,CAACohB,WAAW,GAAG,IAAI;QAE7BlS,IAAI,IAAI,IAAI,CAACyV,KAAK,CAAC4G,KAAK,CAACuT,UAAU,EAAE,IAAI,CAAC9+B,KAAK,CAACjL,GAAG,CAAC;QACpD,MAAM04C,QAAQ,GAAG,IAAI,CAACztC,KAAK,CAACykB,WAAW,CAAA,CAAE;QACzC,MAAMipB,eAAe,GACnB,IAAI,CAAC1tC,KAAK,CAACjL,GAAG,KAAKhR,KAAK,GAAGyqB,iBAAiB,GAAGG,gBAAgB;QAEjE,IAAI,IAAI,CAACgW,KAAK,CAACC,UAAU,CAAC,EAAE,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,CAAC,QAAyB,EAAE;UACpE,IAAI,CAACoK,KAAK,CAACjJ,MAAM,CAACzJ,oBAAoB,EAAE,IAAI,CAACuT,KAAK,CAACykB,WAAW,CAAA,CAAE,CAAC;UACjEqa,UAAU,GAAG,IAAI,CAAC9+B,KAAK,CAACjL,GAAG,GAAG,CAAC;UAC/B;QACF;QAEA,EAAE,IAAI,CAACiL,KAAK,CAACjL,GAAG;QAChB,MAAM44C,GAAG,GAAG,IAAI,CAAClG,aAAa,CAAC,IAAI,CAAC;QACpC,IAAIkG,GAAG,KAAK,IAAI,EAAE;UAChB,IAAI,CAACD,eAAe,CAACC,GAAG,CAAC,EAAE;YACzB,IAAI,CAACxuC,KAAK,CAACjJ,MAAM,CAACxN,0BAA0B,EAAE+kD,QAAQ,CAAC;UACzD;UAEAv+B,IAAI,IAAI5c,MAAM,CAACC,aAAa,CAACo7C,GAAG,CAAC;QACnC;QACA7O,UAAU,GAAG,IAAI,CAAC9+B,KAAK,CAACjL,GAAG;MAC7B,CAAC,MAAM;QACL;MACF;IACF;IACA,OAAOma,IAAI,GAAG,IAAI,CAACyV,KAAK,CAAC4G,KAAK,CAACuT,UAAU,EAAE,IAAI,CAAC9+B,KAAK,CAACjL,GAAG,CAAC;EAC5D;EAKAs3C,QAAQA,CAACmB,SAAkB,EAAQ;IACjC,MAAMt+B,IAAI,GAAG,IAAI,CAACqV,SAAS,CAACipB,SAAS,CAAC;IACtC,MAAMpnD,IAAI,GAAGwnD,UAAY,CAACz4C,GAAG,CAAC+Z,IAAI,CAAC;IACnC,IAAI9oB,IAAI,KAAKmQ,SAAS,EAAE;MAGtB,IAAI,CAACygB,WAAW,CAAC5wB,IAAI,EAAEonB,cAAc,CAACpnB,IAAI,CAAC,CAAC;IAC9C,CAAC,MAAM;MACL,IAAI,CAAC4wB,WAAW,CAAU9H,GAAAA,EAAAA,IAAI,CAAC;IACjC;EACF;EAEA06B,mBAAmBA,CAAAA,EAAS;IAC1B,MAAM;MAAExjD;KAAM,GAAG,IAAI,CAAC4Z,KAAK;IAC3B,IAAIkN,cAAc,CAAC9mB,IAAI,CAAC,IAAI,IAAI,CAAC4Z,KAAK,CAACohB,WAAW,EAAE;MAClD,IAAI,CAACjiB,KAAK,CAACjJ,MAAM,CAACzL,0BAA0B,EAAE,IAAI,CAACuV,KAAK,CAAC7B,QAAQ,EAAE;QACjEzT,YAAY,EAAE8iB,cAAc,CAACpnB,IAAI;MACnC,CAAC,CAAC;IACJ;EACF;EAcA+Y,KAAKA,CACHsrC,YAAiD,EACjDnlC,EAA2B,EAC3B1Q,OAAqB,GAAG,CAAA,CAAkB,EAChB;IAC1B,MAAMD,GAAG,GAAG2Q,EAAE,YAAY9hB,QAAQ,GAAG8hB,EAAE,GAAGA,EAAE,CAAC3Q,GAAG,CAAC5Q,KAAK;IACtD,MAAM8Q,KAAK,GAAG41C,YAAY,CAAC91C,GAAG,EAAEC,OAAO,CAAC;IAExC,IAAI,EAAE,IAAI,CAAC2D,WAAW,OAA4B,CAAC,EAAE,MAAM1D,KAAK;IAChE,IAAI,CAAC,IAAI,CAACu0C,WAAW,EAAE,IAAI,CAACppC,KAAK,CAACklC,MAAM,CAAC5hC,IAAI,CAACzO,KAAK,CAAC;IAEpD,OAAOA,KAAK;EACd;EAQAg5C,cAAcA,CACZpD,YAAiD,EACjDnlC,EAA2B,EAC3B1Q,OAAqB,GAAG,CAAA,CAAkB,EACR;IAClC,MAAMD,GAAG,GAAG2Q,EAAE,YAAY9hB,QAAQ,GAAG8hB,EAAE,GAAGA,EAAE,CAAC3Q,GAAG,CAAC5Q,KAAK;IACtD,MAAMgR,GAAG,GAAGJ,GAAG,CAAC/Q,KAAK;IACrB,MAAMshD,MAAM,GAAG,IAAI,CAACllC,KAAK,CAACklC,MAAM;IAEhC,KAAK,IAAI32B,CAAC,GAAG22B,MAAM,CAAC9kC,MAAM,GAAG,CAAC,EAAEmO,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MAC3C,MAAM1Z,KAAK,GAAGqwC,MAAM,CAAC32B,CAAC,CAAC;MACvB,IAAI1Z,KAAK,CAACF,GAAG,CAAC/Q,KAAK,KAAKmR,GAAG,EAAE;QAC3B,OAAQmwC,MAAM,CAAC32B,CAAC,CAAC,GAAGk8B,YAAY,CAAC91C,GAAG,EAAEC,OAAO,CAAC;MAChD;MACA,IAAIC,KAAK,CAACF,GAAG,CAAC/Q,KAAK,GAAGmR,GAAG,EAAE;IAC7B;IAEA,OAAO,IAAI,CAACoK,KAAK,CAACsrC,YAAY,EAAEnlC,EAAE,EAAE1Q,OAAO,CAAC;EAC9C;EAIAyN,aAAaA,CAACm/B,QAAmB,EAAQ,CAAC;EAG1Cr2C,UAAUA,CAACwJ,GAAqB,EAAEvO,IAAgB,EAAO;IACvD,MAAM,IAAI,CAAC+Y,KAAK,CACdjJ,MAAM,CAACrG,eAAe,EACtB8E,GAAG,IAAI,IAAI,GAAGA,GAAG,GAAG,IAAI,CAACqL,KAAK,CAAC7B,QAAQ,EACvC;MACErO,QAAQ,EAAE1J,IAAI,GAAGonB,cAAc,CAACpnB,IAAI,CAAC,GAAG;IAC1C,CACF,CAAC;EACH;EAEA+kD,YAAYA,CAAClI,UAAkB,EAAEtuC,GAAc,EAAQ;IACrD,IAAI,IAAI,CAACqJ,SAAS,CAACilC,UAAU,CAAC,EAAE;MAC9B,OAAO,IAAI;IACb;IAEA,MAAM,IAAI,CAAC9jC,KAAK,CACdjJ,MAAM,CAACjK,aAAa,EACpB0I,GAAG,IAAI,IAAI,GAAGA,GAAG,GAAG,IAAI,CAACqL,KAAK,CAAC7B,QAAQ,EACvC;MACEjS,aAAa,EAAE,CAAC+2C,UAAU;IAC5B,CACF,CAAC;EACH;EAEA6K,eAAeA,CAACC,WAAqB,EAAO;IAC1C,IAAI,CAACA,WAAW,CAACC,IAAI,CAAC5hD,IAAI,IAAI,IAAI,CAAC4R,SAAS,CAAC5R,IAAI,CAAC,CAAC,EAAE;MACnD,MAAM,IAAI,CAAC+S,KAAK,CAACjJ,MAAM,CAAC1J,mBAAmB,EAAE,IAAI,CAACwT,KAAK,CAAC7B,QAAQ,EAAE;QAChEjS,aAAa,EAAE6hD;MACjB,CAAC,CAAC;IACJ;EACF;EAEAzE,YAAYA,CAACz0C,KAAoC,EAAE;IACjD,OAAO,CAACE,GAAW,EAAEqqC,SAAiB,EAAED,OAAe,KAAK;MAC1D,IAAI,CAAChgC,KAAK,CAACtK,KAAK,EAAEm0C,aAAa,CAACj0C,GAAG,EAAEqqC,SAAS,EAAED,OAAO,CAAC,CAAC;KAC1D;EACH;AAoDF;ACzlDO,MAAM8O,UAAU,CAAC;EAAAxqD,WAAAA,CAAA,EAAA;IAAA,IAAA,CAEtByqD,YAAY,GAAG,IAAIz7C,GAAG,EAAU;IAAA,IAAA,CAGhC07C,aAAa,GAAG,IAAI5rC,GAAG,EAA4B;IAAA,IAAA,CAInD6rC,qBAAqB,GAAG,IAAI7rC,GAAG,EAAoB;EAAA;AACrD;AAEe,MAAM8rC,iBAAiB,CAAC;EAKrC5qD,WAAWA,CAAC0sB,MAAiB,EAAE;IAAA,IAAA,CAJ/BA,MAAM,GAAA,KAAA,CAAA;IAAA,IACNsS,CAAAA,KAAK,GAAiB,EAAE;IAAA,IAAA,CACxB2rB,qBAAqB,GAAG,IAAI7rC,GAAG,EAAoB;IAGjD,IAAI,CAAC4N,MAAM,GAAGA,MAAM;EACtB;EAEAT,OAAOA,CAAAA,EAAe;IACpB,OAAO,IAAI,CAAC+S,KAAK,CAAC,IAAI,CAACA,KAAK,CAACriB,MAAM,GAAG,CAAC,CAAC;EAC1C;EAEAkR,KAAKA,CAAAA,EAAG;IACN,IAAI,CAACmR,KAAK,CAACnf,IAAI,CAAC,IAAI2qC,UAAU,CAAE,CAAA,CAAC;EACnC;EAEA18B,IAAIA,CAAAA,EAAG;IACL,MAAM+8B,aAAa,GAAG,IAAI,CAAC7rB,KAAK,CAAC3U,GAAG,CAAA,CAAG;IAKvC,MAAM4B,OAAO,GAAG,IAAI,CAACA,OAAO,EAAE;IAG9B,KAAK,MAAM,CAACtjB,IAAI,EAAEuI,GAAG,CAAC,IAAIa,KAAK,CAAC+4C,IAAI,CAACD,aAAa,CAACF,qBAAqB,CAAC,EAAE;MACzE,IAAI1+B,OAAO,EAAE;QACX,IAAI,CAACA,OAAO,CAAC0+B,qBAAqB,CAAC/+B,GAAG,CAACjjB,IAAI,CAAC,EAAE;UAC5CsjB,OAAO,CAAC0+B,qBAAqB,CAACh5C,GAAG,CAAChJ,IAAI,EAAEuI,GAAG,CAAC;QAC9C;MACF,CAAC,MAAM;QACL,IAAI,CAACwb,MAAM,CAAChR,KAAK,CAACjJ,MAAM,CAAC7K,6BAA6B,EAAEsJ,GAAG,EAAE;UAC3DzQ,cAAc,EAAEkI;QAClB,CAAC,CAAC;MACJ;IACF;EACF;EAEAoiD,kBAAkBA,CAChBpiD,IAAY,EACZ8zB,WAA6B,EAC7BvrB,GAAa,EACb;IACA,MAAM;MAAEu5C,YAAY;MAAEC,aAAa;MAAEC;IAAsB,CAAC,GAC1D,IAAI,CAAC1+B,OAAO,EAAE;IAChB,IAAI++B,SAAS,GAAGP,YAAY,CAAC7+B,GAAG,CAACjjB,IAAI,CAAC;IAEtC,IAAI8zB,WAAW,IAAiC,EAAE;MAChD,MAAMwuB,QAAQ,GAAGD,SAAS,IAAIN,aAAa,CAACh5C,GAAG,CAAC/I,IAAI,CAAC;MACrD,IAAIsiD,QAAQ,EAAE;QACZ,MAAMC,SAAS,GAAGD,QAAQ,IAA+B;QACzD,MAAME,SAAS,GAAG1uB,WAAW,IAA+B;QAE5D,MAAM2uB,OAAO,GAAGH,QAAQ,IAAiC;QACzD,MAAMI,OAAO,GAAG5uB,WAAW,IAAiC;QAK5DuuB,SAAS,GAAGI,OAAO,KAAKC,OAAO,IAAIH,SAAS,KAAKC,SAAS;QAE1D,IAAI,CAACH,SAAS,EAAEN,aAAa,CAACt8B,MAAM,CAACzlB,IAAI,CAAC;MAC5C,CAAC,MAAM,IAAI,CAACqiD,SAAS,EAAE;QACrBN,aAAa,CAAC/4C,GAAG,CAAChJ,IAAI,EAAE8zB,WAAW,CAAC;MACtC;IACF;IAEA,IAAIuuB,SAAS,EAAE;MACb,IAAI,CAACt+B,MAAM,CAAChR,KAAK,CAACjJ,MAAM,CAAClI,wBAAwB,EAAE2G,GAAG,EAAE;QACtDzQ,cAAc,EAAEkI;MAClB,CAAC,CAAC;IACJ;IAEA8hD,YAAY,CAAC97B,GAAG,CAAChmB,IAAI,CAAC;IACtBgiD,qBAAqB,CAACv8B,MAAM,CAACzlB,IAAI,CAAC;EACpC;EAEA4S,cAAcA,CAAC5S,IAAY,EAAEuI,GAAa,EAAE;IAC1C,IAAIoK,UAAU;IACd,KAAKA,UAAU,IAAI,IAAI,CAAC0jB,KAAK,EAAE;MAC7B,IAAI1jB,UAAU,CAACmvC,YAAY,CAAC7+B,GAAG,CAACjjB,IAAI,CAAC,EAAE;IACzC;IAEA,IAAI2S,UAAU,EAAE;MACdA,UAAU,CAACqvC,qBAAqB,CAACh5C,GAAG,CAAChJ,IAAI,EAAEuI,GAAG,CAAC;IACjD,CAAC,MAAM;MAEL,IAAI,CAACwb,MAAM,CAAChR,KAAK,CAACjJ,MAAM,CAAC7K,6BAA6B,EAAEsJ,GAAG,EAAE;QAC3DzQ,cAAc,EAAEkI;MAClB,CAAC,CAAC;IACJ;EACF;AACF;ACrDA,MAAM2iD,eAAe,CAAC;EAGpBtrD,WAAWA,CAAC2C,IAAyB,GAAA,CAAkC,EAAE;IACvE,IAAI,CAACA,IAAI,GAAGA,IAAI;EAClB;EAEA4oD,8BAA8BA,CAAAA,EAAkC;IAC9D,OACE,IAAI,CAAC5oD,IAAI,KAAA,CAA6D,IACtE,IAAI,CAACA,IAAI,KAAwD,CAAA;EAErE;EAEA6oD,+BAA+BA,CAAAA,EAAG;IAChC,OAAO,IAAI,CAAC7oD,IAAI,KAA8C,CAAA;EAChE;AACF;AAUA,MAAM8oD,qBAAqB,SAASH,eAAe,CAAC;EAKlDtrD,WAAWA,CACT2C,IAE4D,EAC5D;IACA,KAAK,CAACA,IAAI,CAAC;IAAC,IAAA,CATd+oD,iBAAiB,GAAG,IAAI5sC,GAAG,EAGxB;EAOH;EACA6sC,sBAAsBA,CACpBC,iBAAgD,EAChD/pC,EAAY,EACZ;IACA,MAAM1hB,KAAK,GAAG0hB,EAAE,CAAC1hB,KAAK;IAEtB,IAAI,CAACurD,iBAAiB,CAAC/5C,GAAG,CAACxR,KAAK,EAAE,CAACyrD,iBAAiB,EAAE/pC,EAAE,CAAC,CAAC;EAC5D;EACAgqC,qBAAqBA,CAAC1rD,KAAa,EAAE;IACnC,IAAI,CAACurD,iBAAiB,CAACt9B,MAAM,CAACjuB,KAAK,CAAC;EACtC;EACA2rD,aAAaA,CACXC,QAAmE,EACnE;IACA,IAAI,CAACL,iBAAiB,CAACl1B,OAAO,CAACu1B,QAAQ,CAAC;EAC1C;AACF;AAEe,MAAMC,sBAAsB,CAAC;EAI1ChsD,WAAWA,CAAC0sB,MAAiB,EAAE;IAAA,IAAA,CAH/BA,MAAM,GAAA,KAAA,CAAA;IAAA,IAAA,CACNsS,KAAK,GAAsB,CAAC,IAAIssB,eAAe,CAAE,CAAA,CAAC;IAGhD,IAAI,CAAC5+B,MAAM,GAAGA,MAAM;EACtB;EACAmB,KAAKA,CAACE,KAAsB,EAAE;IAC5B,IAAI,CAACiR,KAAK,CAACnf,IAAI,CAACkO,KAAK,CAAC;EACxB;EAEAD,IAAIA,CAAAA,EAAG;IACL,IAAI,CAACkR,KAAK,CAAC3U,GAAG,EAAE;EAClB;EASA4hC,+BAA+BA,CAC7BjF,YAAuD,EACvDtkD,IAAkB,EACZ;IACN,MAAMwpD,MAAM,GAAGxpD,IAAI,CAACwO,GAAG,CAAC5Q,KAAK;IAC7B,MAAM;MAAE0+B;IAAO,CAAA,GAAG,IAAI;IACtB,IAAIlU,CAAC,GAAGkU,KAAK,CAACriB,MAAM,GAAG,CAAC;IACxB,IAAIoR,KAAsB,GAAGiR,KAAK,CAAClU,CAAC,CAAC;IACrC,OAAO,CAACiD,KAAK,CAACy9B,+BAA+B,EAAE,EAAE;MAC/C,IAAIz9B,KAAK,CAACw9B,8BAA8B,EAAE,EAAE;QAC1Cx9B,KAAK,CAAC49B,sBAAsB,CAAC3E,YAAY,EAAEkF,MAAM,CAAC;MACpD,CAAC,MAAM;QAGL;MACF;MACAn+B,KAAK,GAAGiR,KAAK,CAAC,EAAElU,CAAC,CAAC;IACpB;IACA,IAAI,CAAC4B,MAAM,CAAChR,KAAK,CAACsrC,YAAY,EAAEkF,MAAM,CAAC;EACzC;EAqBAC,gCAAgCA,CAC9B/6C,KAAoC,EACpC1O,IAAU,EACJ;IACN,MAAM;MAAEs8B;IAAO,CAAA,GAAG,IAAI;IACtB,MAAMjR,KAAsB,GAAGiR,KAAK,CAACA,KAAK,CAACriB,MAAM,GAAG,CAAC,CAAC;IACtD,MAAMuvC,MAAM,GAAGxpD,IAAI,CAACwO,GAAG,CAAC5Q,KAAK;IAC7B,IAAIytB,KAAK,CAACy9B,+BAA+B,EAAE,EAAE;MAC3C,IAAI,CAAC9+B,MAAM,CAAChR,KAAK,CAACtK,KAAK,EAAE86C,MAAM,CAAC;IAClC,CAAC,MAAM,IAAIn+B,KAAK,CAACw9B,8BAA8B,EAAE,EAAE;MACjDx9B,KAAK,CAAC49B,sBAAsB,CAACv6C,KAAK,EAAE86C,MAAM,CAAC;IAC7C,CAAC,MAAM;MACL;IACF;EACF;EAQAE,+BAA+BA,CAACvqC,EAAY,EAAQ;IAClD,MAAM;MAAEmd;IAAO,CAAA,GAAG,IAAI;IACtB,IAAIlU,CAAC,GAAGkU,KAAK,CAACriB,MAAM,GAAG,CAAC;IACxB,IAAIoR,KAAsB,GAAGiR,KAAK,CAAClU,CAAC,CAAC;IACrC,OAAOiD,KAAK,CAACw9B,8BAA8B,EAAE,EAAE;MAC7C,IACEx9B,KAAK,CAACprB,IAAI,KAAA,CAA6D,EACvE;QACAorB,KAAK,CAAC49B,sBAAsB,CAACl5C,MAAM,CAACvP,sBAAsB,EAAE2e,EAAE,CAAC;MACjE;MACAkM,KAAK,GAAGiR,KAAK,CAAC,EAAElU,CAAC,CAAC;IACpB;EACF;EAEAuhC,iBAAiBA,CAAAA,EAAS;IACxB,MAAM;MAAErtB;IAAO,CAAA,GAAG,IAAI;IACtB,MAAMlS,YAAY,GAAGkS,KAAK,CAACA,KAAK,CAACriB,MAAM,GAAG,CAAC,CAAC;IAC5C,IAAI,CAACmQ,YAAY,CAACy+B,8BAA8B,CAAA,CAAE,EAAE;IACpDz+B,YAAY,CAACg/B,aAAa,CAAC,CAAC,CAAC9E,YAAY,EAAE91C,GAAG,CAAC,KAAK;MAClD,IAAI,CAACwb,MAAM,CAAChR,KAAK,CAACsrC,YAAY,EAAE91C,GAAG,CAAC;MAEpC,IAAI4Z,CAAC,GAAGkU,KAAK,CAACriB,MAAM,GAAG,CAAC;MACxB,IAAIoR,KAAK,GAAGiR,KAAK,CAAClU,CAAC,CAAC;MACpB,OAAOiD,KAAK,CAACw9B,8BAA8B,EAAE,EAAE;QAC7Cx9B,KAAK,CAAC89B,qBAAqB,CAAC36C,GAAG,CAAC/Q,KAAK,CAAC;QACtC4tB,KAAK,GAAGiR,KAAK,CAAC,EAAElU,CAAC,CAAC;MACpB;IACF,CAAC,CAAC;EACJ;AACF;AAEO,SAASwhC,4BAA4BA,CAAAA,EAAG;EAC7C,OAAO,IAAIhB,eAAe,CAAA,CAA0C,CAAC;AACvE;AAEO,SAASiB,iBAAiBA,CAAAA,EAAG;EAClC,OAAO,IAAId,qBAAqB,CAAA,CAEhC,CAAC;AACH;AAEO,SAASe,kBAAkBA,CAAAA,EAAG;EACnC,OAAO,IAAIf,qBAAqB,CAAA,CAEhC,CAAC;AACH;AAEO,SAASgB,kBAAkBA,CAAAA,EAAG;EACnC,OAAO,IAAInB,eAAe,CAAA,CAAE;AAC9B;AC5Me,MAAeoB,UAAU,SAAShH,SAAS,CAAC;EAIzDiH,QAAQA,CACNjqD,IAAmB,EACnB2G,GAAW,EACX6G,KAAU,EACVE,UAAmB,GAAG,IAAI,EACpB;IACN,IAAI,CAAC1N,IAAI,EAAE;IAEX,IAAI;MAAEkU;IAAO,CAAA,GAAGlU,IAAI;IACpB,IAAIkU,KAAK,IAAI,IAAI,EAAE;MACjBA,KAAK,GAAG,CAAA,CAAE;MACVlU,IAAI,CAACkU,KAAK,GAAGA,KAAK;IACpB;IAEA,IAAIxG,UAAU,EAAE;MACdwG,KAAK,CAACvN,GAAG,CAAC,GAAG6G,KAAK;IACpB,CAAC,MAAM;MACLjB,MAAM,CAACkB,cAAc,CAACyG,KAAK,EAAEvN,GAAG,EAAE;QAAE+G,UAAU;QAAEF;MAAM,CAAC,CAAC;IAC1D;EACF;EAIA4lB,YAAYA,CAACvmB,KAAgB,EAAW;IACtC,OAAO,IAAI,CAACgN,KAAK,CAAC5Z,IAAI,KAAK4M,KAAK,IAAI,CAAC,IAAI,CAACgN,KAAK,CAACohB,WAAW;EAC7D;EAEAivB,oBAAoBA,CAACC,SAAiB,EAAElkD,IAAY,EAAW;IAC7D,IAAI,IAAI,CAACu4B,KAAK,CAAC4rB,UAAU,CAACnkD,IAAI,EAAEkkD,SAAS,CAAC,EAAE;MAC1C,MAAM7uB,MAAM,GAAG,IAAI,CAACkD,KAAK,CAACC,UAAU,CAAC0rB,SAAS,GAAGlkD,IAAI,CAACgU,MAAM,CAAC;MAC7D,OAAO,EACLuO,gBAAgB,CAAC8S,MAAM,CAAC,IAIxB,CAACA,MAAM,GAAG,MAAM,MAAM,MAAM,CAC7B;IACH;IACA,OAAO,KAAK;EACd;EAEAiG,qBAAqBA,CAACt7B,IAAY,EAAW;IAC3C,MAAMujB,IAAI,GAAG,IAAI,CAAC+d,cAAc,EAAE;IAClC,OAAO,IAAI,CAAC2iB,oBAAoB,CAAC1gC,IAAI,EAAEvjB,IAAI,CAAC;EAC9C;EAIAgtB,aAAaA,CAACpmB,KAAgB,EAAW;IACvC,IAAI,IAAI,CAACumB,YAAY,CAACvmB,KAAK,CAAC,EAAE;MAC5B,IAAI,CAAC2c,IAAI,CAAA,CAAE;MACX,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;EAIAmI,gBAAgBA,CACd9kB,KAAgB,EAChBy3C,YAAyC,EACnC;IACN,IAAI,CAAC,IAAI,CAACrxB,aAAa,CAACpmB,KAAK,CAAC,EAAE;MAC9B,IAAIy3C,YAAY,IAAI,IAAI,EAAE;QACxB,MAAM,IAAI,CAACtrC,KAAK,CAACsrC,YAAY,EAAE,IAAI,CAACzqC,KAAK,CAAC7B,QAAQ,CAAC;MACrD;MACA,IAAI,CAAChT,UAAU,CAAC,IAAI,EAAE6H,KAAK,CAAC;IAC9B;EACF;EAIAitB,kBAAkBA,CAAAA,EAAY;IAC5B,OACE,IAAI,CAAC9H,KAAK,CAAO,GAAA,CAAC,IAClB,IAAI,CAACA,KAAK,CAAA,CAAU,CAAC,IACrB,IAAI,CAACq4B,qBAAqB,EAAE;EAEhC;EAEAA,qBAAqBA,CAAAA,EAAY;IAC/B,OAAO7S,UAAU,CACf,IAAI,CAAChZ,KAAK,EACV,IAAI,CAACzB,iBAAiB,CAAC,IAAI,CAACljB,KAAK,CAACmB,aAAa,CAAEvd,KAAK,CAAC,EACvD,IAAI,CAACoc,KAAK,CAACjc,KACb,CAAC;EACH;EAEA0sD,qBAAqBA,CAAAA,EAAY;IAC/B,OAAO9S,UAAU,CAAC,IAAI,CAAChZ,KAAK,EAAE,IAAI,CAAC3kB,KAAK,CAAChc,GAAG,EAAE,IAAI,CAAC0pC,cAAc,CAAA,CAAE,CAAC;EACtE;EAEAgjB,gBAAgBA,CAAAA,EAAY;IAC1B,OAAO,IAAI,CAAC34B,GAAG,CAAQ,EAAA,CAAC,IAAI,IAAI,CAACkI,kBAAkB,CAAA,CAAE;EACvD;EAKAjH,SAASA,CAAC23B,QAAiB,GAAG,IAAI,EAAQ;IACxC,IAAIA,QAAQ,GAAG,IAAI,CAACD,gBAAgB,CAAA,CAAE,GAAG,IAAI,CAAC34B,GAAG,CAAA,EAAQ,CAAC,EAAE;IAC5D,IAAI,CAAC5Y,KAAK,CAACjJ,MAAM,CAAClK,gBAAgB,EAAE,IAAI,CAACgU,KAAK,CAACmB,aAAc,CAAC;EAChE;EAKAuW,MAAMA,CAACtxB,IAAe,EAAEuO,GAAqB,EAAQ;IACnD,IAAI,CAAC,IAAI,CAACojB,GAAG,CAAC3xB,IAAI,CAAC,EAAE;MACnB,IAAI,CAAC+E,UAAU,CAACwJ,GAAG,EAAEvO,IAAI,CAAC;IAC5B;EACF;EAIAoiC,QAAQA,CACNooB,EAAqC,EACrCC,QAAe,GAAG,IAAI,CAAC7wC,KAAK,CAAChL,KAAK,CAAA,CAAE,EAIW;IAC/C,MAAM87C,WAEL,GAAG;MAAE3qD,IAAI,EAAE;KAAM;IAClB,IAAI;MACF,MAAMA,IAAI,GAAGyqD,EAAE,CAAC,CAACzqD,IAAI,GAAG,IAAS,KAAK;QACpC2qD,WAAW,CAAC3qD,IAAI,GAAGA,IAAI;QAEvB,MAAM2qD,WAAW;MACnB,CAAC,CAAC;MACF,IAAI,IAAI,CAAC9wC,KAAK,CAACklC,MAAM,CAAC9kC,MAAM,GAAGywC,QAAQ,CAAC3L,MAAM,CAAC9kC,MAAM,EAAE;QACrD,MAAM8oB,SAAS,GAAG,IAAI,CAAClpB,KAAK;QAC5B,IAAI,CAACA,KAAK,GAAG6wC,QAAQ;QAIrB,IAAI,CAAC7wC,KAAK,CAAC2lC,YAAY,GAAGzc,SAAS,CAACyc,YAAY;QAChD,OAAO;UACLx/C,IAAI;UACJ0O,KAAK,EAAEq0B,SAAS,CAACgc,MAAM,CAAC2L,QAAQ,CAAC3L,MAAM,CAAC9kC,MAAM,CAAC;UAC/C+oB,MAAM,EAAE,KAAK;UACbH,OAAO,EAAE,KAAK;UACdE;SACD;MACH;MAEA,OAAO;QACL/iC,IAAI,EAAEA,IAAK;QACX0O,KAAK,EAAE,IAAI;QACXs0B,MAAM,EAAE,KAAK;QACbH,OAAO,EAAE,KAAK;QACdE,SAAS,EAAE;OACZ;IACF,CAAA,CAAC,OAAOr0B,KAAK,EAAE;MACd,MAAMq0B,SAAS,GAAG,IAAI,CAAClpB,KAAK;MAC5B,IAAI,CAACA,KAAK,GAAG6wC,QAAQ;MACrB,IAAIh8C,KAAK,YAAYC,WAAW,EAAE;QAEhC,OAAO;UAAE3O,IAAI,EAAE,IAAI;UAAE0O,KAAK;UAAEs0B,MAAM,EAAE,IAAI;UAAEH,OAAO,EAAE,KAAK;UAAEE;SAAW;MACvE;MACA,IAAIr0B,KAAK,KAAKi8C,WAAW,EAAE;QACzB,OAAO;UACL3qD,IAAI,EAAE2qD,WAAW,CAAC3qD,IAAI;UACtB0O,KAAK,EAAE,IAAI;UACXs0B,MAAM,EAAE,KAAK;UACbH,OAAO,EAAE,IAAI;UACbE;SACD;MACH;MAEA,MAAMr0B,KAAK;IACb;EACF;EAEAk8C,qBAAqBA,CACnB1yC,mBAAwD,EACxD2yC,QAAiB,EACjB;IACA,IAAI,CAAC3yC,mBAAmB,EAAE,OAAO,KAAK;IACtC,MAAM;MACJ4yC,kBAAkB;MAClBC,cAAc;MACdC,aAAa;MACbC,qBAAqB;MACrBC;IACD,CAAA,GAAGhzC,mBAAmB;IAEvB,MAAMizC,SAAS,GACb,CAAC,CAACL,kBAAkB,IACpB,CAAC,CAACC,cAAc,IAChB,CAAC,CAACE,qBAAqB,IACvB,CAAC,CAACD,aAAa,IACf,CAAC,CAACE,cAAc;IAElB,IAAI,CAACL,QAAQ,EAAE;MACb,OAAOM,SAAS;IAClB;IAEA,IAAIL,kBAAkB,IAAI,IAAI,EAAE;MAC9B,IAAI,CAAC9xC,KAAK,CAACjJ,MAAM,CAAC/L,2BAA2B,EAAE8mD,kBAAkB,CAAC;IACpE;IAEA,IAAIC,cAAc,IAAI,IAAI,EAAE;MAC1B,IAAI,CAAC/xC,KAAK,CAACjJ,MAAM,CAAC3N,cAAc,EAAE2oD,cAAc,CAAC;IACnD;IAEA,IAAIC,aAAa,IAAI,IAAI,EAAE;MACzB,IAAI,CAAChyC,KAAK,CAACjJ,MAAM,CAACxG,sBAAsB,EAAEyhD,aAAa,CAAC;IAC1D;IAEA,IAAIC,qBAAqB,IAAI,IAAI,EAAE;MACjC,IAAI,CAACjmD,UAAU,CAACimD,qBAAqB,CAAC;IACxC;IAEA,IAAIC,cAAc,IAAI,IAAI,EAAE;MAC1B,IAAI,CAAClyC,KAAK,CAACjJ,MAAM,CAAChM,0BAA0B,EAAEmnD,cAAc,CAAC;IAC/D;EACF;EAWAE,qBAAqBA,CAAAA,EAAY;IAC/B,OAAO3kC,0BAA0B,CAAC,IAAI,CAAC5M,KAAK,CAAC5Z,IAAI,CAAC;EACpD;EAMAmW,aAAaA,CAACpW,IAAU,EAAuB;IAC7C,OAAOA,IAAI,CAACC,IAAI,KAAK,aAAa;EACpC;EAOAiW,gBAAgBA,CAAClW,IAAiB,EAAU;IAC1C,OAAOA,IAAI,CAACmW,EAAE,CAAClQ,IAAI;EACrB;EAOAyU,wBAAwBA,CAAC1a,IAAU,EAAW;IAC5C,OACE,CAACA,IAAI,CAACC,IAAI,KAAK,kBAAkB,IAC/BD,IAAI,CAACC,IAAI,KAAK,0BAA0B,KAC1C,IAAI,CAACmW,aAAa,CAACpW,IAAI,CAAC44B,QAAQ,CAAC;EAErC;EAEA7jB,gBAAgBA,CACd/U,IAAU,EACyC;IACnD,OAAOA,IAAI,CAACC,IAAI,KAAK,gBAAgB;EACvC;EAEA0a,cAAcA,CAAC3a,IAAU,EAAwB;IAC/C,OAAOA,IAAI,CAACC,IAAI,KAAK,cAAc;EACrC;EAEAorD,gBAAgBA,CAEdriC,QAAiB,GAAG,IAAI,CAACtX,OAAO,CAACxB,UAAU,KAAK,QAAQ,EAC5C;IAEZ,MAAMo7C,SAAS,GAAG,IAAI,CAACzxC,KAAK,CAACulC,MAAM;IACnC,IAAI,CAACvlC,KAAK,CAACulC,MAAM,GAAG,EAAE;IAEtB,MAAMmM,sBAAsB,GAAG,IAAI,CAACC,mBAAmB;IACvD,IAAI,CAACA,mBAAmB,GAAG,IAAIl/C,GAAG,EAAE;IAGpC,MAAMm/C,WAAW,GAAG,IAAI,CAACziC,QAAQ;IACjC,IAAI,CAACA,QAAQ,GAAGA,QAAQ;IAExB,MAAM0iC,QAAQ,GAAG,IAAI,CAACrgC,KAAK;IAC3B,MAAMtB,YAAY,GAAG,IAAI,CAAC4G,eAAe,EAAE;IAC3C,IAAI,CAACtF,KAAK,GAAG,IAAItB,YAAY,CAAC,IAAI,EAAEf,QAAQ,CAAC;IAE7C,MAAM2iC,YAAY,GAAG,IAAI,CAACC,SAAS;IACnC,IAAI,CAACA,SAAS,GAAG,IAAI5P,0BAA0B,EAAE;IAEjD,MAAMmM,aAAa,GAAG,IAAI,CAACvvC,UAAU;IACrC,IAAI,CAACA,UAAU,GAAG,IAAIsvC,iBAAiB,CAAC,IAAI,CAAC;IAE7C,MAAM2D,kBAAkB,GAAG,IAAI,CAACC,eAAe;IAC/C,IAAI,CAACA,eAAe,GAAG,IAAIxC,sBAAsB,CAAC,IAAI,CAAC;IAEvD,OAAO,MAAM;MAEX,IAAI,CAACzvC,KAAK,CAACulC,MAAM,GAAGkM,SAAS;MAC7B,IAAI,CAACE,mBAAmB,GAAGD,sBAAsB;MAGjD,IAAI,CAACviC,QAAQ,GAAGyiC,WAAW;MAC3B,IAAI,CAACpgC,KAAK,GAAGqgC,QAAQ;MACrB,IAAI,CAACE,SAAS,GAAGD,YAAY;MAC7B,IAAI,CAAC/yC,UAAU,GAAGuvC,aAAa;MAC/B,IAAI,CAAC2D,eAAe,GAAGD,kBAAkB;KAC1C;EACH;EAEAE,kBAAkBA,CAAAA,EAAG;IACnB,IAAIC,UAAU,IAAkB;IAChC,IACE,IAAI,CAAChjC,QAAQ,IACb,IAAI,CAAC5W,WAAW,IAAwC,EACxD;MACA45C,UAAU,KAAyB;IACrC;IACA,IAAI,IAAI,CAAC55C,WAAW,KAAwC,EAAE;MAC5D45C,UAAU,KAAyB;IACrC;IAGA,MAAMC,UAAU,GAAG,CAAC,IAAI,CAACjjC,QAAQ,IAAI,IAAI,CAACtX,OAAO,CAACxB,UAAU,KAAK,UAAU;IAC3E,IACE+7C,UAAU,IACV,IAAI,CAAC75C,WAAW,IAAyC,EACzD;MACA45C,UAAU,KAA0B;IACtC;IACA,IAAI,CAACJ,SAAS,CAACzgC,KAAK,CAAC6gC,UAAU,CAAC;IAChC,IAAIE,UAAU,GAAGD,UAAU,UAAyC;IACpE,IAAI,IAAI,CAAC75C,WAAW,IAA4C,EAAE;MAChE85C,UAAU,OAAwB;IACpC;IAMA,IAAI,CAAC7gC,KAAK,CAACF,KAAK,CAAC+gC,UAAU,CAAC;EAC9B;EAEAC,yBAAyBA,CAACj0C,mBAAqC,EAAE;IAC/D,MAAM;MAAE8yC;IAAe,CAAA,GAAG9yC,mBAAmB;IAC7C,IAAI8yC,aAAa,KAAK,IAAI,EAAE;MAC1B,IAAI,CAAChG,YAAY,CAAC,sBAAsB,EAAEgG,aAAa,CAAC;IAC1D;EACF;AACF;AAeO,MAAMoB,gBAAgB,CAAC;EAAA9uD,WAAAA,CAAA,EAAA;IAAA,IAC5BwtD,CAAAA,kBAAkB,GAAgC,IAAI;IAAA,IACtDC,CAAAA,cAAc,GAAgC,IAAI;IAAA,IAClDC,CAAAA,aAAa,GAAgC,IAAI;IAAA,IACjDC,CAAAA,qBAAqB,GAAgC,IAAI;IAAA,IACzDC,CAAAA,cAAc,GAAgC,IAAI;EAAA;AACpD;ACvZA,MAAMmB,IAAI,CAAqB;EAC7B/uD,WAAWA,CAAC0sB,MAAkB,EAAEpb,GAAW,EAAEJ,GAAa,EAAE;IAAA,IAQ5DvO,CAAAA,IAAI,GAAW,EAAE;IAPf,IAAI,CAACrC,KAAK,GAAGgR,GAAG;IAChB,IAAI,CAAC/Q,GAAG,GAAG,CAAC;IACZ,IAAI,CAAC2Q,GAAG,GAAG,IAAI7Q,cAAc,CAAC6Q,GAAG,CAAC;IAClC,IAAI,CAAAwb,MAAM,IAAA,IAAA,GAAA,KAAA,CAAA,GAANA,MAAM,CAAE5X,WAAW,OAAqB,EAAE,IAAI,CAACoC,KAAK,GAAG,CAAC5F,GAAG,EAAE,CAAC,CAAC;IACnE,IAAIob,MAAM,IAAA,IAAA,IAANA,MAAM,CAAElsB,QAAQ,EAAE,IAAI,CAAC0Q,GAAG,CAAC1Q,QAAQ,GAAGksB,MAAM,CAAClsB,QAAQ;EAC3D;AAWF;AACA,MAAMwuD,aAAa,GAAGD,IAAI,CAAC13C,SAAS;AAIlC23C,aAAa,CAACC,OAAO,GAAG,YAAkB;EACxC,MAAMtvB,OAAO,GAAG,IAAIovB,IAAI,CAACj8C,SAAS,EAAG,IAAI,CAACxS,KAAK,EAAE,IAAI,CAAC4Q,GAAG,CAAC5Q,KAAK,CAAC;EAChE,MAAM6R,IAAI,GAAGlD,MAAM,CAACkD,IAAI,CAAC,IAAI,CAAmB;EAChD,KAAK,IAAI2Y,CAAC,GAAG,CAAC,EAAEnO,MAAM,GAAGxK,IAAI,CAACwK,MAAM,EAAEmO,CAAC,GAAGnO,MAAM,EAAEmO,CAAC,EAAE,EAAE;IACrD,MAAMzhB,GAAG,GAAG8I,IAAI,CAAC2Y,CAAC,CAAC;IAEnB,IACEzhB,GAAG,KAAK,iBAAiB,IACzBA,GAAG,KAAK,kBAAkB,IAC1BA,GAAG,KAAK,eAAe,EACvB;MAEAs2B,OAAO,CAACt2B,GAAG,CAAC,GAAG,IAAI,CAACA,GAAG,CAAC;IAC1B;EACF;EAEA,OAAOs2B,OAAO;AAChB,CAAC;AAKI,MAAeuvB,SAAS,SAASxC,UAAU,CAAC;EACjDlzC,SAASA,CAAAA,EAA0C;IACjD,MAAMtI,GAAG,GAAG,IAAI,CAACqL,KAAK,CAAC7B,QAAQ;IAC/B,OAAO,IAAIq0C,IAAI,CAAC,IAAI,EAAE79C,GAAG,CAAC/Q,KAAK,EAAE+Q,GAAG,CAAC;EACvC;EAEAgpB,WAAWA,CAA6BhpB,GAAa,EAAa;IAChE,OAAO,IAAI69C,IAAI,CAAC,IAAI,EAAE79C,GAAG,CAAC/Q,KAAK,EAAE+Q,GAAG,CAAC;EACvC;EAGAmF,eAAeA,CACb1T,IAAsB,EACX;IACX,OAAO,IAAI,CAACu3B,WAAW,CAACv3B,IAAI,CAACuO,GAAG,CAAC5Q,KAAK,CAAC;EACzC;EAIAwZ,UAAUA,CAAqBpX,IAAe,EAAEC,IAAe,EAAK;IAClE,OAAO,IAAI,CAAC4T,YAAY,CAAC7T,IAAI,EAAEC,IAAI,EAAE,IAAI,CAAC4Z,KAAK,CAACmB,aAAc,CAAC;EACjE;EAIAnH,YAAYA,CACV7T,IAAqB,EACrBC,IAAe,EACfwT,MAAgB,EACb;IAOFzT,IAAI,CAAOC,IAAI,GAAGA,IAAI;IACvBD,IAAI,CAACnC,GAAG,GAAG4V,MAAM,CAAChW,KAAK;IACvBuC,IAAI,CAACwO,GAAG,CAAC3Q,GAAG,GAAG4V,MAAM;IACrB,IAAI,IAAI,CAACrB,WAAW,MAAqB,EAAEpS,IAAI,CAACwU,KAAK,CAAE,CAAC,CAAC,GAAGf,MAAM,CAAChW,KAAK;IACxE,IAAI,IAAI,CAAC2U,WAAW,OAA4B,EAAE;MAChD,IAAI,CAAC4rC,cAAc,CAACh+C,IAAS,CAAC;IAChC;IACA,OAAOA,IAAI;EACb;EAEAoa,kBAAkBA,CAACpa,IAAc,EAAEgY,QAAkB,EAAQ;IAC3DhY,IAAI,CAACpC,KAAK,GAAGoa,QAAQ,CAACva,KAAK;IAC3BuC,IAAI,CAACwO,GAAG,CAAC5Q,KAAK,GAAGoa,QAAQ;IACzB,IAAI,IAAI,CAAC5F,WAAW,MAAqB,EAAEpS,IAAI,CAACwU,KAAK,CAAE,CAAC,CAAC,GAAGwD,QAAQ,CAACva,KAAK;EAC5E;EAEAsd,gBAAgBA,CACd/a,IAAc,EACdyT,MAAgB,GAAG,IAAI,CAACoG,KAAK,CAACmB,aAAc,EACtC;IACNhb,IAAI,CAACnC,GAAG,GAAG4V,MAAM,CAAChW,KAAK;IACvBuC,IAAI,CAACwO,GAAG,CAAC3Q,GAAG,GAAG4V,MAAM;IACrB,IAAI,IAAI,CAACrB,WAAW,MAAqB,EAAEpS,IAAI,CAACwU,KAAK,CAAE,CAAC,CAAC,GAAGf,MAAM,CAAChW,KAAK;EAC1E;EAKAuZ,0BAA0BA,CAAChX,IAAc,EAAEysD,YAAsB,EAAQ;IACvE,IAAI,CAACryC,kBAAkB,CAACpa,IAAI,EAAEysD,YAAY,CAACj+C,GAAG,CAAC5Q,KAAK,CAAC;EACvD;EAEAoW,UAAUA,CACRhU,IAAc,EACdC,IAAO,EACyB;IAChCD,IAAI,CAACC,IAAI,GAAGA,IAAI;IAChB,OAAOD,IAAI;EACb;EAEA6a,eAAeA,CAAqC7a,IAAO,EAAK;IAI9D,MAAM;MAAEC,IAAI;MAAErC,KAAK;MAAEC,GAAG;MAAE2Q,GAAG;MAAEgG,KAAK;MAAEvO;IAAM,CAAA,GAAGjG,IAAI;IACnD,MAAMyU,MAAM,GAAGlI,MAAM,CAACmI,MAAM,CAAC43C,aAAa,CAAC;IAC3C73C,MAAM,CAACxU,IAAI,GAAGA,IAAI;IAClBwU,MAAM,CAAC7W,KAAK,GAAGA,KAAK;IACpB6W,MAAM,CAAC5W,GAAG,GAAGA,GAAG;IAChB4W,MAAM,CAACjG,GAAG,GAAGA,GAAG;IAChBiG,MAAM,CAACD,KAAK,GAAGA,KAAK;IACpBC,MAAM,CAACxO,IAAI,GAAGA,IAAI;IAClB,IAAIjG,IAAI,CAACkU,KAAK,EAAEO,MAAM,CAACP,KAAK,GAAGlU,IAAI,CAACkU,KAAK;IACzC,OAAOO,MAAM;EACf;EAEAqG,kBAAkBA,CAChB9a,IAAO,EACJ;IACH,MAAM;MAAEC,IAAI;MAAErC,KAAK;MAAEC,GAAG;MAAE2Q,GAAG;MAAEgG,KAAK;MAAEN;IAAO,CAAA,GAAGlU,IAAI;IACpD,MAAMyU,MAAM,GAAGlI,MAAM,CAACmI,MAAM,CAAC43C,aAAa,CAAC;IAC3C73C,MAAM,CAACxU,IAAI,GAAGA,IAAI;IAClBwU,MAAM,CAAC7W,KAAK,GAAGA,KAAK;IACpB6W,MAAM,CAAC5W,GAAG,GAAGA,GAAG;IAChB4W,MAAM,CAACjG,GAAG,GAAGA,GAAG;IAChBiG,MAAM,CAACD,KAAK,GAAGA,KAAK;IACpBC,MAAM,CAACP,KAAK,GAAGA,KAAK;IACpBO,MAAM,CAACjH,KAAK,GAAIxN,IAAI,CAAmBwN,KAAK;IAC5C,OAAOiH,MAAM;EACf;AACF;AClIA,MAAMi4C,6BAA6B,GAAI1sD,IAAU,IAAW;EAC1D,OAAOA,IAAI,CAACC,IAAI,KAAK,yBAAyB,GAC1CysD,6BAA6B,CAAC1sD,IAAI,CAAC4T,UAAU,CAAC,GAC9C5T,IAAI;AACV,CAAC;AAQc,MAAe2sD,UAAU,SAASH,SAAS,CAAC;EAmDzD9zC,YAAYA,CAAC1Y,IAAU,EAAE2Y,KAAc,GAAG,KAAK,EAA8B;IAAA,IAAA+jB,WAAA,EAAAkwB,YAAA;IAC3E,IAAIv3C,aAAa,GAAGjF,SAAS;IAC7B,IAAIpQ,IAAI,CAACC,IAAI,KAAK,yBAAyB,IAAAy8B,CAAAA,WAAA,GAAI18B,IAAI,CAACkU,KAAK,KAAA,IAAA,IAAVwoB,WAAA,CAAYrnB,aAAa,EAAE;MACxEA,aAAa,GAAGq3C,6BAA6B,CAAC1sD,IAAI,CAAC;MACnD,IAAI2Y,KAAK,EAAE;QAKT,IAAItD,aAAa,CAACpV,IAAI,KAAK,YAAY,EAAE;UACvC,IAAI,CAAC6rD,eAAe,CAACrC,gCAAgC,CACnD15C,MAAM,CAAC9K,8BAA8B,EACrCjF,IACF,CAAC;QACF,CAAA,MAAM,IACLqV,aAAa,CAACpV,IAAI,KAAK,gBAAgB,IACvCoV,aAAa,CAACpV,IAAI,KAAK,kBAAkB,IACzC,CAAC,IAAI,CAACwa,0BAA0B,CAACpF,aAAa,CAAC,EAC/C;UAIA,IAAI,CAAC2D,KAAK,CAACjJ,MAAM,CAAC9K,8BAA8B,EAAEjF,IAAI,CAAC;QACzD;MACF,CAAC,MAAM;QACL,IAAI,CAACgZ,KAAK,CAACjJ,MAAM,CAAC9K,8BAA8B,EAAEjF,IAAI,CAAC;MACzD;IACF;IAEA,QAAQA,IAAI,CAACC,IAAI;MACf,KAAK,YAAY;MACjB,KAAK,eAAe;MACpB,KAAK,cAAc;MACnB,KAAK,mBAAmB;MACxB,KAAK,aAAa;MAClB,KAAK,aAAa;QAChB;MAEF,KAAK,kBAAkB;QACrB,IAAI,CAAC+T,UAAU,CAAChU,IAAI,EAAE,eAAe,CAAC;QACtC,KACE,IAAIooB,CAAC,GAAG,CAAC,EAAEnO,MAAM,GAAGja,IAAI,CAAC63B,UAAU,CAAC5d,MAAM,EAAE4yC,IAAI,GAAG5yC,MAAM,GAAG,CAAC,EAC7DmO,CAAC,GAAGnO,MAAM,EACVmO,CAAC,EAAE,EACH;UAAA,IAAA0kC,YAAA;UACA,MAAM/0C,IAAI,GAAG/X,IAAI,CAAC63B,UAAU,CAACzP,CAAC,CAAC;UAC/B,MAAMrP,MAAM,GAAGqP,CAAC,KAAKykC,IAAI;UACzB,IAAI,CAAC/zC,gCAAgC,CAACf,IAAI,EAAEgB,MAAM,EAAEJ,KAAK,CAAC;UAE1D,IACEI,MAAM,IACLhB,IAAI,CAAU9X,IAAI,KAAK,aAAa,IAAA,CAAA6sD,YAAA,GACrC9sD,IAAI,CAACkU,KAAK,aAAV44C,YAAA,CAAYlwB,gBAAgB,EAC5B;YACA,IAAI,CAAC5jB,KAAK,CAACjJ,MAAM,CAAC7H,iBAAiB,EAAElI,IAAI,CAACkU,KAAK,CAAC0oB,gBAAgB,CAAC;UACnE;QACF;QACA;MAEF,KAAK,gBAAgB;QAAE;UACrB,MAAM;YAAEj2B,GAAG;YAAE6G;UAAO,CAAA,GAAGxN,IAAI;UAC3B,IAAI,IAAI,CAACoW,aAAa,CAACzP,GAAG,CAAC,EAAE;YAC3B,IAAI,CAACiS,UAAU,CAACC,cAAc,CAC5B,IAAI,CAAC3C,gBAAgB,CAACvP,GAAG,CAAC,EAC1BA,GAAG,CAAC6H,GAAG,CAAC5Q,KACV,CAAC;UACH;UACA,IAAI,CAAC8a,YAAY,CAAClL,KAAK,EAAEmL,KAAK,CAAC;UAC/B;QACF;MAEA,KAAK,eAAe;QAAE;UACpB,MAAM,IAAIhH,KAAK,CACb,iEAAiE,GAC/D,+DACJ,CAAC;QACH;MAEA,KAAK,iBAAiB;QACpB,IAAI,CAACqC,UAAU,CAAChU,IAAI,EAAE,cAAc,CAAC;QACrC,IAAI,CAAC28B,gBAAgB,CACnB38B,IAAI,CAACm/B,QAAQ,GAAAytB,YAAA,GACb5sD,IAAI,CAACkU,KAAK,KAAV04C,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAA,CAAYhwB,gBAAgB,EAC5BjkB,KACF,CAAC;QACD;MAEF,KAAK,sBAAsB;QACzB,IAAI3Y,IAAI,CAAC+sD,QAAQ,KAAK,GAAG,EAAE;UACzB,IAAI,CAAC/zC,KAAK,CAACjJ,MAAM,CAACnK,qBAAqB,EAAE5F,IAAI,CAAC2+B,IAAI,CAACnwB,GAAG,CAAC3Q,GAAG,CAAC;QAC7D;QAEA,IAAI,CAACmW,UAAU,CAAChU,IAAI,EAAE,mBAAmB,CAAC;QAE1C,OAAOA,IAAI,CAAC+sD,QAAQ;QACpB,IAAI/sD,IAAI,CAAC2+B,IAAI,CAAC1+B,IAAI,KAAK,aAAa,EAAE;UACpC,IAAI,CAAC+Y,KAAK,CAACjJ,MAAM,CAAC9E,sBAAsB,EAAEjL,IAAI,CAAC2+B,IAAI,CAAC;QACtD;QACA,IAAI,CAACjmB,YAAY,CAAC1Y,IAAI,CAAC2+B,IAAI,EAAEhmB,KAAK,CAAC;QACnC;MAEF,KAAK,yBAAyB;QAG5B,IAAI,CAACD,YAAY,CAACrD,aAAa,EAAGsD,KAAK,CAAC;QACxC;IAKJ;EACF;EAEAG,gCAAgCA,CAC9Bf,IAAU,EACVgB,MAAe,EACfJ,KAAc,EACd;IACA,IAAIZ,IAAI,CAAC9X,IAAI,KAAK,cAAc,EAAE;MAChC,IAAI,CAAC+Y,KAAK,CACRjB,IAAI,CAAC1X,IAAI,KAAK,KAAK,IAAI0X,IAAI,CAAC1X,IAAI,KAAK,KAAK,GACtC0P,MAAM,CAACrI,kBAAkB,GACzBqI,MAAM,CAACpI,gBAAgB,EAC3BoQ,IAAI,CAACpR,GACP,CAAC;IACH,CAAC,MAAM,IAAIoR,IAAI,CAAC9X,IAAI,KAAK,eAAe,EAAE;MACxC,IAAI,CAAC+T,UAAU,CAAC+D,IAAI,EAAE,aAAa,CAAC;MACpC,MAAMi1C,GAAG,GAAGj1C,IAAI,CAAC3I,QAAQ;MACzB,IAAI,CAAC69C,qBAAqB,CAACD,GAAG,EAAqB,KAAK,CAAC;MACzD,IAAI,CAACt0C,YAAY,CAACs0C,GAAG,EAAEr0C,KAAK,CAAC;MAE7B,IAAI,CAACI,MAAM,EAAE;QACX,IAAI,CAACC,KAAK,CAACjJ,MAAM,CAAC7H,iBAAiB,EAAE6P,IAAI,CAAC;MAC5C;IACF,CAAC,MAAM;MACL,IAAI,CAACW,YAAY,CAACX,IAAI,EAAEY,KAAK,CAAC;IAChC;EACF;EAIAgkB,gBAAgBA,CACdiC,QAOG,EACHhC,gBAA6C,EAC7CjkB,KAAc,EACR;IACN,MAAM9a,GAAG,GAAG+gC,QAAQ,CAAC3kB,MAAM,GAAG,CAAC;IAE/B,KAAK,IAAImO,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIvqB,GAAG,EAAEuqB,CAAC,EAAE,EAAE;MAC7B,MAAM8kC,GAAG,GAAGtuB,QAAQ,CAACxW,CAAC,CAAC;MACvB,IAAI,CAAC8kC,GAAG,EAAE;MAEV,IAAI,CAACC,oBAAoB,CACvBvuB,QAAQ,EAORxW,CAAC,EACDzP,KACF,CAAC;MAED,IAAIu0C,GAAG,CAACjtD,IAAI,KAAK,aAAa,EAAE;QAC9B,IAAImoB,CAAC,GAAGvqB,GAAG,EAAE;UACX,IAAI,CAACmb,KAAK,CAACjJ,MAAM,CAAC7H,iBAAiB,EAAEglD,GAAG,CAAC;QAC1C,CAAA,MAAM,IAAItwB,gBAAgB,EAAE;UAC3B,IAAI,CAAC5jB,KAAK,CAACjJ,MAAM,CAAC7H,iBAAiB,EAAE00B,gBAAgB,CAAC;QACxD;MACF;IACF;EACF;EAEAuwB,oBAAoBA,CAClBvuB,QAMG,EACHnhC,KAAa,EACbkb,KAAc,EACR;IACN,MAAM3Y,IAAI,GAAG4+B,QAAQ,CAACnhC,KAAK,CAAC;IAC5B,IAAIuC,IAAI,CAACC,IAAI,KAAK,eAAe,EAAE;MACjC,IAAI,CAAC+T,UAAU,CAAChU,IAAI,EAAE,aAAa,CAAC;MACpC,MAAMgtD,GAAG,GAAGhtD,IAAI,CAACoP,QAAQ;MACzB,IAAI,CAAC69C,qBAAqB,CAACD,GAAG,EAAqB,IAAI,CAAC;MACxD,IAAI,CAACt0C,YAAY,CAACs0C,GAAG,EAAEr0C,KAAK,CAAC;IAC/B,CAAC,MAAM;MACL,IAAI,CAACD,YAAY,CAAC1Y,IAAI,EAAE2Y,KAAK,CAAC;IAChC;EACF;EAEAH,YAAYA,CAACxY,IAAU,EAAEyY,SAAmB,EAAW;IACrD,QAAQzY,IAAI,CAACC,IAAI;MACf,KAAK,YAAY;MACjB,KAAK,eAAe;MACpB,KAAK,cAAc;MACnB,KAAK,mBAAmB;MACxB,KAAK,aAAa;MAClB,KAAK,aAAa;QAChB,OAAO,IAAI;MAEb,KAAK,kBAAkB;QAAE;UACvB,MAAM4sD,IAAI,GAAG7sD,IAAI,CAAC63B,UAAU,CAAC5d,MAAM,GAAG,CAAC;UACvC,OAAOja,IAAI,CAAC63B,UAAU,CAAC4E,KAAK,CAAC,CAAC1kB,IAAI,EAAEqQ,CAAC,KAAK;YACxC,OACErQ,IAAI,CAAC9X,IAAI,KAAK,cAAc,KAC3BmoB,CAAC,KAAKykC,IAAI,IAAI90C,IAAI,CAAC9X,IAAI,KAAK,eAAe,CAAC,IAC7C,IAAI,CAACuY,YAAY,CAACT,IAAI,CAAC;UAE3B,CAAC,CAAC;QACJ;MAEA,KAAK,gBAAgB;QACnB,OAAO,IAAI,CAACS,YAAY,CAACxY,IAAI,CAACwN,KAAK,CAAC;MAEtC,KAAK,eAAe;QAClB,OAAO,IAAI,CAACgL,YAAY,CAACxY,IAAI,CAACoP,QAAQ,CAAC;MAEzC,KAAK,iBAAiB;QACpB,OAAOpP,IAAI,CAACm/B,QAAQ,CAAC1C,KAAK,CACxB2wB,OAAO,IAAIA,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC50C,YAAY,CAAC40C,OAAO,CAC1D,CAAC;MAEH,KAAK,sBAAsB;QACzB,OAAOptD,IAAI,CAAC+sD,QAAQ,KAAK,GAAG;MAE9B,KAAK,yBAAyB;QAC5B,OAAO,IAAI,CAACv0C,YAAY,CAACxY,IAAI,CAAC4T,UAAU,CAAC;MAE3C,KAAK,kBAAkB;MACvB,KAAK,0BAA0B;QAC7B,OAAO,CAAC6E,SAAS;MAEnB;QACE,OAAO,KAAK;IAChB;EACF;EAIAomB,gBAAgBA,CACdD,QAcO,EAEPE,mBAA6B,EAevB;IACN,OAAOF,QAAQ;EACjB;EAEAyuB,oBAAoBA,CAClBzuB,QAcO,EACPE,mBAA6B,EACvB;IACN,IAAI,CAACD,gBAAgB,CAACD,QAAQ,EAAEE,mBAAmB,CAAC;IAEpD,KAAK,MAAM/D,IAAI,IAAI6D,QAAQ,EAAE;MAC3B,IAAI,CAAA7D,IAAI,IAAJA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAE96B,IAAI,MAAK,iBAAiB,EAAE;QACpC,IAAI,CAACotD,oBAAoB,CAACtyB,IAAI,CAACoE,QAAQ,CAAC;MAC1C;IACF;EACF;EAIAmuB,WAAWA,CAETp1C,mBAA6C,EAC9B;IACf,MAAMlY,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAiB;IAC5C,IAAI,CAAC0S,IAAI,CAAA,CAAE;IACXxpB,IAAI,CAACoP,QAAQ,GAAG,IAAI,CAACgtB,uBAAuB,CAC1ClkB,mBAAmB,EACnB9H,SACF,CAAC;IACD,OAAO,IAAI,CAACgH,UAAU,CAACpX,IAAI,EAAE,eAAe,CAAC;EAC/C;EAGAutD,gBAAgBA,CAAAA,EAA4B;IAC1C,MAAMvtD,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAe;IAC1C,IAAI,CAAC0S,IAAI,CAAA,CAAE;IACX,MAAMpa,QAAQ,GAAG,IAAI,CAACuyB,gBAAgB,EAAE;IACxC,IAAIvyB,QAAQ,CAACnP,IAAI,KAAK,aAAa,EAAE;MACnC,IAAI,CAAC+Y,KAAK,CAACjJ,MAAM,CAACjG,qBAAqB,EAAEsF,QAAQ,CAAC;IACpD;IACApP,IAAI,CAACoP,QAAQ,GAAGA,QAAQ;IACxB,OAAO,IAAI,CAACgI,UAAU,CAACpX,IAAI,EAAE,aAAa,CAAC;EAC7C;EAGA2hC,gBAAgBA,CAAAA,EAAwB;IAEtC,QAAQ,IAAI,CAAC9nB,KAAK,CAAC5Z,IAAI;MACrB,KAAA,CAAA;QAAkB;UAChB,MAAMD,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAgB;UAC3C,IAAI,CAAC0S,IAAI,CAAA,CAAE;UACXxpB,IAAI,CAACm/B,QAAQ,GAAG,IAAI,CAACquB,gBAAgB,CAGnCC,CAAAA,EAAAA,EAAAA,GACF,CAAC;UACD,OAAO,IAAI,CAACr2C,UAAU,CAACpX,IAAI,EAAE,cAAc,CAAC;QAC9C;MAEA,KAAA,CAAA;QACE,OAAO,IAAI,CAAC0tD,eAAe,CAAA,CAAA,EAAY,IAAI,CAAC;MAE9C,KAAA,EAAA;QACE,OAAO,IAAI,CAACC,gBAAgB,CAAC,IAAI,CAAC;IACtC;IAGA,OAAO,IAAI,CAACv7B,eAAe,EAAE;EAC/B;EAeAo7B,gBAAgBA,CAEdvuB,KAAgB,EAChB2uB,aAAyD,EACzDr7C,KAA4B,EACc;IAC1C,MAAMs7C,UAAU,GAAGt7C,KAAK,IAAoC;IAE5D,MAAMu7C,IAA8C,GAAG,EAAE;IACzD,IAAI10B,KAAK,GAAG,IAAI;IAChB,OAAO,CAAC,IAAI,CAACxH,GAAG,CAACqN,KAAK,CAAC,EAAE;MACvB,IAAI7F,KAAK,EAAE;QACTA,KAAK,GAAG,KAAK;MACf,CAAC,MAAM;QACL,IAAI,CAAC7H,MAAM,CAAA,EAAS,CAAC;MACvB;MACA,IAAIs8B,UAAU,IAAI,IAAI,CAAC77B,KAAK,CAAA,EAAS,CAAC,EAAE;QACtC87B,IAAI,CAAC3wC,IAAI,CAAC,IAAI,CAAC;MAChB,CAAA,MAAM,IAAI,IAAI,CAACyU,GAAG,CAACqN,KAAK,CAAC,EAAE;QAC1B;MACD,CAAA,MAAM,IAAI,IAAI,CAACjN,KAAK,CAAA,EAAY,CAAC,EAAE;QAClC,IAAIpiB,IAAa,GAAG,IAAI,CAAC29C,gBAAgB,EAAE;QAC3C,IACoC,IAAI,CAAC11C,SAAS,CAAC,MAAM,CAAC,IACxDtF,KAAK,IAA2C,EAChD;UACA3C,IAAI,GAAG,IAAI,CAACuwB,sBAAsB,CAACvwB,IAAI,CAAC;QAC1C;QACAk+C,IAAI,CAAC3wC,IAAI,CAACvN,IAAI,CAAC;QACf,IAAI,CAAC,IAAI,CAACm+C,mBAAmB,CAACH,aAAa,CAAC,EAAE;UAC5C,IAAI,CAACr8B,MAAM,CAAC0N,KAAK,CAAC;UAClB;QACF;MACF,CAAC,MAAM;QACL,MAAMtlB,UAAU,GAAG,EAAE;QACrB,IAAIpH,KAAK,IAA2C,EAAE;UACpD,IAAI,IAAI,CAACyf,KAAK,CAAA,EAAM,CAAC,IAAI,IAAI,CAACna,SAAS,CAAC,YAAY,CAAC,EAAE;YACrD,IAAI,CAACmB,KAAK,CACRjJ,MAAM,CAACzF,6BAA6B,EACpC,IAAI,CAACuP,KAAK,CAAC7B,QACb,CAAC;UACH;UAEA,OAAO,IAAI,CAACga,KAAK,CAAA,EAAM,CAAC,EAAE;YACxBrY,UAAU,CAACwD,IAAI,CAAC,IAAI,CAAC6wC,cAAc,CAAE,CAAA,CAAC;UACxC;QACF;QACAF,IAAI,CAAC3wC,IAAI,CAAC,IAAI,CAAC8wC,mBAAmB,CAAC17C,KAAK,EAAEoH,UAAU,CAAC,CAAC;MACxD;IACF;IACA,OAAOm0C,IAAI;EACb;EAGAI,wBAAwBA,CAEtBn2C,IAAyB,EACZ;IACb,IAAI,CAACyR,IAAI,CAAA,CAAE;IACX,IAAI,IAAI,CAAC3R,SAAS,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAACma,KAAK,CAAS,EAAA,CAAC,EAAE;MAC5Dja,IAAI,CAAC3I,QAAQ,GAAG,IAAI,CAACu+C,gBAAgB,CAAC,IAAI,CAAC;MAC3C,IAAI,CAAC30C,KAAK,CAACjJ,MAAM,CAACjG,qBAAqB,EAAEiO,IAAI,CAAC3I,QAAQ,CAAC;IACzD,CAAC,MAAM;MAEL2I,IAAI,CAAC3I,QAAQ,GAAG,IAAI,CAACgjB,eAAe,EAAE;IACxC;IACA,IAAI,CAAC27B,mBAAmB,CAAA,GAA0B,CAAC;IACnD,OAAO,IAAI,CAAC32C,UAAU,CAACW,IAAI,EAAE,aAAa,CAAC;EAC7C;EAGAo2C,oBAAoBA,CAAAA,EAAiD;IACnE,MAAM;MAAEluD,IAAI;MAAE+X;KAAU,GAAG,IAAI,CAAC6B,KAAK;IACrC,IAAI5Z,IAAI,OAAgB,EAAE;MACxB,OAAO,IAAI,CAACiuD,wBAAwB,CAAC,IAAI,CAACp3C,SAAS,CAAE,CAAA,CAAC;IACxD;IAEA,MAAMiB,IAAI,GAAG,IAAI,CAACjB,SAAS,EAAsB;IACjD,IAAI7W,IAAI,QAAmB,EAAE;MAC3B,IAAI,CAAC+kD,YAAY,CAAC,sBAAsB,EAAEhtC,QAAQ,CAAC;MACnD,IAAI,CAACY,UAAU,CAACC,cAAc,CAAC,IAAI,CAACgB,KAAK,CAACrM,KAAK,EAAEwK,QAAQ,CAAC;MAC1DD,IAAI,CAACpR,GAAG,GAAG,IAAI,CAACoP,gBAAgB,EAAE;IACpC,CAAC,MAAM;MACL,IAAI,CAACq4C,iBAAiB,CAACr2C,IAAI,CAAC;IAC9B;IACAA,IAAI,CAAC9C,MAAM,GAAG,KAAK;IACnB,OAAO,IAAI,CAACgrB,iBAAiB,CAC3BloB,IAAI,EACJC,QAAQ,EACR,KAAK,EACL,KAAK,EACL,IAAI,EACJ,KACF,CAAC;EACH;EAGAi2C,mBAAmBA,CAEjB17C,KAA4B,EAC5BoH,UAAuB,EACQ;IAC/B,MAAMglB,IAAI,GAAG,IAAI,CAACyB,iBAAiB,EAAE;IACrC,IACoC,IAAI,CAACvoB,SAAS,CAAC,MAAM,CAAC,IACxDtF,KAAK,IAA2C,EAChD;MACA,IAAI,CAAC4tB,sBAAsB,CAACxB,IAAI,CAAC;IACnC;IACA,IAAIhlB,UAAU,CAACM,MAAM,EAAE;MACrB0kB,IAAI,CAAChlB,UAAU,GAAGA,UAAU;MAC5B,IAAI,CAAC3C,0BAA0B,CAAC2nB,IAAI,EAAEhlB,UAAU,CAAC,CAAC,CAAC,CAAC;IACtD;IACA,MAAMuzC,GAAG,GAAG,IAAI,CAAC9sB,iBAAiB,CAACzB,IAAI,CAACnwB,GAAG,CAAC5Q,KAAK,EAAE+gC,IAAI,CAAC;IACxD,OAAOuuB,GAAG;EACZ;EAGA/sB,sBAAsBA,CAAC/F,KAAc,EAAW;IAC9C,OAAOA,KAAK;EACd;EASAgG,iBAAiBA,CAEfpoB,QAA0B,EAC1B2mB,IAAqB,EACZ;IACT3mB,QAAQ,IAAA,IAAA,GAARA,QAAQ,GAARA,QAAQ,GAAK,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IAChC2mB,IAAI,GAAGA,IAAI,IAAJA,IAAAA,GAAAA,IAAI,GAAI,IAAI,CAACgD,gBAAgB,CAAA,CAAE;IACtC,IAAI,CAAC,IAAI,CAAC/P,GAAG,GAAM,CAAC,EAAE,OAAO+M,IAAI;IAEjC,MAAM3+B,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAAoBxf,QAAQ,CAAC;IAC1D,IAAI2mB,IAAI,CAAC1+B,IAAI,KAAK,aAAa,EAAE;MAC/B,IAAI,CAAC+Y,KAAK,CAACjJ,MAAM,CAAC9E,sBAAsB,EAAE0zB,IAAI,CAAC;IACjD;IACA3+B,IAAI,CAAC2+B,IAAI,GAAGA,IAAI;IAChB3+B,IAAI,CAACw1B,KAAK,GAAG,IAAI,CAAC4G,uBAAuB,EAAE;IAC3C,OAAO,IAAI,CAAChlB,UAAU,CAACpX,IAAI,EAAE,mBAAmB,CAAC;EACnD;EA+BAoY,WAAWA,CACTnY,IAAY,EACZoY,sBAA+B,EAE/BC,yBAAkC,EAElCC,OAAoB,EACkB;IACtC,QAAQtY,IAAI;MACV,KAAK,mBAAmB;QACtB,OAAO,MAAM;MACf,KAAK,aAAa;QAChB,OAAO,UAAU;MACnB,KAAK,gBAAgB;QACnB,OAAO,OAAO;MAChB,KAAK,yBAAyB;QAC5B,OAAO,YAAY;MACrB,KAAK,cAAc;QACjB,OAAO,UAAU;MACnB,KAAK,eAAe;QAClB,OAAO,YAAY;MACrB,KAAK,aAAa;QAChB,OAAO,IAAI;MACb,KAAK,gBAAgB;QACnB,IACE,CAACoY,sBAAsB,IACvB,CAAC,IAAI,CAACwB,KAAK,CAAC6O,MAAM,IAClB,IAAI,CAACtW,WAAW,OAAqB,EACrC;UACA,OAAO,IAAI;QACb;IACJ;IACA,OAAO,KAAK;EACd;EAGAqI,0BAA0BA,CAAC7G,UAAgB,EAAW;IACpD,OAAOA,UAAU,CAAC3T,IAAI,KAAK,0BAA0B;EACvD;EA2BAouD,SAASA,CACPz6C,UAKuB,EACvBlP,QAAsB,EACtB6T,OAAoB,KAAwB,EAC5C+1C,YAAiC,GAAG,KAAK,EACzChrB,iBAA0B,GAAG,KAAK,EAClCirB,wBAAiC,GAAG,KAAK,EACzCl2C,sBAA+B,GAAG,KAAK,EACjC;IAAA,IAAAm2C,iBAAA;IACN,MAAMvuD,IAAI,GAAG2T,UAAU,CAAC3T,IAAI;IAK5B,IAAI,IAAI,CAAC0a,cAAc,CAAC/G,UAAU,CAAC,EAAE;IAErC,MAAM6G,0BAA0B,GAC9B,IAAI,CAACA,0BAA0B,CAAC7G,UAAU,CAAC;IAE7C,IAAI6G,0BAA0B,IAAIxa,IAAI,KAAK,kBAAkB,EAAE;MAC7D,IAAIwa,0BAA0B,EAAE;QAC9B,IAAI,CAACuqC,YAAY,CAAC,wBAAwB,EAAEpxC,UAAU,CAACpF,GAAG,CAAC5Q,KAAK,CAAC;QACjE,IAAI8G,QAAQ,CAACzE,IAAI,KAAK,sBAAsB,EAAE;UAC5C,IAAI,CAAC+Y,KAAK,CAACjJ,MAAM,CAACnL,0BAA0B,EAAEgP,UAAU,EAAE;YACxDlP;UACF,CAAC,CAAC;QACJ;MACF;MAEA,IAAI6T,OAAO,OAA0B,EAAE;QACrC,IAAI,CAACS,KAAK,CAACjJ,MAAM,CAAC5K,6BAA6B,EAAEyO,UAAU,CAAC;MAC9D;MACA;IACF;IAEA,IAAI3T,IAAI,KAAK,YAAY,EAAE;MACzB,IAAI,CAACwuD,eAAe,CAAC76C,UAAU,EAAE2E,OAAO,EAAE+qB,iBAAiB,CAAC;MAE5D,MAAM;QAAEr9B;MAAM,CAAA,GAAG2N,UAAU;MAE3B,IAAI06C,YAAY,EAAE;QAChB,IAAIA,YAAY,CAACplC,GAAG,CAACjjB,IAAI,CAAC,EAAE;UAC1B,IAAI,CAAC+S,KAAK,CAACjJ,MAAM,CAACtI,SAAS,EAAEmM,UAAU,CAAC;QAC1C,CAAC,MAAM;UACL06C,YAAY,CAACriC,GAAG,CAAChmB,IAAI,CAAC;QACxB;MACF;MAEA;IACD,CAAA,MAAM,IAAIhG,IAAI,KAAK,aAAa,IAAIyE,QAAQ,CAACzE,IAAI,KAAK,aAAa,EAAE;MACpE,IAAI,CAAC+Y,KAAK,CAACjJ,MAAM,CAAC/E,2BAA2B,EAAE4I,UAAU,CAAC;IAC5D;IAEA,MAAM86C,mBAAmB,GAAGhC,6BAA6B,CAAC94C,UAAU,CAAC;IACrEyE,sBAAsB,KAAtBA,sBAAsB,GACpBq2C,mBAAmB,CAACzuD,IAAI,KAAK,gBAAgB,KAC5CyuD,mBAAmB,CAACt1C,MAAM,CAACnZ,IAAI,KAAK,QAAQ,IAC3CyuD,mBAAmB,CAACt1C,MAAM,CAACnZ,IAAI,KAAK,OAAO,CAAC,CAAA;IAChD,MAAM0uD,QAAQ,GAAG,IAAI,CAACv2C,WAAW,CAC/BnY,IAAI,EACJoY,sBAAsB,EACtB,EAAEk2C,wBAAwB,KAAAC,iBAAA,GAAI56C,UAAU,CAACM,KAAK,KAAA,IAAA,IAAhBs6C,iBAAA,CAAkBn5C,aAAa,CAAC,IAC5D3Q,QAAQ,CAACzE,IAAI,KAAK,sBAAsB,EAC1CsY,OACF,CAAC;IAED,IAAIo2C,QAAQ,KAAK,IAAI,EAAE;IACvB,IAAIA,QAAQ,KAAK,KAAK,EAAE;MACtB,MAAMC,eAAe,GACnBr2C,OAAO,OAA0B,GAC7BxI,MAAM,CAACtL,UAAU,GACjBsL,MAAM,CAACpL,iBAAiB;MAE9B,IAAI,CAACqU,KAAK,CAAC41C,eAAe,EAAEh7C,UAAU,EAAE;QAAElP;MAAS,CAAC,CAAC;MACrD;IACF;IAEA,IAAIiC,GAAW,EAAEkoD,yBAAkC;IACnD,IAAI,OAAOF,QAAQ,KAAK,QAAQ,EAAE;MAChChoD,GAAG,GAAGgoD,QAAQ;MACdE,yBAAyB,GAAG5uD,IAAI,KAAK,yBAAyB;IAChE,CAAC,MAAM;MACL,CAAC0G,GAAG,EAAEkoD,yBAAyB,CAAC,GAAGF,QAAQ;IAC7C;IAEA,MAAMG,YAAY,GAChB7uD,IAAI,KAAK,cAAc,IAAIA,IAAI,KAAK,eAAe,GAC9C;MAAEA;IAAM,CAAA,GACTyE,QAAQ;IAGd,MAAMosB,GAAG,GAAGld,UAAU,CAACjN,GAAG,CAAC;IAC3B,IAAI0I,KAAK,CAACC,OAAO,CAACwhB,GAAG,CAAC,EAAE;MACtB,KAAK,MAAMi+B,KAAK,IAAIj+B,GAAG,EAAE;QACvB,IAAIi+B,KAAK,EAAE;UACT,IAAI,CAACV,SAAS,CACZU,KAAK,EACLD,YAAY,EACZv2C,OAAO,EACP+1C,YAAY,EACZhrB,iBAAiB,EACjBurB,yBAAyB,EACzB,IACF,CAAC;QACH;MACF;IACD,CAAA,MAAM,IAAI/9B,GAAG,EAAE;MACd,IAAI,CAACu9B,SAAS,CACZv9B,GAAG,EACHg+B,YAAY,EACZv2C,OAAO,EACP+1C,YAAY,EACZhrB,iBAAiB,EACjBurB,yBAAyB,EACzBx2C,sBACF,CAAC;IACH;EACF;EAEAo2C,eAAeA,CACbtvC,EAAc,EACdoM,WAAwB,EACxB+X,iBAA0B,GAAG,KAAK,EAClC;IACA,IACE,IAAI,CAACzpB,KAAK,CAAC6O,MAAM,KAChB4a,iBAAiB,GACdla,wBAAwB,CAACjK,EAAE,CAAClZ,IAAI,EAAE,IAAI,CAAC+iB,QAAQ,CAAC,GAChDG,4BAA4B,CAAChK,EAAE,CAAClZ,IAAI,CAAC,CAAC,EAC1C;MACA,IAAIslB,WAAW,OAA0B,EAAE;QACzC,IAAI,CAACvS,KAAK,CAACjJ,MAAM,CAACvE,mBAAmB,EAAE2T,EAAE,EAAE;UAAE1T,aAAa,EAAE0T,EAAE,CAAClZ;QAAK,CAAC,CAAC;MACxE,CAAC,MAAM;QACL,IAAI,CAAC+S,KAAK,CAACjJ,MAAM,CAACrE,0BAA0B,EAAEyT,EAAE,EAAE;UAChDxT,WAAW,EAAEwT,EAAE,CAAClZ;QAClB,CAAC,CAAC;MACJ;IACF;IAEA,IAAIslB,WAAW,OAAqC,IAAIpM,EAAE,CAAClZ,IAAI,KAAK,KAAK,EAAE;MACzE,IAAI,CAAC+S,KAAK,CAACjJ,MAAM,CAACvK,mBAAmB,EAAE2Z,EAAE,CAAC;IAC5C;IAEA,IAAI,EAAEoM,WAAW,KAAwB,CAAC,EAAE;MAC1C,IAAI,CAACyjC,yBAAyB,CAAC7vC,EAAE,EAAEoM,WAAW,CAAC;IACjD;EACF;EAEAyjC,yBAAyBA,CAACC,UAAsB,EAAE12C,OAAoB,EAAE;IACtE,IAAI,CAAC8S,KAAK,CAACC,WAAW,CAAC2jC,UAAU,CAAChpD,IAAI,EAAEsS,OAAO,EAAE02C,UAAU,CAACzgD,GAAG,CAAC5Q,KAAK,CAAC;EACxE;EAEAqvD,qBAAqBA,CAACjtD,IAAU,EAAEkvD,YAAqB,EAAQ;IAC7D,QAAQlvD,IAAI,CAACC,IAAI;MACf,KAAK,yBAAyB;QAC5B,IAAI,CAACgtD,qBAAqB,CAACjtD,IAAI,CAAC4T,UAAU,EAAEs7C,YAAY,CAAC;QACzD;MACF,KAAK,YAAY;MACjB,KAAK,kBAAkB;QACrB;MACF,KAAK,iBAAiB;MACtB,KAAK,kBAAkB;QACrB,IAAIA,YAAY,EAAE;MAEpB;QACE,IAAI,CAACl2C,KAAK,CAACjJ,MAAM,CAAC1K,4BAA4B,EAAErF,IAAI,CAAC;IACzD;EACF;EAEA+tD,mBAAmBA,CACjB9uB,KAAiD,EACxC;IACT,IAAI,CAAC,IAAI,CAACjN,KAAK,CAAA,EAAS,CAAC,EAAE;MACzB,OAAO,KAAK;IACd;IAEA,IAAI,CAAChZ,KAAK,CACR,IAAI,CAACuiB,iBAAiB,CAAA,CAAE,KAAK0D,KAAK,GAC9BlvB,MAAM,CAAC7H,iBAAiB,GACxB6H,MAAM,CAACzN,gBAAgB,EAC3B,IAAI,CAACuX,KAAK,CAAC7B,QACb,CAAC;IAED,OAAO,IAAI;EACb;AACF;ACj3BA,MAAMm3C,8BAA8B,GAAG,+BAA+B;AAYtE,SAASC,OAAOA,CAAIC,CAAY,EAAK;EACnC,IAAIA,CAAC,IAAI,IAAI,EAAE;IACb,MAAM,IAAI19C,KAAK,CAAC,cAAc09C,CAAC,SAAS,CAAC;EAC3C;EACA,OAAOA,CAAC;AACV;AAEA,SAASC,MAAMA,CAACD,CAAU,EAAQ;EAChC,IAAI,CAACA,CAAC,EAAE;IACN,MAAM,IAAI19C,KAAK,CAAC,aAAa,CAAC;EAChC;AACF;AAcA,MAAM49C,QAAQ,GAAGpgD,cAAc,YAAY,CAAC;EAC1CqgD,+BAA+B,EAAEA,CAAC;IAAEC;GAAoC,KACtE,WAAWA,UAAU,gEAAgE;EACvFC,8BAA8B,EAAEA,CAAC;IAC/BC;GAGD,KACC,aAAaA,YAAY,6DAA6D;EACxFC,wBAAwB,EACtB,qDAAqD;EACvD1hD,kCAAkC,EAChC,6DAA6D;EAC/DC,gCAAgC,EAAE,0CAA0C;EAC5E0hD,qBAAqB,EAAE,mDAAmD;EAC1EC,sBAAsB,EAAE,oDAAoD;EAC5E1hD,kEAAkE,EAChE,4GAA4G;EAC9G2hD,4BAA4B,EAC1B,6DAA6D;EAC/DC,eAAe,EAAEA,CAAC;IAAE3vD;GAA+B,KACjD,+BAA+BA,IAAI,OAAO;EAC5C4vD,+BAA+B,EAC7B,mDAAmD;EACrDC,gCAAgC,EAC9B,2DAA2D;EAC7DC,8BAA8B,EAAEA,CAAC;IAC/BC;GAGD,KAAK,yCAAyCA,QAAQ,IAAI;EAC3DC,iBAAiB,EAAEA,CAAC;IAAED;GAAoC,KACxD,wBAAwBA,QAAQ,IAAI;EAGtCE,uBAAuB,EAAEA,CAAC;IAAEzjD;GAA4C,KACtE,IAAIA,KAAK,yBAAyB;EACpC0jD,kBAAkB,EAAE,qCAAqC;EACzDC,mBAAmB,EAAE,sCAAsC;EAC3DC,iCAAiC,EAC/B,8DAA8D;EAChEC,wBAAwB,EAAE,4CAA4C;EACtE9iC,6BAA6B,EAC3B,4DAA4D;EAC9D+iC,qBAAqB,EAAEA,CAAC;IACtBC;GAGD,KACC,IAAIA,SAAS,CAAC,CAAC,CAAC,mCAAmCA,SAAS,CAAC,CAAC,CAAC,aAAa;EAC9EC,yBAAyB,EACvB,uDAAuD;EACzDC,8BAA8B,EAAEA,CAAC;IAC/BV;GAGD,KACC,4DAA4DA,QAAQ,KAAK;EAC3EW,wBAAwB,EACtB,sDAAsD;EACxDC,yBAAyB,EACvB,0DAA0D;EAC5DC,uBAAuB,EACrB,qDAAqD;EACvDC,qCAAqC,EACnC,mDAAmD;EACrDC,yBAAyB,EAAEA,CAAC;IAAEtkD;GAA4C,KACxE,IAAIA,KAAK,sFAAsF;EACjGukD,sCAAsC,EAAGhB,QAAoB,IAC3D,IAAIA,QAAQ,yDAAyD;EACvEiB,2BAA2B,EAAEA,CAAC;IAAEjB;GAAoC,KAClE,IAAIA,QAAQ,4CAA4C;EAC1DkB,8BAA8B,EAAEA,CAAC;IAAElB;GAAoC,KACrE,IAAIA,QAAQ,+CAA+C;EAC7DmB,uCAAuC,EAAEA,CAAC;IACxCnB;GAGD,KACC,IAAIA,QAAQ,qFAAqF;EAEnGoB,iCAAiC,EAAGpB,QAAoB,IACtD,IAAIA,QAAQ,kDAAkD;EAChEqB,qBAAqB,EAAEA,CAAC;IACtBC;GAGD,KACC,IAAIA,gBAAgB,CAAC,CAAC,CAAC,4BAA4BA,gBAAgB,CAAC,CAAC,CAAC,aAAa;EACrFC,iDAAiD,EAC/C,6DAA6D,GAC7D,gGAAgG;EAClGC,uBAAuB,EACrB,yDAAyD;EAC3DC,oBAAoB,EAClB,6DAA6D;EAC/DC,iCAAiC,EAC/B,4DAA4D;EAC9DC,yCAAyC,EACvC,kFAAkF;EACpFC,0BAA0B,EACxB,uDAAuD;EACzDC,qBAAqB,EACnB,4GAA4G;EAC9G5jC,iBAAiB,EACf,gFAAgF;EAClF6jC,yBAAyB,EACvB,uDAAuD;EACzDC,8BAA8B,EAAEA,CAAC;IAC/B/B;GAGD,KACC,4DAA4DA,QAAQ,KAAK;EAC3EgC,0BAA0B,EACxB,mFAAmF;EACrFC,sBAAsB,EACpB,gHAAgH;EAClHC,qBAAqB,EACnB,mGAAmG;EACrGjkD,sCAAsC,EACpC,qDAAqD;EACvDC,kCAAkC,EAChC,8CAA8C;EAChDC,+BAA+B,EAC7B,wDAAwD;EAC1DgkD,uCAAuC,EAAEA,CAAC;IACxCC;EAGD,CAAA,KACC,yBAAyBA,iBAAiB,kDAAkDA,iBAAiB,KAAK;EACpHC,6BAA6B,EAC3B,+CAA+C;EACjDC,sBAAsB,EACpB,0KAA0K;EAC5KC,yBAAyB,EACvB,mHAAmH;EACrHC,sCAAsC,EACpC,kFAAkF;EACpFC,+BAA+B,EAC7B,0GAA0G;EAC5GC,+BAA+B,EAC7B,0GAA0G;EAC5GC,2BAA2B,EACzB,uEAAuE;EACzEC,kBAAkB,EAChB,8EAA8E;EAChFC,wBAAwB,EAAE,wCAAwC;EAClEC,6BAA6B,EAAE,6CAA6C;EAC5EC,6BAA6B,EAC3B,qDAAqD;EACvDC,gCAAgC,EAC9B,mEAAmE;EACrEC,iCAAiC,EAAEA,CAAC;IAAEpzD;GAAwB,KAC5D,yFAAyFA,IAAI,GAAG;EAClGqzD,gCAAgC,EAAGjzD,IAA6B,IAC9D,IAAIA,IAAI;AACZ,CAAC,CAAC;AAMF,SAASkzD,mBAAmBA,CAAC/lD,KAAa,EAAmC;EAC3E,QAAQA,KAAK;IACX,KAAK,KAAK;MACR,OAAO,cAAc;IACvB,KAAK,SAAS;MACZ,OAAO,kBAAkB;IAC3B,KAAK,QAAQ;MACX,OAAO,iBAAiB;IAC1B,KAAK,OAAO;MACV,OAAO,gBAAgB;IACzB,KAAK,QAAQ;MACX,OAAO,iBAAiB;IAC1B,KAAK,QAAQ;MACX,OAAO,iBAAiB;IAC1B,KAAK,QAAQ;MACX,OAAO,iBAAiB;IAC1B,KAAK,QAAQ;MACX,OAAO,iBAAiB;IAC1B,KAAK,WAAW;MACd,OAAO,oBAAoB;IAC7B,KAAK,SAAS;MACZ,OAAO,kBAAkB;IAC3B;MACE,OAAO4C,SAAS;EACpB;AACF;AAEA,SAASojD,kBAAkBA,CAACpD,QAAgB,EAA+B;EACzE,OACEA,QAAQ,KAAK,SAAS,IAAIA,QAAQ,KAAK,QAAQ,IAAIA,QAAQ,KAAK,WAAW;AAE/E;AAEA,SAASqD,uBAAuBA,CAC9BrD,QAAgB,EACmB;EACnC,OAAOA,QAAQ,KAAK,IAAI,IAAIA,QAAQ,KAAK,KAAK;AAChD;AA0BA,IAAAsD,UAAA,GAAgB1hD,UAA0D,IACxE,MAAM2hD,qBAAqB,SAAS3hD,UAAU,CAAmB;EAAA1U,WAAAA,CAAA,GAAAia,IAAA,EAAA;IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA;IAAA,IAgd/Dq8C,CAAAA,qBAAqB,GAAG,IAAI,CAACC,gBAAgB,CAACC,IAAI,CAAC,IAAI,EAAE;MACvDC,gBAAgB,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;MAC/BC,mBAAmB,EAAE,CACnB,OAAO,EACP,QAAQ,EACR,SAAS,EACT,WAAW,EACX,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,CACX;MACDC,aAAa,EAAE1E,QAAQ,CAAC+B;IAC1B,CAAC,CAAC;IAAA,IAEF4C,CAAAA,oBAAoB,GAAG,IAAI,CAACL,gBAAgB,CAACC,IAAI,CAAC,IAAI,EAAE;MACtDC,gBAAgB,EAAE,CAAC,OAAO,CAAC;MAE3BC,mBAAmB,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;MAClCC,aAAa,EAAE1E,QAAQ,CAACgC;IAC1B,CAAC,CAAC;IAAA,IAEF4C,CAAAA,0BAA0B,GAAG,IAAI,CAACN,gBAAgB,CAACC,IAAI,CAAC,IAAI,EAAE;MAC5DC,gBAAgB,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;MACxCC,mBAAmB,EAAE,CACnB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,CACX;MACDC,aAAa,EAAE1E,QAAQ,CAAC+B;IAC1B,CAAC,CAAC;EAAA;EAjfF3gC,eAAeA,CAAAA,EAAiD;IAC9D,OAAO8qB,sBAAsB;EAC/B;EAEA2Y,cAAcA,CAAAA,EAAY;IAGxB,OAAO9tC,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC;EAC3C;EAEAo0D,wBAAwBA,CAAAA,EAAG;IACzB,OACE,IAAI,CAACriC,KAAK,CAAA,CAAY,CAAC,IACvB,IAAI,CAACA,KAAK,EAAU,CAAC,IACrB,IAAI,CAACA,KAAK,CAAQ,EAAA,CAAC,IACnB,IAAI,CAACA,KAAK,CAAY,EAAA,CAAC,IACvB,IAAI,CAACA,KAAK,CAAA,GAAe,CAAC,IAC1B,IAAI,CAACo5B,qBAAqB,EAAE;EAEhC;EAEAkJ,yCAAyCA,CAAAA,EAAG;IAC1C,IAAI,CAAC9qC,IAAI,CAAA,CAAE;IACX,IAAI,IAAI,CAAC6gC,qBAAqB,EAAE,EAAE;MAChC,OAAO,KAAK;IACd;IACA,OAAO,IAAI,CAACgK,wBAAwB,EAAE;EACxC;EAEAE,4BAA4BA,CAAAA,EAAG;IAI7B,IAAI,IAAI,CAACviC,KAAK,CAAA,GAAW,CAAC,EAAE;MAC1B,IAAI,CAACxI,IAAI,CAAA,CAAE;MACX,OAAO,IAAI,CAAC6qC,wBAAwB,EAAE;IACxC;IACA,OAAO,IAAI,CAACC,yCAAyC,EAAE;EACzD;EAGAE,eAAeA,CACbT,gBAAqB,EACrBU,6BAAuC,EACvCC,qBAAsC,EAChB;IACtB,IACE,CAACpuC,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC,IACnC,IAAI,CAAC4Z,KAAK,CAAC5Z,IAAI,KAAA,EAAW,IAC1B,IAAI,CAAC4Z,KAAK,CAAC5Z,IAAI,KAAA,EAAc,EAC7B;MACA,OAAOmQ,SAAS;IAClB;IAEA,MAAMggD,QAAQ,GAAG,IAAI,CAACv2C,KAAK,CAACrM,KAAK;IACjC,IAAIumD,gBAAgB,CAACj3B,QAAQ,CAACszB,QAAQ,CAAC,EAAE;MACvC,IAAIsE,qBAAqB,IAAI,IAAI,CAAC1iC,KAAK,CAAA,GAAW,CAAC,EAAE;QACnD,OAAO5hB,SAAS;MAClB;MACA,IAAIqkD,6BAA6B,IAAI,IAAI,CAACE,uBAAuB,EAAE,EAAE;QACnE,OAAOvkD,SAAS;MAClB;MACA,IAAI,IAAI,CAACwkD,UAAU,CAAC,IAAI,CAACL,4BAA4B,CAACT,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;QACjE,OAAO1D,QAAQ;MACjB;IACF;IACA,OAAOhgD,SAAS;EAClB;EAOAyjD,gBAAgBA,CACd;IACEE,gBAAgB;IAChBC,mBAAmB;IACnBS,6BAA6B;IAC7BR,aAAa,GAAG1E,QAAQ,CAAC8B;EAM1B,CAAA,EACDwD,QAAW,EACL;IACN,MAAMC,YAAY,GAAGA,CACnBtmD,GAAa,EACb4hD,QAAoB,EACpB2E,MAAkB,EAClBC,KAAiB,KACd;MACH,IAAI5E,QAAQ,KAAK2E,MAAM,IAAIF,QAAQ,CAACG,KAAK,CAAC,EAAE;QAC1C,IAAI,CAACh8C,KAAK,CAACu2C,QAAQ,CAACkC,qBAAqB,EAAEjjD,GAAG,EAAE;UAC9CkjD,gBAAgB,EAAE,CAACqD,MAAM,EAAEC,KAAK;QAClC,CAAC,CAAC;MACJ;KACD;IACD,MAAMC,YAAY,GAAGA,CACnBzmD,GAAa,EACb4hD,QAAoB,EACpB8E,IAAgB,EAChBC,IAAgB,KACb;MACH,IACGN,QAAQ,CAACK,IAAI,CAAC,IAAI9E,QAAQ,KAAK+E,IAAI,IACnCN,QAAQ,CAACM,IAAI,CAAC,IAAI/E,QAAQ,KAAK8E,IAAK,EACrC;QACA,IAAI,CAACl8C,KAAK,CAACu2C,QAAQ,CAACoB,qBAAqB,EAAEniD,GAAG,EAAE;UAC9CoiD,SAAS,EAAE,CAACsE,IAAI,EAAEC,IAAI;QACxB,CAAC,CAAC;MACJ;KACD;IAED,SAAS;MACP,MAAM;QAAEn9C;OAAU,GAAG,IAAI,CAAC6B,KAAK;MAC/B,MAAMu2C,QAAuC,GAAG,IAAI,CAACoE,eAAe,CAClET,gBAAgB,CAACj+C,MAAM,CAACk+C,mBAAmB,WAAnBA,mBAAmB,GAAI,EAAE,CAAC,EAClDS,6BAA6B,EAC7BI,QAAQ,CAACz9B,MACX,CAAC;MAED,IAAI,CAACg5B,QAAQ,EAAE;MAEf,IAAIoD,kBAAkB,CAACpD,QAAQ,CAAC,EAAE;QAChC,IAAIyE,QAAQ,CAACO,aAAa,EAAE;UAC1B,IAAI,CAACp8C,KAAK,CAACu2C,QAAQ,CAACY,8BAA8B,EAAEn4C,QAAQ,EAAE;YAC5Do4C;UACF,CAAC,CAAC;QACJ,CAAC,MAAM;UACL0E,YAAY,CAAC98C,QAAQ,EAAEo4C,QAAQ,EAAEA,QAAQ,EAAE,UAAU,CAAC;UACtD0E,YAAY,CAAC98C,QAAQ,EAAEo4C,QAAQ,EAAEA,QAAQ,EAAE,QAAQ,CAAC;UACpD0E,YAAY,CAAC98C,QAAQ,EAAEo4C,QAAQ,EAAEA,QAAQ,EAAE,UAAU,CAAC;UAEtDyE,QAAQ,CAACO,aAAa,GAAGhF,QAAQ;QACnC;MACF,CAAC,MAAM,IAAIqD,uBAAuB,CAACrD,QAAQ,CAAC,EAAE;QAC5C,IAAIyE,QAAQ,CAACzE,QAAQ,CAAC,EAAE;UACtB,IAAI,CAACp3C,KAAK,CAACu2C,QAAQ,CAACc,iBAAiB,EAAEr4C,QAAQ,EAAE;YAAEo4C;UAAS,CAAC,CAAC;QAChE;QACAyE,QAAQ,CAACzE,QAAQ,CAAC,GAAG,IAAI;QAEzB0E,YAAY,CAAC98C,QAAQ,EAAEo4C,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC;MAC/C,CAAC,MAAM;QACL,IAAIiF,cAAA,CAAArzB,IAAA,CAAc6yB,QAAQ,EAAEzE,QAAQ,CAAC,EAAE;UACrC,IAAI,CAACp3C,KAAK,CAACu2C,QAAQ,CAACc,iBAAiB,EAAEr4C,QAAQ,EAAE;YAAEo4C;UAAS,CAAC,CAAC;QAChE,CAAC,MAAM;UACL0E,YAAY,CAAC98C,QAAQ,EAAEo4C,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC;UACtD0E,YAAY,CAAC98C,QAAQ,EAAEo4C,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC;UACtD0E,YAAY,CAAC98C,QAAQ,EAAEo4C,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC;UACxD0E,YAAY,CAAC98C,QAAQ,EAAEo4C,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC;UAExD6E,YAAY,CAACj9C,QAAQ,EAAEo4C,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC;UACvD6E,YAAY,CAACj9C,QAAQ,EAAEo4C,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC;QACxD;QACAyE,QAAQ,CAACzE,QAAQ,CAAC,GAAG,IAAI;MAC3B;MAEA,IAAI4D,mBAAmB,YAAnBA,mBAAmB,CAAEl3B,QAAQ,CAACszB,QAAQ,CAAC,EAAE;QAC3C,IAAI,CAACp3C,KAAK,CAACi7C,aAAa,EAAEj8C,QAAQ,EAAE;UAClCo4C;QACF,CAAC,CAAC;MACJ;IACF;EACF;EAEAkF,kBAAkBA,CAACj1D,IAAoB,EAAW;IAChD,QAAQA,IAAI;MACV,KAAK,aAAa;MAClB,KAAK,aAAa;QAChB,OAAO,IAAI,CAAC2xB,KAAK,CAAA,CAAU,CAAC;MAC9B,KAAK,uBAAuB;QAC1B,OAAO,IAAI,CAACA,KAAK,CAAA,CAAU,CAAC;MAC9B,KAAK,mBAAmB;QACtB,OAAO,IAAI,CAACA,KAAK,CAAA,CAAY,CAAC;MAChC,KAAK,2BAA2B;QAC9B,OAAO,IAAI,CAACA,KAAK,CAAA,EAAM,CAAC;IAC5B;EACF;EAEAujC,WAAWA,CACTl1D,IAAoB,EACpBm1D,YAAqB,EAChB;IACL,MAAM56C,MAAW,GAAG,EAAE;IACtB,OAAO,CAAC,IAAI,CAAC06C,kBAAkB,CAACj1D,IAAI,CAAC,EAAE;MAErCua,MAAM,CAACuC,IAAI,CAACq4C,YAAY,CAAA,CAAE,CAAC;IAC7B;IACA,OAAO56C,MAAM;EACf;EAEA66C,oBAAoBA,CAClBp1D,IAAoB,EACpBm1D,YAAqB,EACrBE,mBAEC,EACI;IACL,OAAOtG,OAAO,CACZ,IAAI,CAACuG,0BAA0B,CAC7Bt1D,IAAI,EACJm1D,YAAY,EACQ,IAAI,EACxBE,mBACF,CACF,CAAC;EACH;EAMAC,0BAA0BA,CACxBt1D,IAAoB,EACpBm1D,YAAiC,EACjCI,aAAsB,EACtBF,mBAEC,EACgB;IACjB,MAAM96C,MAAW,GAAG,EAAE;IACtB,IAAIi7C,gBAAgB,GAAG,CAAC,CAAC;IAEzB,SAAS;MACP,IAAI,IAAI,CAACP,kBAAkB,CAACj1D,IAAI,CAAC,EAAE;QACjC;MACF;MACAw1D,gBAAgB,GAAG,CAAC,CAAC;MAErB,MAAMzI,OAAO,GAAGoI,YAAY,EAAE;MAC9B,IAAIpI,OAAO,IAAI,IAAI,EAAE;QACnB,OAAOh9C,SAAS;MAClB;MACAwK,MAAM,CAACuC,IAAI,CAACiwC,OAAO,CAAC;MAEpB,IAAI,IAAI,CAACx7B,GAAG,CAAA,EAAS,CAAC,EAAE;QACtBikC,gBAAgB,GAAG,IAAI,CAACh8C,KAAK,CAACC,eAAe,CAAErc,KAAK;QACpD;MACF;MAEA,IAAI,IAAI,CAAC63D,kBAAkB,CAACj1D,IAAI,CAAC,EAAE;QACjC;MACF;MAEA,IAAIu1D,aAAa,EAAE;QAEjB,IAAI,CAACrkC,MAAM,CAAA,EAAS,CAAC;MACvB;MACA,OAAOnhB,SAAS;IAClB;IAEA,IAAIslD,mBAAmB,EAAE;MACvBA,mBAAmB,CAACloD,KAAK,GAAGqoD,gBAAgB;IAC9C;IAEA,OAAOj7C,MAAM;EACf;EAEAk7C,oBAAoBA,CAClBz1D,IAAoB,EACpBm1D,YAAqB,EACrBO,OAAgB,EAChBC,cAAuB,EACvBN,mBAEC,EACI;IACL,IAAI,CAACM,cAAc,EAAE;MACnB,IAAID,OAAO,EAAE;QACX,IAAI,CAACxkC,MAAM,CAAA,CAAY,CAAC;MAC1B,CAAC,MAAM;QACL,IAAI,CAACA,MAAM,CAAA,EAAM,CAAC;MACpB;IACF;IAEA,MAAM3W,MAAM,GAAG,IAAI,CAAC66C,oBAAoB,CACtCp1D,IAAI,EACJm1D,YAAY,EACZE,mBACF,CAAC;IAED,IAAIK,OAAO,EAAE;MACX,IAAI,CAACxkC,MAAM,CAAA,CAAY,CAAC;IAC1B,CAAC,MAAM;MACL,IAAI,CAACA,MAAM,CAAA,EAAM,CAAC;IACpB;IAEA,OAAO3W,MAAM;EACf;EAEAq7C,iBAAiBA,CAAAA,EAAmB;IAClC,MAAMj2D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAkB;IAC7C,IAAI,CAACya,MAAM,CAAA,EAAW,CAAC;IACvB,IAAI,CAACA,MAAM,CAAA,EAAU,CAAC;IACtB,IAAI,CAAC,IAAI,CAACS,KAAK,CAAA,GAAU,CAAC,EAAE;MAC1B,IAAI,CAAChZ,KAAK,CAACu2C,QAAQ,CAAC4D,6BAA6B,EAAE,IAAI,CAACt5C,KAAK,CAAC7B,QAAQ,CAAC;MAKrEhY,IAAI,CAACoP,QAAQ,GAAG,KAAK,CAACskB,aAAa,EAAS;IAEhD,CAAC,MAAM;MAKH1zB,IAAI,CAACoP,QAAQ,GAAG,IAAI,CAACgE,kBAAkB,CAAC,IAAI,CAACyG,KAAK,CAACrM,KAAK,CAAC;IAE7D;IACA,IAAI,IAAI,CAACokB,GAAG,CAAA,EAAS,CAAC,EAAE;MACtB5xB,IAAI,CAAC0R,OAAO,GAAG,IAAI,CAACwkD,wBAAwB,EAAE;IAChD,CAAC,MAAM;MACLl2D,IAAI,CAAC0R,OAAO,GAAG,IAAI;IACrB;IACA,IAAI,CAAC6f,MAAM,CAAA,EAAU,CAAC;IAEtB,IAAI,IAAI,CAACK,GAAG,CAAA,EAAO,CAAC,EAAE;MAGpB5xB,IAAI,CAACm2D,SAAS,GAAG,IAAI,CAACC,iBAAiB,CACrCC,KAEF,CAAC;IACH;IACA,IAAI,IAAI,CAACrkC,KAAK,CAAA,EAAM,CAAC,EAAE;MAInBhyB,IAAI,CAAC+W,cAAc,GAAG,IAAI,CAACu/C,oBAAoB,EAAE;IAErD;IACA,OAAO,IAAI,CAACl/C,UAAU,CAACpX,IAAI,EAAE,cAAc,CAAC;EAC9C;EAEAk2D,wBAAwBA,CAAAA,EAAuB;IAC7C,MAAMl2D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAsB;IACjD,IAAI,CAACya,MAAM,CAAA,CAAU,CAAC;IACtB,MAAMglC,YAAY,GAAG,IAAI,CAACz/C,SAAS,EAAoB;IACvD,IAAI,IAAI,CAACsc,YAAY,CAAA,EAAS,CAAC,EAAE;MAC/BmjC,YAAY,CAACthD,MAAM,GAAG,KAAK;MAC3BshD,YAAY,CAAC5vD,GAAG,GAAG,IAAI,CAACyrB,eAAe,CAAC,IAAI,CAAC;MAC7CmkC,YAAY,CAACr/C,QAAQ,GAAG,KAAK;MAC7Bq/C,YAAY,CAACp/C,SAAS,GAAG,KAAK;IAChC,CAAC,MAAM;MACL,IAAI,CAACnS,UAAU,CAAC,IAAI,IAAU,CAAC;IACjC;IACA,IAAI,CAACusB,MAAM,CAAA,EAAS,CAAC;IACrBglC,YAAY,CAAC/oD,KAAK,GAAG,IAAI,CAACgpD,kCAAkC,EAAE;IAC9Dx2D,IAAI,CAAC63B,UAAU,GAAG,CAAC,IAAI,CAAC1f,oBAAoB,CAACo+C,YAAY,CAAC,CAAC;IAC3D,IAAI,CAAC3kC,GAAG,CAAA,EAAS,CAAC;IAClB,IAAI,CAACL,MAAM,CAAA,CAAU,CAAC;IACtB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,kBAAkB,CAAC;EAClD;EAEAw2D,kCAAkCA,CAAAA,EAAuB;IACvD,MAAMx2D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAsB;IACjD,MAAM+gB,UAAU,GAAG,EAAE;IACrB,IAAI,CAACtG,MAAM,CAAA,CAAU,CAAC;IACtB,OAAO,CAAC,IAAI,CAACS,KAAK,CAAA,CAAU,CAAC,EAAE;MAC7B,MAAM/xB,IAAI,GAAG,IAAI,CAAC4Z,KAAK,CAAC5Z,IAAI;MAC5B,IAAIqmB,iBAAiB,CAACrmB,IAAI,CAAC,IAAIA,IAAI,QAAc,EAAE;QACjD43B,UAAU,CAAC1a,IAAI,CAAC,KAAK,CAACs5C,uBAAuB,CAAC,IAAI,CAAC,CAAC;MACtD,CAAC,MAAM;QACL,IAAI,CAACzxD,UAAU,CAAA,CAAE;MACnB;MACA,IAAI,CAAC4sB,GAAG,CAAA,EAAS,CAAC;IACpB;IACA5xB,IAAI,CAAC63B,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACrO,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACpS,UAAU,CAACpX,IAAI,EAAE,kBAAkB,CAAC;EAClD;EAEAo2D,iBAAiBA,CAAC7jD,KAA6B,EAAkB;IAC/D,IAAImnC,MAAsB;IAC1B,IACEnnC,KAAK,IAA8C,IACnD,IAAI,CAACyf,KAAK,CAAS,EAAA,CAAC,EACpB;MACA,IAAIzf,KAAK,IAAoD,EAAE;QAC7DmnC,MAAM,GAAG,IAAI,CAACtnB,eAAe,CAAC,IAAI,CAAC;MACrC,CAAC,MAAM;QACL,MAAMpyB,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAoB;QAC/C,IAAI,CAAC0S,IAAI,CAAA,CAAE;QACXkwB,MAAM,GAAG,IAAI,CAACtiC,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;MAClD;IACF,CAAC,MAAM;MACL05C,MAAM,GAAG,IAAI,CAACtnB,eAAe,CAC3B,CAAC,EAAE7f,KAAK,IAA8C,CACxD,CAAC;IACH;IACA,OAAO,IAAI,CAACqf,GAAG,CAAA,EAAO,CAAC,EAAE;MACvB,MAAM5xB,IAA+B,GACnC,IAAI,CAAC2T,eAAe,CAAoB+lC,MAAM,CAAC;MACjD15C,IAAI,CAAC2+B,IAAI,GAAG+a,MAAM;MAClB15C,IAAI,CAACw1B,KAAK,GAAG,IAAI,CAACpD,eAAe,CAC/B,CAAC,EAAE7f,KAAK,IAA8C,CACxD,CAAC;MACDmnC,MAAM,GAAG,IAAI,CAACtiC,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC;IACnD;IACA,OAAO05C,MAAM;EACf;EAEAgd,oBAAoBA,CAAAA,EAAsB;IACxC,MAAM12D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAqB;IAChD9W,IAAI,CAAC22D,QAAQ,GAAG,IAAI,CAACP,iBAAiB,EAEtC,CAAC;IACD,IAAI,CAAC,IAAI,CAAC/L,qBAAqB,CAAA,CAAE,IAAI,IAAI,CAACr4B,KAAK,CAAM,EAAA,CAAC,EAAE;MAIpDhyB,IAAI,CAAC+W,cAAc,GAAG,IAAI,CAACu/C,oBAAoB,EAAE;IAErD;IACA,OAAO,IAAI,CAACl/C,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAEA42D,wBAAwBA,CAACC,GAAiB,EAAqB;IAC7D,IAAI,CAACrtC,IAAI,CAAA,CAAE;IACX,MAAMxpB,IAAI,GAAG,IAAI,CAAC2T,eAAe,CAAoBkjD,GAAG,CAAC;IACzD72D,IAAI,CAAC82D,aAAa,GAAGD,GAAG;IACxB72D,IAAI,CAAC4yB,cAAc,GAAG,IAAI,CAACmkC,qBAAqB,CAAgB,KAAK,CAAC;IACtE/2D,IAAI,CAACg3D,OAAO,GAAG,KAAK;IACpB,OAAO,IAAI,CAAC5/C,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAEAi3D,mBAAmBA,CAAAA,EAAiB;IAClC,MAAMj3D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAgB;IAC3C,IAAI,CAAC0S,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACpS,UAAU,CAACpX,IAAI,EAAE,YAAY,CAAC;EAC5C;EAEAk3D,gBAAgBA,CAAAA,EAAkB;IAChC,MAAMl3D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAiB;IAC5C,IAAI,CAACya,MAAM,CAAA,EAAW,CAAC;IACvB,IAAI,IAAI,CAACS,KAAK,CAAA,EAAW,CAAC,EAAE;MAC1BhyB,IAAI,CAACm3D,QAAQ,GAAG,IAAI,CAAClB,iBAAiB,EAAE;IAC1C,CAAC,MAAM;MAMHj2D,IAAI,CAACm3D,QAAQ,GAAG,IAAI,CAACf,iBAAiB,CACpCC,KAEF,CAAC;IAEL;IACA,IAAI,CAAC,IAAI,CAAChM,qBAAqB,CAAA,CAAE,IAAI,IAAI,CAACr4B,KAAK,CAAM,EAAA,CAAC,EAAE;MAIpDhyB,IAAI,CAAC+W,cAAc,GAAG,IAAI,CAACu/C,oBAAoB,EAAE;IAErD;IACA,OAAO,IAAI,CAACl/C,UAAU,CAACpX,IAAI,EAAE,aAAa,CAAC;EAC7C;EAsCAo3D,oBAAoBA,CAClBC,cAAyD,EACtC;IACnB,MAAMr3D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAqB;IAEhDugD,cAAc,CAACr3D,IAAI,CAAC;IAEpBA,IAAI,CAACiG,IAAI,GAAG,IAAI,CAACqxD,wBAAwB,EAAE;IAC3Ct3D,IAAI,CAACu3D,UAAU,GAAG,IAAI,CAACC,kBAAkB,GAAY,CAAC;IACtDx3D,IAAI,CAAC+zB,OAAO,GAAG,IAAI,CAACyjC,kBAAkB,GAAM,CAAC;IAC7C,OAAO,IAAI,CAACpgD,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAEAy3D,wBAAwBA,CACtBJ,cAAiD,EACA;IACjD,IAAI,IAAI,CAACrlC,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB,OAAO,IAAI,CAAC0lC,qBAAqB,CAACL,cAAc,CAAC;IACnD;EACF;EAEAK,qBAAqBA,CAACL,cAAiD,EAAE;IACvE,MAAMr3D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAgC;IAE3D,IAAI,IAAI,CAACkb,KAAK,CAAM,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAe,GAAA,CAAC,EAAE;MACnD,IAAI,CAACxI,IAAI,CAAA,CAAE;IACb,CAAC,MAAM;MACL,IAAI,CAACxkB,UAAU,CAAA,CAAE;IACnB;IAEA,MAAM0wD,mBAAmB,GAAG;MAAEloD,KAAK,EAAE,CAAC;KAAG;IAEzCxN,IAAI,CAACkV,MAAM,GAAG,IAAI,CAAC4gD,oBAAoB,CACrC,2BAA2B,EAC3B,IAAI,CAACsB,oBAAoB,CAACtD,IAAI,CAAC,IAAI,EAAEuD,cAAc,CAAC,EACtC,KAAK,EACE,IAAI,EACzB3B,mBACF,CAAC;IACD,IAAI11D,IAAI,CAACkV,MAAM,CAAC+E,MAAM,KAAK,CAAC,EAAE;MAC5B,IAAI,CAACjB,KAAK,CAACu2C,QAAQ,CAACiB,mBAAmB,EAAExwD,IAAI,CAAC;IAChD;IACA,IAAI01D,mBAAmB,CAACloD,KAAK,KAAK,CAAC,CAAC,EAAE;MACpC,IAAI,CAACy8C,QAAQ,CAACjqD,IAAI,EAAE,eAAe,EAAE01D,mBAAmB,CAACloD,KAAK,CAAC;IACjE;IACA,OAAO,IAAI,CAAC4J,UAAU,CAACpX,IAAI,EAAE,4BAA4B,CAAC;EAC5D;EAIA23D,eAAeA,CACbC,WAAsB,EACtBC,SAA2C,EACrC;IAEN,MAAMC,mBAAmB,GAAGF,WAAW,KAAa,EAAA;IAGpD,MAAMG,SAAS,GAA6C,YAAY;IACxE,MAAMC,aAAa,GAEf,gBAAgB;IAEpBH,SAAS,CAAC9gD,cAAc,GAAG,IAAI,CAAC0gD,wBAAwB,CACtD,IAAI,CAACvD,oBACP,CAAC;IACD,IAAI,CAAC3iC,MAAM,CAAA,EAAU,CAAC;IACtBsmC,SAAS,CAACE,SAAS,CAAC,GAAG,IAAI,CAACE,8BAA8B,CAAA,CAAE;IAC5D,IAAIH,mBAAmB,EAAE;MACvBD,SAAS,CAACG,aAAa,CAAC,GACtB,IAAI,CAACE,oCAAoC,CAACN,WAAW,CAAC;IACzD,CAAA,MAAM,IAAI,IAAI,CAAC5lC,KAAK,CAAC4lC,WAAW,CAAC,EAAE;MAClCC,SAAS,CAACG,aAAa,CAAC,GACtB,IAAI,CAACE,oCAAoC,CAACN,WAAW,CAAC;IAC1D;EACF;EAEAK,8BAA8BA,CAAAA,EAM1B;IACF,MAAM7nC,IAAI,GAAG,KAAK,CAACo9B,gBAAgB,CAGjCC,EAAAA,EAAAA,EAAAA,GACF,CAAC;IACD,KAAK,MAAMn7C,OAAO,IAAI8d,IAAI,EAAE;MAC1B,MAAM;QAAEnwB;MAAM,CAAA,GAAGqS,OAAO;MACxB,IAAIrS,IAAI,KAAK,mBAAmB,IAAIA,IAAI,KAAK,qBAAqB,EAAE;QAClE,IAAI,CAAC+Y,KAAK,CAACu2C,QAAQ,CAAC8D,iCAAiC,EAAE/gD,OAAO,EAAE;UAC9DrS;QACF,CAAC,CAAC;MACJ;IACF;IACA,OAAOmwB,IAAI;EAIb;EAEA+nC,0BAA0BA,CAAAA,EAAS;IACjC,IAAI,CAAC,IAAI,CAACvmC,GAAG,CAAS,EAAA,CAAC,IAAI,CAAC,IAAI,CAAC24B,gBAAgB,EAAE,EAAE;MACnD,IAAI,CAACh5B,MAAM,CAAA,EAAQ,CAAC;IACtB;EACF;EAEA6mC,sBAAsBA,CACpB/3D,IAAsE,EACtEL,IAEC,EACiE;IAClE,IAAI,CAAC23D,eAAe,CAAW33D,EAAAA,EAAAA,IAAI,CAAC;IACpC,IAAI,CAACm4D,0BAA0B,CAAA,CAAE;IACjC,OAAO,IAAI,CAAC/gD,UAAU,CAACpX,IAAI,EAAEK,IAAI,CAAC;EACpC;EAEAg4D,+BAA+BA,CAAAA,EAAG;IAChC,IAAI,CAAC7uC,IAAI,CAAA,CAAE;IACX,IAAIlD,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC,EAAE;MACtC,IAAI,CAACupB,IAAI,CAAA,CAAE;MACX,OAAO,IAAI,CAACwI,KAAK,CAAA,EAAS,CAAC;IAC7B;IACA,OAAO,KAAK;EACd;EAEAsmC,wBAAwBA,CACtBt4D,IAAgC,EACA;IAChC,IACE,EACE,IAAI,CAACgyB,KAAK,EAAY,CAAC,IACvB,IAAI,CAACumC,WAAW,CAAC,IAAI,CAACF,+BAA+B,CAACvE,IAAI,CAAC,IAAI,CAAC,CAAC,CAClE,EACD;MACA;IACF;IAEA,IAAI,CAACviC,MAAM,CAAA,CAAY,CAAC;IACxB,MAAMpb,EAAE,GAAG,IAAI,CAACic,eAAe,EAAE;IACjCjc,EAAE,CAACyc,cAAc,GAAG,IAAI,CAACmkC,qBAAqB,EAAE;IAChD,IAAI,CAACh8C,gBAAgB,CAAC5E,EAAE,CAAC;IAEzB,IAAI,CAACob,MAAM,CAAA,CAAY,CAAC;IACxBvxB,IAAI,CAACw4D,UAAU,GAAG,CAACriD,EAAE,CAAC;IAEtB,MAAMlW,IAAI,GAAG,IAAI,CAACw4D,wBAAwB,EAAE;IAC5C,IAAIx4D,IAAI,EAAED,IAAI,CAAC4yB,cAAc,GAAG3yB,IAAI;IACpC,IAAI,CAACk4D,0BAA0B,CAAA,CAAE;IACjC,OAAO,IAAI,CAAC/gD,UAAU,CAACpX,IAAI,EAAE,kBAAkB,CAAC;EAClD;EAEA04D,gCAAgCA,CAC9B14D,IAAyD,EACzD24D,QAAiB,EAC4B;IAC7C,IAAI,IAAI,CAAC/mC,GAAG,CAAY,EAAA,CAAC,EAAE5xB,IAAI,CAACmZ,QAAQ,GAAG,IAAI;IAE/C,IAAI,IAAI,CAAC6Y,KAAK,CAAU,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAM,EAAA,CAAC,EAAE;MAC9C,IAAI2mC,QAAQ,EAAE;QACZ,IAAI,CAAC3/C,KAAK,CAACu2C,QAAQ,CAAC6C,0BAA0B,EAAEpyD,IAAI,CAAC;MACvD;MACA,MAAMiV,MAAM,GAAGjV,IAAmC;MAClD,IAAIiV,MAAM,CAAC5U,IAAI,IAAI,IAAI,CAAC2xB,KAAK,CAAM,EAAA,CAAC,EAAE;QACpC,IAAI,CAAChZ,KAAK,CACRu2C,QAAQ,CAACphD,gCAAgC,EACzC,IAAI,CAAC0L,KAAK,CAACykB,WAAW,CAAA,CACxB,CAAC;MACH;MACA,IAAI,CAACq5B,eAAe,CAAW1iD,EAAAA,EAAAA,MAAM,CAAC;MACtC,IAAI,CAACkjD,0BAA0B,CAAA,CAAE;MACjC,MAAMJ,SAAS,GAEX,YAAY;MAChB,MAAMC,aAAa,GAEf,gBAAgB;MACpB,IAAI/iD,MAAM,CAAC5U,IAAI,KAAK,KAAK,EAAE;QACzB,IAAI4U,MAAM,CAAC8iD,SAAS,CAAC,CAAC99C,MAAM,GAAG,CAAC,EAAE;UAChC,IAAI,CAACjB,KAAK,CAACjJ,MAAM,CAAClP,cAAc,EAAE,IAAI,CAACgZ,KAAK,CAACykB,WAAW,CAAA,CAAE,CAAC;UAC3D,IAAI,IAAI,CAACoB,WAAW,CAACzqB,MAAM,CAAC8iD,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YAC1C,IAAI,CAAC/+C,KAAK,CACRu2C,QAAQ,CAACrhD,kCAAkC,EAC3C,IAAI,CAAC2L,KAAK,CAACykB,WAAW,CAAA,CACxB,CAAC;UACH;QACF;MACF,CAAC,MAAM,IAAIrpB,MAAM,CAAC5U,IAAI,KAAK,KAAK,EAAE;QAChC,IAAI4U,MAAM,CAAC8iD,SAAS,CAAC,CAAC99C,MAAM,KAAK,CAAC,EAAE;UAClC,IAAI,CAACjB,KAAK,CAACjJ,MAAM,CAACjP,cAAc,EAAE,IAAI,CAAC+Y,KAAK,CAACykB,WAAW,CAAA,CAAE,CAAC;QAC7D,CAAC,MAAM;UACL,MAAMs6B,cAAc,GAAG3jD,MAAM,CAAC8iD,SAAS,CAAC,CAAC,CAAC,CAAC;UAC3C,IAAI,IAAI,CAACr4B,WAAW,CAACk5B,cAAc,CAAC,EAAE;YACpC,IAAI,CAAC5/C,KAAK,CACRu2C,QAAQ,CAACrhD,kCAAkC,EAC3C,IAAI,CAAC2L,KAAK,CAACykB,WAAW,CAAA,CACxB,CAAC;UACH;UACA,IACEs6B,cAAc,CAAC34D,IAAI,KAAK,YAAY,IACpC24D,cAAc,CAACz/C,QAAQ,EACvB;YACA,IAAI,CAACH,KAAK,CACRu2C,QAAQ,CAAClhD,sCAAsC,EAC/C,IAAI,CAACwL,KAAK,CAACykB,WAAW,CAAA,CACxB,CAAC;UACH;UACA,IAAIs6B,cAAc,CAAC34D,IAAI,KAAK,aAAa,EAAE;YACzC,IAAI,CAAC+Y,KAAK,CACRu2C,QAAQ,CAACjhD,kCAAkC,EAC3C,IAAI,CAACuL,KAAK,CAACykB,WAAW,CAAA,CACxB,CAAC;UACH;QACF;QACA,IAAIrpB,MAAM,CAAC+iD,aAAa,CAAC,EAAE;UACzB,IAAI,CAACh/C,KAAK,CACRu2C,QAAQ,CAAChhD,+BAA+B,EACxC0G,MAAM,CAAC+iD,aAAa,CACtB,CAAC;QACH;MACF,CAAC,MAAM;QACL/iD,MAAM,CAAC5U,IAAI,GAAG,QAAQ;MACxB;MACA,OAAO,IAAI,CAAC+W,UAAU,CAACnC,MAAM,EAAE,mBAAmB,CAAC;IACrD,CAAC,MAAM;MACL,MAAM2jB,QAAQ,GAAG54B,IAAqC;MACtD,IAAI24D,QAAQ,EAAE//B,QAAQ,CAAC+/B,QAAQ,GAAG,IAAI;MACtC,MAAM14D,IAAI,GAAG,IAAI,CAACw4D,wBAAwB,EAAE;MAC5C,IAAIx4D,IAAI,EAAE24B,QAAQ,CAAChG,cAAc,GAAG3yB,IAAI;MACxC,IAAI,CAACk4D,0BAA0B,CAAA,CAAE;MACjC,OAAO,IAAI,CAAC/gD,UAAU,CAACwhB,QAAQ,EAAE,qBAAqB,CAAC;IACzD;EACF;EAEAigC,iBAAiBA,CAAAA,EAAoB;IACnC,MAAM74D,IAAS,GAAG,IAAI,CAAC8W,SAAS,EAAE;IAElC,IAAI,IAAI,CAACkb,KAAK,CAAU,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAM,EAAA,CAAC,EAAE;MAC9C,OAAO,IAAI,CAAComC,sBAAsB,CAAC,4BAA4B,EAAEp4D,IAAI,CAAC;IACxE;IAEA,IAAI,IAAI,CAACgyB,KAAK,CAAA,EAAQ,CAAC,EAAE;MACvB,MAAM7b,EAAE,GAAG,IAAI,CAACW,SAAS,EAAgB;MACzC,IAAI,CAAC0S,IAAI,CAAA,CAAE;MACX,IAAI,IAAI,CAACwI,KAAK,CAAU,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAM,EAAA,CAAC,EAAE;QAC9C,OAAO,IAAI,CAAComC,sBAAsB,CAChC,iCAAiC,EACjCp4D,IACF,CAAC;MACH,CAAC,MAAM;QACLA,IAAI,CAAC2G,GAAG,GAAG,IAAI,CAACgzB,gBAAgB,CAACxjB,EAAE,EAAE,KAAK,CAAC;QAC3C,OAAO,IAAI,CAACuiD,gCAAgC,CAAC14D,IAAI,EAAE,KAAK,CAAC;MAC3D;IACF;IAEA,IAAI,CAAC6zD,gBAAgB,CACnB;MACEE,gBAAgB,EAAE,CAAC,UAAU,CAAC;MAC9BC,mBAAmB,EAAE,CACnB,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,UAAU;IAEb,CAAA,EACDh0D,IACF,CAAC;IAED,MAAM84D,GAAG,GAAG,IAAI,CAACR,wBAAwB,CAACt4D,IAAI,CAAC;IAC/C,IAAI84D,GAAG,EAAE;MACP,OAAOA,GAAG;IACZ;IAEA,KAAK,CAAC1K,iBAAiB,CAACpuD,IAAI,CAAC;IAC7B,IACE,CAACA,IAAI,CAACkX,QAAQ,IACdlX,IAAI,CAAC2G,GAAG,CAAC1G,IAAI,KAAK,YAAY,KAC7BD,IAAI,CAAC2G,GAAG,CAACV,IAAI,KAAK,KAAK,IAAIjG,IAAI,CAAC2G,GAAG,CAACV,IAAI,KAAK,KAAK,CAAC,IACpD,IAAI,CAACouD,wBAAwB,EAAE,EAC/B;MACAr0D,IAAI,CAACK,IAAI,GAAGL,IAAI,CAAC2G,GAAG,CAACV,IAAI;MACzB,KAAK,CAACmoD,iBAAiB,CAACpuD,IAAI,CAAC;MAE7B,IAAI,CAAC,IAAI,CAACgyB,KAAK,CAAU,EAAA,CAAC,IAAI,CAAC,IAAI,CAACA,KAAK,CAAA,EAAM,CAAC,EAAE;QAChD,IAAI,CAAChtB,UAAU,CAAC,IAAI,IAAW,CAAC;MAClC;IACF;IACA,OAAO,IAAI,CAAC0zD,gCAAgC,CAAC14D,IAAI,EAAE,CAAC,CAACA,IAAI,CAAC24D,QAAQ,CAAC;EACrE;EAEAI,kBAAkBA,CAAAA,EAAoB;IACpC,MAAM/4D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAmB;IAC9C9W,IAAI,CAAComC,OAAO,GAAG,IAAI,CAAC4yB,wBAAwB,EAAE;IAC9C,OAAO,IAAI,CAAC5hD,UAAU,CAACpX,IAAI,EAAE,eAAe,CAAC;EAC/C;EAEAg5D,wBAAwBA,CAAAA,EAAsB;IAC5C,IAAI,CAACznC,MAAM,CAAA,CAAU,CAAC;IACtB,MAAM6U,OAAO,GAAG,IAAI,CAACmvB,WAAW,CAC9B,aAAa,EACb,IAAI,CAACsD,iBAAiB,CAAC/E,IAAI,CAAC,IAAI,CAClC,CAAC;IACD,IAAI,CAACviC,MAAM,CAAA,CAAU,CAAC;IACtB,OAAO6U,OAAO;EAChB;EAEA6yB,qBAAqBA,CAAAA,EAAY;IAC/B,IAAI,CAACzvC,IAAI,CAAA,CAAE;IACX,IAAI,IAAI,CAACoI,GAAG,CAAA,EAAW,CAAC,EAAE;MACxB,OAAO,IAAI,CAACwB,YAAY,CAAA,GAAa,CAAC;IACxC;IACA,IAAI,IAAI,CAACA,YAAY,CAAA,GAAa,CAAC,EAAE;MACnC,IAAI,CAAC5J,IAAI,CAAA,CAAE;IACb;IACA,IAAI,CAAC,IAAI,CAACwI,KAAK,CAAA,CAAY,CAAC,EAAE;MAC5B,OAAO,KAAK;IACd;IACA,IAAI,CAACxI,IAAI,CAAA,CAAE;IACX,IAAI,CAAC,IAAI,CAAC4qC,cAAc,EAAE,EAAE;MAC1B,OAAO,KAAK;IACd;IACA,IAAI,CAAC5qC,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACwI,KAAK,CAAA,EAAO,CAAC;EAC3B;EAEAknC,iBAAiBA,CAAAA,EAAmB;IAClC,MAAMl5D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAkB;IAE7C,IAAI,CAACya,MAAM,CAAA,CAAU,CAAC;IAEtB,IAAI,IAAI,CAACS,KAAK,CAAA,EAAW,CAAC,EAAE;MAC1BhyB,IAAI,CAAC24D,QAAQ,GAAG,IAAI,CAAC9+C,KAAK,CAACrM,KAAK;MAChC,IAAI,CAACgc,IAAI,CAAA,CAAE;MACX,IAAI,CAACmI,gBAAgB,CAAA,GAAa,CAAC;IACpC,CAAA,MAAM,IAAI,IAAI,CAACsB,aAAa,CAAA,GAAa,CAAC,EAAE;MAC3CjzB,IAAI,CAAC24D,QAAQ,GAAG,IAAI;IACtB;IAEA,IAAI,CAACpnC,MAAM,CAAA,CAAY,CAAC;IAKtB,MAAM6E,aAAa,GAAG,IAAI,CAACtf,SAAS,EAAqB;IACzDsf,aAAa,CAACnwB,IAAI,GAAG,IAAI,CAACqxD,wBAAwB,EAAE;IACpDlhC,aAAa,CAACmhC,UAAU,GAAG,IAAI,CAAC4B,qBAAqB,GAAO,CAAC;IAE7Dn5D,IAAI,CAACo2B,aAAa,GAAG,IAAI,CAAChf,UAAU,CAACgf,aAAa,EAAE,iBAAiB,CAAC;IAExEp2B,IAAI,CAACo5D,QAAQ,GAAG,IAAI,CAACnmC,aAAa,CAAA,EAAO,CAAC,GAAG,IAAI,CAAComC,WAAW,CAAE,CAAA,GAAG,IAAI;IAEtE,IAAI,CAAC9nC,MAAM,CAAA,CAAY,CAAC;IAExB,IAAI,IAAI,CAACS,KAAK,CAAA,EAAW,CAAC,EAAE;MAC1BhyB,IAAI,CAACmZ,QAAQ,GAAG,IAAI,CAACU,KAAK,CAACrM,KAAK;MAChC,IAAI,CAACgc,IAAI,CAAA,CAAE;MACX,IAAI,CAAC+H,MAAM,CAAA,EAAY,CAAC;IACzB,CAAA,MAAM,IAAI,IAAI,CAACK,GAAG,CAAA,EAAY,CAAC,EAAE;MAChC5xB,IAAI,CAACmZ,QAAQ,GAAG,IAAI;IACtB;IAEAnZ,IAAI,CAAC4yB,cAAc,GAAG,IAAI,CAAC0mC,cAAc,EAAE;IAC3C,IAAI,CAACzmC,SAAS,CAAA,CAAE;IAChB,IAAI,CAACtB,MAAM,CAAA,CAAU,CAAC;IAEtB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,cAAc,CAAC;EAC9C;EAEAu5D,gBAAgBA,CAAAA,EAAkB;IAChC,MAAMv5D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAiB;IAC5C9W,IAAI,CAACw5D,YAAY,GAAG,IAAI,CAAC1D,oBAAoB,CAC3C,mBAAmB,EACnB,IAAI,CAAC2D,uBAAuB,CAAC3F,IAAI,CAAC,IAAI,CAAC,EACzB,IAAI,EACG,KACvB,CAAC;IAID,IAAI4F,mBAAmB,GAAG,KAAK;IAC/B15D,IAAI,CAACw5D,YAAY,CAAC1lC,OAAO,CAAC6lC,WAAW,IAAI;MACvC,MAAM;QAAE15D;MAAM,CAAA,GAAG05D,WAAW;MAE5B,IACED,mBAAmB,IACnBz5D,IAAI,KAAK,YAAY,IACrBA,IAAI,KAAK,gBAAgB,IACzB,EAAEA,IAAI,KAAK,oBAAoB,IAAI05D,WAAW,CAACxgD,QAAQ,CAAC,EACxD;QACA,IAAI,CAACH,KAAK,CAACu2C,QAAQ,CAACyC,0BAA0B,EAAE2H,WAAW,CAAC;MAC9D;MAEAD,mBAAmB,KAAnBA,mBAAmB,GAChBz5D,IAAI,KAAK,oBAAoB,IAAI05D,WAAW,CAACxgD,QAAQ,IACtDlZ,IAAI,KAAK,gBAAgB,CAAA;IAC7B,CAAC,CAAC;IAEF,OAAO,IAAI,CAACmX,UAAU,CAACpX,IAAI,EAAE,aAAa,CAAC;EAC7C;EAEAy5D,uBAAuBA,CAAAA,EAAoC;IAGzD,MAAMG,YAAY,GAAG,IAAI,CAAC//C,KAAK,CAAC7B,QAAQ;IAExC,MAAMpI,IAAI,GAAG,IAAI,CAACgiB,GAAG,GAAY,CAAC;IAClC,MAAM;MAAE5Z;KAAU,GAAG,IAAI,CAAC6B,KAAK;IAE/B,IAAIggD,OAAgB;IACpB,IAAI/9C,KAAmB;IACvB,IAAI3C,QAAiB;IACrB,IAAIlZ,IAAqC;IAEzC,MAAM65D,MAAM,GAAGtzC,0BAA0B,CAAC,IAAI,CAAC3M,KAAK,CAAC5Z,IAAI,CAAC;IAC1D,MAAM85D,WAAW,GAAGD,MAAM,GAAG,IAAI,CAACv+B,iBAAiB,CAAA,CAAE,GAAG,IAAI;IAC5D,IAAIw+B,WAAW,OAAoB,EAAE;MACnCF,OAAO,GAAG,IAAI;MACd1gD,QAAQ,GAAG,KAAK;MAChB2C,KAAK,GAAG,IAAI,CAACsW,eAAe,CAAC,IAAI,CAAC;MAClC,IAAI,CAACb,MAAM,CAAA,EAAS,CAAC;MACrBtxB,IAAI,GAAG,IAAI,CAACo5D,WAAW,EAAE;IAC3B,CAAC,MAAM,IAAIU,WAAW,KAAA,EAA2B,EAAE;MACjD5gD,QAAQ,GAAG,IAAI;MACf,MAAM6gD,QAAQ,GAAG,IAAI,CAACngD,KAAK,CAACrM,KAAK;MACjC,MAAMysD,WAAW,GAAG,IAAI,CAACC,mBAAmB,EAAE;MAE9C,IAAI,IAAI,CAAC3+B,iBAAiB,CAAE,CAAA,OAAoB,EAAE;QAChDs+B,OAAO,GAAG,IAAI;QACd/9C,KAAK,GAAG,IAAI,CAAC6d,gBAAgB,CAC3B,IAAI,CAACnC,WAAW,CAAexf,QAAQ,CAAC,EACxCgiD,QACF,CAAC;QACD,IAAI,CAACzoC,MAAM,CAAA,EAAY,CAAC;QACxB,IAAI,CAACA,MAAM,CAAA,EAAS,CAAC;QACrBtxB,IAAI,GAAG,IAAI,CAACo5D,WAAW,EAAE;MAC3B,CAAC,MAAM;QACLQ,OAAO,GAAG,KAAK;QACf55D,IAAI,GAAGg6D,WAAW;QAClB,IAAI,CAAC1oC,MAAM,CAAA,EAAY,CAAC;MAC1B;IACF,CAAC,MAAM;MACLtxB,IAAI,GAAG,IAAI,CAACo5D,WAAW,EAAE;MACzBlgD,QAAQ,GAAG,IAAI,CAACyY,GAAG,GAAY,CAAC;MAIhCioC,OAAO,GAAG,IAAI,CAACjoC,GAAG,GAAS,CAAC;IAC9B;IAEA,IAAIioC,OAAO,EAAE;MACX,IAAIM,WAAyC;MAC7C,IAAIr+C,KAAK,EAAG;QACVq+C,WAAW,GAAG,IAAI,CAAC3iC,WAAW,CAAuBxf,QAAQ,CAAC;QAC9DmiD,WAAW,CAAChhD,QAAQ,GAAGA,QAAQ;QAC/BghD,WAAW,CAACr+C,KAAK,GAAGA,KAAK;QACzBq+C,WAAW,CAACpgC,WAAW,GAAG95B,IAAI;QAE9B,IAAI,IAAI,CAAC2xB,GAAG,CAAA,EAAY,CAAC,EAAE;UACzBuoC,WAAW,CAAChhD,QAAQ,GAAG,IAAI;UAC3B,IAAI,CAACH,KAAK,CACRu2C,QAAQ,CAACmD,sBAAsB,EAC/B,IAAI,CAAC74C,KAAK,CAACC,eACb,CAAC;QACH;MACF,CAAC,MAAM;QACLqgD,WAAW,GAAG,IAAI,CAAC3iC,WAAW,CAAuBxf,QAAQ,CAAC;QAC9DmiD,WAAW,CAAChhD,QAAQ,GAAGA,QAAQ;QAC/B,IAAI,CAACH,KAAK,CAACu2C,QAAQ,CAACqC,uBAAuB,EAAE3xD,IAAI,CAAC;QAGlDk6D,WAAW,CAACr+C,KAAK,GAAG7b,IAAI;QACxBk6D,WAAW,CAACpgC,WAAW,GAAG,IAAI,CAACs/B,WAAW,EAAE;MAC9C;MACAp5D,IAAI,GAAG,IAAI,CAACmX,UAAU,CAAC+iD,WAAW,EAAE,oBAAoB,CAAC;IAC1D,CAAA,MAAM,IAAIhhD,QAAQ,EAAE;MACnB,MAAMihD,gBAAgB,GAAG,IAAI,CAAC5iC,WAAW,CAAmBxf,QAAQ,CAAC;MACrEoiD,gBAAgB,CAACxnC,cAAc,GAAG3yB,IAAI;MACtCA,IAAI,GAAG,IAAI,CAACmX,UAAU,CAACgjD,gBAAgB,EAAE,gBAAgB,CAAC;IAC5D;IAEA,IAAIxqD,IAAI,EAAE;MACR,MAAMyqD,QAAQ,GAAG,IAAI,CAAC7iC,WAAW,CAAeoiC,YAAY,CAAC;MAC7DS,QAAQ,CAACznC,cAAc,GAAG3yB,IAAI;MAC9BA,IAAI,GAAG,IAAI,CAACmX,UAAU,CAACijD,QAAQ,EAAE,YAAY,CAAC;IAChD;IAEA,OAAOp6D,IAAI;EACb;EAEAq6D,wBAAwBA,CAAAA,EAA0B;IAChD,MAAMt6D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAyB;IACpD,IAAI,CAACya,MAAM,CAAA,EAAU,CAAC;IACtBvxB,IAAI,CAAC4yB,cAAc,GAAG,IAAI,CAACymC,WAAW,EAAE;IACxC,IAAI,CAAC9nC,MAAM,CAAA,EAAU,CAAC;IACtB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,qBAAqB,CAAC;EACrD;EAEAu6D,gCAAgCA,CAC9Bt6D,IAA4C,EAC5C2X,QAAkB,EACa;IAC/B,MAAM5X,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAExB;IACH,IAAI7W,IAAI,KAAK,mBAAmB,EAAE;MAC/BD,IAAI,CAAiC4X,QAAQ,GAAG,CAAC,CAACA,QAAQ;MAC3D,IAAIA,QAAQ,EAAE,IAAI,CAAC4R,IAAI,EAAE;MACzB,IAAI,CAACA,IAAI,CAAA,CAAE;IACb;IACA,IAAI,CAACgxC,gCAAgC,CAAC,MACpC,IAAI,CAAC7C,eAAe,CAAA,EAAA,EAAW33D,IAAI,CACrC,CAAC;IACD,OAAO,IAAI,CAACoX,UAAU,CAACpX,IAAI,EAAEC,IAAI,CAAC;EACpC;EAEAw6D,sBAAsBA,CAAAA,EAAoB;IACxC,MAAMz6D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAmB;IAC9C,QAAQ,IAAI,CAAC+C,KAAK,CAAC5Z,IAAI;MACrB,KAAA,GAAA;MACA,KAAA,GAAA;MACA,KAAA,GAAA;MACA,KAAA,EAAA;MACA,KAAA,EAAA;QAGED,IAAI,CAAC6lC,OAAO,GAAG,KAAK,CAACnS,aAAa,EAAE;QACpC;MACF;QACE,IAAI,CAAC1uB,UAAU,CAAA,CAAE;IACrB;IACA,OAAO,IAAI,CAACoS,UAAU,CAACpX,IAAI,EAAE,eAAe,CAAC;EAC/C;EAEA06D,0BAA0BA,CAAAA,EAA8C;IAyBpE,MAAM16D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAmB;IAC9C9W,IAAI,CAAC6lC,OAAO,GAAG,KAAK,CAAC80B,aAAa,CAAC,KAAK,CAAC;IACzC,OAAO,IAAI,CAACvjD,UAAU,CAACpX,IAAI,EAAE,eAAe,CAAC;EAEjD;EAEA46D,yBAAyBA,CAAAA,EAA4B;IACnD,IAAI,IAAI,CAAC/gD,KAAK,CAACyX,MAAM,EAAE,OAAO,IAAI,CAAC+nC,WAAW,CAAA,CAAE;IAChD,OAAO,KAAK,CAACuB,yBAAyB,EAAE;EAC1C;EAEAC,kCAAkCA,CAAAA,EAAqC;IACrE,MAAMC,WAAW,GAAG,IAAI,CAAC7D,mBAAmB,EAAE;IAC9C,IAAI,IAAI,CAAC7jC,YAAY,CAAA,GAAO,CAAC,IAAI,CAAC,IAAI,CAACi3B,qBAAqB,EAAE,EAAE;MAC9D,OAAO,IAAI,CAACuM,wBAAwB,CAACkE,WAAW,CAAC;IACnD,CAAC,MAAM;MACL,OAAOA,WAAW;IACpB;EACF;EAEAZ,mBAAmBA,CAAAA,EAAa;IAC9B,QAAQ,IAAI,CAACrgD,KAAK,CAAC5Z,IAAI;MACrB,KAAA,GAAA;MACA,KAAA,GAAA;MACA,KAAA,GAAA;MACA,KAAA,EAAA;MACA,KAAA,EAAA;QACE,OAAO,IAAI,CAACw6D,sBAAsB,EAAE;MACtC,KAAA,EAAA;QACE,IAAI,IAAI,CAAC5gD,KAAK,CAACrM,KAAK,KAAK,GAAG,EAAE;UAC5B,MAAMxN,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAmB;UAC9C,MAAM0tB,SAAS,GAAG,IAAI,CAACnN,SAAS,EAAE;UAClC,IAAImN,SAAS,CAACvkC,IAAI,KAAA,GAAW,IAAIukC,SAAS,CAACvkC,IAAI,KAAA,GAAc,EAAE;YAC7D,IAAI,CAAC+E,UAAU,CAAA,CAAE;UACnB;UACAhF,IAAI,CAAC6lC,OAAO,GAAG,IAAI,CAACk1B,eAAe,EAAuB;UAC1D,OAAO,IAAI,CAAC3jD,UAAU,CAACpX,IAAI,EAAE,eAAe,CAAC;QAC/C;QACA;MACF,KAAA,EAAA;QACE,OAAO,IAAI,CAAC66D,kCAAkC,EAAE;MAClD,KAAA,EAAA;QACE,OAAO,IAAI,CAAC3D,gBAAgB,EAAE;MAChC,KAAA,EAAA;QACE,OAAO,IAAI,CAACjB,iBAAiB,EAAE;MACjC,KAAA,CAAA;QACE,OAAO,IAAI,CAACsC,WAAW,CAAC,IAAI,CAACU,qBAAqB,CAACnF,IAAI,CAAC,IAAI,CAAC,CAAC,GAC1D,IAAI,CAACoF,iBAAiB,CAAA,CAAE,GACxB,IAAI,CAACH,kBAAkB,CAAA,CAAE;MAC/B,KAAA,CAAA;QACE,OAAO,IAAI,CAACQ,gBAAgB,EAAE;MAChC,KAAA,EAAA;QAeE,OAAO,IAAI,CAACe,wBAAwB,EAAE;MACxC,KAAA,EAAA;MACA,KAAA,EAAA;QACE,OAAO,IAAI,CAACI,0BAA0B,EAAE;MAC1C;QAAS;UACP,MAAM;YAAEz6D;WAAM,GAAG,IAAI,CAAC4Z,KAAK;UAC3B,IACEyM,iBAAiB,CAACrmB,IAAI,CAAC,IACvBA,IAAI,KAAa,EAAA,IACjBA,IAAI,KAAA,EAAa,EACjB;YACA,MAAM+6D,QAAQ,GACZ/6D,IAAI,OAAa,GACb,eAAe,GACfA,IAAI,KAAA,EAAa,GACf,eAAe,GACfszD,mBAAmB,CAAC,IAAI,CAAC15C,KAAK,CAACrM,KAAK,CAAC;YAC7C,IACEwtD,QAAQ,KAAK5qD,SAAS,IACtB,IAAI,CAACmrB,iBAAiB,CAAA,CAAE,KAAA,EAAkB,EAC1C;cACA,MAAMv7B,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAmB;cAC9C,IAAI,CAAC0S,IAAI,CAAA,CAAE;cACX,OAAO,IAAI,CAACpS,UAAU,CAACpX,IAAI,EAAEg7D,QAAQ,CAAC;YACxC;YACA,OAAO,IAAI,CAACtE,oBAAoB,EAAE;UACpC;QACF;IACF;IAEA,MAAM,IAAI,CAAC1xD,UAAU,EAAE;EACzB;EAEAi2D,wBAAwBA,CAAAA,EAAa;IACnC,MAAM;MAAEjjD;KAAU,GAAG,IAAI,CAAC6B,KAAK;IAC/B,IAAI5Z,IAAI,GAAG,IAAI,CAACi6D,mBAAmB,EAAE;IACrC,OAAO,CAAC,IAAI,CAAC7P,qBAAqB,CAAA,CAAE,IAAI,IAAI,CAACz4B,GAAG,CAAY,CAAA,CAAC,EAAE;MAC7D,IAAI,IAAI,CAACI,KAAK,CAAA,CAAY,CAAC,EAAE;QAC3B,MAAMhyB,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAAgBxf,QAAQ,CAAC;QACtDhY,IAAI,CAAC+5B,WAAW,GAAG95B,IAAI;QACvB,IAAI,CAACsxB,MAAM,CAAA,CAAY,CAAC;QACxBtxB,IAAI,GAAG,IAAI,CAACmX,UAAU,CAACpX,IAAI,EAAE,aAAa,CAAC;MAC7C,CAAC,MAAM;QACL,MAAMA,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAAwBxf,QAAQ,CAAC;QAC9DhY,IAAI,CAACg6B,UAAU,GAAG/5B,IAAI;QACtBD,IAAI,CAACi6B,SAAS,GAAG,IAAI,CAACo/B,WAAW,EAAE;QACnC,IAAI,CAAC9nC,MAAM,CAAA,CAAY,CAAC;QACxBtxB,IAAI,GAAG,IAAI,CAACmX,UAAU,CAACpX,IAAI,EAAE,qBAAqB,CAAC;MACrD;IACF;IACA,OAAOC,IAAI;EACb;EAEAi7D,mBAAmBA,CAAAA,EAAqB;IACtC,MAAMl7D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAoB;IAC/C,MAAMi2C,QAAQ,GAAG,IAAI,CAAClzC,KAAK,CAACrM,KAAK;IACjC,IAAI,CAACgc,IAAI,CAAA,CAAE;IACXxpB,IAAI,CAAC+sD,QAAQ,GAAGA,QAAQ;IACxB/sD,IAAI,CAAC4yB,cAAc,GAAG,IAAI,CAACuoC,2BAA2B,EAAE;IAExD,IAAIpO,QAAQ,KAAK,UAAU,EAAE;MAC3B,IAAI,CAACqO,gCAAgC,CAACp7D,IAAI,CAAC;IAC7C;IAEA,OAAO,IAAI,CAACoX,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;EAChD;EAEAo7D,gCAAgCA,CAACp7D,IAA8B,EAAE;IAC/D,QAAQA,IAAI,CAAC4yB,cAAc,CAAC3yB,IAAI;MAC9B,KAAK,aAAa;MAClB,KAAK,aAAa;QAChB;MACF;QACE,IAAI,CAAC+Y,KAAK,CAACu2C,QAAQ,CAACyD,kBAAkB,EAAEhzD,IAAI,CAAC;IACjD;EACF;EAEAq7D,gBAAgBA,CAAAA,EAAkB;IAChC,MAAMr7D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAiB;IAC5C,IAAI,CAAC6a,gBAAgB,CAAA,GAAU,CAAC;IAChC,MAAMyE,aAAa,GAAG,IAAI,CAACtf,SAAS,EAAqB;IACzDsf,aAAa,CAACnwB,IAAI,GAAG,IAAI,CAACqxD,wBAAwB,EAAE;IACpDlhC,aAAa,CAACmhC,UAAU,GAAG,IAAI,CAAC3C,UAAU,CAAC,MACzC,IAAI,CAAC0G,6BAA6B,CAAA,CACpC,CAAC;IACDt7D,IAAI,CAACo2B,aAAa,GAAG,IAAI,CAAChf,UAAU,CAACgf,aAAa,EAAE,iBAAiB,CAAC;IACtE,OAAO,IAAI,CAAChf,UAAU,CAACpX,IAAI,EAAE,aAAa,CAAC;EAC7C;EAEAs7D,6BAA6BA,CAAAA,EAAG;IAC9B,IAAI,IAAI,CAAC1pC,GAAG,CAAA,EAAY,CAAC,EAAE;MACzB,MAAM2lC,UAAU,GAAG,IAAI,CAACgE,mCAAmC,CAAC,MAC1D,IAAI,CAAClC,WAAW,CAAA,CAClB,CAAC;MACD,IACE,IAAI,CAACx/C,KAAK,CAAC+lC,iCAAiC,IAC5C,CAAC,IAAI,CAAC5tB,KAAK,CAAY,EAAA,CAAC,EACxB;QACA,OAAOulC,UAAU;MACnB;IACF;EACF;EAEA4D,2BAA2BA,CAAAA,EAAa;IACtC,MAAMK,cAAc,GAClBr0C,qBAAqB,CAAC,IAAI,CAACtN,KAAK,CAAC5Z,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC4Z,KAAK,CAACohB,WAAW;IACnE,OAAOugC,cAAc,GACjB,IAAI,CAACN,mBAAmB,CAAE,CAAA,GAC1B,IAAI,CAAC9nC,YAAY,CAAA,GAAU,CAAC,GAC1B,IAAI,CAACioC,gBAAgB,CAAA,CAAE,GACvB,IAAI,CAACb,gCAAgC,CAAC,MACpC,IAAI,CAACS,wBAAwB,CAAA,CAC/B,CAAC;EACT;EAEAQ,8BAA8BA,CAC5Bp7D,IAA0C,EAC1Cq7D,oBAAoC,EACpC3O,QAAmB,EACT;IACV,MAAM/sD,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAwC;IACnE,MAAM6kD,kBAAkB,GAAG,IAAI,CAAC/pC,GAAG,CAACm7B,QAAQ,CAAC;IAC7C,MAAM5xC,KAAK,GAAG,EAAE;IAChB,GAAG;MACDA,KAAK,CAACgC,IAAI,CAACu+C,oBAAoB,CAAA,CAAE,CAAC;IACpC,CAAC,QAAQ,IAAI,CAAC9pC,GAAG,CAACm7B,QAAQ,CAAC;IAC3B,IAAI5xC,KAAK,CAAClB,MAAM,KAAK,CAAC,IAAI,CAAC0hD,kBAAkB,EAAE;MAC7C,OAAOxgD,KAAK,CAAC,CAAC,CAAC;IACjB;IACAnb,IAAI,CAACmb,KAAK,GAAGA,KAAK;IAClB,OAAO,IAAI,CAAC/D,UAAU,CAACpX,IAAI,EAAEK,IAAI,CAAC;EACpC;EAEAu7D,+BAA+BA,CAAAA,EAAa;IAC1C,OAAO,IAAI,CAACH,8BAA8B,CACxC,oBAAoB,EACpB,IAAI,CAACN,2BAA2B,CAACrH,IAAI,CAAC,IAAI,CAAC,IAE7C,CAAC;EACH;EAEA+H,wBAAwBA,CAAAA,EAAG;IACzB,OAAO,IAAI,CAACJ,8BAA8B,CACxC,aAAa,EACb,IAAI,CAACG,+BAA+B,CAAC9H,IAAI,CAAC,IAAI,CAAC,IAEjD,CAAC;EACH;EAEAgI,uBAAuBA,CAAAA,EAAG;IACxB,IAAI,IAAI,CAAC9pC,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB,OAAO,IAAI;IACb;IACA,OACE,IAAI,CAACA,KAAK,GAAU,CAAC,IACrB,IAAI,CAACumC,WAAW,CAAC,IAAI,CAACwD,oCAAoC,CAACjI,IAAI,CAAC,IAAI,CAAC,CAAC;EAE1E;EAEAkI,oBAAoBA,CAAAA,EAAY;IAC9B,IAAI11C,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC,IAAI,IAAI,CAAC+xB,KAAK,CAAA,EAAS,CAAC,EAAE;MAC9D,IAAI,CAACxI,IAAI,CAAA,CAAE;MACX,OAAO,IAAI;IACb;IAEA,IAAI,IAAI,CAACwI,KAAK,CAAA,CAAU,CAAC,EAAE;MAEzB,MAAM;QAAE+sB;OAAQ,GAAG,IAAI,CAACllC,KAAK;MAC7B,MAAMoiD,kBAAkB,GAAGld,MAAM,CAAC9kC,MAAM;MACxC,IAAI;QACF,IAAI,CAACyzC,eAAe,CAAY,CAAA,EAAA,IAAI,CAAC;QACrC,OAAO3O,MAAM,CAAC9kC,MAAM,KAAKgiD,kBAAkB;MAC5C,CAAA,CAAC,OAAAlpD,OAAA,EAAM;QACN,OAAO,KAAK;MACd;IACF;IAEA,IAAI,IAAI,CAACif,KAAK,CAAA,CAAY,CAAC,EAAE;MAC3B,IAAI,CAACxI,IAAI,CAAA,CAAE;MAEX,MAAM;QAAEu1B;OAAQ,GAAG,IAAI,CAACllC,KAAK;MAC7B,MAAMoiD,kBAAkB,GAAGld,MAAM,CAAC9kC,MAAM;MACxC,IAAI;QACF,KAAK,CAACuzC,gBAAgB,CAAA,CAAA,EAAA,EAAA,GAItB,CAAC;QACD,OAAOzO,MAAM,CAAC9kC,MAAM,KAAKgiD,kBAAkB;MAC5C,CAAA,CAAC,OAAAC,QAAA,EAAM;QACN,OAAO,KAAK;MACd;IACF;IAEA,OAAO,KAAK;EACd;EAEAH,oCAAoCA,CAAAA,EAAY;IAC9C,IAAI,CAACvyC,IAAI,CAAA,CAAE;IACX,IAAI,IAAI,CAACwI,KAAK,CAAU,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAY,EAAA,CAAC,EAAE;MAGpD,OAAO,IAAI;IACb;IACA,IAAI,IAAI,CAACgqC,oBAAoB,EAAE,EAAE;MAC/B,IACE,IAAI,CAAChqC,KAAK,CAAA,EAAS,CAAC,IACpB,IAAI,CAACA,KAAK,CAAS,EAAA,CAAC,IACpB,IAAI,CAACA,KAAK,CAAA,EAAY,CAAC,IACvB,IAAI,CAACA,KAAK,CAAM,EAAA,CAAC,EACjB;QAKA,OAAO,IAAI;MACb;MACA,IAAI,IAAI,CAACA,KAAK,CAAA,EAAU,CAAC,EAAE;QACzB,IAAI,CAACxI,IAAI,CAAA,CAAE;QACX,IAAI,IAAI,CAACwI,KAAK,CAAA,EAAS,CAAC,EAAE;UAExB,OAAO,IAAI;QACb;MACF;IACF;IACA,OAAO,KAAK;EACd;EAEAkmC,oCAAoCA,CAClCN,WAAsB,EACF;IACpB,OAAO,IAAI,CAACuE,QAAQ,CAAC,MAAM;MACzB,MAAMC,CAAC,GAAG,IAAI,CAACtlD,SAAS,EAAsB;MAC9C,IAAI,CAACya,MAAM,CAACqmC,WAAW,CAAC;MAExB,MAAM53D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAqB;MAEhD,MAAMkgD,OAAO,GAAG,CAAC,CAAC,IAAI,CAACpC,UAAU,CAC/B,IAAI,CAACyH,2BAA2B,CAACvI,IAAI,CAAC,IAAI,CAC5C,CAAC;MAED,IAAIkD,OAAO,IAAI,IAAI,CAAChlC,KAAK,CAAA,EAAS,CAAC,EAAE;QAGnC,IAAIsqC,iBAAiB,GAAG,IAAI,CAACzB,kCAAkC,EAAE;QAGjE,IAAIyB,iBAAiB,CAACr8D,IAAI,KAAK,YAAY,EAAE;UAC3CD,IAAI,CAAC82D,aAAa,GAAGwF,iBAAiB;UACtCt8D,IAAI,CAACg3D,OAAO,GAAG,IAAI;UAClBh3D,IAAI,CAAuB4yB,cAAc,GAAG,IAAI;UACjD0pC,iBAAiB,GAAG,IAAI,CAACllD,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC;QAC9D,CAAC,MAAM;UACL,IAAI,CAACgX,0BAA0B,CAACslD,iBAAiB,EAAEt8D,IAAI,CAAC;UACxDs8D,iBAAiB,CAACtF,OAAO,GAAG,IAAI;QAClC;QACAoF,CAAC,CAACxpC,cAAc,GAAG0pC,iBAAiB;QACpC,OAAO,IAAI,CAACllD,UAAU,CAACglD,CAAC,EAAE,kBAAkB,CAAC;MAC/C;MAEA,MAAMG,qBAAqB,GACzB,IAAI,CAACnI,cAAc,CAAA,CAAE,IACrB,IAAI,CAACQ,UAAU,CAAC,IAAI,CAAC4H,0BAA0B,CAAC1I,IAAI,CAAC,IAAI,CAAC,CAAC;MAE7D,IAAI,CAACyI,qBAAqB,EAAE;QAC1B,IAAI,CAACvF,OAAO,EAAE;UAEZ,OAAO,IAAI,CAACD,qBAAqB,CAAgB,KAAK,EAAEqF,CAAC,CAAC;QAC5D;QAGAp8D,IAAI,CAAC82D,aAAa,GAAG,IAAI,CAAC1kC,eAAe,EAAE;QAC3CpyB,IAAI,CAACg3D,OAAO,GAAGA,OAAO;QACrBh3D,IAAI,CAAuB4yB,cAAc,GAAG,IAAI;QACjDwpC,CAAC,CAACxpC,cAAc,GAAG,IAAI,CAACxb,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC;QAC3D,OAAO,IAAI,CAACoX,UAAU,CAACglD,CAAC,EAAE,kBAAkB,CAAC;MAC/C;MAGA,MAAMn8D,IAAI,GAAG,IAAI,CAAC82D,qBAAqB,CAAgB,KAAK,CAAC;MAC7D/2D,IAAI,CAAC82D,aAAa,GAAGyF,qBAAqB;MAC1Cv8D,IAAI,CAAC4yB,cAAc,GAAG3yB,IAAI;MAC1BD,IAAI,CAACg3D,OAAO,GAAGA,OAAO;MACtBoF,CAAC,CAACxpC,cAAc,GAAG,IAAI,CAACxb,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC;MAC3D,OAAO,IAAI,CAACoX,UAAU,CAACglD,CAAC,EAAE,kBAAkB,CAAC;IAC/C,CAAC,CAAC;EACJ;EAEAK,uCAAuCA,CAAAA,EAAmC;IACxE,IAAI,IAAI,CAACzqC,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,OAAO,IAAI,CAACkmC,oCAAoC,CAAA,EAAS,CAAC;IAC5D;EACF;EAEAO,wBAAwBA,CAAAA,EAAmC;IACzD,IAAI,IAAI,CAACzmC,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,OAAO,IAAI,CAAC+kC,qBAAqB,EAAE;IACrC;EACF;EAEAuC,cAAcA,CAAAA,EAAyB;IACrC,OAAO,IAAI,CAAC9B,kBAAkB,CAAA,EAAS,CAAC;EAC1C;EAEAgF,0BAA0BA,CAAAA,EAA6B;IACrD,MAAMrmD,EAAE,GAAG,IAAI,CAACic,eAAe,EAAE;IACjC,IAAI,IAAI,CAACgB,YAAY,CAAA,GAAO,CAAC,IAAI,CAAC,IAAI,CAACi3B,qBAAqB,EAAE,EAAE;MAC9D,IAAI,CAAC7gC,IAAI,CAAA,CAAE;MACX,OAAOrT,EAAE;IACX;EACF;EAEAkmD,2BAA2BA,CAAAA,EAAY;IACrC,IAAI,IAAI,CAACxiD,KAAK,CAAC5Z,IAAI,QAAgB,EAAE;MACnC,OAAO,KAAK;IACd;IACA,MAAMg7B,WAAW,GAAG,IAAI,CAACphB,KAAK,CAACohB,WAAW;IAC1C,IAAI,CAACzR,IAAI,CAAA,CAAE;IACX,IAAI,CAAClD,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC+xB,KAAK,CAAA,EAAS,CAAC,EAAE;MAChE,OAAO,KAAK;IACd;IAEA,IAAIiJ,WAAW,EAAE;MACf,IAAI,CAACjiB,KAAK,CACRjJ,MAAM,CAACzL,0BAA0B,EACjC,IAAI,CAACuV,KAAK,CAACC,eAAe,EAC1B;QACEvV,YAAY,EAAE;MAChB,CACF,CAAC;IACH;IAEA,OAAO,IAAI;EACb;EAEAwyD,qBAAqBA,CACnB2F,QAAQ,GAAG,IAAI,EACfN,CAA6B,GAAG,IAAI,CAACtlD,SAAS,CAAA,CAAsB,EAChD;IACpB,IAAI,CAACqlD,QAAQ,CAAC,MAAM;MAClB,IAAIO,QAAQ,EAAE,IAAI,CAACnrC,MAAM,GAAS,CAAC;MACnC6qC,CAAC,CAACxpC,cAAc,GAAG,IAAI,CAACymC,WAAW,EAAE;IACvC,CAAC,CAAC;IACF,OAAO,IAAI,CAACjiD,UAAU,CAACglD,CAAC,EAAE,kBAAkB,CAAC;EAC/C;EAGA/C,WAAWA,CAAAA,EAAa;IAEtB/J,MAAM,CAAC,IAAI,CAACz1C,KAAK,CAACyX,MAAM,CAAC;IACzB,MAAMrxB,IAAI,GAAG,IAAI,CAAC08D,yBAAyB,EAAE;IAE7C,IACE,IAAI,CAAC9iD,KAAK,CAAC+lC,iCAAiC,IAC5C,IAAI,CAACyK,qBAAqB,CAAE,CAAA,IAC5B,CAAC,IAAI,CAACz4B,GAAG,CAAA,EAAY,CAAC,EACtB;MACA,OAAO3xB,IAAI;IACb;IACA,MAAMD,IAAI,GAAG,IAAI,CAAC2T,eAAe,CAAsB1T,IAAI,CAAC;IAC5DD,IAAI,CAAC48D,SAAS,GAAG38D,IAAI;IAErBD,IAAI,CAAC68D,WAAW,GAAG,IAAI,CAACtB,mCAAmC,CAAC,MAC1D,IAAI,CAACoB,yBAAyB,CAAA,CAChC,CAAC;IAED,IAAI,CAACprC,MAAM,CAAA,EAAY,CAAC;IACxBvxB,IAAI,CAAC88D,QAAQ,GAAG,IAAI,CAACtC,gCAAgC,CAAC,MACpD,IAAI,CAACnB,WAAW,CAAA,CAClB,CAAC;IAED,IAAI,CAAC9nC,MAAM,CAAA,EAAS,CAAC;IACrBvxB,IAAI,CAAC+8D,SAAS,GAAG,IAAI,CAACvC,gCAAgC,CAAC,MACrD,IAAI,CAACnB,WAAW,CAAA,CAClB,CAAC;IAED,OAAO,IAAI,CAACjiD,UAAU,CAACpX,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAEAg9D,8BAA8BA,CAAAA,EAAY;IACxC,OACE,IAAI,CAAC5pC,YAAY,CAAa,GAAA,CAAC,IAAI,IAAI,CAACmO,qBAAqB,CAAC,KAAK,CAAC;EAExE;EAEAo7B,yBAAyBA,CAAAA,EAAa;IACpC,IAAI,IAAI,CAACb,uBAAuB,EAAE,EAAE;MAClC,OAAO,IAAI,CAACvB,gCAAgC,CAAC,gBAAgB,CAAC;IAChE;IACA,IAAI,IAAI,CAACvoC,KAAK,CAAA,EAAQ,CAAC,EAAE;MAEvB,OAAO,IAAI,CAACuoC,gCAAgC,CAAC,mBAAmB,CAAC;IACnE,CAAC,MAAM,IAAI,IAAI,CAACyC,8BAA8B,EAAE,EAAE;MAEhD,OAAO,IAAI,CAACzC,gCAAgC,CAC1C,mBAAmB,EACJ,IACjB,CAAC;IACH;IACA,OAAO,IAAI,CAACsB,wBAAwB,EAAE;EACxC;EAEAoB,oBAAoBA,CAAAA,EAAsB;IACxC,IAAI,IAAI,CAACjnD,eAAe,CAAC,YAAY,EAAE,0BAA0B,CAAC,EAAE;MAClE,IAAI,CAACgD,KAAK,CAACu2C,QAAQ,CAAC+C,qBAAqB,EAAE,IAAI,CAACz4C,KAAK,CAAC7B,QAAQ,CAAC;IACjE;IAEA,MAAMhY,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAqB;IAChD9W,IAAI,CAAC4yB,cAAc,GAAG,IAAI,CAACupC,QAAQ,CAAC,MAAM;MACxC,IAAI,CAAC3yC,IAAI,CAAA,CAAE;MACX,OAAO,IAAI,CAACwI,KAAK,CAAU,EAAA,CAAC,GACxB,IAAI,CAAC0kC,oBAAoB,CAAE,CAAA,GAC3B,IAAI,CAAC2C,WAAW,EAAE;IACxB,CAAC,CAAC;IACF,IAAI,CAAC9nC,MAAM,CAAA,EAAM,CAAC;IAClBvxB,IAAI,CAAC4T,UAAU,GAAG,IAAI,CAACmnD,eAAe,EAAE;IACxC,OAAO,IAAI,CAAC3jD,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAIAk9D,qBAAqBA,CACnBrwD,KAA+B,EACkB;IACjD,MAAMswD,gBAAgB,GAAG,IAAI,CAACtjD,KAAK,CAAC7B,QAAQ;IAE5C,MAAMolD,aAAa,GAAG,IAAI,CAAC3H,oBAAoB,CAC7C,uBAAuB,EACvB,MAAM;MA4BF,MAAMz1D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAExB;MAEH9W,IAAI,CAAC4T,UAAU,GAAG,IAAI,CAACwiD,iBAAiB,CACtCC,KAEF,CAAC;MACD,IAAI,IAAI,CAACrkC,KAAK,CAAA,EAAM,CAAC,EAAE;QAErBhyB,IAAI,CAAC+W,cAAc,GAAG,IAAI,CAACu/C,oBAAoB,EAAE;MACnD;MAEA,OAAO,IAAI,CAACl/C,UAAU,CACpBpX,IAAI,EAEJ,+BACF,CAAC;IAEL,CACF,CAAC;IAED,IAAI,CAACo9D,aAAa,CAACnjD,MAAM,EAAE;MACzB,IAAI,CAACjB,KAAK,CAACu2C,QAAQ,CAACe,uBAAuB,EAAE6M,gBAAgB,EAAE;QAC7DtwD;MACF,CAAC,CAAC;IACJ;IAEA,OAAOuwD,aAAa;EACtB;EAEAC,2BAA2BA,CACzBr9D,IAAsC,EACtC63B,UAEC,GAAG,EAAE,EAC2B;IACjC,IAAI,IAAI,CAACyyB,qBAAqB,EAAE,EAAE,OAAO,IAAI;IAC7C,IAAI,CAAC34B,gBAAgB,CAAA,GAAc,CAAC;IACpC,IAAIkG,UAAU,CAACpC,OAAO,EAAEz1B,IAAI,CAACy1B,OAAO,GAAG,IAAI;IAC3C,IAAInP,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC,EAAE;MACtCD,IAAI,CAACmW,EAAE,GAAG,IAAI,CAACic,eAAe,EAAE;MAChC,IAAI,CAACq8B,eAAe,CAACzuD,IAAI,CAACmW,EAAE,KAA+B,CAAC;IAC9D,CAAC,MAAM;MACLnW,IAAI,CAACmW,EAAE,GAAG,IAAI;MACd,IAAI,CAAC6C,KAAK,CAACu2C,QAAQ,CAACsC,oBAAoB,EAAE,IAAI,CAACh4C,KAAK,CAAC7B,QAAQ,CAAC;IAChE;IAEAhY,IAAI,CAAC+W,cAAc,GAAG,IAAI,CAAC0gD,wBAAwB,CACjD,IAAI,CAACtD,0BACP,CAAC;IACD,IAAI,IAAI,CAACviC,GAAG,CAAA,EAAY,CAAC,EAAE;MACzB5xB,IAAI,CAACw0B,OAAO,GAAG,IAAI,CAAC0oC,qBAAqB,CAAC,SAAS,CAAC;IACtD;IACA,MAAMrnD,IAAI,GAAG,IAAI,CAACiB,SAAS,EAAqB;IAChDjB,IAAI,CAACA,IAAI,GAAG,IAAI,CAACsmD,QAAQ,CAAC,IAAI,CAACnD,wBAAwB,CAAClF,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE9zD,IAAI,CAAC6V,IAAI,GAAG,IAAI,CAACuB,UAAU,CAACvB,IAAI,EAAE,iBAAiB,CAAC;IACpD,OAAO,IAAI,CAACuB,UAAU,CAACpX,IAAI,EAAE,wBAAwB,CAAC;EACxD;EAEAs9D,2BAA2BA,CACzBt9D,IAAsC,EACZ;IAC1BA,IAAI,CAACmW,EAAE,GAAG,IAAI,CAACic,eAAe,EAAE;IAChC,IAAI,CAACq8B,eAAe,CAACzuD,IAAI,CAACmW,EAAE,GAA0B,CAAC;IAEvDnW,IAAI,CAAC4yB,cAAc,GAAG,IAAI,CAACupC,QAAQ,CAAC,MAAM;MACxCn8D,IAAI,CAAC+W,cAAc,GAAG,IAAI,CAAC0gD,wBAAwB,CACjD,IAAI,CAAC7D,qBACP,CAAC;MAED,IAAI,CAACriC,MAAM,CAAA,EAAM,CAAC;MAElB,IACE,IAAI,CAAC6B,YAAY,CAAA,GAAc,CAAC,IAChC,IAAI,CAACmI,iBAAiB,CAAE,CAAA,KAAA,EAAkB,EAC1C;QACA,MAAMv7B,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAmB;QAC9C,IAAI,CAAC0S,IAAI,CAAA,CAAE;QACX,OAAO,IAAI,CAACpS,UAAU,CAACpX,IAAI,EAAE,oBAAoB,CAAC;MACpD;MAEA,OAAO,IAAI,CAACq5D,WAAW,EAAE;IAC3B,CAAC,CAAC;IAEF,IAAI,CAACxmC,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAACzb,UAAU,CAACpX,IAAI,EAAE,wBAAwB,CAAC;EACxD;EAGAu9D,mBAAmBA,CAAIjnC,EAAW,EAAK;IACrC,IAAI,IAAI,CAACC,UAAU,EAAE,KAAK3O,KAAE,CAACxM,KAAK,EAAE;MAClC,MAAMob,UAAU,GAAG,IAAI,CAAC3c,KAAK,CAAC6N,OAAO;MACrC,IAAI,CAAC7N,KAAK,CAAC6N,OAAO,GAAG,CAAC8O,UAAU,CAAC,CAAC,CAAC,CAAC;MACpC,IAAI;QACF,OAAOF,EAAE,CAAA,CAAE;MACb,CAAC,SAAS;QACR,IAAI,CAACzc,KAAK,CAAC6N,OAAO,GAAG8O,UAAU;MACjC;IACF,CAAC,MAAM;MACL,OAAOF,EAAE,CAAA,CAAE;IACb;EACF;EAOA6lC,QAAQA,CAAI7lC,EAAW,EAAK;IAC1B,MAAMjF,SAAS,GAAG,IAAI,CAACxX,KAAK,CAACyX,MAAM;IACnC,IAAI,CAACzX,KAAK,CAACyX,MAAM,GAAG,IAAI;IACxB,IAAI;MACF,OAAOgF,EAAE,CAAA,CAAE;IACb,CAAC,SAAS;MACR,IAAI,CAACzc,KAAK,CAACyX,MAAM,GAAGD,SAAS;IAC/B;EACF;EAEAkqC,mCAAmCA,CAAIjlC,EAAW,EAAK;IACrD,MAAMknC,oCAAoC,GACxC,IAAI,CAAC3jD,KAAK,CAAC+lC,iCAAiC;IAC9C,IAAI,CAAC/lC,KAAK,CAAC+lC,iCAAiC,GAAG,IAAI;IACnD,IAAI;MACF,OAAOtpB,EAAE,CAAA,CAAE;IACb,CAAC,SAAS;MACR,IAAI,CAACzc,KAAK,CAAC+lC,iCAAiC,GAC1C4d,oCAAoC;IACxC;EACF;EAEAhD,gCAAgCA,CAAIlkC,EAAW,EAAK;IAClD,MAAMknC,oCAAoC,GACxC,IAAI,CAAC3jD,KAAK,CAAC+lC,iCAAiC;IAC9C,IAAI,CAAC/lC,KAAK,CAAC+lC,iCAAiC,GAAG,KAAK;IACpD,IAAI;MACF,OAAOtpB,EAAE,CAAA,CAAE;IACb,CAAC,SAAS;MACR,IAAI,CAACzc,KAAK,CAAC+lC,iCAAiC,GAC1C4d,oCAAoC;IACxC;EACF;EAEAhG,kBAAkBA,CAAC3qD,KAAgB,EAAwB;IACzD,IAAI,IAAI,CAACmlB,KAAK,CAACnlB,KAAK,CAAC,EAAE;MACrB,OAAO,IAAI,CAAC4wD,mBAAmB,EAAE;IACnC;EACF;EAEAtE,qBAAqBA,CAACtsD,KAAgB,EAAY;IAChD,OAAO,IAAI,CAACsvD,QAAQ,CAAC,MAAM;MACzB,IAAI,CAAC5qC,MAAM,CAAC1kB,KAAK,CAAC;MAClB,OAAO,IAAI,CAACwsD,WAAW,EAAE;IAC3B,CAAC,CAAC;EACJ;EAEAoE,mBAAmBA,CAAAA,EAAa;IAC9B,OAAO,IAAI,CAACtB,QAAQ,CAAC,MAAM;MACzB,IAAI,CAAC3yC,IAAI,CAAA,CAAE;MACX,OAAO,IAAI,CAAC6vC,WAAW,EAAE;IAC3B,CAAC,CAAC;EACJ;EAEAqE,iBAAiBA,CAAAA,EAAmB;IAClC,MAAM19D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAkB;IAE7C9W,IAAI,CAACmW,EAAE,GAAG,IAAI,CAAC6b,KAAK,CAAU,GAAA,CAAC,GAC3B,KAAK,CAAC5e,kBAAkB,CAAC,IAAI,CAACyG,KAAK,CAACrM,KAAK,CAAC,GAC1C,IAAI,CAAC4kB,eAAe,CAAe,IAAI,CAAC;IAC5C,IAAI,IAAI,CAACR,GAAG,CAAA,EAAM,CAAC,EAAE;MACnB5xB,IAAI,CAAC29D,WAAW,GAAG,KAAK,CAACvhC,uBAAuB,EAAE;IACpD;IACA,OAAO,IAAI,CAAChlB,UAAU,CAACpX,IAAI,EAAE,cAAc,CAAC;EAC9C;EAEA49D,sBAAsBA,CACpB59D,IAAiC,EACjC63B,UAGC,GAAG,EAAE,EACe;IACrB,IAAIA,UAAU,CAAC7H,KAAK,EAAEhwB,IAAI,CAACgwB,KAAK,GAAG,IAAI;IACvC,IAAI6H,UAAU,CAACpC,OAAO,EAAEz1B,IAAI,CAACy1B,OAAO,GAAG,IAAI;IAC3C,IAAI,CAAC9D,gBAAgB,CAAA,GAAS,CAAC;IAC/B3xB,IAAI,CAACmW,EAAE,GAAG,IAAI,CAACic,eAAe,EAAE;IAChC,IAAI,CAACq8B,eAAe,CAClBzuD,IAAI,CAACmW,EAAE,EACPnW,IAAI,CAACgwB,KAAK,cACZ,CAAC;IAKC,IAAI,CAACuB,MAAM,CAAA,CAAU,CAAC;IACtBvxB,IAAI,CAAComC,OAAO,GAAG,IAAI,CAACqvB,oBAAoB,CACtC,aAAa,EACb,IAAI,CAACiI,iBAAiB,CAAC5J,IAAI,CAAC,IAAI,CAClC,CAAC;IACD,IAAI,CAACviC,MAAM,CAAA,CAAU,CAAC;IAExB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAEA69D,eAAeA,CAAAA,EAAiB;IAC9B,MAAM79D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAgB;IAC3C,IAAI,CAACya,MAAM,CAAA,CAAU,CAAC;IACtBvxB,IAAI,CAAComC,OAAO,GAAG,IAAI,CAACqvB,oBAAoB,CACtC,aAAa,EACb,IAAI,CAACiI,iBAAiB,CAAC5J,IAAI,CAAC,IAAI,CAClC,CAAC;IACD,IAAI,CAACviC,MAAM,CAAA,CAAU,CAAC;IACtB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,YAAY,CAAC;EAC5C;EAEA89D,kBAAkBA,CAAAA,EAAoB;IACpC,MAAM99D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAmB;IAC9C,IAAI,CAACuU,KAAK,CAACF,KAAK,EAAgB,CAAC;IAEjC,IAAI,CAACoG,MAAM,CAAA,CAAU,CAAC;IAEtB,KAAK,CAACwsC,2BAA2B,CAC9B/9D,IAAI,CAAC6V,IAAI,GAAG,EAAE,EACEzF,SAAS,EACX,IAAI,GAErB,CAAC;IACD,IAAI,CAACib,KAAK,CAACD,IAAI,EAAE;IACjB,OAAO,IAAI,CAAChU,UAAU,CAACpX,IAAI,EAAE,eAAe,CAAC;EAC/C;EAEAg+D,mCAAmCA,CACjCh+D,IAAmC,EACnCi+D,MAAe,GAAG,KAAK,EACA;IACvBj+D,IAAI,CAACmW,EAAE,GAEH,IAAI,CAACic,eAAe,EAAE;IAE1B,IACiE,CAAC6rC,MAAM,EACtE;MAEA,IAAI,CAACxP,eAAe,CAACzuD,IAAI,CAACmW,EAAE,MAA+B,CAAC;IAC9D;IAEA,IAAqC,IAAI,CAACyb,GAAG,CAAA,EAAO,CAAC,EAAE;MACrD,MAAMssC,KAAK,GAAG,IAAI,CAACpnD,SAAS,EAAyB;MACrD,IAAI,CAACknD,mCAAmC,CAACE,KAAK,EAAE,IAAI,CAAC;MAErDl+D,IAAI,CAAC6V,IAAI,GAAGqoD,KAAK;IACnB,CAAC,MAAM;MACL,IAAI,CAAC7yC,KAAK,CAACF,KAAK,KAAoB,CAAC;MACrC,IAAI,CAACygC,SAAS,CAACzgC,KAAK,EAAgB,CAAC;MACrCnrB,IAAI,CAAC6V,IAAI,GAAG,IAAI,CAACioD,kBAAkB,EAAE;MACrC,IAAI,CAAClS,SAAS,CAACxgC,IAAI,EAAE;MACrB,IAAI,CAACC,KAAK,CAACD,IAAI,EAAE;IACnB;IACA,OAAO,IAAI,CAAChU,UAAU,CAACpX,IAAI,EAAE,qBAAqB,CAAC;EACrD;EAEAm+D,uCAAuCA,CACrCn+D,IAAmC,EACZ;IACvB,IAAI,IAAI,CAACozB,YAAY,CAAA,GAAW,CAAC,EAAE;MACjCpzB,IAAI,CAACK,IAAI,GAAG,QAAQ;MAElBL,IAAI,CAACo+D,MAAM,GAAG,IAAI;MAEpBp+D,IAAI,CAACmW,EAAE,GAAG,IAAI,CAACic,eAAe,EAAE;IACjC,CAAA,MAAM,IAAI,IAAI,CAACJ,KAAK,CAAA,GAAU,CAAC,EAAE;MAChChyB,IAAI,CAACK,IAAI,GAAG,QAAQ;MACpBL,IAAI,CAACmW,EAAE,GAAG,KAAK,CAAC/C,kBAAkB,CAAC,IAAI,CAACyG,KAAK,CAACrM,KAAK,CAAC;IACtD,CAAC,MAAM;MACL,IAAI,CAACxI,UAAU,CAAA,CAAE;IACnB;IACA,IAAI,IAAI,CAACgtB,KAAK,CAAA,CAAU,CAAC,EAAE;MACzB,IAAI,CAAC3G,KAAK,CAACF,KAAK,KAAoB,CAAC;MACrC,IAAI,CAACygC,SAAS,CAACzgC,KAAK,EAAgB,CAAC;MACrCnrB,IAAI,CAAC6V,IAAI,GAAG,IAAI,CAACioD,kBAAkB,EAAE;MACrC,IAAI,CAAClS,SAAS,CAACxgC,IAAI,EAAE;MACrB,IAAI,CAACC,KAAK,CAACD,IAAI,EAAE;IACnB,CAAC,MAAM;MACL,IAAI,CAACyH,SAAS,CAAA,CAAE;IAClB;IAEA,OAAO,IAAI,CAACzb,UAAU,CAACpX,IAAI,EAAE,qBAAqB,CAAC;EACrD;EAEAq+D,8BAA8BA,CAC5Br+D,IAAyC,EACzCs+D,sBAA4C,EAC5C19B,QAAkB,EACW;IAE3B5gC,IAAI,CAAC4gC,QAAQ,GAAGA,QAAQ,IAAI,KAAK;IAEnC5gC,IAAI,CAACmW,EAAE,GAAGmoD,sBAAsB,IAAI,IAAI,CAAClsC,eAAe,CAAA,CAAE;IAC1D,IAAI,CAACq8B,eAAe,CAACzuD,IAAI,CAACmW,EAAE,MAAkC,CAAC;IAC/D,IAAI,CAACob,MAAM,CAAA,EAAM,CAAC;IAClB,MAAMgtC,eAAe,GAAG,IAAI,CAACC,sBAAsB,EAAE;IACrD,IACEx+D,IAAI,CAAC8vB,UAAU,KAAK,MAAM,IAC1ByuC,eAAe,CAACt+D,IAAI,KAAK,2BAA2B,EACpD;MACA,IAAI,CAAC+Y,KAAK,CAACu2C,QAAQ,CAACmB,wBAAwB,EAAE6N,eAAe,CAAC;IAChE;IACAv+D,IAAI,CAACu+D,eAAe,GAAGA,eAAe;IACtC,IAAI,CAAC1rC,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAACzb,UAAU,CAACpX,IAAI,EAAE,2BAA2B,CAAC;EAC3D;EAEAy+D,2BAA2BA,CAAAA,EAAY;IACrC,OACE,IAAI,CAACrrC,YAAY,CAAY,GAAA,CAAC,IAC9B,IAAI,CAACmI,iBAAiB,CAAE,CAAA,KAA8B,EAAA;EAE1D;EAEAijC,sBAAsBA,CAAAA,EAAwB;IAC5C,OAAO,IAAI,CAACC,2BAA2B,CAAE,CAAA,GACrC,IAAI,CAACC,8BAA8B,EAAE,GACrC,IAAI,CAACtI,iBAAiB,EAA4B,CAAC;EACzD;EAEAsI,8BAA8BA,CAAAA,EAAgC;IAC5D,MAAM1+D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAA+B;IAC1D,IAAI,CAAC6a,gBAAgB,CAAA,GAAY,CAAC;IAClC,IAAI,CAACJ,MAAM,CAAA,EAAU,CAAC;IACtB,IAAI,CAAC,IAAI,CAACS,KAAK,CAAA,GAAU,CAAC,EAAE;MAC1B,IAAI,CAAChtB,UAAU,CAAA,CAAE;IACnB;IAEAhF,IAAI,CAAC4T,UAAU,GAAG,KAAK,CAAC8f,aAAa,EAAqB;IAC1D,IAAI,CAACnC,MAAM,CAAA,EAAU,CAAC;IACtB,IAAI,CAACkrB,iBAAiB,GAAG,IAAI;IAC7B,OAAO,IAAI,CAACrlC,UAAU,CAACpX,IAAI,EAAE,2BAA2B,CAAC;EAC3D;EAIAu4D,WAAWA,CAAIoG,CAAU,EAAK;IAC5B,MAAM9kD,KAAK,GAAG,IAAI,CAACA,KAAK,CAAChL,KAAK,CAAA,CAAE;IAChC,MAAMkyC,GAAG,GAAG4d,CAAC,EAAE;IACf,IAAI,CAAC9kD,KAAK,GAAGA,KAAK;IAClB,OAAOknC,GAAG;EACZ;EAEA6d,kBAAkBA,CAChBD,CAAU,EACY;IACtB,MAAM/jD,MAAM,GAAG,IAAI,CAACynB,QAAQ,CAC1BI,KAAK,IAEHk8B,CAAC,CAAE,CAAA,IAAIl8B,KAAK,CAAA,CAChB,CAAC;IAED,IAAI7nB,MAAM,CAACioB,OAAO,IAAI,CAACjoB,MAAM,CAAC5a,IAAI,EAAE;IACpC,IAAI4a,MAAM,CAAClM,KAAK,EAAE,IAAI,CAACmL,KAAK,GAAGe,MAAM,CAACmoB,SAAS;IAE/C,OAAOnoB,MAAM,CAAC5a,IAAI;EACpB;EAEA40D,UAAUA,CAAI+J,CAA8B,EAAiB;IAC3D,MAAM9kD,KAAK,GAAG,IAAI,CAACA,KAAK,CAAChL,KAAK,CAAA,CAAE;IAChC,MAAM+L,MAAM,GAAG+jD,CAAC,EAAE;IAClB,IAAI/jD,MAAM,KAAKxK,SAAS,IAAIwK,MAAM,KAAK,KAAK,EAAE;MAC5C,OAAOA,MAAM;IACf;IACA,IAAI,CAACf,KAAK,GAAGA,KAAK;EACpB;EAEAglD,iBAAiBA,CAAC7+D,IAAS,EAAE;IAC3B,IAAI,IAAI,CAACuqD,gBAAgB,EAAE,EAAE;MAC3B;IACF;IACA,MAAMuU,SAAS,GAAG,IAAI,CAACjlD,KAAK,CAAC5Z,IAAI;IACjC,OAAO,IAAI,CAAC8+D,kBAAkB,CAAC,MAAM;MACnC,QAAQD,SAAS;QACf,KAAA,EAAA;UACE9+D,IAAI,CAACy1B,OAAO,GAAG,IAAI;UACnB,OAAO,KAAK,CAACupC,sBAAsB,CACjCh/D,IAAI,EACQ,KAAK,EACU,KAC7B,CAAC;QACH,KAAA,EAAA;UAGEA,IAAI,CAACy1B,OAAO,GAAG,IAAI;UACnB,OAAO,IAAI,CAACwpC,UAAU,CACpBj/D,IAAI,EACc,IAAI,EACL,KACnB,CAAC;QACH,KAAA,GAAA;UACE,OAAO,IAAI,CAAC49D,sBAAsB,CAAC59D,IAAI,EAAE;YAAEy1B,OAAO,EAAE;UAAK,CAAC,CAAC;QAC7D,KAAA,GAAA;UACE,OAAO,IAAI,CAAC0oC,uCAAuC,CAACn+D,IAAI,CAAC;QAC3D,KAAA,GAAA;UACE,IAAI,IAAI,CAAC6Z,KAAK,CAACohB,WAAW,EAAE;YAC1B;UACF;QAEF,KAAA,EAAA;QACA,KAAA,EAAA;UACE,IAAI,CAAC,IAAI,CAACjJ,KAAK,GAAU,CAAC,IAAI,CAAC,IAAI,CAACuP,qBAAqB,CAAC,MAAM,CAAC,EAAE;YACjEvhC,IAAI,CAACy1B,OAAO,GAAG,IAAI;YACnB,OAAO,IAAI,CAACypC,iBAAiB,CAACl/D,IAAI,EAAE,IAAI,CAAC6Z,KAAK,CAACrM,KAAK,EAAE,IAAI,CAAC;UAC7D;UAGA,IAAI,CAAC+jB,MAAM,CAAA,EAAU,CAAC;UACtB,OAAO,IAAI,CAACqsC,sBAAsB,CAAC59D,IAAI,EAAE;YACvCgwB,KAAK,EAAE,IAAI;YACXyF,OAAO,EAAE;UACX,CAAC,CAAC;QACJ,KAAA,GAAA;UACE,IAAI,IAAI,CAAC0pC,OAAO,EAAE,EAAE;YAClB,IAAI,CAACnmD,KAAK,CACRu2C,QAAQ,CAACiC,iCAAiC,EAC1C,IAAI,CAAC33C,KAAK,CAAC7B,QAAQ,EACnB,SACF,CAAC;YACDhY,IAAI,CAACy1B,OAAO,GAAG,IAAI;YACnB,OAAO,IAAI,CAACypC,iBAAiB,CAACl/D,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;UACpD;UACA;QACF,KAAA,EAAA;UACE,IAAI,IAAI,CAACo/D,YAAY,EAAE,EAAE;YACvB,IAAI,CAACpmD,KAAK,CACRu2C,QAAQ,CAAC6B,sCAAsC,EAC/C,IAAI,CAACv3C,KAAK,CAAC7B,QAAQ,EACnB,SACF,CAAC;YACDhY,IAAI,CAACy1B,OAAO,GAAG,IAAI;YACnB,IAAI,CAACjM,IAAI,CAAA,CAAE;YACX,OAAO,IAAI,CAAC01C,iBAAiB,CAACl/D,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC;UAC1D;UACA;QACF,KAAA,GAAA;UAAoB;YAClB,MAAM4a,MAAM,GAAG,IAAI,CAACyiD,2BAA2B,CAACr9D,IAAI,EAAE;cACpDy1B,OAAO,EAAE;YACX,CAAC,CAAC;YACF,IAAI7a,MAAM,EAAE,OAAOA,MAAM;UAC3B;QAEA;UACE,IAAI0L,iBAAiB,CAACw4C,SAAS,CAAC,EAAE;YAChC,OAAO,IAAI,CAACO,kBAAkB,CAC5Br/D,IAAI,EACJ,IAAI,CAAC6Z,KAAK,CAAC5Z,IAAI,EACJ,IAAI,EACE,IACnB,CAAC;UACH;MACJ;IACF,CAAC,CAAC;EACJ;EAGAq/D,2BAA2BA,CAAAA,EAAqC;IAC9D,OAAO,IAAI,CAACD,kBAAkB,CAC5B,IAAI,CAACvoD,SAAS,CAAE,CAAA,EAChB,IAAI,CAAC+C,KAAK,CAAC5Z,IAAI,EACJ,IAAI,EACE,IACnB,CAAC;EACH;EAGAo/D,kBAAkBA,CAChBr/D,IAAS,EACTC,IAAY,EACZupB,IAAa,EACb7P,UAAgC,EAOpB;IAEZ,QAAQ1Z,IAAI;MACV,KAAA,GAAA;QACE,IACE,IAAI,CAACs/D,qBAAqB,CAAC/1C,IAAI,CAAC,KAC/B,IAAI,CAACwI,KAAK,CAAA,EAAU,CAAC,IAAI1L,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC,CAAC,EAC7D;UACA,OAAO,IAAI,CAACu/D,0BAA0B,CAACx/D,IAAI,EAAE2Z,UAAU,CAAC;QAC1D;QACA;MAEF,KAAA,GAAA;QACE,IAAI,IAAI,CAAC4lD,qBAAqB,CAAC/1C,IAAI,CAAC,EAAE;UACpC,IAAI,IAAI,CAACwI,KAAK,CAAA,GAAU,CAAC,EAAE;YACzB,OAAO,IAAI,CAACmsC,uCAAuC,CAACn+D,IAAI,CAAC;UAC1D,CAAA,MAAM,IAAIsmB,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC,EAAE;YAC7CD,IAAI,CAACK,IAAI,GAAG,QAAQ;YACpB,OAAO,IAAI,CAAC29D,mCAAmC,CAACh+D,IAAI,CAAC;UACvD;QACF;QACA;MAEF,KAAA,GAAA;QACE,IACE,IAAI,CAACu/D,qBAAqB,CAAC/1C,IAAI,CAAC,IAChClD,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC,EAClC;UACAD,IAAI,CAACK,IAAI,GAAG,WAAW;UACvB,OAAO,IAAI,CAAC29D,mCAAmC,CAACh+D,IAAI,CAAC;QACvD;QACA;MAEF,KAAA,GAAA;QACE,IACE,IAAI,CAACu/D,qBAAqB,CAAC/1C,IAAI,CAAC,IAChClD,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC,EAClC;UACA,OAAO,IAAI,CAACq9D,2BAA2B,CAACt9D,IAAI,CAAC;QAC/C;QACA;IACJ;EACF;EAEAu/D,qBAAqBA,CAAC/1C,IAAa,EAAE;IACnC,IAAIA,IAAI,EAAE;MACR,IAAI,IAAI,CAAC8gC,qBAAqB,EAAE,EAAE,OAAO,KAAK;MAC9C,IAAI,CAAC9gC,IAAI,CAAA,CAAE;MACX,OAAO,IAAI;IACb;IACA,OAAO,CAAC,IAAI,CAAC+gC,gBAAgB,EAAE;EACjC;EAEAkV,mCAAmCA,CACjCznD,QAAkB,EACqB;IACvC,IAAI,CAAC,IAAI,CAACga,KAAK,CAAA,EAAM,CAAC,EAAE;IAExB,MAAM0tC,yBAAyB,GAAG,IAAI,CAAC7lD,KAAK,CAACwhB,sBAAsB;IACnE,IAAI,CAACxhB,KAAK,CAACwhB,sBAAsB,GAAG,IAAI;IAExC,MAAM0lB,GAAyD,GAC7D,IAAI,CAAC6d,kBAAkB,CAAC,MAAM;MAC5B,MAAM5+D,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAA4Bxf,QAAQ,CAAC;MAClEhY,IAAI,CAAC+W,cAAc,GAAG,IAAI,CAAC2gD,qBAAqB,CAC9C,IAAI,CAACxD,oBACP,CAAC;MAED,KAAK,CAACtyB,mBAAmB,CAAC5hC,IAAI,CAAC;MAC/BA,IAAI,CAAC2yB,UAAU,GAAG,IAAI,CAAC8pC,uCAAuC,EAAE;MAChE,IAAI,CAAClrC,MAAM,CAAA,EAAS,CAAC;MACrB,OAAOvxB,IAAI;IACb,CAAC,CAAC;IAEJ,IAAI,CAAC6Z,KAAK,CAACwhB,sBAAsB,GAAGqkC,yBAAyB;IAE7D,IAAI,CAAC3e,GAAG,EAAE;IAEV,OAAO,KAAK,CAAC1c,oBAAoB,CAC/B0c,GAAG,EAC0B,IAAI,EACrB,IACd,CAAC;EACH;EAIA4e,gCAAgCA,CAAAA,EAElB;IACZ,IAAI,IAAI,CAACjpC,SAAS,EAAE,OAAU,EAAE;IAChC,OAAO,IAAI,CAAC4/B,oBAAoB,EAAE;EACpC;EAEAA,oBAAoBA,CAAAA,EAAmC;IACrD,MAAMt2D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAkC;IAC7D9W,IAAI,CAACkV,MAAM,GAAG,IAAI,CAACinD,QAAQ,CAAC,MAC1B,IAAI,CAACoB,mBAAmB,CAAC,MAAM;MAC7B,IAAI,CAAChsC,MAAM,CAAA,EAAM,CAAC;MAClB,OAAO,IAAI,CAACkkC,oBAAoB,CAC9B,2BAA2B,EAC3B,IAAI,CAAC4D,WAAW,CAACvF,IAAI,CAAC,IAAI,CAC5B,CAAC;IACF,CAAA,CACH,CAAC;IACD,IAAI9zD,IAAI,CAACkV,MAAM,CAAC+E,MAAM,KAAK,CAAC,EAAE;MAC5B,IAAI,CAACjB,KAAK,CAACu2C,QAAQ,CAACgB,kBAAkB,EAAEvwD,IAAI,CAAC;IAC/C,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC6Z,KAAK,CAACyX,MAAM,IAAI,IAAI,CAACiF,UAAU,CAAA,CAAE,KAAK3O,KAAE,CAACxM,KAAK,EAAE;MAG/D,IAAI,CAACyb,YAAY,CAAA,CAAE;IACrB;IACA,IAAI,CAACtF,MAAM,CAAA,EAAM,CAAC;IAClB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,8BAA8B,CAAC;EAC9D;EAEA4/D,oBAAoBA,CAAAA,EAAY;IAC9B,OAAOx4C,yBAAyB,CAAC,IAAI,CAACvN,KAAK,CAAC5Z,IAAI,CAAC;EACnD;EAMAi7B,wBAAwBA,CAAAA,EAAY;IAClC,IAAI,IAAI,CAAC0kC,oBAAoB,EAAE,EAAE,OAAO,KAAK;IAC7C,OAAO,KAAK,CAAC1kC,wBAAwB,EAAE;EACzC;EAEA+yB,mBAAmBA,CACjB17C,KAA4B,EAC5BoH,UAAyB,EACU;IAEnC,MAAM3B,QAAQ,GAAG2B,UAAU,CAACM,MAAM,GAC9BN,UAAU,CAAC,CAAC,CAAC,CAACnL,GAAG,CAAC5Q,KAAK,GACvB,IAAI,CAACic,KAAK,CAAC7B,QAAQ;IAEvB,MAAM68C,QAAsB,GAAG,CAAA,CAAE;IACjC,IAAI,CAAChB,gBAAgB,CACnB;MACEE,gBAAgB,EAAE,CAChB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU;IAEb,CAAA,EACDc,QACF,CAAC;IACD,MAAMO,aAAa,GAAGP,QAAQ,CAACO,aAAa;IAC5C,MAAMyK,QAAQ,GAAGhL,QAAQ,CAACgL,QAAQ;IAClC,MAAMlH,QAAQ,GAAG9D,QAAQ,CAAC8D,QAAQ;IAClC,IACE,EAAEpmD,KAAK,IAA8C,CAAC,KACrD6iD,aAAa,IAAIuD,QAAQ,IAAIkH,QAAQ,CAAC,EACvC;MACA,IAAI,CAAC7mD,KAAK,CAACu2C,QAAQ,CAACwD,2BAA2B,EAAE/6C,QAAQ,CAAC;IAC5D;IAEA,MAAM2mB,IAAI,GAAG,IAAI,CAACyB,iBAAiB,EAAE;IACrC,IAAI7tB,KAAK,IAA2C,EAAE;MACpD,IAAI,CAAC4tB,sBAAsB,CAACxB,IAAI,CAAC;IACnC;IACA,MAAMuuB,GAAG,GAAG,IAAI,CAAC9sB,iBAAiB,CAACzB,IAAI,CAACnwB,GAAG,CAAC5Q,KAAK,EAAE+gC,IAAI,CAAC;IACxD,IAAIy2B,aAAa,IAAIuD,QAAQ,IAAIkH,QAAQ,EAAE;MACzC,MAAMC,EAAE,GAAG,IAAI,CAACtoC,WAAW,CAAwBxf,QAAQ,CAAC;MAC5D,IAAI2B,UAAU,CAACM,MAAM,EAAE;QACrB6lD,EAAE,CAACnmD,UAAU,GAAGA,UAAU;MAC5B;MACA,IAAIy7C,aAAa,EAAE0K,EAAE,CAAC1K,aAAa,GAAGA,aAAa;MACnD,IAAIuD,QAAQ,EAAEmH,EAAE,CAACnH,QAAQ,GAAGA,QAAQ;MACpC,IAAIkH,QAAQ,EAAEC,EAAE,CAACD,QAAQ,GAAGA,QAAQ;MACpC,IAAI3S,GAAG,CAACjtD,IAAI,KAAK,YAAY,IAAIitD,GAAG,CAACjtD,IAAI,KAAK,mBAAmB,EAAE;QACjE,IAAI,CAAC+Y,KAAK,CAACu2C,QAAQ,CAAC6D,gCAAgC,EAAE0M,EAAE,CAAC;MAC3D;MACAA,EAAE,CAACC,SAAS,GAAG7S,GAAgD;MAC/D,OAAO,IAAI,CAAC91C,UAAU,CAAC0oD,EAAE,EAAE,qBAAqB,CAAC;IACnD;IAEA,IAAInmD,UAAU,CAACM,MAAM,EAAE;MACrB0kB,IAAI,CAAChlB,UAAU,GAAGA,UAAU;IAC9B;IAEA,OAAOuzC,GAAG;EACZ;EAEA8S,iBAAiBA,CAAChgE,IAAuC,EAAW;IAClE,OACGA,IAAI,CAACC,IAAI,KAAK,qBAAqB,IAClC,KAAK,CAAC+/D,iBAAiB,CAAChgE,IAAI,CAAC+/D,SAAS,CAAC,IACzC,KAAK,CAACC,iBAAiB,CAAChgE,IAAI,CAAC;EAEjC;EAEAigE,yBAAyBA,CAACjgE,IAAwB,EAAE;IAClD,KAAK,MAAMo6B,KAAK,IAAIp6B,IAAI,CAACkV,MAAM,EAAE;MAC/B,IACEklB,KAAK,CAACn6B,IAAI,KAAK,YAAY,IAC1Bm6B,KAAK,CAASjhB,QAAQ,IACvB,CAAC,IAAI,CAACU,KAAK,CAAC6lC,gBAAgB,EAC5B;QACA,IAAI,CAAC1mC,KAAK,CAACu2C,QAAQ,CAAClhC,iBAAiB,EAAE+L,KAAK,CAAC;MAC/C;IACF;EACF;EAEA+I,0BAA0BA,CACxBnjC,IAAuC,EACvCkV,MAAsB,EACtB0nB,gBAAkC,EAC5B;IACN,KAAK,CAACuG,0BAA0B,CAACnjC,IAAI,EAAEkV,MAAM,EAAE0nB,gBAAgB,CAAC;IAChE,IAAI,CAACqjC,yBAAyB,CAACjgE,IAAI,CAAC;EACtC;EAEA26B,0BAA0BA,CAMxB36B,IAAe,EAAEC,IAAe,EAAEsW,QAAiB,GAAG,KAAK,EAAK;IAChE,IAAI,IAAI,CAACyb,KAAK,CAAA,EAAS,CAAC,EAAE;MACxBhyB,IAAI,CAAC2yB,UAAU,GAAG,IAAI,CAACulC,oCAAoC,GAAS,CAAC;IACvE;IAEA,MAAMgI,YAAY,GAChBjgE,IAAI,KAAK,qBAAqB,GAC1B,mBAAmB,GACnBA,IAAI,KAAK,aAAa,IAAIA,IAAI,KAAK,oBAAoB,GACrD,iBAAiB,GACjBmQ,SAAS;IACjB,IAAI8vD,YAAY,IAAI,CAAC,IAAI,CAACluC,KAAK,CAAA,CAAU,CAAC,IAAI,IAAI,CAACu4B,gBAAgB,EAAE,EAAE;MACrE,OAAO,IAAI,CAACnzC,UAAU,CAACpX,IAAI,EAAEkgE,YAAY,CAAC;IAC5C;IACA,IAAIA,YAAY,KAAK,mBAAmB,IAAI,IAAI,CAACrmD,KAAK,CAAC6lC,gBAAgB,EAAE;MACvE,IAAI,CAAC1mC,KAAK,CAACu2C,QAAQ,CAACW,gCAAgC,EAAElwD,IAAI,CAAC;MAC3D,IAAKA,IAAI,CAAmCy1B,OAAO,EAAE;QACnD,OAAO,KAAK,CAACkF,0BAA0B,CAAC36B,IAAI,EAAEkgE,YAAY,EAAE3pD,QAAQ,CAAC;MACvE;IACF;IACA,IAAI,CAAC0pD,yBAAyB,CAACjgE,IAAI,CAAC;IAEpC,OAAO,KAAK,CAAC26B,0BAA0B,CAAC36B,IAAI,EAAEC,IAAI,EAAEsW,QAAQ,CAAC;EAC/D;EAEA4pD,2BAA2BA,CAACngE,IAAgB,EAAQ;IAClD,IAAI,CAACA,IAAI,CAAC6V,IAAI,IAAI7V,IAAI,CAACmW,EAAE,EAAE;MAGzB,IAAI,CAACs4C,eAAe,CAACzuD,IAAI,CAACmW,EAAE,MAA6B,CAAC;IAC5D,CAAC,MAAM;MACL,KAAK,CAACgqD,2BAA2B,CAACngE,IAAI,CAAC;IACzC;EACF;EAEAogE,0BAA0BA,CACxBC,KAAgD,EAChD;IACAA,KAAK,CAACvsC,OAAO,CAAC9zB,IAAI,IAAI;MACpB,IAAI,CAAAA,IAAI,IAAJA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAEC,IAAI,MAAK,sBAAsB,EAAE;QACzC,IAAI,CAAC+Y,KAAK,CAACu2C,QAAQ,CAAC0D,wBAAwB,EAAEjzD,IAAI,CAAC4yB,cAAc,CAAC;MACpE;IACF,CAAC,CAAC;EACJ;EAEAiM,gBAAgBA,CACdD,QAAiC,EAEjC0hC,UAAoB,EACK;IAKzB,IAAI,CAACF,0BAA0B,CAACxhC,QAAQ,CAAC;IACzC,OAAOA,QAAQ;EACjB;EAEAI,cAAcA,CACZC,KAAgB,EAChBC,OAAgB,EAChBhnB,mBAA6C,EACN;IACvC,MAAMlY,IAAI,GAAG,KAAK,CAACg/B,cAAc,CAACC,KAAK,EAAEC,OAAO,EAAEhnB,mBAAmB,CAAC;IAEtE,IAAIlY,IAAI,CAACC,IAAI,KAAK,iBAAiB,EAAE;MACnC,IAAI,CAACmgE,0BAA0B,CAACpgE,IAAI,CAACm/B,QAAQ,CAAC;IAChD;IAEA,OAAOn/B,IAAI;EACb;EAEA8jC,cAAcA,CACZxpB,IAAkB,EAClBtC,QAAkB,EAClB2rB,OAAmC,EACnC9pB,KAA4B,EACd;IACd,IAAI,CAAC,IAAI,CAACwwC,qBAAqB,CAAA,CAAE,IAAI,IAAI,CAACr4B,KAAK,CAAQ,EAAA,CAAC,EAAE;MAIxD,IAAI,CAACnY,KAAK,CAAC++B,kBAAkB,GAAG,KAAK;MACrC,IAAI,CAACpvB,IAAI,CAAA,CAAE;MAEX,MAAM+2C,iBAAiB,GACrB,IAAI,CAAC/oC,WAAW,CAAwBxf,QAAQ,CAAC;MACnDuoD,iBAAiB,CAAC3sD,UAAU,GAAG0G,IAAI;MACnC,OAAO,IAAI,CAAClD,UAAU,CAACmpD,iBAAiB,EAAE,qBAAqB,CAAC;IAClE;IAEA,IAAIC,cAAc,GAAG,KAAK;IAC1B,IACE,IAAI,CAACxuC,KAAK,CAAA,EAAe,CAAC,IAC1B,IAAI,CAACuJ,iBAAiB,CAAE,CAAA,KAAA,EAAuB,EAC/C;MACA,IAAIoI,OAAO,EAAE;QACX9pB,KAAK,CAACoqB,IAAI,GAAG,IAAI;QACjB,OAAO3pB,IAAI;MACb;MACAT,KAAK,CAACU,mBAAmB,GAAGimD,cAAc,GAAG,IAAI;MACjD,IAAI,CAACh3C,IAAI,CAAA,CAAE;IACb;IAGA,IAAI,IAAI,CAACwI,KAAK,CAAM,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAa,EAAA,CAAC,EAAE;MACjD,IAAIyuC,oBAAoB;MAIxB,MAAM7lD,MAAM,GAAG,IAAI,CAACgkD,kBAAkB,CAAC,MAAM;QAC3C,IAAI,CAACj7B,OAAO,IAAI,IAAI,CAAC+8B,oBAAoB,CAACpmD,IAAI,CAAC,EAAE;UAG/C,MAAMqmD,YAAY,GAChB,IAAI,CAAClB,mCAAmC,CAACznD,QAAQ,CAAC;UACpD,IAAI2oD,YAAY,EAAE;YAChB9mD,KAAK,CAACoqB,IAAI,GAAG,IAAI;YACjB,OAAO08B,YAAY;UACrB;QACF;QAEA,MAAMz8B,aAAa,GAAG,IAAI,CAACy7B,gCAAgC,EAAE;QAC7D,IAAI,CAACz7B,aAAa,EAAE;QAEpB,IAAIs8B,cAAc,IAAI,CAAC,IAAI,CAACxuC,KAAK,CAAA,EAAU,CAAC,EAAE;UAC5CyuC,oBAAoB,GAAG,IAAI,CAAC5mD,KAAK,CAACykB,WAAW,EAAE;UAC/C;QACF;QAEA,IAAI9W,eAAe,CAAC,IAAI,CAAC3N,KAAK,CAAC5Z,IAAI,CAAC,EAAE;UACpC,MAAM2a,MAAM,GAAG,KAAK,CAACgmD,6BAA6B,CAChDtmD,IAAI,EACJtC,QAAQ,EACR6B,KACF,CAAC;UAICe,MAAM,CAAC7D,cAAc,GAAGmtB,aAAa;UAEvC,OAAOtpB,MAAM;QACf;QAEA,IAAI,CAAC+oB,OAAO,IAAI,IAAI,CAAC/R,GAAG,CAAA,EAAU,CAAC,EAAE;UACnC,MAAM5xB,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAE3Bxf,QAAQ,CAAC;UACXhY,IAAI,CAACoZ,MAAM,GAAGkB,IAAI;UAClBta,IAAI,CAACuZ,SAAS,GAAG,IAAI,CAACqqB,4BAA4B,EAAE;UAGpD,IAAI,CAACw8B,0BAA0B,CAACpgE,IAAI,CAACuZ,SAAS,CAAC;UAK7CvZ,IAAI,CAAC+W,cAAc,GAAGmtB,aAAa;UAGrC,IAAIrqB,KAAK,CAACU,mBAAmB,EAAE;YAC5Bva,IAAI,CAAsCmZ,QAAQ,GACjDqnD,cAAc;UAClB;UAEA,OAAO,IAAI,CAACvnD,oBAAoB,CAACjZ,IAAI,EAAE6Z,KAAK,CAACU,mBAAmB,CAAC;QACnE;QAEA,MAAMsmD,SAAS,GAAG,IAAI,CAAChnD,KAAK,CAAC5Z,IAAI;QACjC,IAEE4gE,SAAS,KAAU,EAAA,IAEnBA,SAAS,KAAA,EAAiB,IAEzBA,SAAS,KAAc,EAAA,IACtBA,SAAS,KAAA,EAAW,IACpBA,SAAS,QAAkB,IAC3Bl6C,uBAAuB,CAACk6C,SAAS,CAAC,IAClC,CAAC,IAAI,CAACxW,qBAAqB,EAAG,EAChC;UAEA;QACF;QAEA,MAAMrqD,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAA8Bxf,QAAQ,CAAC;QACpEhY,IAAI,CAAC4T,UAAU,GAAG0G,IAAI;QAIpBta,IAAI,CAAC+W,cAAc,GAAGmtB,aAAa;QAErC,OAAO,IAAI,CAAC9sB,UAAU,CAACpX,IAAI,EAAE,2BAA2B,CAAC;MAC3D,CAAC,CAAC;MAEF,IAAIygE,oBAAoB,EAAE;QACxB,IAAI,CAACz7D,UAAU,CAACy7D,oBAAoB,IAAW,CAAC;MAClD;MAEA,IAAI7lD,MAAM,EAAE;QACV,IAAIA,MAAM,CAAC3a,IAAI,KAAK,2BAA2B,EAAE;UAC/C,IACE,IAAI,CAAC+xB,KAAK,GAAO,CAAC,IACjB,IAAI,CAACA,KAAK,CAAe,EAAA,CAAC,IACzB,IAAI,CAACuJ,iBAAiB,CAAA,CAAE,OAA+B,EACzD;YACA,IAAI,CAACviB,KAAK,CACRu2C,QAAQ,CAACoC,iDAAiD,EAC1D,IAAI,CAAC93C,KAAK,CAAC7B,QACb,CAAC;UACH;UACA,IAAI,CAAC,IAAI,CAACga,KAAK,CAAO,EAAA,CAAC,IAAI,CAAC,IAAI,CAACA,KAAK,CAAA,EAAe,CAAC,EAAE;YAItDpX,MAAM,CAAChH,UAAU,GAAG,KAAK,CAACyG,kBAAkB,CAACC,IAAI,EAAET,KAAK,CAAC;UAC3D;QACF;QACA,OAAOe,MAAM;MACf;IACF;IAEA,OAAO,KAAK,CAACkpB,cAAc,CAACxpB,IAAI,EAAEtC,QAAQ,EAAE2rB,OAAO,EAAE9pB,KAAK,CAAC;EAC7D;EAEAsqB,cAAcA,CAACnkC,IAAqB,EAAQ;IAAA,IAAA8gE,aAAA;IAC1C,KAAK,CAAC38B,cAAc,CAACnkC,IAAI,CAAC;IAE1B,MAAM;MAAEoZ;IAAQ,CAAA,GAAGpZ,IAAI;IACvB,IACEoZ,MAAM,CAACnZ,IAAI,KAAK,2BAA2B,IAC3C,EAAA6gE,CAAAA,aAAA,GAAC1nD,MAAM,CAAClF,KAAK,KAAA,IAAA,IAAZ4sD,aAAA,CAAczrD,aAAa,CAC5B,EAAA;MAIErV,IAAI,CAAC+W,cAAc,GAAGqC,MAAM,CAACrC,cAAc;MAE7C/W,IAAI,CAACoZ,MAAM,GAAGA,MAAM,CAACxF,UAAU;IACjC;EACF;EAEAmtD,WAAWA,CACTpiC,IAAkB,EAClBqiC,YAAsB,EACtBC,OAAe,EACD;IACd,IAAIC,WAAoB;IACxB,IACE55C,uBAAuB,CAAA,EAAO,CAAC,GAAG25C,OAAO,IACzC,CAAC,IAAI,CAAC5W,qBAAqB,EAAE,KAC5B,IAAI,CAACj3B,YAAY,CAAO,EAAA,CAAC,KACvB8tC,WAAW,GAAG,IAAI,CAAC9tC,YAAY,CAAc,GAAA,CAAC,CAAC,CAAC,EACnD;MACA,MAAMpzB,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAE3BwpC,YAAY,CAAC;MACfhhE,IAAI,CAAC4T,UAAU,GAAG+qB,IAAI;MACtB3+B,IAAI,CAAC4yB,cAAc,GAAG,IAAI,CAACupC,QAAQ,CAAC,MAAM;QACxC,IAAI,CAAC3yC,IAAI,CAAA,CAAE;QACX,IAAI,IAAI,CAACwI,KAAK,CAAA,EAAU,CAAC,EAAE;UACzB,IAAIkvC,WAAW,EAAE;YACf,IAAI,CAACloD,KAAK,CAACjJ,MAAM,CAAC9G,iBAAiB,EAAE,IAAI,CAAC4Q,KAAK,CAAC7B,QAAQ,EAAE;cACxD9O,OAAO,EAAE;YACX,CAAC,CAAC;UACJ;UACA,OAAO,IAAI,CAACwtD,oBAAoB,EAAE;QACpC;QAEA,OAAO,IAAI,CAAC2C,WAAW,EAAE;MAC3B,CAAC,CAAC;MACF,IAAI,CAACjiD,UAAU,CACbpX,IAAI,EACJkhE,WAAW,GAAI,uBAAuB,GAAG,gBAC3C,CAAC;MAED,IAAI,CAACrqC,YAAY,CAAA,CAAE;MACnB,OAAO,IAAI,CAACkqC,WAAW,CAErB/gE,IAAI,EACJghE,YAAY,EACZC,OACF,CAAC;IACH;IAEA,OAAO,KAAK,CAACF,WAAW,CAACpiC,IAAI,EAAEqiC,YAAY,EAAEC,OAAO,CAAC;EACvD;EAEAv/B,iBAAiBA,CACf3Y,IAAY,EACZ/Q,QAAkB,EAClBmpD,aAAsB,EACtB1oD,SAAkB,EACZ;IAGN,IAAI,CAAC,IAAI,CAACoB,KAAK,CAAC6lC,gBAAgB,EAAE;MAChC,KAAK,CAAChe,iBAAiB,CAAC3Y,IAAI,EAAE/Q,QAAQ,EAAEmpD,aAAa,EAAE1oD,SAAS,CAAC;IACnE;EACF;EAEA4nB,qBAAqBA,CAACrgC,IAAiC,EAAE;IACvD,KAAK,CAACqgC,qBAAqB,CAACrgC,IAAI,CAAC;IACjC,IAAIA,IAAI,CAACsgC,MAAM,IAAItgC,IAAI,CAAC8vB,UAAU,KAAK,OAAO,EAAE;MAC9C,IAAI,CAAC9W,KAAK,CACRu2C,QAAQ,CAAC3hC,6BAA6B,EACtC5tB,IAAI,CAACga,UAAU,CAAC,CAAC,CAAC,CAACxL,GAAG,CAAC5Q,KACzB,CAAC;IACH;EACF;EAWAwjE,qBAAqBA,CAAAA,EAAG,CAAC;EAEzBzgC,sBAAsBA,CAACC,QAAiB,EAAW;IACjD,IAAI,KAAK,CAACD,sBAAsB,CAACC,QAAQ,CAAC,EAAE,OAAO,IAAI;IACvD,IAAI,IAAI,CAACxN,YAAY,CAAA,GAAS,CAAC,EAAE;MAC/B,MAAMyN,EAAE,GAAG,IAAI,CAACtF,iBAAiB,EAAE;MACnC,OAAOqF,QAAQ,GACXC,EAAE,KAAA,GAA6B,IAAIA,EAAE,KAAA,EAAuB,GAC5DA,EAAE,KAAuB,EAAA;IAC/B;IACA,OAAO,CAACD,QAAQ,IAAI,IAAI,CAACxN,YAAY,GAAW,CAAC;EACnD;EAEA0N,gBAAgBA,CACd9gC,IAA4D,EAC5D4gC,QAAiB,EACjBG,KAAoB,EACpBvyB,GAAc,EACR;IACN,KAAK,CAACsyB,gBAAgB,CAAC9gC,IAAI,EAAE4gC,QAAQ,EAAEG,KAAK,EAAEvyB,GAAG,CAAC;IAClD,IAAIoyB,QAAQ,EAAE;MACX5gC,IAAI,CAA8Bi0B,UAAU,GAC3C8M,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO;IACvC,CAAC,MAAM;MACJ/gC,IAAI,CAAyB8vB,UAAU,GACtCiR,KAAK,KAAK,MAAM,IAAIA,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAG,OAAO;IAC5D;EACF;EAEAnN,WAAWA,CACT5zB,IAA+D,EAClD;IACb,IAAI,IAAI,CAACgyB,KAAK,CAAA,GAAU,CAAC,EAAE;MACzBhyB,IAAI,CAAC8vB,UAAU,GAAG,OAAO;MACzB,OAAO,KAAK,CAAC8D,WAAW,CAAC5zB,IAAmC,CAAC;IAC/D;IAEA,IAAIqhE,UAAU;IACd,IACE/6C,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC,IAClC,IAAI,CAACs7B,iBAAiB,CAAE,CAAA,OAAuB,EAC/C;MACAv7B,IAAI,CAAC8vB,UAAU,GAAG,OAAO;MACzB,OAAO,IAAI,CAACuuC,8BAA8B,CACxCr+D,IACF,CAAC;IACF,CAAA,MAAM,IAAI,IAAI,CAACozB,YAAY,CAAA,GAAS,CAAC,EAAE;MACtC,MAAMkrC,sBAAsB,GAAG,IAAI,CAACgD,qBAAqB,CACvDthE,IAAI,EACW,KACjB,CAAC;MACD,IAAI,IAAI,CAACu7B,iBAAiB,CAAE,CAAA,OAAuB,EAAE;QACnD,OAAO,IAAI,CAAC8iC,8BAA8B,CACxCr+D,IAAI,EACJs+D,sBACF,CAAC;MACH,CAAC,MAAM;QACL+C,UAAU,GAAG,KAAK,CAACE,6BAA6B,CAC9CvhE,IAAI,EACJs+D,sBACF,CAAC;MACH;IACF,CAAC,MAAM;MACL+C,UAAU,GAAG,KAAK,CAACztC,WAAW,CAAC5zB,IAAmC,CAAC;IACrE;IAIA,IACEqhE,UAAU,CAACvxC,UAAU,KAAK,MAAM,IAEhCuxC,UAAU,CAACrnD,UAAU,CAACC,MAAM,GAAG,CAAC,IAEhConD,UAAU,CAACrnD,UAAU,CAAC,CAAC,CAAC,CAAC/Z,IAAI,KAAK,wBAAwB,EAC1D;MACA,IAAI,CAAC+Y,KAAK,CAACu2C,QAAQ,CAACqD,sCAAsC,EAAEyO,UAAU,CAAC;IACzE;IAEA,OAAOA,UAAU;EACnB;EAEA3nD,WAAWA,CACT1Z,IAIC,EACD2Z,UAAgC,EACnB;IACb,IAAI,IAAI,CAACqY,KAAK,CAAA,EAAW,CAAC,EAAE;MAE1B,MAAMwvC,gBAAgB,GAEjBxhE,IAA4C;MACjD,IAAI,CAACwpB,IAAI,CAAA,CAAE;MACX,IAAI80C,sBAA2C,GAAG,IAAI;MACtD,IACE,IAAI,CAAClrC,YAAY,CAAA,GAAS,CAAC,IAE3B,IAAI,CAACuN,sBAAsB,CAAgB,KAAK,CAAC,EACjD;QACA29B,sBAAsB,GAAG,IAAI,CAACgD,qBAAqB,CACjDE,gBAAgB,EACD,KACjB,CAAC;MACH,CAAC,MAAM;QACLA,gBAAgB,CAAC1xC,UAAU,GAAG,OAAO;MACvC;MACA,MAAM3V,WAAW,GAAG,IAAI,CAACkkD,8BAA8B,CACrDmD,gBAAgB,EAChBlD,sBAAsB,EACP,IACjB,CAAC;MASC,OAAOnkD,WAAW;IAErB,CAAA,MAAM,IAAI,IAAI,CAACyX,GAAG,CAAA,EAAM,CAAC,EAAE;MAE1B,MAAMplB,MAAM,GAAGxM,IAAoC;MACnDwM,MAAM,CAACoH,UAAU,GAAG,KAAK,CAACie,eAAe,EAAE;MAC3C,IAAI,CAACgB,SAAS,CAAA,CAAE;MAChB,IAAI,CAAC4pB,iBAAiB,GAAG,IAAI;MAC7B,OAAO,IAAI,CAACrlC,UAAU,CAAC5K,MAAM,EAAE,oBAAoB,CAAC;IACrD,CAAA,MAAM,IAAI,IAAI,CAACymB,aAAa,CAAA,EAAO,CAAC,EAAE;MAErC,MAAM6O,IAAI,GAAG9hC,IAA8C;MAE3D,IAAI,CAAC2xB,gBAAgB,CAAA,GAAc,CAAC;MACpCmQ,IAAI,CAAC3rB,EAAE,GAAG,IAAI,CAACic,eAAe,EAAE;MAChC,IAAI,CAACS,SAAS,CAAA,CAAE;MAChB,OAAO,IAAI,CAACzb,UAAU,CAAC0qB,IAAI,EAAE,8BAA8B,CAAC;IAC9D,CAAC,MAAM;MACL,OAAO,KAAK,CAACpoB,WAAW,CACtB1Z,IAAI,EACJ2Z,UACF,CAAC;IACH;EACF;EAEA8nD,eAAeA,CAAAA,EAAY;IACzB,OACE,IAAI,CAACruC,YAAY,CAAa,GAAA,CAAC,IAAI,IAAI,CAACmO,qBAAqB,CAAC,OAAO,CAAC;EAE1E;EAEApG,4BAA4BA,CAAAA,EAA8C;IACxE,IAAI,IAAI,CAACsmC,eAAe,EAAE,EAAE;MAC1B,MAAMC,GAAG,GAAG,IAAI,CAAC5qD,SAAS,EAAW;MACrC,IAAI,CAAC0S,IAAI,CAAA,CAAE;MACXk4C,GAAG,CAAC9pD,QAAQ,GAAG,IAAI;MACnB,OAAO,IAAI,CAACqnD,UAAU,CAACyC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;IACzC;IAIA,IAAI,IAAI,CAAC1vC,KAAK,CAAA,GAAc,CAAC,EAAE;MAC7B,MAAMpX,MAAM,GAAG,IAAI,CAACyiD,2BAA2B,CAC7C,IAAI,CAACvmD,SAAS,CAChB,CAAA,CAAC;MACD,IAAI8D,MAAM,EAAE,OAAOA,MAAM;IAC3B;IAEA,OAAO,KAAK,CAACugB,4BAA4B,EAAE;EAC7C;EAEA+jC,iBAAiBA,CACfl/D,IAA2B,EAC3BK,IAAuD,EACvDshE,uBAAgC,GAAG,KAAK,EACxC;IACA,MAAM;MAAEjiB;KAAkB,GAAG,IAAI,CAAC7lC,KAAK;IACvC,MAAMM,WAAW,GAAG,KAAK,CAAC+kD,iBAAiB,CACzCl/D,IAAI,EACJK,IAAI,EACJshE,uBAAuB,IAAIjiB,gBAC7B,CAAC;IAED,IAAI,CAACA,gBAAgB,EAAE,OAAOvlC,WAAW;IAGzC,IAAI,CAACna,IAAI,CAACy1B,OAAO,KAAKp1B,IAAI,KAAK,OAAO,IAAIA,IAAI,KAAK,aAAa,CAAC,EAAE;MACjE,IAAI,CAACqnD,cAAc,CACjB6H,QAAQ,CAAC+D,gCAAgC,EACzCtzD,IAAI,EACJK,IACF,CAAC;MACD,OAAO8Z,WAAW;IACpB;IAEA,KAAK,MAAM;MAAEhE,EAAE;MAAE4vB;IAAK,CAAC,IAAI5rB,WAAW,CAACynD,YAAY,EAAE;MAEnD,IAAI,CAAC77B,IAAI,EAAE;MAGX,IAAI1lC,IAAI,KAAK,KAAK,IAAIA,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC8V,EAAE,CAACyc,cAAc,EAAE;QAC3D,IAAI,CAAC5Z,KAAK,CAACu2C,QAAQ,CAAC2B,qCAAqC,EAAEnrB,IAAI,CAAC;MAClE,CAAC,MAAM,IACL,CAAC87B,8BAA8B,CAAC97B,IAAI,EAAE,IAAI,CAACluB,SAAS,CAAC,QAAQ,CAAC,CAAC,EAC/D;QACA,IAAI,CAACmB,KAAK,CACRu2C,QAAQ,CAACnhD,kEAAkE,EAC3E23B,IACF,CAAC;MACH;IACF;IAEA,OAAO5rB,WAAW;EACpB;EAEA2nD,qBAAqBA,CACnBvvD,KAAyB,EACzBoH,UAAgC,EACnB;IACb,IAAI,CAAC,IAAI,CAACE,KAAK,CAACohB,WAAW,EAAE;MAC3B,QAAQ,IAAI,CAACphB,KAAK,CAAC5Z,IAAI;QACrB,KAAA,EAAA;UAAgB;YACd,IAAI,IAAI,CAACshC,qBAAqB,CAAC,MAAM,CAAC,EAAE;cACtC,MAAMvhC,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAuB;cAClD,IAAI,CAACya,MAAM,CAAA,EAAU,CAAC;cACtB,OAAO,IAAI,CAACqsC,sBAAsB,CAAC59D,IAAI,EAAE;gBAAEgwB,KAAK,EAAE;cAAK,CAAC,CAAC;YAC3D;YACA;UACF;QACA,KAAA,GAAA;QACA,KAAA,GAAA;UAAkB;YAChB,IACE,IAAI,CAAC+xC,yDAAyD,EAAE,EAChE;cACA,MAAMl1D,KAAK,GAAG,IAAI,CAACgN,KAAK,CAAC5Z,IAAI;cAC7B,MAAMD,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAyB;cACpD,IAAI,CAAC0S,IAAI,CAAA,CAAE;cACX,MAAMrP,WAAW,GACftN,KAAK,QAAgB,GACjB,IAAI,CAACgyD,iBAAiB,CAAC7+D,IAAI,CAAC,GAC5B,IAAI,CAACw/D,0BAA0B,CAACx/D,IAAI,EAAE2Z,UAAU,CAAC;cACvD,IAAIQ,WAAW,EAAE;gBACf,IAAItN,KAAK,QAAgB,EAAE;kBACzBsN,WAAW,CAACsb,OAAO,GAAG,IAAI;gBAC5B;gBACA,OAAOtb,WAAW;cACpB,CAAC,MAAM;gBAELna,IAAI,CAAC4T,UAAU,GAAG,IAAI,CAAC+lB,gBAAgB,CACrC,IAAI,CAACnC,WAAW,CAAex3B,IAAI,CAACwO,GAAG,CAAC5Q,KAAK,CAAC,EAC9CiP,KAAK,QAAgB,GAAG,SAAS,GAAG,UACtC,CAAC;gBACD,IAAI,CAACgmB,SAAS,CAAC,KAAK,CAAC;gBACrB,OAAO,IAAI,CAACzb,UAAU,CAACpX,IAAI,EAAE,qBAAqB,CAAC;cACrD;YACF;YACA;UACF;QACA,KAAA,GAAA;UACE,OAAO,IAAI,CAAC49D,sBAAsB,CAChC,IAAI,CAAC9mD,SAAS,CAChB,CAAA,CAAC;QACH,KAAA,GAAA;UAAiB;YACf,MAAMwkB,MAAM,GAAG,IAAI,CAACC,iBAAiB,EAAE;YACvC,IAAID,MAAM,QAA6B,EAAE;cACvC,MAAMt7B,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAyB;cACpD,OAAO,IAAI,CAACqnD,uCAAuC,CAACn+D,IAAI,CAAC;YAC3D;YACA;UACF;QACA,KAAA,GAAA;UAAoB;YAClB,MAAM4a,MAAM,GAAG,IAAI,CAACyiD,2BAA2B,CAAC,IAAI,CAACvmD,SAAS,CAAE,CAAA,CAAC;YACjE,IAAI8D,MAAM,EAAE,OAAOA,MAAM;YACzB;UACF;QACA,KAAA,GAAA;UAAiB;YACf,IAAI,IAAI,CAAConD,8CAA8C,EAAE,EAAE;cACzD,MAAMhiE,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAyB;cACpD,IAAI,CAAC0S,IAAI,CAAA,CAAE;cACX,OAAO,IAAI,CAAC61C,kBAAkB,CAC5Br/D,IAAI,EAEJ,GAAA,EAAA,KAAK,EACL2Z,UACF,CAAC;YACH;YACA;UACF;QACA,KAAA,GAAA;UAAoB;YAClB,IAAI,IAAI,CAACsoD,+BAA+B,EAAE,EAAE;cAC1C,MAAMjiE,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAyB;cACpD,IAAI,CAAC0S,IAAI,CAAA,CAAE;cACX,OAAO,IAAI,CAAC61C,kBAAkB,CAC5Br/D,IAAI,EAEJ,GAAA,EAAA,KAAK,EACL2Z,UACF,CAAC;YACH;YACA;UACF;QACA,KAAA,GAAA;UAAe;YACb,IAAI,IAAI,CAACsoD,+BAA+B,EAAE,EAAE;cAC1C,MAAMjiE,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAA4B;cACvD,IAAI,CAAC0S,IAAI,CAAA,CAAE;cACX,OAAO,IAAI,CAAC8zC,2BAA2B,CAACt9D,IAAI,CAAC;YAC/C;YACA;UACF;MACF;IACF;IAEA,OAAO,KAAK,CAAC8hE,qBAAqB,CAACvvD,KAAK,EAAEoH,UAAU,CAAC;EACvD;EAEAuoD,mBAAmBA,CAAAA,EAAuC;IACxD,OAAO,IAAI,CAAC1N,eAAe,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;EACjE;EAEA2N,kBAAkBA,CAACnkC,MAAW,EAAE4yB,SAAgC,EAAW;IACzE,OAAOA,SAAS,CAAC/I,IAAI,CAACuI,QAAQ,IAAI;MAChC,IAAIoD,kBAAkB,CAACpD,QAAQ,CAAC,EAAE;QAChC,OAAOpyB,MAAM,CAACo3B,aAAa,KAAKhF,QAAQ;MAC1C;MACA,OAAO,CAAC,CAACpyB,MAAM,CAACoyB,QAAQ,CAAC;IAC3B,CAAC,CAAC;EACJ;EAEAuE,uBAAuBA,CAAAA,EAAG;IACxB,OACE,IAAI,CAACvhC,YAAY,CAAW,GAAA,CAAC,IAC7B,IAAI,CAACmI,iBAAiB,CAAE,CAAA,KAA6B,GAAA;EAEzD;EAEAuC,gBAAgBA,CACdC,SAAsB,EACtBC,MAAW,EACXnkB,KAA8B,EACxB;IACN,MAAM+2C,SAAS,GAAG,CAChB,SAAS,EACT,SAAS,EACT,QAAQ,EACR,WAAW,EACX,UAAU,EACV,UAAU,EACV,UAAU,EACV,QAAQ,CACA;IACV,IAAI,CAACiD,gBAAgB,CACnB;MACEE,gBAAgB,EAAEnD,SAAS;MAC3BoD,mBAAmB,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;MAClCS,6BAA6B,EAAE,IAAI;MACnCR,aAAa,EAAE1E,QAAQ,CAACgC;IACzB,CAAA,EACDvzB,MACF,CAAC;IAED,MAAMokC,gCAAgC,GAAGA,CAAAA,KAAM;MAC7C,IAAI,IAAI,CAACzN,uBAAuB,EAAE,EAAE;QAClC,IAAI,CAACnrC,IAAI,CAAA,CAAE;QACX,IAAI,CAACA,IAAI,CAAA,CAAE;QACX,IAAI,IAAI,CAAC24C,kBAAkB,CAACnkC,MAAM,EAAE4yB,SAAS,CAAC,EAAE;UAC9C,IAAI,CAAC53C,KAAK,CACRu2C,QAAQ,CAACkD,6BAA6B,EACtC,IAAI,CAAC54C,KAAK,CAACykB,WAAW,CAAA,CACxB,CAAC;QACH;QACA,KAAK,CAAC+jC,qBAAqB,CAACtkC,SAAS,EAAEC,MAAuB,CAAC;MACjE,CAAC,MAAM;QACL,IAAI,CAACskC,4BAA4B,CAC/BvkC,SAAS,EACTC,MAAM,EACNnkB,KAAK,EACL,CAAC,CAACmkB,MAAM,CAAC5G,MACX,CAAC;MACH;KACD;IACD,IAAI4G,MAAM,CAACvI,OAAO,EAAE;MAClB,IAAI,CAACspC,kBAAkB,CAACqD,gCAAgC,CAAC;IAC3D,CAAC,MAAM;MACLA,gCAAgC,EAAE;IACpC;EACF;EAEAE,4BAA4BA,CAC1BvkC,SAAsB,EACtBC,MAAkD,EAClDnkB,KAA8B,EAC9Bsd,QAAiB,EACX;IACN,MAAM2hC,GAAG,GAAG,IAAI,CAACR,wBAAwB,CACvCt6B,MACF,CAAC;IACD,IAAI86B,GAAG,EAAE;MACP/6B,SAAS,CAACloB,IAAI,CAACsH,IAAI,CAAC27C,GAAG,CAAC;MAExB,IAAK96B,MAAM,CAASpmB,QAAQ,EAAE;QAC5B,IAAI,CAACoB,KAAK,CAACu2C,QAAQ,CAACsB,yBAAyB,EAAE7yB,MAAM,CAAC;MACxD;MACA,IAAKA,MAAM,CAASo3B,aAAa,EAAE;QACjC,IAAI,CAACp8C,KAAK,CAACu2C,QAAQ,CAACuB,8BAA8B,EAAE9yB,MAAM,EAAE;UAC1DoyB,QAAQ,EAAGpyB,MAAM,CAASo3B;QAC5B,CAAC,CAAC;MACJ;MACA,IAAKp3B,MAAM,CAASvI,OAAO,EAAE;QAC3B,IAAI,CAACzc,KAAK,CAACu2C,QAAQ,CAACwB,wBAAwB,EAAE/yB,MAAM,CAAC;MACvD;MACA,IAAKA,MAAM,CAAS6hC,QAAQ,EAAE;QAC5B,IAAI,CAAC7mD,KAAK,CAACu2C,QAAQ,CAACyB,yBAAyB,EAAEhzB,MAAM,CAAC;MACxD;MAEA;IACF;IAEA,IAAI,CAAC,IAAI,CAACnkB,KAAK,CAAC8lC,eAAe,IAAK3hB,MAAM,CAASpmB,QAAQ,EAAE;MAC3D,IAAI,CAACoB,KAAK,CAACu2C,QAAQ,CAACuC,iCAAiC,EAAE9zB,MAAM,CAAC;IAChE;IAEA,IAAKA,MAAM,CAAS6hC,QAAQ,EAAE;MAC5B,IAAI,CAAChmD,KAAK,CAAC0oD,aAAa,EAAE;QACxB,IAAI,CAACvpD,KAAK,CAACu2C,QAAQ,CAAC0C,qBAAqB,EAAEj0B,MAAM,CAAC;MACpD;IACF;IAIA,KAAK,CAACskC,4BAA4B,CAChCvkC,SAAS,EACTC,MAAM,EACNnkB,KAAK,EACLsd,QACF,CAAC;EACH;EAEAqrC,4BAA4BA,CAC1BC,YAAsE,EAChE;IACN,MAAMtpD,QAAQ,GAAG,IAAI,CAACyY,GAAG,GAAY,CAAC;IACtC,IAAIzY,QAAQ,EAAEspD,YAAY,CAACtpD,QAAQ,GAAG,IAAI;IAE1C,IAAKspD,YAAY,CAAS9J,QAAQ,IAAI,IAAI,CAAC3mC,KAAK,CAAU,EAAA,CAAC,EAAE;MAC3D,IAAI,CAAChZ,KAAK,CAACu2C,QAAQ,CAACO,sBAAsB,EAAE2S,YAAY,CAAC;IAC3D;IAEA,IAAKA,YAAY,CAAShtC,OAAO,IAAI,IAAI,CAACzD,KAAK,CAAU,EAAA,CAAC,EAAE;MAC1D,IAAI,CAAChZ,KAAK,CAACu2C,QAAQ,CAACM,qBAAqB,EAAE4S,YAAY,CAAC;IAC1D;EACF;EAIAznC,4BAA4BA,CAAAA,EAAY;IACtC,IAAI,IAAI,CAAC4kC,oBAAoB,EAAE,EAAE,OAAO,IAAI;IAC5C,OAAO,KAAK,CAAC5kC,4BAA4B,EAAE;EAC7C;EAGAI,gBAAgBA,CACdL,IAAkB,EAElB/iB,QAAkB,EAClBE,mBAA6C,EAC/B;IACd,IAAI,CAAC,IAAI,CAAC8Z,KAAK,GAAY,CAAC,EAAE,OAAO+I,IAAI;IAEzC,IAAI,IAAI,CAAClhB,KAAK,CAACwhB,sBAAsB,EAAE;MACrC,MAAMC,MAAM,GAAG,IAAI,CAACC,iBAAiB,EAAE;MAIvC,IACED,MAAM,KAAoB,EAAA,IAC1BA,MAAM,KAAA,EAAuB,IAC7BA,MAAM,KAAoB,EAAA,IAC1BA,MAAM,KAAA,EAA+B,EACrC;QAEA,IAAI,CAACE,0BAA0B,CAACtjB,mBAAoB,CAAC;QACrD,OAAO6iB,IAAI;MACb;IACF;IAEA,OAAO,KAAK,CAACK,gBAAgB,CAACL,IAAI,EAAE/iB,QAAQ,EAAEE,mBAAmB,CAAC;EACpE;EAIA8kB,cAAcA,CACZh9B,IAAO,EACPgY,QAAkB,EACU;IAC5B,MAAMilB,OAAO,GAAG,KAAK,CAACD,cAAc,CAACh9B,IAAI,EAAEgY,QAAQ,CAAC;IACpD,IAAI,IAAI,CAAC4Z,GAAG,CAAA,EAAY,CAAC,EAAE;MACxBqL,OAAO,CAAkB9jB,QAAQ,GAAG,IAAI;MAIzC,IAAI,CAAC4B,gBAAgB,CAAC/a,IAAI,CAAC;IAC7B;IAEA,IAAI,IAAI,CAACgyB,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,MAAMkL,YAAY,GAAG,IAAI,CAAC1F,WAAW,CAAyBxf,QAAQ,CAAC;MACvEklB,YAAY,CAACtpB,UAAU,GAAG5T,IAAoB;MAC9Ck9B,YAAY,CAACtK,cAAc,GAAG,IAAI,CAACmkC,qBAAqB,EAAE;MAE1D,OAAO,IAAI,CAAC3/C,UAAU,CAAC8lB,YAAY,EAAE,sBAAsB,CAAC;IAC9D;IAEA,OAAOl9B,IAAI;EACb;EAEAo9B,sBAAsBA,CACpBp9B,IAA8B,EACI;IAClC,IAAI,CAAC,IAAI,CAAC6Z,KAAK,CAAC6lC,gBAAgB,IAAI,IAAI,CAACtsB,YAAY,CAAY,GAAA,CAAC,EAAE;MAClE,OAAO,IAAI,CAAC2rC,kBAAkB,CAAC,MAAM,IAAI,CAAC3hC,sBAAsB,CAACp9B,IAAI,CAAC,CAAC;IACzE;IAGA,MAAMgY,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IAEpC,MAAM0qD,SAAS,GAAG,IAAI,CAACzvC,aAAa,IAAY,CAAC;IAEjD,IACEyvC,SAAS,KACR,IAAI,CAACtvC,YAAY,CAAY,GAAA,CAAC,IAAI,CAAC,IAAI,CAAC4H,4BAA4B,CAAA,CAAE,CAAC,EACxE;MACA,MAAM,IAAI,CAAChiB,KAAK,CACdu2C,QAAQ,CAACkB,iCAAiC,EAC1C,IAAI,CAAC52C,KAAK,CAAC7B,QACb,CAAC;IACH;IAEA,MAAM2qD,YAAY,GAAGr8C,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC;IACvD,MAAMka,WAA6C,GAChDwoD,YAAY,IAAI,IAAI,CAACrD,2BAA2B,CAAE,CAAA,IACnD,KAAK,CAACliC,sBAAsB,CAACp9B,IAAI,CAAC;IAEpC,IAAI,CAACma,WAAW,EAAE,OAAO,IAAI;IAE7B,IACEA,WAAW,CAACla,IAAI,KAAK,wBAAwB,IAC7Cka,WAAW,CAACla,IAAI,KAAK,wBAAwB,IAC7CyiE,SAAS,EACT;MACA1iE,IAAI,CAACi0B,UAAU,GAAG,MAAM;IAC1B;IAEA,IAAIyuC,SAAS,IAAIvoD,WAAW,CAACla,IAAI,KAAK,2BAA2B,EAAE;MAEjE,IAAI,CAACma,kBAAkB,CAACD,WAAW,EAAEnC,QAAQ,CAAC;MAE9CmC,WAAW,CAACsb,OAAO,GAAG,IAAI;IAC5B;IAEA,OAAOtb,WAAW;EACpB;EAEAwjB,YAAYA,CACV39B,IAAa,EACb49B,WAAoB,EACpBC,UAA2B,EAE3BtS,WAAyB,EACnB;IACN,IAAI,CAAC,CAACqS,WAAW,IAAIC,UAAU,KAAK,IAAI,CAACzK,YAAY,CAAe,GAAA,CAAC,EAAE;MACrE;IACF;IAEA,KAAK,CAACuK,YAAY,CAChB39B,IAAI,EACJ49B,WAAW,EACXC,UAAU,EACT79B,IAAI,CAASy1B,OAAO,cAGvB,CAAC;IACD,MAAM1e,cAAc,GAAG,IAAI,CAAC0gD,wBAAwB,CAClD,IAAI,CAACtD,0BACP,CAAC;IACD,IAAIp9C,cAAc,EAAE/W,IAAI,CAAC+W,cAAc,GAAGA,cAAc;EAC1D;EAEA6rD,4BAA4BA,CAC1B5iE,IAAwE,EAClE;IACN,IAAI,CAACA,IAAI,CAACmZ,QAAQ,EAAE;MAClB,IAAI,IAAI,CAACyY,GAAG,CAAA,EAAQ,CAAC,EAAE;QACrB5xB,IAAI,CAAC6iE,QAAQ,GAAG,IAAI;MACrB,CAAA,MAAM,IAAI,IAAI,CAACjxC,GAAG,CAAA,EAAY,CAAC,EAAE;QAChC5xB,IAAI,CAACmZ,QAAQ,GAAG,IAAI;MACtB;IACF;IAEA,MAAMlZ,IAAI,GAAG,IAAI,CAACw4D,wBAAwB,EAAE;IAC5C,IAAIx4D,IAAI,EAAED,IAAI,CAAC4yB,cAAc,GAAG3yB,IAAI;EACtC;EAEAqX,kBAAkBA,CAACtX,IAAqB,EAAmB;IACzD,IAAI,CAAC4iE,4BAA4B,CAAC5iE,IAAI,CAAC;IAEvC,IACE,IAAI,CAAC6Z,KAAK,CAAC6lC,gBAAgB,IAC3B,EAAE1/C,IAAI,CAAC24D,QAAQ,IAAI,CAAC34D,IAAI,CAAC4yB,cAAc,CAAC,IACxC,IAAI,CAACZ,KAAK,CAAM,EAAA,CAAC,EACjB;MACA,IAAI,CAAChZ,KAAK,CACRu2C,QAAQ,CAACU,+BAA+B,EACxC,IAAI,CAACp2C,KAAK,CAAC7B,QACb,CAAC;IACH;IACA,IAAIhY,IAAI,CAAC4X,QAAQ,IAAI,IAAI,CAACoa,KAAK,CAAM,EAAA,CAAC,EAAE;MACtC,MAAM;QAAErrB;MAAK,CAAA,GAAG3G,IAAI;MACpB,IAAI,CAACgZ,KAAK,CACRu2C,QAAQ,CAACG,8BAA8B,EACvC,IAAI,CAAC71C,KAAK,CAAC7B,QAAQ,EACnB;QACE23C,YAAY,EACVhpD,GAAG,CAAC1G,IAAI,KAAK,YAAY,IAAI,CAACD,IAAI,CAACkX,QAAQ,GACvCvQ,GAAG,CAACV,IAAI,GACR,IAAI,IAAI,CAACu4B,KAAK,CAAC4G,KAAK,CAAC,IAAI,CAACrI,iBAAiB,CAACp2B,GAAG,CAAC/I,KAAK,CAAC,EAAE,IAAI,CAACm/B,iBAAiB,CAACp2B,GAAG,CAAC9I,GAAG,CAAC,CAAC;MAChG,CACF,CAAC;IACH;IAEA,OAAO,KAAK,CAACyZ,kBAAkB,CAACtX,IAAI,CAAC;EACvC;EAEAyX,yBAAyBA,CACvBzX,IAA4B,EACJ;IACxB,IAAIA,IAAI,CAAC4X,QAAQ,EAAE;MACjB,IAAI,CAACoB,KAAK,CAACu2C,QAAQ,CAAC2C,yBAAyB,EAAElyD,IAAI,CAAC;IACtD;IAEA,IAAIA,IAAI,CAACo1D,aAAa,EAAE;MACtB,IAAI,CAACp8C,KAAK,CAACu2C,QAAQ,CAAC4C,8BAA8B,EAAEnyD,IAAI,EAAE;QACxDowD,QAAQ,EAAEpwD,IAAI,CAACo1D;MACjB,CAAC,CAAC;IACJ;IAEA,IAAI,CAACwN,4BAA4B,CAAC5iE,IAAI,CAAC;IACvC,OAAO,KAAK,CAACyX,yBAAyB,CAACzX,IAAI,CAAC;EAC9C;EAEA0X,0BAA0BA,CACxB1X,IAA6B,EACJ;IACzB,IAAI,CAAC4iE,4BAA4B,CAAC5iE,IAAI,CAAC;IACvC,IAAIA,IAAI,CAACmZ,QAAQ,EAAE;MACjB,IAAI,CAACH,KAAK,CAACu2C,QAAQ,CAACK,wBAAwB,EAAE5vD,IAAI,CAAC;IACrD;IACA,OAAO,KAAK,CAAC0X,0BAA0B,CAAC1X,IAAI,CAAC;EAC/C;EAEAw/B,eAAeA,CACbzB,SAAsB,EACtB9oB,MAAqB,EACrBwB,WAAoB,EACpB5B,OAAgB,EAChB6B,aAAsB,EACtB+oB,iBAA0B,EACpB;IACN,MAAM1oB,cAAc,GAAG,IAAI,CAAC0gD,wBAAwB,CAClD,IAAI,CAACvD,oBACP,CAAC;IACD,IAAIn9C,cAAc,IAAIL,aAAa,EAAE;MACnC,IAAI,CAACsC,KAAK,CAACu2C,QAAQ,CAACQ,4BAA4B,EAAEh5C,cAAc,CAAC;IACnE;IAEA,MAAM;MAAE0e,OAAO,GAAG,KAAK;MAAEp1B;IAAM,CAAA,GAAG4U,MAAM;IAExC,IAAIwgB,OAAO,KAAKp1B,IAAI,KAAK,KAAK,IAAIA,IAAI,KAAK,KAAK,CAAC,EAAE;MACjD,IAAI,CAAC2Y,KAAK,CAACu2C,QAAQ,CAACS,eAAe,EAAE/6C,MAAM,EAAE;QAAE5U;MAAK,CAAC,CAAC;IACxD;IACA,IAAI0W,cAAc,EAAE9B,MAAM,CAAC8B,cAAc,GAAGA,cAAc;IAC1D,KAAK,CAACyoB,eAAe,CACnBzB,SAAS,EACT9oB,MAAM,EACNwB,WAAW,EACX5B,OAAO,EACP6B,aAAa,EACb+oB,iBACF,CAAC;EACH;EAEAE,sBAAsBA,CACpB5B,SAAsB,EACtB9oB,MAA4B,EAC5BwB,WAAoB,EACpB5B,OAAgB,EACV;IACN,MAAMkC,cAAc,GAAG,IAAI,CAAC0gD,wBAAwB,CAClD,IAAI,CAACvD,oBACP,CAAC;IACD,IAAIn9C,cAAc,EAAE9B,MAAM,CAAC8B,cAAc,GAAGA,cAAc;IAC1D,KAAK,CAAC4oB,sBAAsB,CAAC5B,SAAS,EAAE9oB,MAAM,EAAEwB,WAAW,EAAE5B,OAAO,CAAC;EACvE;EAEAiuD,gCAAgCA,CAC9B9iE,IAA8C,EAC9CK,IAAY,EACZ;IACA,IAAIL,IAAI,CAACC,IAAI,KAAK,iBAAiB,EAAE;IAErC,IACGD,IAAI,CAAYC,IAAI,KAAK,kBAAkB,IAC3CD,IAAI,CAAyCwN,KAAK,CAACqI,IAAI,IAAI,IAAI,EAChE;MACA;IACF;IAEA,KAAK,CAACitD,gCAAgC,CAAC9iE,IAAI,EAAEK,IAAI,CAAC;EACpD;EAEAu/B,eAAeA,CAAC5/B,IAAa,EAAQ;IACnC,KAAK,CAAC4/B,eAAe,CAAC5/B,IAAI,CAAC;IAC3B,IAAIA,IAAI,CAACgS,UAAU,EAAE;MACnB,IAAIhS,IAAI,CAACgS,UAAU,CAAC/R,IAAI,KAAK,2BAA2B,EAAE;QACxD,MAAM8iE,yBAAyB,GAAG/iE,IAAI,CAACgS,UAAU;QACjD,MAAMA,UAAU,GAAG+wD,yBAAyB,CAACnvD,UAAU;QAEvD,IAAI,CAACirC,uBAAuB,CAC1B7sC,UAAU,EACVA,UAAU,CAACpU,KAAK,EAChBoU,UAAU,CAACnU,GACb,CAAC;QAED,MAAMmlE,kBAAkB,GAAGD,yBAAyB,CAAChsD,cAAe;QACpE,IAAI,CAAC8nC,uBAAuB,CAC1BmkB,kBAAkB,EAClBA,kBAAkB,CAACplE,KAAK,EACxBolE,kBAAkB,CAACnlE,GACrB,CAAC;QAEDmC,IAAI,CAACgS,UAAU,GAAGA,UAAU;QAC5BhS,IAAI,CAAC6/B,mBAAmB,GAAGmjC,kBAAkB;MAC/C,CAAC,MAAM,IAAI,IAAI,CAAChxC,KAAK,CAAA,EAAM,CAAC,IAAI,IAAI,CAACA,KAAK,CAAA,EAAa,CAAC,EAAE;QAItDhyB,IAAI,CAAC6/B,mBAAmB,GAAG,IAAI,CAAC8/B,gCAAgC,EAAE;MAEtE;IACF;IACA,IAAI,IAAI,CAAC1sC,aAAa,CAAA,GAAe,CAAC,EAAE;MACtCjzB,IAAI,CAAC00B,UAAU,GAAG,IAAI,CAACwoC,qBAAqB,CAAC,YAAY,CAAC;IAC5D;EACF;EAEAj9B,iBAAiBA,CACfloB,IAAe,EACfC,QAAqC,EACrCvB,WAAoB,EACpB5B,OAAgB,EAChBoD,SAAkB,EAClBioB,UAAmB,EACnBhoB,mBAA6C,EAC1C;IACH,MAAMnB,cAAc,GAAG,IAAI,CAAC0gD,wBAAwB,CAClD,IAAI,CAACvD,oBACP,CAAC;IACD,IAAIn9C,cAAc,EAAEgB,IAAI,CAAChB,cAAc,GAAGA,cAAc;IAExD,OAAO,KAAK,CAACkpB,iBAAiB,CAC5BloB,IAAI,EAEJC,QAAQ,EACRvB,WAAW,EACX5B,OAAO,EACPoD,SAAS,EACTioB,UAAU,EACVhoB,mBACF,CAAC;EACH;EAEA0pB,mBAAmBA,CAAC5hC,IAAgB,EAAE0W,aAAsB,EAAQ;IAClE,MAAMK,cAAc,GAAG,IAAI,CAAC0gD,wBAAwB,CAClD,IAAI,CAACvD,oBACP,CAAC;IACD,IAAIn9C,cAAc,EAAE/W,IAAI,CAAC+W,cAAc,GAAGA,cAAc;IACxD,KAAK,CAAC6qB,mBAAmB,CAAC5hC,IAAI,EAAE0W,aAAa,CAAC;EAChD;EAGAmrB,UAAUA,CACRC,IAA0B,EAC1BzhC,IAAuD,EACjD;IACN,KAAK,CAACwhC,UAAU,CAACC,IAAI,EAAEzhC,IAAI,CAAC;IAC5B,IACEyhC,IAAI,CAAC3rB,EAAE,CAAClW,IAAI,KAAK,YAAY,IAC7B,CAAC,IAAI,CAACoqD,qBAAqB,EAAE,IAC7B,IAAI,CAACz4B,GAAG,CAAA,EAAQ,CAAC,EACjB;MACAkQ,IAAI,CAAC+gC,QAAQ,GAAG,IAAI;IACtB;IAEA,MAAM5iE,IAAI,GAAG,IAAI,CAACw4D,wBAAwB,EAAE;IAC5C,IAAIx4D,IAAI,EAAE;MACR6hC,IAAI,CAAC3rB,EAAE,CAACyc,cAAc,GAAG3yB,IAAI;MAC7B,IAAI,CAAC8a,gBAAgB,CAAC+mB,IAAI,CAAC3rB,EAAE,CAAC;IAChC;EACF;EAGA4rB,iCAAiCA,CAC/B/hC,IAA+B,EAC/BgiC,IAAsB,EACK;IAC3B,IAAI,IAAI,CAAChQ,KAAK,CAAA,EAAS,CAAC,EAAE;MACxBhyB,IAAI,CAAC2yB,UAAU,GAAG,IAAI,CAACokC,qBAAqB,EAAE;IAChD;IACA,OAAO,KAAK,CAACh1B,iCAAiC,CAAC/hC,IAAI,EAAEgiC,IAAI,CAAC;EAC5D;EAEA9F,gBAAgBA,CACdhkB,mBAA6C,EAC7CgqB,cAAyB,EACX;IAAA,IAAAC,IAAA,EAAAI,KAAA,EAAA0gC,SAAA,EAAAzgC,KAAA,EAAA0gC,UAAA;IAGd,IAAIrpD,KAA+B;IACnC,IAAIuoB,GAAG;IACP,IAAI+gC,QAAQ;IAEZ,IACE,IAAI,CAACtrD,SAAS,CAAC,KAAK,CAAC,KACpB,IAAI,CAACma,KAAK,CAAe,GAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAM,EAAA,CAAC,CAAC,EACjD;MAEAnY,KAAK,GAAG,IAAI,CAACA,KAAK,CAAChL,KAAK,EAAE;MAE1BuzB,GAAG,GAAG,IAAI,CAACC,QAAQ,CACjB,MAAM,KAAK,CAACnG,gBAAgB,CAAChkB,mBAAmB,EAAEgqB,cAAc,CAAC,EACjEroB,KACF,CAAC;MAID,IAAI,CAACuoB,GAAG,CAAC1zB,KAAK,EAAE,OAAO0zB,GAAG,CAACpiC,IAAI;MAK/B,MAAM;QAAE0nB;OAAS,GAAG,IAAI,CAAC7N,KAAK;MAC9B,MAAMyoB,cAAc,GAAG5a,OAAO,CAACA,OAAO,CAACzN,MAAM,GAAG,CAAC,CAAC;MAClD,IAAIqoB,cAAc,KAAK1a,KAAE,CAACvM,MAAM,IAAIinB,cAAc,KAAK1a,KAAE,CAACrM,MAAM,EAAE;QAChEmM,OAAO,CAACC,GAAG,CAAA,CAAE;MACf;IACF;IAEA,IAAI,EAAAwa,CAAAA,IAAA,GAACC,GAAG,aAAHD,IAAA,CAAKzzB,KAAK,CAAA,IAAI,CAAC,IAAI,CAACsjB,KAAK,CAAA,EAAM,CAAC,EAAE;MACrC,OAAO,KAAK,CAACkK,gBAAgB,CAAChkB,mBAAmB,EAAEgqB,cAAc,CAAC;IACpE;IAOA,IAAI,CAACroB,KAAK,IAAIA,KAAK,KAAK,IAAI,CAACA,KAAK,EAAEA,KAAK,GAAG,IAAI,CAACA,KAAK,CAAChL,KAAK,EAAE;IAE9D,IAAIkI,cAA+D;IAEnE,MAAM8H,KAAK,GAAG,IAAI,CAACwjB,QAAQ,CAAEI,KAAkB,IAAK;MAAA,IAAA1D,WAAA,EAAAqkC,eAAA;MAElDrsD,cAAc,GAAG,IAAI,CAAC2gD,qBAAqB,CAAC,IAAI,CAACxD,oBAAoB,CAAC;MACtE,MAAMn5B,IAAI,GAAG,KAAK,CAACmB,gBAAgB,CACjChkB,mBAAmB,EACnBgqB,cACF,CAAC;MAED,IACEnH,IAAI,CAAC96B,IAAI,KAAK,yBAAyB,IAAA8+B,CAAAA,WAAA,GACvChE,IAAI,CAAC7mB,KAAK,KAAA,IAAA,IAAV6qB,WAAA,CAAY1pB,aAAa,EACzB;QACAotB,KAAK,EAAE;MACT;MAGA,IAAI,CAAA2gC,CAAAA,eAAA,GAAArsD,cAAc,KAAdqsD,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,eAAA,CAAgBluD,MAAM,CAAC+E,MAAM,MAAK,CAAC,EAAE;QACvC,IAAI,CAACjD,0BAA0B,CAAC+jB,IAAI,EAAEhkB,cAAc,CAAC;MACvD;MACAgkB,IAAI,CAAChkB,cAAc,GAAGA,cAAc;MA2BpC,OAAOgkB,IAAI;IACZ,CAAA,EAAElhB,KAAK,CAAC;IAGT,IAAI,CAACgF,KAAK,CAACnQ,KAAK,IAAI,CAACmQ,KAAK,CAACgkB,OAAO,EAAE;MAIlC,IAAI9rB,cAAc,EAAE,IAAI,CAACssD,4BAA4B,CAACtsD,cAAc,CAAC;MACrE,OAAO8H,KAAK,CAAC7e,IAAI;IACnB;IAEA,IAAI,CAACoiC,GAAG,EAAE;MAIRktB,MAAM,CAAC,CAAC,IAAI,CAACz3C,SAAS,CAAC,KAAK,CAAC,CAAC;MAI9BsrD,QAAQ,GAAG,IAAI,CAAC9gC,QAAQ,CACtB,MAAM,KAAK,CAACnG,gBAAgB,CAAChkB,mBAAmB,EAAEgqB,cAAc,CAAC,EACjEroB,KACF,CAAC;MAGD,IAAI,CAACspD,QAAQ,CAACz0D,KAAK,EAAE,OAAOy0D,QAAQ,CAACnjE,IAAI;IAC3C;IAEA,IAAA,CAAAuiC,KAAA,GAAIH,GAAG,aAAHG,KAAA,CAAKviC,IAAI,EAAE;MAEb,IAAI,CAAC6Z,KAAK,GAAGuoB,GAAG,CAACW,SAAS;MAC1B,OAAOX,GAAG,CAACpiC,IAAI;IACjB;IAEA,IAAI6e,KAAK,CAAC7e,IAAI,EAAE;MAEd,IAAI,CAAC6Z,KAAK,GAAGgF,KAAK,CAACkkB,SAAS;MAC5B,IAAIhsB,cAAc,EAAE,IAAI,CAACssD,4BAA4B,CAACtsD,cAAc,CAAC;MACrE,OAAO8H,KAAK,CAAC7e,IAAI;IACnB;IAEA,IAAA,CAAAijE,SAAA,GAAIE,QAAQ,aAARF,SAAA,CAAUjjE,IAAI,EAAE;MAElB,IAAI,CAAC6Z,KAAK,GAAGspD,QAAQ,CAACpgC,SAAS;MAC/B,OAAOogC,QAAQ,CAACnjE,IAAI;IACtB;IAGA,MAAM,EAAAwiC,KAAA,GAAAJ,GAAG,KAAHI,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAA,CAAK9zB,KAAK,KAAImQ,KAAK,CAACnQ,KAAK,MAAAw0D,UAAA,GAAIC,QAAQ,KAARD,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAA,CAAUx0D,KAAK,CAAA;EACpD;EAEA20D,4BAA4BA,CAACrjE,IAAS,EAAE;IAAA,IAAA8sD,YAAA;IACtC,IACE9sD,IAAI,CAACkV,MAAM,CAAC+E,MAAM,KAAK,CAAC,IACxB,CAACja,IAAI,CAACkV,MAAM,CAAC,CAAC,CAAC,CAACqiD,UAAU,IAC1B,EAAAzK,CAAAA,YAAA,GAAC9sD,IAAI,CAACkU,KAAK,KAAA,IAAA,IAAV44C,YAAA,CAAYwW,aAAa,CAC1B,IAAA,IAAI,CAACttD,eAAe,CAAC,YAAY,EAAE,0BAA0B,CAAC,EAC9D;MACA,IAAI,CAACgD,KAAK,CAACu2C,QAAQ,CAAC8C,sBAAsB,EAAEryD,IAAI,CAAC;IACnD;EACF;EAGA+6D,eAAeA,CACb7iD,mBAA6C,EAC7CqrD,QAAkB,EACJ;IACd,IAAI,CAAC,IAAI,CAAC1rD,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,CAACma,KAAK,CAAA,EAAM,CAAC,EAAE;MAC/C,OAAO,IAAI,CAACirC,oBAAoB,EAAE;IACpC;IACA,OAAO,KAAK,CAAClC,eAAe,CAAC7iD,mBAAmB,EAAEqrD,QAAQ,CAAC;EAC7D;EAEAtgC,UAAUA,CACRjjC,IAAuC,EACe;IACtD,IAAI,IAAI,CAACgyB,KAAK,CAAA,EAAS,CAAC,EAAE;MAIxB,MAAMpX,MAAM,GAAG,IAAI,CAACynB,QAAQ,CAACI,KAAK,IAAI;QACpC,MAAM9P,UAAU,GAAG,IAAI,CAACulC,oCAAoC,GAE5D,CAAC;QACD,IAAI,IAAI,CAACp+B,kBAAkB,CAAA,CAAE,IAAI,CAAC,IAAI,CAAC9H,KAAK,CAAS,EAAA,CAAC,EAAEyQ,KAAK,EAAE;QAC/D,OAAO9P,UAAU;MACnB,CAAC,CAAC;MAEF,IAAI/X,MAAM,CAACioB,OAAO,EAAE;MAEpB,IAAI,CAACjoB,MAAM,CAACooB,MAAM,EAAE;QAClB,IAAIpoB,MAAM,CAAClM,KAAK,EAAE,IAAI,CAACmL,KAAK,GAAGe,MAAM,CAACmoB,SAAS;QAE/C/iC,IAAI,CAAC2yB,UAAU,GAAG/X,MAAM,CAAC5a,IAAI;MAC/B;IACF;IAEA,OAAO,KAAK,CAACijC,UAAU,CAACjjC,IAAI,CAAC;EAC/B;EAGAmgC,sBAAsBA,CAAC/F,KAAgB,EAAE;IACvC,IAAI,IAAI,CAACxI,GAAG,CAAA,EAAY,CAAC,EAAE;MACxBwI,KAAK,CAAyBjhB,QAAQ,GAAG,IAAI;IAChD;IACA,MAAMlZ,IAAI,GAAG,IAAI,CAACw4D,wBAAwB,EAAE;IAC5C,IAAIx4D,IAAI,EAAEm6B,KAAK,CAACxH,cAAc,GAAG3yB,IAAI;IACrC,IAAI,CAAC8a,gBAAgB,CAACqf,KAAK,CAAC;IAE5B,OAAOA,KAAK;EACd;EAEA5hB,YAAYA,CAACxY,IAAY,EAAEyY,SAAmB,EAAW;IACvD,QAAQzY,IAAI,CAACC,IAAI;MACf,KAAK,sBAAsB;QACzB,OAAO,IAAI,CAACuY,YAAY,CAACxY,IAAI,CAAC4T,UAAU,EAAE6E,SAAS,CAAC;MACtD,KAAK,qBAAqB;QACxB,OAAO,IAAI;MACb;QACE,OAAO,KAAK,CAACD,YAAY,CAACxY,IAAI,EAAEyY,SAAS,CAAC;IAC9C;EACF;EAEAC,YAAYA,CAAC1Y,IAAY,EAAE2Y,KAAc,GAAG,KAAK,EAAQ;IACvD,QAAQ3Y,IAAI,CAACC,IAAI;MACf,KAAK,yBAAyB;QAC5B,IAAI,CAACujE,mCAAmC,CAACxjE,IAAI,EAAE2Y,KAAK,CAAC;QACrD;MACF,KAAK,gBAAgB;MACrB,KAAK,uBAAuB;MAC5B,KAAK,qBAAqB;MAC1B,KAAK,iBAAiB;QACpB,IAAIA,KAAK,EAAE;UACT,IAAI,CAACmzC,eAAe,CAACrC,gCAAgC,CACnD8F,QAAQ,CAAC2D,6BAA6B,EACtClzD,IACF,CAAC;QACH,CAAC,MAAM;UACL,IAAI,CAACgZ,KAAK,CAACu2C,QAAQ,CAAC2D,6BAA6B,EAAElzD,IAAI,CAAC;QAC1D;QACA,IAAI,CAAC0Y,YAAY,CAAC1Y,IAAI,CAAC4T,UAAU,EAAE+E,KAAK,CAAC;QACzC;MACF,KAAK,sBAAsB;QACzB,IAAI,CAACA,KAAK,IAAI3Y,IAAI,CAAC2+B,IAAI,CAAC1+B,IAAI,KAAK,sBAAsB,EAAE;UACvDD,IAAI,CAAC2+B,IAAI,GAAG,IAAI,CAACnE,mBAAmB,CAACx6B,IAAI,CAAC2+B,IAAI,CAAiB;QACjE;MAEF;QACE,KAAK,CAACjmB,YAAY,CAAC1Y,IAAI,EAAE2Y,KAAK,CAAC;IACnC;EACF;EAEA6qD,mCAAmCA,CACjCxjE,IAA+B,EAC/B2Y,KAAc,EACR;IACN,QAAQ3Y,IAAI,CAAC4T,UAAU,CAAC3T,IAAI;MAC1B,KAAK,gBAAgB;MACrB,KAAK,uBAAuB;MAC5B,KAAK,qBAAqB;MAC1B,KAAK,iBAAiB;MACtB,KAAK,yBAAyB;QAC5B,IAAI,CAACyY,YAAY,CAAC1Y,IAAI,CAAC4T,UAAU,EAAE+E,KAAK,CAAC;QACzC;MACF;QACE,KAAK,CAACD,YAAY,CAAC1Y,IAAI,EAAE2Y,KAAK,CAAC;IACnC;EACF;EAEAs0C,qBAAqBA,CAACjtD,IAAY,EAAEkvD,YAAqB,EAAQ;IAC/D,QAAQlvD,IAAI,CAACC,IAAI;MACf,KAAK,gBAAgB;MACrB,KAAK,uBAAuB;MAC5B,KAAK,iBAAiB;MACtB,KAAK,qBAAqB;QACxB,IAAI,CAACgtD,qBAAqB,CAACjtD,IAAI,CAAC4T,UAAU,EAAE,KAAK,CAAC;QAClD;MACF;QACE,KAAK,CAACq5C,qBAAqB,CAACjtD,IAAI,EAAEkvD,YAAY,CAAC;IACnD;EACF;EAEA92C,WAAWA,CACTnY,IAOqB,EACrBoY,sBAA+B,EAC/BC,yBAAkC,EAClCC,OAAoB,EACpB;IACA,QAAQtY,IAAI;MAIV,KAAK,sBAAsB;QACzB,OAAO,IAAI;MACb,KAAK,qBAAqB;QACxB,OAAO,WAAW;MACpB,KAAK,qBAAqB;QACxB,OAAO,YAAY;MACrB,KAAK,gBAAgB;MACrB,KAAK,uBAAuB;MAC5B,KAAK,iBAAiB;QACpB,OACE,CAACsY,OAAO,OAA0B,IAAI,CAACD,yBAAyB,KAC/D,CAAC,YAAY,EAAE,IAAI,CAAuB;MAE/C;QACE,OAAO,KAAK,CAACF,WAAW,CACtBnY,IAAI,EACJoY,sBAAsB,EACtBC,yBAAyB,EACzBC,OACF,CAAC;IACL;EACF;EAEAopB,gBAAgBA,CAAAA,EAAc;IAC5B,IAAI,IAAI,CAAC9nB,KAAK,CAAC5Z,IAAI,OAAa,EAAE;MAChC,OAAO,IAAI,CAACmyB,eAAe,CAAe,IAAI,CAAC;IACjD;IACA,OAAO,KAAK,CAACuP,gBAAgB,EAAE;EACjC;EAEA8hC,4BAA4BA,CAC1B1oC,IAAkB,EAClB/iB,QAAkB,EACJ;IAEd,IAAI,IAAI,CAACga,KAAK,CAAM,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAa,EAAA,CAAC,EAAE;MACjD,MAAMkS,aAAa,GAAG,IAAI,CAACy7B,gCAAgC,EAAE;MAE7D,IAAI,IAAI,CAAC3tC,KAAK,CAAA,EAAU,CAAC,EAAE;QACzB,MAAMgQ,IAAI,GAAG,KAAK,CAACyhC,4BAA4B,CAC7C1oC,IAAI,EACJ/iB,QACF,CAAqB;QAInBgqB,IAAI,CAACjrB,cAAc,GAAGmtB,aAAa;QAGrC,OAAOlC,IAAI;MACb;MAEA,IAAI,CAACh9B,UAAU,CAAC,IAAI,IAAW,CAAC;IAClC;IAEA,OAAO,KAAK,CAACy+D,4BAA4B,CAAC1oC,IAAI,EAAE/iB,QAAQ,CAAC;EAC3D;EAEA+1C,mBAAmBA,CACjB9uB,KAAiD,EACxC;IACT,IACE,IAAI,CAACplB,KAAK,CAAC6lC,gBAAgB,IAC3B,IAAI,CAAC1tB,KAAK,GAAS,CAAC,IACpB,IAAI,CAACuJ,iBAAiB,CAAE,CAAA,KAAK0D,KAAK,EAClC;MACA,IAAI,CAACzV,IAAI,CAAA,CAAE;MACX,OAAO,KAAK;IACd;IACA,OAAO,KAAK,CAACukC,mBAAmB,CAAC9uB,KAAK,CAAC;EACzC;EAOAI,aAAaA,CAAAA,EAAY;IACvB,OAAO,IAAI,CAACrN,KAAK,CAAM,EAAA,CAAC,IAAI,KAAK,CAACqN,aAAa,CAAA,CAAE;EACnD;EAEAC,eAAeA,CAAAA,EAAY;IACzB,OACE,IAAI,CAACtN,KAAK,CAAQ,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAA,EAAS,CAAC,IAAI,KAAK,CAACsN,eAAe,EAAE;EAE1E;EAEAc,iBAAiBA,CACfpoB,QAA0B,EAC1B2mB,IAAe,EACU;IACzB,MAAM3+B,IAAI,GAAG,KAAK,CAACogC,iBAAiB,CAACpoB,QAAQ,EAAE2mB,IAAI,CAAC;IAEpD,IACE3+B,IAAI,CAACC,IAAI,KAAK,mBAAmB,IACjCD,IAAI,CAAC4yB,cAAc,IACnB5yB,IAAI,CAACw1B,KAAK,CAAC53B,KAAK,GAAGoC,IAAI,CAAC4yB,cAAc,CAACh1B,KAAK,EAC5C;MACA,IAAI,CAACob,KAAK,CAACu2C,QAAQ,CAACoD,yBAAyB,EAAE3yD,IAAI,CAAC4yB,cAAc,CAAC;IACrE;IAEA,OAAO5yB,IAAI;EACb;EAGAu+B,gBAAgBA,CAACpgC,IAAY,EAAQ;IACnC,IAAI,IAAI,CAAC0b,KAAK,CAACyX,MAAM,EAAE;MACrB,IAAInzB,IAAI,OAA0B,EAAE;QAClC,IAAI,CAACugC,QAAQ,CAAQ,EAAA,EAAA,CAAC,CAAC;QACvB;MACF;MACA,IAAIvgC,IAAI,OAAuB,EAAE;QAC/B,IAAI,CAACugC,QAAQ,CAAQ,EAAA,EAAA,CAAC,CAAC;QACvB;MACF;IACF;IACA,KAAK,CAACH,gBAAgB,CAACpgC,IAAI,CAAC;EAC9B;EAGA04B,YAAYA,CAAAA,EAAG;IACb,MAAM;MAAE52B;KAAM,GAAG,IAAI,CAAC4Z,KAAK;IAC3B,IAAI5Z,IAAI,OAAU,EAAE;MAClB,IAAI,CAAC4Z,KAAK,CAACjL,GAAG,IAAI,CAAC;MACnB,IAAI,CAAC64B,YAAY,CAAA,CAAE;IACrB,CAAC,MAAM,IAAIxnC,IAAI,KAAA,EAAU,EAAE;MACzB,IAAI,CAAC4Z,KAAK,CAACjL,GAAG,IAAI,CAAC;MACnB,IAAI,CAAC84B,YAAY,CAAA,CAAE;IACrB;EACF;EAEAhR,SAASA,CAAAA,EAAG;IACV,MAAM;MAAEz2B;KAAM,GAAG,IAAI,CAAC4Z,KAAK;IAC3B,IAAI5Z,IAAI,OAAiB,EAAE;MACzB,IAAI,CAAC4Z,KAAK,CAACjL,GAAG,IAAI,CAAC;MACnB,IAAI,CAAC8vB,QAAQ,CAAQ,EAAA,EAAA,CAAC,CAAC;MACvB,OAAA,EAAA;IACF;IACA,OAAOz+B,IAAI;EACb;EAEAktD,oBAAoBA,CAClBvuB,QAA4D,EAC5DnhC,KAAa,EACbkb,KAAc,EACR;IACN,MAAM3Y,IAAI,GAAG4+B,QAAQ,CAACnhC,KAAK,CAAC;IAC5B,IAAIuC,IAAI,CAACC,IAAI,KAAK,sBAAsB,EAAE;MACxC2+B,QAAQ,CAACnhC,KAAK,CAAC,GAAG,IAAI,CAAC+8B,mBAAmB,CAACx6B,IAAI,CAAC;IAClD;IACA,KAAK,CAACmtD,oBAAoB,CAACvuB,QAAQ,EAAEnhC,KAAK,EAAEkb,KAAK,CAAC;EACpD;EAEA6hB,mBAAmBA,CAACx6B,IAA4B,EAAgB;IAC7DA,IAAI,CAAC4T,UAAU,CAAkBgf,cAAc,GAAG5yB,IAAI,CAAC4yB,cAAc;IAEtE,IAAI,CAAC7X,gBAAgB,CAAC/a,IAAI,CAAC4T,UAAU,EAAE5T,IAAI,CAAC4yB,cAAc,CAACpkB,GAAG,CAAC3Q,GAAG,CAAC;IAEnE,OAAOmC,IAAI,CAAC4T,UAAU;EACxB;EAEAsvB,gBAAgBA,CAAChuB,MAAgB,EAAE;IACjC,IAAI,IAAI,CAAC8c,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,OAAO9c,MAAM,CAACunB,KAAK,CAAC1B,IAAI,IAAI,IAAI,CAACviB,YAAY,CAACuiB,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5D;IACA,OAAO,KAAK,CAACmI,gBAAgB,CAAChuB,MAAM,CAAC;EACvC;EAEA+sB,qBAAqBA,CAAAA,EAAY;IAC/B,OAAO,IAAI,CAACjQ,KAAK,CAAS,EAAA,CAAC,IAAI,KAAK,CAACiQ,qBAAqB,CAAA,CAAE;EAC9D;EAEAyhC,uBAAuBA,CAAAA,EAAG;IAExB,OAAO,KAAK,CAACA,uBAAuB,CAAA,CAAE,IAAI,IAAI,CAACjC,eAAe,CAAA,CAAE;EAClE;EAEAn6B,+BAA+BA,CAC7BtnC,IAAyB,EACJ;IAErB,IAAI,IAAI,CAACgyB,KAAK,CAAM,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAa,EAAA,CAAC,EAAE;MACjD,MAAMkS,aAAa,GAAG,IAAI,CAAC06B,kBAAkB,CAAC,MAC5C,IAAI,CAACe,gCAAgC,CAAA,CACvC,CAAC;MACD,IAAIz7B,aAAa,EAAE;QAIflkC,IAAI,CAAC+W,cAAc,GAAGmtB,aAAa;MAEvC;IACF;IACA,OAAO,KAAK,CAACoD,+BAA+B,CAACtnC,IAAI,CAAC;EACpD;EAEA2jE,iCAAiCA,CAC/B1uD,MAAsC,EAC9B;IACR,MAAM2uD,SAAS,GAAG,KAAK,CAACD,iCAAiC,CAAC1uD,MAAM,CAAC;IACjE,MAAMC,MAAM,GAAG,IAAI,CAACF,4BAA4B,CAACC,MAAM,CAAC;IACxD,MAAM4uD,UAAU,GAAG3uD,MAAM,CAAC,CAAC,CAAC;IAC5B,MAAM4uD,eAAe,GAAGD,UAAU,IAAI,IAAI,CAACnkC,WAAW,CAACmkC,UAAU,CAAC;IAElE,OAAOC,eAAe,GAAGF,SAAS,GAAG,CAAC,GAAGA,SAAS;EACpD;EAEAG,qBAAqBA,CAAAA,EAAc;IACjC,MAAM3pC,KAAK,GAAG,KAAK,CAAC2pC,qBAAqB,EAAE;IAC3C,MAAM9jE,IAAI,GAAG,IAAI,CAACw4D,wBAAwB,EAAE;IAE5C,IAAIx4D,IAAI,EAAE;MACRm6B,KAAK,CAACxH,cAAc,GAAG3yB,IAAI;MAC3B,IAAI,CAAC8a,gBAAgB,CAACqf,KAAK,CAAC;IAC9B;IAEA,OAAOA,KAAK;EACd;EAEA2kC,kBAAkBA,CAAIzoC,EAAW,EAAK;IACpC,MAAM;MAAEopB,gBAAgB,EAAEskB,mBAAmB;MAAEt7C,MAAM,EAAEu7C;KAAW,GAChE,IAAI,CAACpqD,KAAK;IACZ,IAAI,CAACA,KAAK,CAAC6lC,gBAAgB,GAAG,IAAI;IAClC,IAAI,CAAC7lC,KAAK,CAAC6O,MAAM,GAAG,KAAK;IACzB,IAAI;MACF,OAAO4N,EAAE,CAAA,CAAE;IACb,CAAC,SAAS;MACR,IAAI,CAACzc,KAAK,CAAC6lC,gBAAgB,GAAGskB,mBAAmB;MACjD,IAAI,CAACnqD,KAAK,CAAC6O,MAAM,GAAGu7C,SAAS;IAC/B;EACF;EAEAhF,UAAUA,CACRj/D,IAAe,EACf49B,WAAoB,EACpBC,UAAoB,EACjB;IACH,MAAMqmC,kBAAkB,GAAG,IAAI,CAACrqD,KAAK,CAAC8lC,eAAe;IACrD,IAAI,CAAC9lC,KAAK,CAAC8lC,eAAe,GAAG,CAAC,CAAE3/C,IAAI,CAAS4X,QAAQ;IACrD,IAAI;MACF,OAAO,KAAK,CAACqnD,UAAU,CAACj/D,IAAI,EAAE49B,WAAW,EAAEC,UAAU,CAAC;IACxD,CAAC,SAAS;MACR,IAAI,CAAChkB,KAAK,CAAC8lC,eAAe,GAAGukB,kBAAkB;IACjD;EACF;EAEA1E,0BAA0BA,CACxBx/D,IAAS,EACT2Z,UAAgC,EACsB;IACtD,IAAI,IAAI,CAACqY,KAAK,CAAA,EAAU,CAAC,EAAE;MACzBhyB,IAAI,CAAC4X,QAAQ,GAAG,IAAI;MACpB,OAAO,IAAI,CAACusD,mBAAmB,CAC7BxqD,UAAU,EACV,IAAI,CAACslD,UAAU,CACbj/D,IAAI,EACc,IAAI,EACL,KACnB,CACF,CAAC;IACF,CAAA,MAAM,IAAI,IAAI,CAACozB,YAAY,CAAA,GAAc,CAAC,EAAE;MAM3C,IAAI,CAAC,IAAI,CAACk3B,qBAAqB,EAAE,EAAE;QACjCtqD,IAAI,CAAC4X,QAAQ,GAAG,IAAI;QACpB,IAAI,CAACoB,KAAK,CAACu2C,QAAQ,CAACwC,yCAAyC,EAAE/xD,IAAI,CAAC;QACpE,OAAO,IAAI,CAACq9D,2BAA2B,CACrCr9D,IACF,CAAC;MACH,CAAC,MAAM;QACL,OAAO,IAAI;MACb;IACF;IACA,MAAM,IAAI,CAACgF,UAAU,CAAC,IAAI,IAAW,CAAC;EACxC;EAEAwR,WAAWA,CAGTxW,IAAe,EACfyW,WAAoB,EACpB5B,OAAgB,EAChB6B,aAAsB,EACtBC,gBAAyB,EACzB1W,IAAe,EACf2W,YAAsB,EACtB;IACA,MAAM3B,MAAM,GAAG,KAAK,CAACuB,WAAW,CAC9BxW,IAAI,EACJyW,WAAW,EACX5B,OAAO,EACP6B,aAAa,EACbC,gBAAgB,EAChB1W,IAAI,EACJ2W,YACF,CAAC;IAED,IAAI3B,MAAM,CAAC2C,QAAQ,IAAI3C,MAAM,CAAChV,IAAI,KAAK,4BAA4B,EAAE;MACnE,MAAMmkE,eAAe,GAAG,IAAI,CAACvsD,SAAS,CAAC,QAAQ,CAAC;MAChD,MAAMwsD,QAAQ,GAAGD,eAAe,GAE5BnvD,MAAM,CAACzH,KAAK,GACZyH,MAAM;MACV,IAAIovD,QAAQ,CAACxuD,IAAI,EAAE;QACjB,MAAM;UAAElP;QAAK,CAAA,GAAGsO,MAAM;QACtB,IAAI,CAAC+D,KAAK,CAACu2C,QAAQ,CAACC,+BAA+B,EAAEv6C,MAAM,EAAE;UAC3Dw6C,UAAU,EACR9oD,GAAG,CAAC1G,IAAI,KAAK,YAAY,IAAI,CAACgV,MAAM,CAACiC,QAAQ,GACzCvQ,GAAG,CAACV,IAAI,GACR,IAAI,IAAI,CAACu4B,KAAK,CAAC4G,KAAK,CAAC,IAAI,CAACrI,iBAAiB,CAACp2B,GAAG,CAAC/I,KAAK,CAAC,EAAE,IAAI,CAACm/B,iBAAiB,CAACp2B,GAAG,CAAC9I,GAAG,CAAC,CAAC;QAChG,CAAC,CAAC;MACJ;IACF;IACA,OAAOoX,MAAM;EACf;EAEAqiD,wBAAwBA,CAAAA,EAA0B;IAChD,MAAMX,QAAsB,GAAG,IAAI,CAACvkC,eAAe,EAAE;IACrD,OAAiDukC,QAAQ,CAAC1wD,IAAI;EAChE;EAEAq+D,2BAA2BA,CAAAA,EAAY;IACrC,OAAO,CAAC,CAAC,IAAI,CAACtuD,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC;EACpD;EAEA9D,KAAKA,CAAAA,EAAG;IACN,IAAI,IAAI,CAACoyD,2BAA2B,EAAE,EAAE;MACtC,IAAI,CAACzqD,KAAK,CAAC6lC,gBAAgB,GAAG,IAAI;IACpC;IACA,OAAO,KAAK,CAACxtC,KAAK,EAAE;EACtB;EAEAqyD,aAAaA,CAAAA,EAAG;IACd,IAAI,IAAI,CAACD,2BAA2B,EAAE,EAAE;MACtC,IAAI,CAACzqD,KAAK,CAAC6lC,gBAAgB,GAAG,IAAI;IACpC;IACA,OAAO,KAAK,CAAC6kB,aAAa,EAAE;EAC9B;EAEAC,oBAAoBA,CAClBxkE,IAA+B,EAC/BykE,QAAiB,EACjBC,cAAuB,EACvBvjC,eAAwB,EACxB;IACA,IAAI,CAACsjC,QAAQ,IAAItjC,eAAe,EAAE;MAChC,IAAI,CAACwjC,kCAAkC,CACrC3kE,IAAI,EACW,KAAK,EACpB0kE,cACF,CAAC;MACD,OAAO,IAAI,CAACttD,UAAU,CAAoBpX,IAAI,EAAE,iBAAiB,CAAC;IACpE;IACAA,IAAI,CAACi0B,UAAU,GAAG,OAAO;IACzB,OAAO,KAAK,CAACuwC,oBAAoB,CAC/BxkE,IAAI,EACJykE,QAAQ,EACRC,cAAc,EACdvjC,eACF,CAAC;EACH;EAEAH,oBAAoBA,CAClBR,SAAoC,EACpCS,gBAAyB,EACzBC,kBAA2B,EAC3BC,eAAwB,EAExB5V,WAAoC,EACjB;IACnB,IAAI,CAAC0V,gBAAgB,IAAIE,eAAe,EAAE;MACxC,IAAI,CAACwjC,kCAAkC,CACrCnkC,SAAS,EACM,IAAI,EACnBU,kBACF,CAAC;MACD,OAAO,IAAI,CAAC9pB,UAAU,CAAoBopB,SAAS,EAAE,iBAAiB,CAAC;IACzE;IACAA,SAAS,CAAC1Q,UAAU,GAAG,OAAO;IAC9B,OAAO,KAAK,CAACkR,oBAAoB,CAC/BR,SAAS,EACTS,gBAAgB,EAChBC,kBAAkB,EAClBC,eAAe,EACfD,kBAAkB,cAGpB,CAAC;EACH;EAEAyjC,kCAAkCA,CAChC3kE,IAAS,EACT4kE,QAAiB,EACjBC,wBAAiC,EAC3B;IACN,MAAMC,WAAW,GAAGF,QAAQ,GAAG,UAAU,GAAG,OAAO;IACnD,MAAMG,YAAY,GAAGH,QAAQ,GAAG,OAAO,GAAG,UAAU;IAEpD,IAAII,QAAQ,GAAGhlE,IAAI,CAAC8kE,WAAW,CAAC;IAChC,IAAIG,SAAS;IAEb,IAAIC,gBAAgB,GAAG,KAAK;IAC5B,IAAIC,iBAAiB,GAAG,IAAI;IAE5B,MAAM32D,GAAG,GAAGw2D,QAAQ,CAACx2D,GAAG,CAAC5Q,KAAK;IAO9B,IAAI,IAAI,CAACw1B,YAAY,CAAA,EAAO,CAAC,EAAE;MAE7B,MAAMgyC,OAAO,GAAG,IAAI,CAAChzC,eAAe,EAAE;MACtC,IAAI,IAAI,CAACgB,YAAY,CAAA,EAAO,CAAC,EAAE;QAE7B,MAAMiyC,QAAQ,GAAG,IAAI,CAACjzC,eAAe,EAAE;QACvC,IAAI5L,0BAA0B,CAAC,IAAI,CAAC3M,KAAK,CAAC5Z,IAAI,CAAC,EAAE;UAE/CilE,gBAAgB,GAAG,IAAI;UACvBF,QAAQ,GAAGI,OAAO;UAClBH,SAAS,GAAGL,QAAQ,GAChB,IAAI,CAACxyC,eAAe,CAAA,CAAE,GACtB,IAAI,CAACkzC,qBAAqB,EAAE;UAChCH,iBAAiB,GAAG,KAAK;QAC3B,CAAC,MAAM;UAELF,SAAS,GAAGI,QAAQ;UACpBF,iBAAiB,GAAG,KAAK;QAC3B;MACD,CAAA,MAAM,IAAI3+C,0BAA0B,CAAC,IAAI,CAAC3M,KAAK,CAAC5Z,IAAI,CAAC,EAAE;QAEtDklE,iBAAiB,GAAG,KAAK;QACzBF,SAAS,GAAGL,QAAQ,GAChB,IAAI,CAACxyC,eAAe,CAAA,CAAE,GACtB,IAAI,CAACkzC,qBAAqB,EAAE;MAClC,CAAC,MAAM;QAELJ,gBAAgB,GAAG,IAAI;QACvBF,QAAQ,GAAGI,OAAO;MACpB;IACD,CAAA,MAAM,IAAI5+C,0BAA0B,CAAC,IAAI,CAAC3M,KAAK,CAAC5Z,IAAI,CAAC,EAAE;MAEtDilE,gBAAgB,GAAG,IAAI;MACvB,IAAIN,QAAQ,EAAE;QACZI,QAAQ,GAAG,IAAI,CAAC5yC,eAAe,CAAC,IAAI,CAAC;QACrC,IAAI,CAAC,IAAI,CAACgB,YAAY,CAAA,EAAO,CAAC,EAAE;UAC9B,IAAI,CAACsO,iBAAiB,CACpBsjC,QAAQ,CAAC/+D,IAAI,EACb++D,QAAQ,CAACx2D,GAAG,CAAC5Q,KAAK,EAClB,IAAI,EACJ,IACF,CAAC;QACH;MACF,CAAC,MAAM;QACLonE,QAAQ,GAAG,IAAI,CAACM,qBAAqB,EAAE;MACzC;IACF;IACA,IAAIJ,gBAAgB,IAAIL,wBAAwB,EAAE;MAChD,IAAI,CAAC7rD,KAAK,CACR4rD,QAAQ,GACJrV,QAAQ,CAACuD,+BAA+B,GACxCvD,QAAQ,CAACsD,+BAA+B,EAC5CrkD,GACF,CAAC;IACH;IAEAxO,IAAI,CAAC8kE,WAAW,CAAC,GAAGE,QAAQ;IAC5BhlE,IAAI,CAAC+kE,YAAY,CAAC,GAAGE,SAAS;IAE9B,MAAMM,OAAO,GAAGX,QAAQ,GAAG,YAAY,GAAG,YAAY;IACtD5kE,IAAI,CAACulE,OAAO,CAAC,GAAGL,gBAAgB,GAAG,MAAM,GAAG,OAAO;IAEnD,IAAIC,iBAAiB,IAAI,IAAI,CAAClyC,aAAa,CAAA,EAAO,CAAC,EAAE;MACnDjzB,IAAI,CAAC+kE,YAAY,CAAC,GAAGH,QAAQ,GACzB,IAAI,CAACxyC,eAAe,EAAE,GACtB,IAAI,CAACkzC,qBAAqB,EAAE;IAClC;IACA,IAAI,CAACtlE,IAAI,CAAC+kE,YAAY,CAAC,EAAE;MACvB/kE,IAAI,CAAC+kE,YAAY,CAAC,GAAG,IAAI,CAAClqD,eAAe,CAAC7a,IAAI,CAAC8kE,WAAW,CAAC,CAAC;IAC9D;IACA,IAAIF,QAAQ,EAAE;MACZ,IAAI,CAACnW,eAAe,CAClBzuD,IAAI,CAAC+kE,YAAY,CAAC,EAClBG,gBAAgB,cAGlB,CAAC;IACH;EACF;EAUA5wD,iCAAiCA,CAACtU,IAAY,EAAQ;IAAA,IAAAwlE,eAAA,EAAAC,gBAAA,EAAAC,cAAA,EAAAC,oBAAA,EAAAC,mBAAA,EAAAC,iBAAA,EAAAC,cAAA,EAAAC,cAAA,EAAAC,YAAA,EAAAC,aAAA,EAAAC,gBAAA,EAAAC,oBAAA,EAAAC,eAAA,EAAAC,eAAA,EAAAC,oBAAA,EAAAC,eAAA,EAAAC,aAAA,EAAAC,cAAA,EAAAC,cAAA,EAAAC,eAAA,EAAAC,qBAAA,EAAAC,oBAAA,EAAAC,iBAAA,EAAAC,eAAA,EAAAC,eAAA,EAAAC,QAAA,EAAAC,cAAA,EAAAC,cAAA,EAAAC,iBAAA,EAAAC,gBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,cAAA,EAAAC,eAAA,EAAAC,WAAA,EAAAC,cAAA,EAAAC,cAAA,EAAAC,eAAA,EAAAppB,aAAA,EAAAqpB,cAAA,EAAAC,aAAA,EAAAC,eAAA,EAAAC,eAAA,EAAAC,cAAA,EAAAC,YAAA,EAAAC,YAAA,EAAAC,QAAA,EAAAC,SAAA;IACpD,QAAQtoE,IAAI,CAACC,IAAI;MACf,KAAK,qBAAqB;QACxB,CAAAulE,eAAA,GAAAxlE,IAAI,CAAC+T,SAAS,KAAA,IAAA,GAAAyxD,eAAA,GAAdxlE,IAAI,CAAC+T,SAAS,GAAK3D,SAAS;QAC5B;MACF,KAAK,aAAa;QAChBpQ,IAAI,CAACwN,KAAK,GAAG4C,SAAS;MAExB,KAAK,YAAY;MACjB,KAAK,cAAc;MACnB,KAAK,mBAAmB;MACxB,KAAK,eAAe;QAClB,CAAAq1D,gBAAA,GAAAzlE,IAAI,CAAC2Z,UAAU,KAAA,IAAA,GAAA8rD,gBAAA,GAAfzlE,IAAI,CAAC2Z,UAAU,GAAK,EAAE;QACtB,CAAA+rD,cAAA,GAAA1lE,IAAI,CAACmZ,QAAQ,KAAA,IAAA,GAAAusD,cAAA,GAAb1lE,IAAI,CAACmZ,QAAQ,GAAK,KAAK;QACvB,CAAAwsD,oBAAA,GAAA3lE,IAAI,CAAC4yB,cAAc,KAAA,IAAA,GAAA+yC,oBAAA,GAAnB3lE,IAAI,CAAC4yB,cAAc,GAAKxiB,SAAS;QACjC;MACF,KAAK,qBAAqB;QACxB,CAAAw1D,mBAAA,GAAA5lE,IAAI,CAACo1D,aAAa,KAAA,IAAA,GAAAwQ,mBAAA,GAAlB5lE,IAAI,CAACo1D,aAAa,GAAKhlD,SAAS;QAChC,CAAAy1D,iBAAA,GAAA7lE,IAAI,CAAC2Z,UAAU,KAAA,IAAA,GAAAksD,iBAAA,GAAf7lE,IAAI,CAAC2Z,UAAU,GAAK,EAAE;QACtB,CAAAmsD,cAAA,GAAA9lE,IAAI,CAAC6/D,QAAQ,KAAA,IAAA,GAAAiG,cAAA,GAAb9lE,IAAI,CAAC6/D,QAAQ,GAAK,KAAK;QACvB,CAAAkG,cAAA,GAAA/lE,IAAI,CAAC24D,QAAQ,KAAA,IAAA,GAAAoN,cAAA,GAAb/lE,IAAI,CAAC24D,QAAQ,GAAK,KAAK;QACvB,CAAAqN,YAAA,GAAAhmE,IAAI,CAACo3B,MAAM,KAAA,IAAA,GAAA4uC,YAAA,GAAXhmE,IAAI,CAACo3B,MAAM,GAAK,KAAK;QACrB;MACF,KAAK,+BAA+B;QAClCp3B,IAAI,CAAC6V,IAAI,GAAG,IAAI;MAElB,KAAK,mBAAmB;MACxB,KAAK,qBAAqB;MAC1B,KAAK,oBAAoB;MACzB,KAAK,aAAa;MAClB,KAAK,oBAAoB;QACvB,CAAAowD,aAAA,GAAAjmE,IAAI,CAACy1B,OAAO,KAAA,IAAA,GAAAwwC,aAAA,GAAZjmE,IAAI,CAACy1B,OAAO,GAAK,KAAK;QACtB,CAAAywC,gBAAA,GAAAlmE,IAAI,CAAC2yB,UAAU,KAAA,IAAA,GAAAuzC,gBAAA,GAAflmE,IAAI,CAAC2yB,UAAU,GAAKviB,SAAS;QAC7B,CAAA+1D,oBAAA,GAAAnmE,IAAI,CAAC+W,cAAc,KAAA,IAAA,GAAAovD,oBAAA,GAAnBnmE,IAAI,CAAC+W,cAAc,GAAK3G,SAAS;QACjC;MACF,KAAK,UAAU;QACb,CAAAg2D,eAAA,GAAApmE,IAAI,CAACmZ,QAAQ,KAAA,IAAA,GAAAitD,eAAA,GAAbpmE,IAAI,CAACmZ,QAAQ,GAAK,KAAK;QACvB;MACF,KAAK,mBAAmB;MACxB,KAAK,qBAAqB;QACxB,CAAAktD,eAAA,GAAArmE,IAAI,CAACmZ,QAAQ,KAAA,IAAA,GAAAktD,eAAA,GAAbrmE,IAAI,CAACmZ,QAAQ,GAAK,KAAK;MAEzB,KAAK,kBAAkB;QACrB,CAAAmtD,oBAAA,GAAAtmE,IAAI,CAACo1D,aAAa,KAAA,IAAA,GAAAkR,oBAAA,GAAlBtmE,IAAI,CAACo1D,aAAa,GAAKhlD,SAAS;QAChC,CAAAm2D,eAAA,GAAAvmE,IAAI,CAAC24D,QAAQ,KAAA,IAAA,GAAA4N,eAAA,GAAbvmE,IAAI,CAAC24D,QAAQ,GAAK,KAAK;QACvB,CAAA6N,aAAA,GAAAxmE,IAAI,CAACo3B,MAAM,KAAA,IAAA,GAAAovC,aAAA,GAAXxmE,IAAI,CAACo3B,MAAM,GAAK,KAAK;QACrB;MACF,KAAK,8BAA8B;MACnC,KAAK,oBAAoB;MACzB,KAAK,4BAA4B;MACjC,KAAK,kBAAkB;QACrB,CAAAqvC,cAAA,GAAAzmE,IAAI,CAACy1B,OAAO,KAAA,IAAA,GAAAgxC,cAAA,GAAZzmE,IAAI,CAACy1B,OAAO,GAAK,KAAK;QACtB,CAAAixC,cAAA,GAAA1mE,IAAI,CAAC6iE,QAAQ,KAAA,IAAA,GAAA6D,cAAA,GAAb1mE,IAAI,CAAC6iE,QAAQ,GAAK,KAAK;QACvB,CAAA8D,eAAA,GAAA3mE,IAAI,CAAC24D,QAAQ,KAAA,IAAA,GAAAgO,eAAA,GAAb3mE,IAAI,CAAC24D,QAAQ,GAAK,KAAK;QACvB,CAAAiO,qBAAA,GAAA5mE,IAAI,CAAC4yB,cAAc,KAAA,IAAA,GAAAg0C,qBAAA,GAAnB5mE,IAAI,CAAC4yB,cAAc,GAAKxiB,SAAS;MAEnC,KAAK,4BAA4B;MACjC,KAAK,kBAAkB;QACrB,CAAAy2D,oBAAA,GAAA7mE,IAAI,CAACo1D,aAAa,KAAA,IAAA,GAAAyR,oBAAA,GAAlB7mE,IAAI,CAACo1D,aAAa,GAAKhlD,SAAS;QAChC,CAAA02D,iBAAA,GAAA9mE,IAAI,CAAC2Z,UAAU,KAAA,IAAA,GAAAmtD,iBAAA,GAAf9mE,IAAI,CAAC2Z,UAAU,GAAK,EAAE;QACtB,CAAAotD,eAAA,GAAA/mE,IAAI,CAAC6/D,QAAQ,KAAA,IAAA,GAAAkH,eAAA,GAAb/mE,IAAI,CAAC6/D,QAAQ,GAAK,KAAK;QACvB,CAAAmH,eAAA,GAAAhnE,IAAI,CAACmZ,QAAQ,KAAA,IAAA,GAAA6tD,eAAA,GAAbhnE,IAAI,CAACmZ,QAAQ,GAAK,KAAK;QACvB;MACF,KAAK,iBAAiB;QACpB,CAAA8tD,QAAA,GAAAjnE,IAAI,CAACmW,EAAE,KAAA,IAAA,GAAA8wD,QAAA,GAAPjnE,IAAI,CAACmW,EAAE,GAAK,IAAI;MAElB,KAAK,kBAAkB;QACrB,CAAA+wD,cAAA,GAAAlnE,IAAI,CAAC4X,QAAQ,KAAA,IAAA,GAAAsvD,cAAA,GAAblnE,IAAI,CAAC4X,QAAQ,GAAK,KAAK;QACvB,CAAAuvD,cAAA,GAAAnnE,IAAI,CAACy1B,OAAO,KAAA,IAAA,GAAA0xC,cAAA,GAAZnnE,IAAI,CAACy1B,OAAO,GAAK,KAAK;QACtB,CAAA2xC,iBAAA,GAAApnE,IAAI,CAAC2Z,UAAU,KAAA,IAAA,GAAAytD,iBAAA,GAAfpnE,IAAI,CAAC2Z,UAAU,GAAK,EAAE;QACtB,CAAA0tD,gBAAA,GAAArnE,IAAI,CAAC00B,UAAU,KAAA,IAAA,GAAA2yC,gBAAA,GAAfrnE,IAAI,CAAC00B,UAAU,GAAK,EAAE;QACtB,CAAA4yC,qBAAA,GAAAtnE,IAAI,CAACgjE,kBAAkB,KAAA,IAAA,GAAAsE,qBAAA,GAAvBtnE,IAAI,CAACgjE,kBAAkB,GAAK5yD,SAAS;QACrC,CAAAm3D,qBAAA,GAAAvnE,IAAI,CAAC+W,cAAc,KAAA,IAAA,GAAAwwD,qBAAA,GAAnBvnE,IAAI,CAAC+W,cAAc,GAAK3G,SAAS;QACjC;MACF,KAAK,wBAAwB;MAC7B,KAAK,qBAAqB;QACxB,CAAAo3D,cAAA,GAAAxnE,IAAI,CAACy1B,OAAO,KAAA,IAAA,GAAA+xC,cAAA,GAAZxnE,IAAI,CAACy1B,OAAO,GAAK,KAAK;QACtB;MACF,KAAK,oBAAoB;QACvB,CAAAgyC,eAAA,GAAAznE,IAAI,CAAC6iE,QAAQ,KAAA,IAAA,GAAA4E,eAAA,GAAbznE,IAAI,CAAC6iE,QAAQ,GAAK,KAAK;QACvB;MACF,KAAK,mBAAmB;QACtB,CAAA6E,WAAA,GAAA1nE,IAAI,CAACgwB,KAAK,KAAA,IAAA,GAAA03C,WAAA,GAAV1nE,IAAI,CAACgwB,KAAK,GAAK,KAAK;QACpB,CAAA23C,cAAA,GAAA3nE,IAAI,CAACy1B,OAAO,KAAA,IAAA,GAAAkyC,cAAA,GAAZ3nE,IAAI,CAACy1B,OAAO,GAAK,KAAK;QACtB;MACF,KAAK,cAAc;QACjB,CAAAmyC,cAAA,GAAA5nE,IAAI,CAACkX,QAAQ,KAAA,IAAA,GAAA0wD,cAAA,GAAb5nE,IAAI,CAACkX,QAAQ,GAAK,KAAK;QACvB;MACF,KAAK,cAAc;QACjB,CAAA2wD,eAAA,GAAA7nE,IAAI,CAACm2D,SAAS,KAAA,IAAA,GAAA0R,eAAA,GAAd7nE,IAAI,CAACm2D,SAAS,GAAK,IAAI;QACvB,CAAA1X,aAAA,GAAAz+C,IAAI,CAAC0R,OAAO,KAAA,IAAA,GAAA+sC,aAAA,GAAZz+C,IAAI,CAAC0R,OAAO,GAAK,IAAI;QAIrB;MACF,KAAK,wBAAwB;QAC3B,CAAAo2D,cAAA,GAAA9nE,IAAI,CAACy1B,OAAO,KAAA,IAAA,GAAAqyC,cAAA,GAAZ9nE,IAAI,CAACy1B,OAAO,GAAK,KAAK;QACtB,CAAAsyC,aAAA,GAAA/nE,IAAI,CAACw0B,OAAO,KAAA,IAAA,GAAAuzC,aAAA,GAAZ/nE,IAAI,CAACw0B,OAAO,GAAK,EAAE;QACnB;MACF,KAAK,cAAc;QACjB,CAAAwzC,eAAA,GAAAhoE,IAAI,CAACmZ,QAAQ,KAAA,IAAA,GAAA6uD,eAAA,GAAbhoE,IAAI,CAACmZ,QAAQ,GAAK,KAAK;QACvB,CAAA8uD,eAAA,GAAAjoE,IAAI,CAAC24D,QAAQ,KAAA,IAAA,GAAAsP,eAAA,GAAbjoE,IAAI,CAAC24D,QAAQ,GAAKvoD,SAAS;QAC3B;MACF,KAAK,qBAAqB;QACxB,CAAA83D,cAAA,GAAAloE,IAAI,CAACy1B,OAAO,KAAA,IAAA,GAAAyyC,cAAA,GAAZloE,IAAI,CAACy1B,OAAO,GAAK,KAAK;QACtB,CAAA0yC,YAAA,GAAAnoE,IAAI,CAACo+D,MAAM,YAAA+J,YAAA,GAAXnoE,IAAI,CAACo+D,MAAM,GAAKp+D,IAAI,CAACK,IAAI,KAAK,QAAQ;QACtC;MACF,KAAK,iBAAiB;QACpB,CAAA+nE,YAAA,GAAApoE,IAAI,CAACgwB,KAAK,KAAA,IAAA,GAAAo4C,YAAA,GAAVpoE,IAAI,CAACgwB,KAAK,GAAK,KAAK;QACpB,CAAAq4C,QAAA,GAAAroE,IAAI,CAACuoE,EAAE,KAAA,IAAA,GAAAF,QAAA,GAAProE,IAAI,CAACuoE,EAAE,GAAK,KAAK;QACjB,CAAAD,SAAA,GAAAtoE,IAAI,CAACw4B,GAAG,KAAA,IAAA,GAAA8vC,SAAA,GAARtoE,IAAI,CAACw4B,GAAG,GAAK,KAAK;QAClB;IACJ;EACF;EAEAgwC,iDAAiDA,CAAC3nC,EAAU,EAAEjyB,GAAW,EAAE;IACzE,IAAIyZ,iBAAiB,CAACwY,EAAE,CAAC,EAAE;MACzBsuB,8BAA8B,CAACrL,SAAS,GAAGl1C,GAAG;MAC9C,IAAIugD,8BAA8B,CAAC7mC,IAAI,CAAC,IAAI,CAACkW,KAAK,CAAC,EAAE;QAGnD,MAAMiqC,KAAK,GAAG,IAAI,CAACpvB,cAAc,CAC/B8V,8BAA8B,CAACrL,SACjC,CAAC;QACD,IAAI,CAACt7B,gBAAgB,CAACigD,KAAK,CAAC,IAAIA,KAAK,OAAwB,EAAE;UAC7D,OAAO,KAAK;QACd;MACF;MACA,OAAO,IAAI;IACb,CAAC,MAAM,IAAI5nC,EAAE,KAAA,EAAwB,EAAE;MACrC,OAAO,IAAI;IACb,CAAC,MAAM;MACL,OAAO,KAAK;IACd;EACF;EAEAkhC,yDAAyDA,CAAAA,EAAY;IACnE,MAAMv4C,IAAI,GAAG,IAAI,CAACw6B,oBAAoB,EAAE;IACxC,MAAM1oB,MAAM,GAAG,IAAI,CAAC+d,cAAc,CAAC7vB,IAAI,CAAC;IACxC,OAAO,IAAI,CAACg/C,iDAAiD,CAC3DltC,MAAM,EACN9R,IACF,CAAC;EACH;EAEAw4C,8CAA8CA,CAAAA,EAAY;IACxD,MAAMx4C,IAAI,GAAG,IAAI,CAACw6B,oBAAoB,EAAE;IACxC,MAAM1oB,MAAM,GAAG,IAAI,CAAC+d,cAAc,CAAC7vB,IAAI,CAAC;IACxC,OACE,IAAI,CAACk/C,yBAAyB,CAACptC,MAAM,EAAE9R,IAAI,CAAC,IAC5C8R,MAAM,KAA4B,EAAA,IAClCA,MAAM,KAAyB,EAAA;EAEnC;AACF,CAAC;AAEH,SAASqtC,qBAAqBA,CAAC/0D,UAAwB,EAAW;EAChE,IAAIA,UAAU,CAAC3T,IAAI,KAAK,kBAAkB,EAAE,OAAO,KAAK;EAExD,MAAM;IAAEiX,QAAQ;IAAE0hB;EAAU,CAAA,GAAGhlB,UAAU;EAEzC,IACEsD,QAAQ,IACR0hB,QAAQ,CAAC34B,IAAI,KAAK,eAAe,KAChC24B,QAAQ,CAAC34B,IAAI,KAAK,iBAAiB,IAAI24B,QAAQ,CAACgwC,WAAW,CAAC3uD,MAAM,GAAG,CAAC,CAAC,EACxE;IACA,OAAO,KAAK;EACd;EAEA,OAAO4uD,iCAAiC,CAACj1D,UAAU,CAAC/B,MAAM,CAAC;AAC7D;AAQA,SAASgwD,8BAA8BA,CACrCjuD,UAAwB,EACxB7B,MAAe,EACN;EAAA,IAAAy8C,iBAAA;EACT,MAAM;IAAEvuD;EAAM,CAAA,GAAG2T,UAAU;EAC3B,IAAA46C,CAAAA,iBAAA,GAAI56C,UAAU,CAACM,KAAK,KAAhBs6C,IAAAA,IAAAA,iBAAA,CAAkBn5C,aAAa,EAAE;IACnC,OAAO,KAAK;EACd;EACA,IAAItD,MAAM,EAAE;IACV,IAAI9R,IAAI,KAAK,SAAS,EAAE;MACtB,MAAM;QAAEuN;MAAO,CAAA,GAAGoG,UAAU;MAC5B,IAAI,OAAOpG,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,SAAS,EAAE;QAC3D,OAAO,IAAI;MACb;IACF;EACF,CAAC,MAAM;IACL,IAAIvN,IAAI,KAAK,eAAe,IAAIA,IAAI,KAAK,gBAAgB,EAAE;MACzD,OAAO,IAAI;IACb;EACF;EACA,IAAI6oE,QAAQ,CAACl1D,UAAU,EAAE7B,MAAM,CAAC,IAAIg3D,gBAAgB,CAACn1D,UAAU,EAAE7B,MAAM,CAAC,EAAE;IACxE,OAAO,IAAI;EACb;EACA,IAAI9R,IAAI,KAAK,iBAAiB,IAAI2T,UAAU,CAACg1D,WAAW,CAAC3uD,MAAM,KAAK,CAAC,EAAE;IACrE,OAAO,IAAI;EACb;EACA,IAAI0uD,qBAAqB,CAAC/0D,UAAU,CAAC,EAAE;IACrC,OAAO,IAAI;EACb;EACA,OAAO,KAAK;AACd;AAEA,SAASk1D,QAAQA,CAACl1D,UAAwB,EAAE7B,MAAe,EAAW;EACpE,IAAIA,MAAM,EAAE;IACV,OACE6B,UAAU,CAAC3T,IAAI,KAAK,SAAS,KAC5B,OAAO2T,UAAU,CAACpG,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAIoG,UAAU,CAAC;EAEpE;EACA,OACEA,UAAU,CAAC3T,IAAI,KAAK,gBAAgB,IAAI2T,UAAU,CAAC3T,IAAI,KAAK,eAAe;AAE/E;AAEA,SAAS8oE,gBAAgBA,CAACn1D,UAAwB,EAAE7B,MAAe,EAAW;EAC5E,IAAI6B,UAAU,CAAC3T,IAAI,KAAK,iBAAiB,EAAE;IACzC,MAAM;MAAE8sD,QAAQ;MAAE39C;IAAU,CAAA,GAAGwE,UAAU;IACzC,IAAIm5C,QAAQ,KAAK,GAAG,IAAI+b,QAAQ,CAAC15D,QAAQ,EAAE2C,MAAM,CAAC,EAAE;MAClD,OAAO,IAAI;IACb;EACF;EACA,OAAO,KAAK;AACd;AAEA,SAAS82D,iCAAiCA,CAACj1D,UAAwB,EAAW;EAC5E,IAAIA,UAAU,CAAC3T,IAAI,KAAK,YAAY,EAAE,OAAO,IAAI;EACjD,IAAI2T,UAAU,CAAC3T,IAAI,KAAK,kBAAkB,IAAI2T,UAAU,CAACsD,QAAQ,EAAE;IACjE,OAAO,KAAK;EACd;EAEA,OAAO2xD,iCAAiC,CAACj1D,UAAU,CAAC/B,MAAM,CAAC;AAC7D;AC1nJA,MAAMm3D,iBAAiB,GAAG75D,cAAc,cAAc,CAAC;EACrD85D,mBAAmB,EAAE,2BAA2B;EAChDC,eAAe,EAAE;AACnB,CAAC,CAAC;AAEF,IAAAC,YAAA,GAAgBn3D,UAAyB,IACvC,MAAMo3D,uBAAuB,SAASp3D,UAAU,CAAmB;EACjEq3D,gBAAgBA,CACdC,YAAe,EACwC;IACvD,IAAI,IAAI,CAACt3C,KAAK,CAAA,GAAe,CAAC,EAAE;MAC9B,MAAMhyB,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAoB;MAC/C,IAAI,CAAC0S,IAAI,CAAA,CAAE;MACX,IAAI,CAAC+/C,aAAa,CAAA,CAAE;MAIpBvpE,IAAI,CAACiG,IAAI,GAAG,KAAK,CAACmsB,eAAe,CAAe,IAAI,CAAC;MAErD,IAAI,CAACm3C,aAAa,CAAA,CAAE;MACpB,IAAI,CAACh4C,MAAM,CAAA,GAAe,CAAC;MAC3B,OAAO,IAAI,CAACi4C,iBAAiB,CAACxpE,IAAI,EAAEspE,YAAY,CAAC;IACnD;EACF;EAEAE,iBAAiBA,CACfxpE,IAA8D,EAC9DspE,YAAe,EAC2B;IAC1C,IAAI1jD,WAAW,GAAG5lB,IAAmC;IAErD,IAAI,CAAC4lB,WAAW,CAAC0jD,YAAY,IAAI,CAAC1jD,WAAW,CAAC3lB,IAAI,EAAE;MAClD2lB,WAAW,GAAG,IAAI,CAACxO,UAAU,CAC3BwO,WAAW,EACX,aACF,CAAgC;IAClC;IAEAA,WAAW,CAAC0jD,YAAY,GAAGA,YAAY;IACvC,OAAO1jD,WAAW;EACpB;EAMA2Y,gBAAgBA,CAACpgC,IAAY,EAAE;IAC7B,IACEA,IAAI,KAA0B,EAAA,IAC9B,IAAI,CAACqgC,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC5kB,KAAK,CAACjL,GAAG,GAAG,CAAC,CAAC,OAA0B,EACnE;MACA,IAAI,CAAC8vB,QAAQ,CAAiB,GAAA,EAAA,CAAC,CAAC;IAClC,CAAC,MAAM;MACL,KAAK,CAACH,gBAAgB,CAACpgC,IAAI,CAAC;IAC9B;EACF;EAMAu1B,aAAaA,CACXxb,mBAA6C,EACb;IAChC,OACE,IAAI,CAACmxD,gBAAgB,CAAC,YAAY,CAAC,IACnC,KAAK,CAAC31C,aAAa,CAACxb,mBAAmB,CAAC;EAE5C;EAEAka,eAAeA,CAACmD,OAAiB,EAAkC;IAKjE,OACE,IAAI,CAAC8zC,gBAAgB,CAAC,YAAY,CAAC,IAAI,KAAK,CAACj3C,eAAe,CAACmD,OAAO,CAAC;EAEzE;EAEAmM,iBAAiBA,CACf3Y,IAAY,EACZ/Q,QAAkB,EAClBmpD,aAAsB,EACtB1oD,SAAkB,EAClB;IAIA,IAAIsQ,IAAI,KAAK3Y,SAAS,EAAE;MACtB,KAAK,CAACsxB,iBAAiB,CAAC3Y,IAAI,EAAE/Q,QAAQ,EAAEmpD,aAAa,EAAE1oD,SAAS,CAAC;IACnE;EACF;EAMAoC,eAAeA,CAAyC7a,IAAO,EAAK;IAClE,MAAMyU,MAAM,GAAG,KAAK,CAACoG,eAAe,CAAC7a,IAAI,CAAC;IAC1C,IAAIyU,MAAM,CAACxU,IAAI,KAAK,aAAa,EAAE;MACjCwU,MAAM,CAAC60D,YAAY,GAAItpE,IAAI,CAAmBspE,YAAY;IAC5D;IACA,OAAO70D,MAAM;EACf;EAEAqG,kBAAkBA,CAEhB9a,IAAO,EAAK;IACZ,IAAIA,IAAI,CAACC,IAAI,KAAK,aAAa,EAAE;MAC/B,OAAO,IAAI,CAAC4a,eAAe,CAAC7a,IAAI,CAAC;IACnC;IACA,OAAO,KAAK,CAAC8a,kBAAkB,CAAC9a,IAAI,CAAC;EACvC;EAMA2hC,gBAAgBA,CAAAA,EAAgC;IAC9C,OAAO,IAAI,CAAC0nC,gBAAgB,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC1nC,gBAAgB,CAAA,CAAE;EACrE;EAEAvpB,WAAWA,CACTnY,IAAY,EACZoY,sBAA+B,EAC/B+mB,eAAwB,EACxB7mB,OAAoB,EACpB;IACA,OACEtY,IAAI,KAAK,aAAa,IACtB,KAAK,CAACmY,WAAW,CACfnY,IAAI,EACJoY,sBAAsB,EACtB+mB,eAAe,EACf7mB,OACF,CAAC;EAEL;EAEAG,YAAYA,CAAC1Y,IAAY,EAAE2Y,KAAc,EAAQ;IAC/C,IACE3Y,IAAI,IACJA,IAAI,CAACC,IAAI,KAAK,aAAa,IAC3BD,IAAI,CAACspE,YAAY,KAAK,YAAY,EAClC;MACAtpE,IAAI,CAACspE,YAAY,GAAG,SAAS;IAC/B,CAAC,MAAM;MACL,KAAK,CAAC5wD,YAAY,CAAC1Y,IAAI,EAAE2Y,KAAK,CAAC;IACjC;EACF;EAMA+vD,yBAAyBA,CAAC7nC,EAAU,EAAEjyB,GAAW,EAAW;IAC1D,IAAI,KAAK,CAAC85D,yBAAyB,CAAC7nC,EAAE,EAAEjyB,GAAG,CAAC,EAAE;MAC5C,OAAO,IAAI;IACb;IAIA,MAAM4a,IAAI,GAAG,IAAI,CAAC+d,cAAc,EAAE;IAClC,IACE,IAAI,CAAC/I,KAAK,CAACC,UAAU,CAACjV,IAAI,CAAC,KAA0B,EAAA,IACrD,IAAI,CAACgV,KAAK,CAACC,UAAU,CAACjV,IAAI,GAAG,CAAC,CAAC,KAAA,EAA0B,EACzD;MACA,OAAO,IAAI;IACb;IAEA,OAAO,KAAK;EACd;EAEAigD,mBAAmBA,CACjBzpE,IAA4C,EAC5C0pE,OAAgB,EAChB;IAAA,IAAAC,WAAA;IAEA,IAAI,CAAAA,CAAAA,WAAA,GAAA3pE,IAAI,CAAC8b,KAAK,KAAV6tD,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAA,CAAY1pE,IAAI,MAAK,aAAa,EAAE;IACxC,KAAK,CAACwpE,mBAAmB,CAACzpE,IAAI,EAAE0pE,OAAO,CAAC;EAC1C;EAGA5uC,wBAAwBA,CACtB96B,IAAmC,EACnC+6B,IAAoC,EACL;IAAA,IAAAgE,WAAA;IAE/B,IAAIhE,IAAI,CAAC96B,IAAI,KAAK,aAAa,IAAA8+B,CAAAA,WAAA,GAAIhE,IAAI,CAAC7mB,KAAK,KAAA,IAAA,IAAV6qB,WAAA,CAAY1pB,aAAa,EAAE;MAE5D,OAAO,KAAK,CAACylB,wBAAwB,CAAC96B,IAAI,EAAE+6B,IAAI,CAAC;IACnD;IAEA,IAAI,IAAI,CAAC/I,KAAK,CAAA,EAAS,CAAC,EAAE;MAExB,MAAM5d,IAAwB,GAAGpU,IAAI;MACrCoU,IAAI,CAAC0H,KAAK,GAAG,IAAI,CAAC0tD,iBAAiB,CAACzuC,IAAI,EAAE,YAAY,CAAC;MACvD,IAAI,CAACvR,IAAI,CAAA,CAAE;MACXpV,IAAI,CAACyB,IAAI,GAAG,KAAK,CAAC+zD,+CAA+C,EAAE;MACnE,OAAO,IAAI,CAACxyD,UAAU,CAAChD,IAAI,EAAE,kBAAkB,CAAC;IAClD;IAEA,IAAI,CAACye,SAAS,CAAA,CAAE;IAChB,MAAMg3C,eAAe,GAAG7pE,IAA6C;IACrE6pE,eAAe,CAAC5jE,IAAI,GAAI80B,IAAI,CAAmB90B,IAAI;IACnD,OAAO,IAAI,CAACujE,iBAAiB,CAACK,eAAe,EAAE,WAAW,CAAC;EAC7D;EAEAC,UAAUA,CACRv0D,eAAyB,EACzBw0D,qBAA+B,EAC/Bt0D,eAA2D,EACvB;IACpC,OACE,IAAI,CAAC4zD,gBAAgB,CAAC,gBAAgB,CAAC,IACvC,KAAK,CAACS,UAAU,CACdv0D,eAAe,EACfw0D,qBAAqB,EACrBt0D,eACF,CAAC;EAEL;EAEAu0D,eAAeA,CACbC,SAAmB,EACgC;IACnD,OACE,IAAI,CAACZ,gBAAgB,CAAC,YAAY,CAAC,IAAI,KAAK,CAACW,eAAe,CAACC,SAAS,CAAC;EAE3E;EAEAhL,UAAUA,CACRj/D,IAAO,EACP49B,WAAiD,EACjDC,UAAoB,EACjB;IACH,MAAM59B,IAAI,GAAG29B,WAAW,GAAG,kBAAkB,GAAG,iBAAiB;IAEjE,IAAI,CAACpU,IAAI,CAAA,CAAE;IACX,MAAMy6C,SAAS,GAAG,IAAI,CAACpqD,KAAK,CAAC6O,MAAM;IAEnC,MAAM9C,WAAW,GAAG,IAAI,CAACyjD,gBAAgB,CAAC,YAAY,CAAC;IACvD,IAAIzjD,WAAW,EAAE;MACf,IACE,IAAI,CAACoM,KAAK,CAAY,EAAA,CAAC,IACvB,IAAI,CAACA,KAAK,CAAA,GAAe,CAAC,IAC1B,IAAI,CAACA,KAAK,CAAA,CAAU,CAAC,EACrB;QACAhyB,IAAI,CAACmW,EAAE,GAAGyP,WAAW;MACvB,CAAC,MAAM,IAAIiY,UAAU,IAAI,CAACD,WAAW,EAAE;QACrC59B,IAAI,CAACmW,EAAE,GAAG,IAAI;QACdnW,IAAI,CAAC6V,IAAI,GAAG,IAAI,CAAC2zD,iBAAiB,CAAC5jD,WAAW,EAAE,WAAW,CAAC;QAC5D,OAAO,IAAI,CAACxO,UAAU,CAACpX,IAAI,EAAEC,IAAI,CAAC;MACpC,CAAC,MAAM;QACL,MAAM,IAAI,CAAC+Y,KAAK,CACdgwD,iBAAiB,CAACC,mBAAmB,EACrC,IAAI,CAACpvD,KAAK,CAAC7B,QACb,CAAC;MACH;IACF,CAAC,MAAM;MACL,IAAI,CAAC2lB,YAAY,CAAC39B,IAAI,EAAE49B,WAAW,EAAEC,UAAU,CAAC;IAClD;IAEA,KAAK,CAAC+B,eAAe,CAAC5/B,IAAI,CAAC;IAC3BA,IAAI,CAAC6V,IAAI,GACP,IAAI,CAACwzD,gBAAgB,CAAC,WAAW,CAAC,IAClC,KAAK,CAACa,cAAc,CAAC,CAAC,CAAClqE,IAAI,CAACgS,UAAU,EAAEiyD,SAAS,CAAC;IACpD,OAAO,IAAI,CAAC7sD,UAAU,CAACpX,IAAI,EAAEC,IAAI,CAAC;EACpC;EAEAyZ,WAAWA,CACT1Z,IAIC,EACD2Z,UAAgC,EACnB;IACb,MAAMiM,WAAW,GAAG,IAAI,CAACyjD,gBAAgB,CAAC,YAAY,CAAC;IACvD,IAAI,CAACzjD,WAAW,EAAE,OAAO,KAAK,CAAClM,WAAW,CAAC1Z,IAAI,EAAE2Z,UAAU,CAAC;IAE5D,MAAMmf,KAAK,GAAG94B,IAAwC;IAEtD,IAAI,CAAC,IAAI,CAACozB,YAAY,CAAS,EAAA,CAAC,IAAI,CAAC,IAAI,CAACpB,KAAK,CAAA,EAAS,CAAC,EAAE;MAEzD8G,KAAK,CAAC9e,UAAU,GAAG,EAAE;MACrB8e,KAAK,CAACxf,MAAM,GAAG,IAAI;MACnBwf,KAAK,CAAC3e,WAAW,GAAG,IAAI,CAACqvD,iBAAiB,CAAC5jD,WAAW,EAAE,aAAa,CAAC;MACtE,OAAO,IAAI,CAACxO,UAAU,CAAC0hB,KAAK,EAAE,wBAAwB,CAAC;IACzD;IAGA,IAAI,CAACksB,YAAY,CAAC,mBAAmB,CAAC;IACtC,MAAMxkB,SAAS,GAAG,IAAI,CAAC1pB,SAAS,EAA4B;IAC5D0pB,SAAS,CAACzmB,QAAQ,GAAG6L,WAAW;IAChCkT,KAAK,CAAC9e,UAAU,GAAG,CAAC,IAAI,CAAC5C,UAAU,CAACopB,SAAS,EAAE,wBAAwB,CAAC,CAAC;IAEzE,OAAO,KAAK,CAAC9mB,WAAW,CAACof,KAAK,EAAEnf,UAAU,CAAC;EAC7C;EAEAuhB,wBAAwBA,CAAAA,EAAY;IAClC,IAAI,IAAI,CAAClJ,KAAK,CAAA,EAAY,CAAC,EAAE;MAC3B,MAAMxI,IAAI,GAAG,IAAI,CAAC+d,cAAc,EAAE;MAClC,IAAI,IAAI,CAAC2iB,oBAAoB,CAAC1gC,IAAI,EAAE,MAAM,CAAC,EAAE;QAC3C,IACE,IAAI,CAACgV,KAAK,CAAC4rB,UAAU,CACnB/iC,cAAc,CAAe,GAAA,CAAC,EAC9B,IAAI,CAACw8B,mBAAmB,CAACr6B,IAAI,GAAG,CAAC,CACnC,CAAC,EACD;UACA,OAAO,IAAI;QACb;MACF;IACF;IACA,OAAO,KAAK,CAAC0R,wBAAwB,EAAE;EACzC;EAEAivC,gCAAgCA,CAC9BnqE,IAIC,EACDs+D,sBAA2C,EACD;IAAA,IAAA8L,WAAA;IAC1C,IAAAA,CAAAA,WAAA,GAAKpqE,IAAI,CAA8Bga,UAAU,KAA7CowD,IAAAA,IAAAA,WAAA,CAA+CnwD,MAAM,EAAE;MAEzD,OAAO,IAAI;IACb;IACA,OAAO,KAAK,CAACkwD,gCAAgC,CAC3CnqE,IAAI,EACJs+D,sBACF,CAAC;EACH;EAEA+L,WAAWA,CAACrqE,IAA8B,EAAQ;IAChD,MAAM;MAAEga;IAAY,CAAA,GAAGha,IAAI;IAC3B,IAAIga,UAAU,IAAA,IAAA,IAAVA,UAAU,CAAEC,MAAM,EAAE;MACtBja,IAAI,CAACga,UAAU,GAAGA,UAAU,CAACswD,MAAM,CAEjCtqE,IAAI,IAAIA,IAAI,CAAC+Z,QAAQ,CAAC9Z,IAAI,KAAK,aACjC,CAAC;IACH;IACA,KAAK,CAACoqE,WAAW,CAACrqE,IAAI,CAAC;IACvBA,IAAI,CAACga,UAAU,GAAGA,UAAU;EAC9B;EAEA4Z,WAAWA,CACT5zB,IAAiC,EACkB;IACnD,MAAM4lB,WAAW,GAAG,IAAI,CAACyjD,gBAAgB,CAAC,YAAY,CAAC;IACvD,IAAI,CAACzjD,WAAW,EAAE,OAAO,KAAK,CAACgO,WAAW,CAAC5zB,IAAI,CAAC;IAEhDA,IAAI,CAACga,UAAU,GAAG,EAAE;IAEpB,IAAI,CAAC,IAAI,CAACoZ,YAAY,CAAS,EAAA,CAAC,IAAI,CAAC,IAAI,CAACpB,KAAK,CAAA,EAAS,CAAC,EAAE;MAEzDhyB,IAAI,CAACsZ,MAAM,GAAG,IAAI,CAACkwD,iBAAiB,CAAC5jD,WAAW,EAAE,eAAe,CAAC;MAClE,IAAI,CAACiN,SAAS,CAAA,CAAE;MAChB,OAAO,IAAI,CAACzb,UAAU,CAACpX,IAAI,EAAE,mBAAmB,CAAC;IACnD;IAGA,MAAMwgC,SAAS,GACb,IAAI,CAAC7sB,eAAe,CAA2BiS,WAAW,CAAC;IAC7D4a,SAAS,CAACC,KAAK,GAAG7a,WAAW;IAC7B5lB,IAAI,CAACga,UAAU,CAACmD,IAAI,CAClB,IAAI,CAAC/F,UAAU,CAACopB,SAAS,EAAE,wBAAwB,CACrD,CAAC;IAED,IAAI,IAAI,CAAC5O,GAAG,CAAA,EAAS,CAAC,EAAE;MAEtB,MAAM24C,aAAa,GAAG,IAAI,CAACC,6BAA6B,CAACxqE,IAAI,CAAC;MAG9D,IAAI,CAACuqE,aAAa,EAAE,IAAI,CAACE,0BAA0B,CAACzqE,IAAI,CAAC;IAC3D;IAEA,IAAI,CAAC2xB,gBAAgB,CAAA,EAAS,CAAC;IAC/B3xB,IAAI,CAACsZ,MAAM,GAAG,IAAI,CAACoxD,iBAAiB,EAAE;IACtC,IAAI,CAAC73C,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAACzb,UAAU,CAACpX,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAEA0qE,iBAAiBA,CAAAA,EAAsC;IAGrD,OACE,IAAI,CAACrB,gBAAgB,CAAC,eAAe,CAAC,IAAI,KAAK,CAACqB,iBAAiB,CAAA,CAAE;EAEvE;EAGAnB,aAAaA,CAAAA,EAAS;IACpB,IACE,IAAI,CAAC1vD,KAAK,CAACjc,KAAK,GAChB,IAAI,CAACm/B,iBAAiB,CAAC,IAAI,CAACljB,KAAK,CAACmB,aAAa,CAAEvd,KAAK,CAAC,EACvD;MACA,IAAI,CAACub,KAAK,CACRgwD,iBAAiB,CAACE,eAAe,EACjC,IAAI,CAACrvD,KAAK,CAACmB,aACb,CAAC;IACH;EACF;AACF,CAAC;AChbH,IAAA2vD,WAAA,GAAgB34D,UAAyB,IACvC,MAAM44D,gBAAgB,SAAS54D,UAAU,CAAmB;EAC1D64D,gBAAgBA,CAAAA,EAA6B;IAC3C,IAAI,IAAI,CAAC74C,KAAK,CAAA,EAAU,CAAC,EAAE;MACzB,MAAM84C,mBAAmB,GAAG,IAAI,CAACjxD,KAAK,CAAC7B,QAAQ;MAE/C,MAAMhY,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAgB;MAC3C,IAAI,CAAC0S,IAAI,CAAA,CAAE;MACX,IAAIlD,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC,EAAE;QACtC,MAAMgG,IAAI,GAAG,IAAI,CAAC8kE,mBAAmB,EAAE;QACvC,MAAM9b,UAAU,GAAG,IAAI,CAACt1B,gBAAgB,CAAC35B,IAAI,EAAEiG,IAAI,CAAC;QACpD,IAAI,CAAC+N,UAAU,CAACi7C,UAAU,EAAE,uBAAuB,CAAC;QACpD,IAAI,IAAI,CAACj9B,KAAK,CAAA,EAAU,CAAC,EAAE;UACzB,OAAOi9B,UAAU;QACnB;MACF;MACA,IAAI,CAACjqD,UAAU,CAAC8lE,mBAAmB,CAAC;IACtC;EACF;EAMAp3C,aAAaA,CAACxb,mBAA6C,EAAgB;IACzE,OACE,IAAI,CAAC2yD,gBAAgB,CAAE,CAAA,IAAI,KAAK,CAACn3C,aAAa,CAACxb,mBAAmB,CAAC;EAEvE;AACF,CAAC;ACzBH,MAAM8yD,kBAAkB,GAEpB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;AAC1C,MAAMC,YAAY,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAEzC,SAASC,eAAeA,CAACC,UAA4B,EAAE;EAC5D,IAAIA,UAAU,CAACjiD,GAAG,CAAC,YAAY,CAAC,EAAE;IAChC,IAAIiiD,UAAU,CAACjiD,GAAG,CAAC,mBAAmB,CAAC,EAAE;MACvC,MAAM,IAAIvX,KAAK,CACb,iEACF,CAAC;IACH;IAEA,MAAMy5D,sBAAsB,GAC1BD,UAAU,CAACn8D,GAAG,CAAC,YAAY,CAAC,CAACo8D,sBAAsB;IACrD,IACEA,sBAAsB,IAAI,IAAI,IAC9B,OAAOA,sBAAsB,KAAK,SAAS,EAC3C;MACA,MAAM,IAAIz5D,KAAK,CACb,2DACF,CAAC;IACH;IAEA,MAAM05D,sBAAsB,GAC1BF,UAAU,CAACn8D,GAAG,CAAC,YAAY,CAAC,CAACq8D,sBAAsB;IACrD,IACEA,sBAAsB,IAAI,IAAI,IAC9B,OAAOA,sBAAsB,KAAK,SAAS,EAC3C;MACA,MAAM,IAAI15D,KAAK,CAAC,6CAA6C,CAAC;IAChE;EACF;EAEA,IAAIw5D,UAAU,CAACjiD,GAAG,CAAC,MAAM,CAAC,IAAIiiD,UAAU,CAACjiD,GAAG,CAAC,YAAY,CAAC,EAAE;IAC1D,MAAM,IAAIvX,KAAK,CAAC,6CAA6C,CAAC;EAChE;EAEA,IAAIw5D,UAAU,CAACjiD,GAAG,CAAC,cAAc,CAAC,IAAIiiD,UAAU,CAACjiD,GAAG,CAAC,aAAa,CAAC,EAAE;IACnE,MAAM,IAAIvX,KAAK,CAAC,sDAAsD,CAAC;EACzE;EAEA,IAAIw5D,UAAU,CAACjiD,GAAG,CAAC,kBAAkB,CAAC,EAAE;IAAA,IAAAoiD,gBAAA;IACtC,MAAMhmB,QAAQ,GAAG6lB,UAAU,CAACn8D,GAAG,CAAC,kBAAkB,CAAC,CAACs2C,QAAQ;IAE5D,IAAI,CAAC0lB,kBAAkB,CAACluC,QAAQ,CAACwoB,QAAQ,CAAC,EAAE;MAC1C,MAAMimB,YAAY,GAAGP,kBAAkB,CAAChlE,GAAG,CAACwlE,CAAC,IAAI,IAAIA,CAAC,GAAG,CAAC,CAACplE,IAAI,CAAC,IAAI,CAAC;MACrE,MAAM,IAAIuL,KAAK,CACb,6EAA6E45D,YAAY,GAC3F,CAAC;IACH;IAEA,IAAIjmB,QAAQ,KAAK,MAAM,EAAE;MAAA,IAAAmmB,eAAA;MACvB,IAAIN,UAAU,CAACjiD,GAAG,CAAC,cAAc,CAAC,EAAE;QAClC,MAAM,IAAIvX,KAAK,CACb,0DACF,CAAC;MACH;MAEA,IAAIw5D,UAAU,CAACjiD,GAAG,CAAC,aAAa,CAAC,EAAE;QACjC,MAAM,IAAIvX,KAAK,CACb,yDACF,CAAC;MACH;MAEA,MAAM4zC,UAAU,GAAG4lB,UAAU,CAACn8D,GAAG,CAAC,kBAAkB,CAAC,CAACu2C,UAAU;MAEhE,IAAI,CAAC0lB,YAAY,CAACnuC,QAAQ,CAACyoB,UAAU,CAAC,EAAE;QACtC,MAAMmmB,SAAS,GAAGT,YAAY,CAACjlE,GAAG,CAACo2D,CAAC,IAAI,IAAIA,CAAC,GAAG,CAAC,CAACh2D,IAAI,CAAC,IAAI,CAAC;QAE5D,MAAM,IAAIuL,KAAK,CACb,iHAAiH+5D,SAAS,GAC5H,CAAC;MACH;MAGE,IACEnmB,UAAU,KAAK,GAAG,IAClB,CAAAkmB,CAAAA,eAAA,GAAAN,UAAU,CAACn8D,GAAG,CAAC,gBAAgB,CAAC,KAAhCy8D,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,eAAA,CAAkCE,UAAU,MAAK,MAAM,EACvD;QACA,MAAM,IAAIh6D,KAAK,CACb,iGAAiGzL,IAAI,CAACC,SAAS,CAAC,CAAC,gBAAgB,EAAEglE,UAAU,CAACn8D,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,KACvK,CAAC;MACH;IAEH,CAAA,MAAM,IAELs2C,QAAQ,KAAK,OAAO,IACpB,CAAA,CAAAgmB,gBAAA,GAAAH,UAAU,CAACn8D,GAAG,CAAC,gBAAgB,CAAC,KAAA,IAAA,GAAA,KAAA,CAAA,GAAhCs8D,gBAAA,CAAkCK,UAAU,MAAK,MAAM,EACvD;MACA,MAAM,IAAIh6D,KAAK,CACb,iFAAiFzL,IAAI,CAACC,SAAS,CAAC,CAAC,gBAAgB,EAAEglE,UAAU,CAACn8D,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,KACvJ,CAAC;IACH;EACF;EAEA,IAAIm8D,UAAU,CAACjiD,GAAG,CAAC,kBAAkB,CAAC,EAAE;IAMpC,IACEiiD,UAAU,CAACjiD,GAAG,CAAC,wBAAwB,CAAC,IACxCiiD,UAAU,CAACjiD,GAAG,CAAC,kBAAkB,CAAC,EAClC;MACA,MAAM,IAAIvX,KAAK,CACb,uFACF,CAAC;IACH;IACA,MAAMi6D,mCAAmC,GACvCT,UAAU,CAACn8D,GAAG,CAAC,kBAAkB,CAAC,CAAC68D,OAAO;IAC5C,IAAID,mCAAmC,KAAK,UAAU,EAAE;MACtD,MAAM,IAAIj6D,KAAK,CACb,4DAA4D,GAC1D,wDAAwD,GACxD,sCACJ,CAAC;IACH;EAEJ;EACA,IAAIw5D,UAAU,CAACjiD,GAAG,CAAC,kBAAkB,CAAC,EAAE;IAK/B,IAAIiiD,UAAU,CAACjiD,GAAG,CAAC,wBAAwB,CAAC,EAAE;MACnD,MAAM,IAAIvX,KAAK,CACb,qEACF,CAAC;IACH;EACF;EACA,IAAIw5D,UAAU,CAACjiD,GAAG,CAAC,wBAAwB,CAAC,EAAE,CAM7C,KAAM,IACLiiD,UAAU,CAACjiD,GAAG,CAAC,kBAAkB,CAAC,IAClCiiD,UAAU,CAACn8D,GAAG,CAAC,kBAAkB,CAAC,CAAC88D,sBAAsB,EACzD;IAMEX,UAAU,CAACl8D,GAAG,CAAC,wBAAwB,EAAE,CAAA,CAAE,CAAC;EAEhD;EAEA,IAAIk8D,UAAU,CAACjiD,GAAG,CAAC,gBAAgB,CAAC,EAAE;IAMlC,MAAMyiD,UAAU,GAAGR,UAAU,CAACn8D,GAAG,CAAC,gBAAgB,CAAC,CAAC28D,UAAU;IAC9D,IAAIA,UAAU,IAAI,IAAI,EAAE;MACtB,MAAMI,6BAA6B,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;MACrD,IAAI,CAACA,6BAA6B,CAACjvC,QAAQ,CAAC6uC,UAAU,CAAC,EAAE;QACvD,MAAM,IAAIh6D,KAAK,CACb,yEAAyE,GACvEo6D,6BAA6B,CAAC/lE,GAAG,CAACwlE,CAAC,IAAI,IAAIA,CAAC,GAAG,CAAC,CAACplE,IAAI,CAAC,IAAI,CAC9D,CAAC;MACH;IACF;EAEJ;EAEA,IACE+kE,UAAU,CAACjiD,GAAG,CAAC,oBAAoB,CAAC,IACpC,CAACiiD,UAAU,CAACjiD,GAAG,CAAC,eAAe,CAAC,EAChC;IACA,MAAMxa,KAAK,GAAG,IAAIiD,KAAK,CACrB,8FACF,CAAC;IAEDjD,KAAK,CAACs9D,cAAc,GAAG,eAAe;IACtC,MAAMt9D,KAAK;EACb;EAEA,IACEy8D,UAAU,CAACjiD,GAAG,CAAC,wBAAwB,CAAC,IACxCiiD,UAAU,CAACn8D,GAAG,CAAC,wBAAwB,CAAC,CAAC68D,OAAO,KAAK,SAAS,EAC9D;IACA,MAAM,IAAIl6D,KAAK,CACb,kEAAkE,GAChE,wDAAwD,GACxD,qCACJ,CAAC;EACH;EAEA,IACEw5D,UAAU,CAACjiD,GAAG,CAAC,gBAAgB,CAAC,IAChCiiD,UAAU,CAACn8D,GAAG,CAAC,gBAAgB,CAAC,CAAC28D,UAAU,KAAK,MAAM,EACtD;IACA,MAAM,IAAIh6D,KAAK,CACb,2GACF,CAAC;EACH;AAeF;AAYO,MAAMs6D,YAAY,GAAG;EAC1Bl6D,MAAM;EACNqwB,GAAG;EACH5R,IAAI;EACJkjC,UAAU;EACViX,WAAW;EACXxB;AACF,CAAC;AAEM,MAAM+C,gBAAgB,GAAG3/D,MAAM,CAACkD,IAAI,CAACw8D,YAAY,CAOrD;ACxLY,MAAeE,gBAAgB,SAASxf,UAAU,CAAC;EAuChEyf,UAAUA,CACRr0D,IAAsC,EACtCs0D,QAAoC,EACpCC,QAAiB,EACjBp0D,mBAA6C,EACpC;IACT,IACEH,IAAI,CAAC9X,IAAI,KAAK,eAAe,IAC7B,IAAI,CAAC0a,cAAc,CAAC5C,IAAI,CAAC,IACzBA,IAAI,CAACb,QAAQ,IACba,IAAI,CAACZ,SAAS,EACd;MACA,OAAOm1D,QAAQ;IACjB;IAEA,MAAM3lE,GAAG,GAAGoR,IAAI,CAACpR,GAIE;IAEnB,MAAMV,IAAI,GAAGU,GAAG,CAAC1G,IAAI,KAAK,YAAY,GAAG0G,GAAG,CAACV,IAAI,GAAGU,GAAG,CAAC6G,KAAK;IAE7D,IAAIvH,IAAI,KAAK,WAAW,EAAE;MACxB,IAAIomE,QAAQ,EAAE;QACZ,IAAI,CAACrzD,KAAK,CAACjJ,MAAM,CAAC9H,aAAa,EAAEtB,GAAG,CAAC;QACrC,OAAO,IAAI;MACb;MACA,IAAI2lE,QAAQ,EAAE;QACZ,IAAIp0D,mBAAmB,EAAE;UAGvB,IAAIA,mBAAmB,CAAC6yC,cAAc,KAAK,IAAI,EAAE;YAC/C7yC,mBAAmB,CAAC6yC,cAAc,GAAGpkD,GAAG,CAAC6H,GAAG,CAAC5Q,KAAK;UACpD;QACF,CAAC,MAAM;UACL,IAAI,CAACob,KAAK,CAACjJ,MAAM,CAAC3N,cAAc,EAAEuE,GAAG,CAAC;QACxC;MACF;MAEA,OAAO,IAAI;IACb;IAEA,OAAO2lE,QAAQ;EACjB;EAEAC,oBAAoBA,CAClBxxC,IAAkC,EAClCikB,gBAAwB,EACW;IACnC,OACEjkB,IAAI,CAAC96B,IAAI,KAAK,yBAAyB,IACvC,IAAI,CAAC88B,iBAAiB,CAAChC,IAAI,CAACn9B,KAAK,CAAC,KAAKohD,gBAAgB;EAE3D;EAGAulB,aAAaA,CAAAA,EAA8C;IACzD,IAAI,CAACxY,kBAAkB,CAAA,CAAE;IACzB,IAAI,CAACvnB,SAAS,CAAA,CAAE;IAChB,IAAI,IAAI,CAACxS,KAAK,CAAA,GAAO,CAAC,EAAE;MACtB,MAAM,IAAI,CAAChZ,KAAK,CAACjJ,MAAM,CAAC9D,yBAAyB,EAAE,IAAI,CAAC4N,KAAK,CAAC7B,QAAQ,CAAC;IACzE;IACA,MAAM+iB,IAAI,GAAG,IAAI,CAAClJ,eAAe,EAAmC;IACpE,IAAI,CAAC,IAAI,CAACG,KAAK,CAAA,GAAO,CAAC,EAAE;MACvB,MAAM,IAAI,CAAChZ,KAAK,CAACjJ,MAAM,CAAC7D,yBAAyB,EAAE,IAAI,CAAC2N,KAAK,CAAC7B,QAAQ,EAAE;QACtEhT,UAAU,EAAE,IAAI,CAACw5B,KAAK,CAACinB,WAAW,CAAC,IAAI,CAAC5rC,KAAK,CAACjc,KAAK;MACrD,CAAC,CAAC;IACJ;IAGA,IAAI,CAAC+gD,yBAAyB,CAAA,CAAE;IAChC5jB,IAAI,CAACqiB,QAAQ,GAAG,IAAI,CAACA,QAAQ;IAC7BriB,IAAI,CAACgkB,MAAM,GAAG,IAAI,CAACllC,KAAK,CAACklC,MAAM;IAC/B,IAAI,IAAI,CAAC3sC,WAAW,MAAqB,EAAE;MACzC2oB,IAAI,CAAC7pB,MAAM,GAAG,IAAI,CAACA,MAAM;IAC3B;IACA,OAAO6pB,IAAI;EACb;EAqBAlJ,eAAeA,CAEb26C,UAAoB,EACpBt0D,mBAAsC,EACxB;IACd,IAAIs0D,UAAU,EAAE;MACd,OAAO,IAAI,CAACC,aAAa,CAAC,MACxB,IAAI,CAACC,mBAAmB,CAACx0D,mBAAmB,CAC9C,CAAC;IACH;IACA,OAAO,IAAI,CAACy0D,UAAU,CAAC,MAAM,IAAI,CAACD,mBAAmB,CAACx0D,mBAAmB,CAAC,CAAC;EAC7E;EAGAw0D,mBAAmBA,CAEjBx0D,mBAAsC,EACxB;IACd,MAAMF,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IACpC,MAAM+iB,IAAI,GAAG,IAAI,CAACmB,gBAAgB,CAAChkB,mBAAmB,CAAC;IACvD,IAAI,IAAI,CAAC8Z,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,MAAMhyB,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAAuBxf,QAAQ,CAAC;MAC7DhY,IAAI,CAAC4oE,WAAW,GAAG,CAAC7tC,IAAI,CAAC;MACzB,OAAO,IAAI,CAACnJ,GAAG,CAAA,EAAS,CAAC,EAAE;QACzB5xB,IAAI,CAAC4oE,WAAW,CAACzrD,IAAI,CAAC,IAAI,CAAC+e,gBAAgB,CAAChkB,mBAAmB,CAAC,CAAC;MACnE;MACA,IAAI,CAAC2mB,gBAAgB,CAAC7+B,IAAI,CAAC4oE,WAAW,CAAC;MACvC,OAAO,IAAI,CAACxxD,UAAU,CAACpX,IAAI,EAAE,oBAAoB,CAAC;IACpD;IACA,OAAO+6B,IAAI;EACb;EAGA6xC,0BAA0BA,CAExB10D,mBAA6C,EAC7CgqB,cAAyB,EACzB;IACA,OAAO,IAAI,CAACuqC,aAAa,CAAC,MACxB,IAAI,CAACvwC,gBAAgB,CAAChkB,mBAAmB,EAAEgqB,cAAc,CAC3D,CAAC;EACH;EAGA9F,uBAAuBA,CAErBlkB,mBAA6C,EAC7CgqB,cAAyB,EACzB;IACA,OAAO,IAAI,CAACyqC,UAAU,CAAC,MACrB,IAAI,CAACzwC,gBAAgB,CAAChkB,mBAAmB,EAAEgqB,cAAc,CAC3D,CAAC;EACH;EAIA1G,0BAA0BA,CAACtjB,mBAAqC,EAAE;IAChEA,mBAAmB,CAAC+yC,qBAAqB,GAAG,IAAI,CAACpxC,KAAK,CAAC7B,QAAQ;EACjE;EAKAkkB,gBAAgBA,CAEdhkB,mBAA6C,EAC7CgqB,cAAyB,EACX;IACd,MAAMlqB,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IACpC,MAAM60D,OAAO,GAAG,IAAI,CAACz5C,YAAY,IAAU,CAAC;IAC5C,IAAIy5C,OAAO,EAAE;MACX,IAAI,IAAI,CAACjhB,SAAS,CAACxP,QAAQ,EAAE;QAC3B,IAAI,CAAC5yB,IAAI,CAAA,CAAE;QACX,IAAImV,IAAI,GAAG,IAAI,CAACmuC,UAAU,CAAC90D,QAAQ,CAAC;QACpC,IAAIkqB,cAAc,EAAE;UAClBvD,IAAI,GAAGuD,cAAc,CAACF,IAAI,CAAC,IAAI,EAAErD,IAAI,EAAE3mB,QAAQ,CAAC;QAClD;QACA,OAAO2mB,IAAI;MACb;IACF;IAEA,IAAIouC,mBAAmB;IACvB,IAAI70D,mBAAmB,EAAE;MACvB60D,mBAAmB,GAAG,KAAK;IAC7B,CAAC,MAAM;MACL70D,mBAAmB,GAAG,IAAIk0C,gBAAgB,EAAE;MAC5C2gB,mBAAmB,GAAG,IAAI;IAC5B;IACA,MAAM;MAAE9sE;KAAM,GAAG,IAAI,CAAC4Z,KAAK;IAE3B,IAAI5Z,IAAI,KAAc,EAAA,IAAIqmB,iBAAiB,CAACrmB,IAAI,CAAC,EAAE;MACjD,IAAI,CAAC4Z,KAAK,CAACmlC,gBAAgB,GAAG,IAAI,CAACnlC,KAAK,CAACjc,KAAK;IAChD;IAEA,IAAI+gC,IAAI,GAAG,IAAI,CAACquC,qBAAqB,CAAC90D,mBAAmB,CAAC;IAC1D,IAAIgqB,cAAc,EAAE;MAClBvD,IAAI,GAAGuD,cAAc,CAACF,IAAI,CAAC,IAAI,EAAErD,IAAI,EAAE3mB,QAAQ,CAAC;IAClD;IACA,IAAI4O,iBAAiB,CAAC,IAAI,CAAC/M,KAAK,CAAC5Z,IAAI,CAAC,EAAE;MACtC,MAAMD,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAAyBxf,QAAQ,CAAC;MAC/D,MAAM+0C,QAAQ,GAAG,IAAI,CAAClzC,KAAK,CAACrM,KAA6B;MACzDxN,IAAI,CAAC+sD,QAAQ,GAAGA,QAAQ;MAExB,IAAI,IAAI,CAAC/6B,KAAK,CAAA,EAAM,CAAC,EAAE;QACrB,IAAI,CAACtZ,YAAY,CAACimB,IAAI,EAAc,IAAI,CAAC;QACzC3+B,IAAI,CAAC2+B,IAAI,GAAGA,IAAI;QAEhB,MAAMtuB,UAAU,GAAG2H,QAAQ,CAACva,KAAK;QACjC,IACEya,mBAAmB,CAAC6yC,cAAc,IAAI,IAAI,IAC1C7yC,mBAAmB,CAAC6yC,cAAc,CAACttD,KAAK,IAAI4S,UAAU,EACtD;UACA6H,mBAAmB,CAAC6yC,cAAc,GAAG,IAAI;QAC3C;QACA,IACE7yC,mBAAmB,CAAC4yC,kBAAkB,IAAI,IAAI,IAC9C5yC,mBAAmB,CAAC4yC,kBAAkB,CAACrtD,KAAK,IAAI4S,UAAU,EAC1D;UACA6H,mBAAmB,CAAC4yC,kBAAkB,GAAG,IAAI;QAC/C;QACA,IACE5yC,mBAAmB,CAAC8yC,aAAa,IAAI,IAAI,IACzC9yC,mBAAmB,CAAC8yC,aAAa,CAACvtD,KAAK,IAAI4S,UAAU,EACrD;UACA,IAAI,CAAC87C,yBAAyB,CAACj0C,mBAAmB,CAAC;UACnDA,mBAAmB,CAAC8yC,aAAa,GAAG,IAAI;QAC1C;QACA,IACE9yC,mBAAmB,CAACgzC,cAAc,IAAI,IAAI,IAC1ChzC,mBAAmB,CAACgzC,cAAc,CAACztD,KAAK,IAAI4S,UAAU,EACtD;UACA6H,mBAAmB,CAACgzC,cAAc,GAAG,IAAI;QAC3C;MACF,CAAC,MAAM;QACLlrD,IAAI,CAAC2+B,IAAI,GAAGA,IAA+B;MAC7C;MAEA,IAAI,CAACnV,IAAI,CAAA,CAAE;MACXxpB,IAAI,CAACw1B,KAAK,GAAG,IAAI,CAAC0G,gBAAgB,EAAE;MACpC,IAAI,CAACmyB,SAAS,CACZ1vB,IAAI,EACJ,IAAI,CAACvnB,UAAU,CAACpX,IAAI,EAAE,sBAAsB,CAAC,EAC7CoQ,SAAS,EACTA,SAAS,EACTA,SAAS,EACTA,SAAS,EACT28C,QAAQ,KAAK,KAAK,IAAIA,QAAQ,KAAK,KAAK,IAAIA,QAAQ,KAAK,KAC3D,CAAC;MAED,OAAO/sD,IAAI;IACZ,CAAA,MAAM,IAAI+sE,mBAAmB,EAAE;MAC9B,IAAI,CAACniB,qBAAqB,CAAC1yC,mBAAmB,EAAE,IAAI,CAAC;IACvD;IAEA,IAAI20D,OAAO,EAAE;MACX,MAAM;QAAE5sE;OAAM,GAAG,IAAI,CAAC4Z,KAAK;MAC3B,MAAM4B,UAAU,GAAG,IAAI,CAAC5D,SAAS,CAAC,aAAa,CAAC,GAC5C8O,uBAAuB,CAAC1mB,IAAI,CAAC,GAC7B0mB,uBAAuB,CAAC1mB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC+xB,KAAK,CAAA,EAAU,CAAC;MAC3D,IAAIvW,UAAU,IAAI,CAAC,IAAI,CAACwxD,6BAA6B,EAAE,EAAE;QACvD,IAAI,CAACvlB,cAAc,CAAC33C,MAAM,CAAC3E,2BAA2B,EAAE4M,QAAQ,CAAC;QACjE,OAAO,IAAI,CAAC80D,UAAU,CAAC90D,QAAQ,CAAC;MAClC;IACF;IAEA,OAAO2mB,IAAI;EACb;EAKAquC,qBAAqBA,CAEnB90D,mBAAqC,EACvB;IACd,MAAMF,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IACpC,MAAMgnC,gBAAgB,GAAG,IAAI,CAACnlC,KAAK,CAACmlC,gBAAgB;IACpD,MAAMjkB,IAAI,GAAG,IAAI,CAACmyC,YAAY,CAACh1D,mBAAmB,CAAC;IAEnD,IAAI,IAAI,CAACq0D,oBAAoB,CAACxxC,IAAI,EAAEikB,gBAAgB,CAAC,EAAE;MACrD,OAAOjkB,IAAI;IACb;IAEA,OAAO,IAAI,CAACK,gBAAgB,CAACL,IAAI,EAAE/iB,QAAQ,EAAEE,mBAAmB,CAAC;EACnE;EAEAkjB,gBAAgBA,CAEdL,IAAkB,EAClB/iB,QAAkB,EAElBE,mBAA6C,EAC/B;IACd,IAAI,IAAI,CAAC0Z,GAAG,CAAA,EAAY,CAAC,EAAE;MACzB,MAAM5xB,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAA0Bxf,QAAQ,CAAC;MAChEhY,IAAI,CAACsoB,IAAI,GAAGyS,IAAI;MAChB/6B,IAAI,CAAC27B,UAAU,GAAG,IAAI,CAACS,uBAAuB,EAAE;MAChD,IAAI,CAAC7K,MAAM,CAAA,EAAS,CAAC;MACrBvxB,IAAI,CAACi8B,SAAS,GAAG,IAAI,CAACC,gBAAgB,EAAE;MACxC,OAAO,IAAI,CAAC9kB,UAAU,CAACpX,IAAI,EAAE,uBAAuB,CAAC;IACvD;IACA,OAAO+6B,IAAI;EACb;EAEAoyC,wBAAwBA,CAEtBj1D,mBAAsC,EACR;IAC9B,OAAO,IAAI,CAAC8Z,KAAK,CAAe,GAAA,CAAC,GAC7B,IAAI,CAACjc,gBAAgB,CAAA,CAAE,GACvB,IAAI,CAACglD,eAAe,CAAC7iD,mBAAmB,CAAC;EAC/C;EAKAg1D,YAAYA,CAEVh1D,mBAAqC,EACvB;IACd,MAAMF,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IACpC,MAAMgnC,gBAAgB,GAAG,IAAI,CAACnlC,KAAK,CAACmlC,gBAAgB;IACpD,MAAMjkB,IAAI,GAAG,IAAI,CAACoyC,wBAAwB,CAACj1D,mBAAmB,CAAC;IAE/D,IAAI,IAAI,CAACq0D,oBAAoB,CAACxxC,IAAI,EAAEikB,gBAAgB,CAAC,EAAE;MACrD,OAAOjkB,IAAI;IACb;IAEA,OAAO,IAAI,CAACgmC,WAAW,CAAChmC,IAAI,EAAE/iB,QAAQ,EAAE,CAAC,CAAC,CAAC;EAC7C;EAQA+oD,WAAWA,CAETpiC,IAAkC,EAClCqiC,YAAsB,EACtBC,OAAe,EACD;IACd,IAAI,IAAI,CAAC7qD,aAAa,CAACuoB,IAAI,CAAC,EAAE;MAK5B,MAAMnxB,KAAK,GAAG,IAAI,CAAC0I,gBAAgB,CAACyoB,IAAI,CAAC;MAEzC,IACEsiC,OAAO,IAAI35C,uBAAuB,GAAO,CAAC,IAC1C,CAAC,IAAI,CAACskC,SAAS,CAACtP,KAAK,IACrB,CAAC,IAAI,CAACtqB,KAAK,CAAA,EAAO,CAAC,EACnB;QACA,IAAI,CAAChZ,KAAK,CAACjJ,MAAM,CAACnI,mBAAmB,EAAE+2B,IAAI,EAAE;UAC3C5gC,cAAc,EAAEyP;QAClB,CAAC,CAAC;MACJ;MAEA,IAAI,CAACoL,UAAU,CAACC,cAAc,CAACrL,KAAK,EAAEmxB,IAAI,CAACnwB,GAAG,CAAC5Q,KAAK,CAAC;IACvD;IAEA,MAAMwvE,EAAE,GAAG,IAAI,CAACvzD,KAAK,CAAC5Z,IAAI;IAC1B,IAAI+mB,eAAe,CAAComD,EAAE,CAAC,KAAK,IAAI,CAACxhB,SAAS,CAACtP,KAAK,IAAI,CAAC,IAAI,CAACtqB,KAAK,CAAO,EAAA,CAAC,CAAC,EAAE;MACxE,IAAIq7C,IAAI,GAAG/lD,uBAAuB,CAAC8lD,EAAE,CAAC;MACtC,IAAIC,IAAI,GAAGpM,OAAO,EAAE;QAClB,IAAImM,EAAE,OAAgB,EAAE;UACtB,IAAI,CAACpoB,YAAY,CAAC,kBAAkB,CAAC;UACrC,IAAI,IAAI,CAACnrC,KAAK,CAACimC,0BAA0B,EAAE;YAEzC,OAAOnhB,IAAI;UACb;UACA,IAAI,CAAC2uC,4BAA4B,CAAC3uC,IAAI,EAAkBqiC,YAAY,CAAC;QACvE;QACA,MAAMhhE,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAC3BwpC,YACF,CAAC;QACDhhE,IAAI,CAAC2+B,IAAI,GAAGA,IAAI;QAChB3+B,IAAI,CAAC+sD,QAAQ,GAAG,IAAI,CAAClzC,KAAK,CAACrM,KAAK;QAEhC,MAAM+/D,OAAO,GAAGH,EAAE,KAAiB,EAAA,IAAIA,EAAE,KAAkB,EAAA;QAC3D,MAAMI,QAAQ,GAAGJ,EAAE,KAAyB,EAAA;QAE5C,IAAII,QAAQ,EAAE;UAGZH,IAAI,GAAG/lD,uBAAuB,CAAA,EAAc,CAAC;QAC/C;QAEA,IAAI,CAACkC,IAAI,CAAA,CAAE;QAEX,IAEE4jD,EAAE,OAAgB,IAElB,IAAI,CAACv1D,SAAS,CAAC,CAAC,kBAAkB,EAAE;UAAEytC,QAAQ,EAAE;QAAW,CAAA,CAAC,CAAC,EAC7D;UACA,IAAI,IAAI,CAACzrC,KAAK,CAAC5Z,IAAI,KAAA,EAAc,IAAI,IAAI,CAAC2rD,SAAS,CAACzP,QAAQ,EAAE;YAC5D,MAAM,IAAI,CAACnjC,KAAK,CACdjJ,MAAM,CAACjH,gCAAgC,EACvC,IAAI,CAAC+Q,KAAK,CAAC7B,QACb,CAAC;UACH;QACF;QAEAhY,IAAI,CAACw1B,KAAK,GAAG,IAAI,CAACi4C,oBAAoB,CAACL,EAAE,EAAEC,IAAI,CAAC;QAChD,MAAMK,YAAY,GAAG,IAAI,CAACt2D,UAAU,CAClCpX,IAAI,EACJutE,OAAO,IAAIC,QAAQ,GAAG,mBAAmB,GAAG,kBAC9C,CAAC;QAMD,MAAMG,MAAM,GAAG,IAAI,CAAC9zD,KAAK,CAAC5Z,IAAI;QAC9B,IACGutE,QAAQ,KAAKG,MAAM,KAAA,EAAiB,IAAIA,MAAM,KAAkB,EAAA,CAAC,IACjEJ,OAAO,IAAII,MAAM,OAA0B,EAC5C;UACA,MAAM,IAAI,CAAC30D,KAAK,CACdjJ,MAAM,CAACxJ,yBAAyB,EAChC,IAAI,CAACsT,KAAK,CAAC7B,QACb,CAAC;QACH;QAEA,OAAO,IAAI,CAAC+oD,WAAW,CAAC2M,YAAY,EAAE1M,YAAY,EAAEC,OAAO,CAAC;MAC9D;IACF;IAEA,OAAOtiC,IAAI;EACb;EAKA8uC,oBAAoBA,CAElBL,EAAa,EACbC,IAAY,EACE;IACd,MAAMr1D,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IACpC,QAAQo1D,EAAE;MACR,KAAA,EAAA;QACE,QAAQ,IAAI,CAACp3D,eAAe,CAAC,kBAAkB,EAAE,UAAU,CAAC;UAC1D,KAAK,MAAM;YACT,OAAO,IAAI,CAAC43D,uBAAuB,CAAC,MAAM;cACxC,OAAO,IAAI,CAACC,iBAAiB,EAAE;YACjC,CAAC,CAAC;UAEJ,KAAK,QAAQ;YACX,OAAO,IAAI,CAACC,8BAA8B,CAAC,MAAM;cAC/C,OAAO,IAAI,CAACC,uBAAuB,CAACV,IAAI,CAAC;YAC3C,CAAC,CAAC;QACN;QAEA,IAGE,IAAI,CAACr3D,eAAe,CAAC,kBAAkB,EAAE,UAAU,CAAC,KAAK,OAAO,EAChE;UACA,OAAO,IAAI,CAAC43D,uBAAuB,CAAC,MAAM;YACxC,IAAI,IAAI,CAAChiB,SAAS,CAACxP,QAAQ,IAAI,IAAI,CAAChpB,YAAY,CAAU,GAAA,CAAC,EAAE;cAC3D,MAAM,IAAI,CAACpa,KAAK,CAACjJ,MAAM,CAACtD,iBAAiB,EAAE,IAAI,CAACoN,KAAK,CAAC7B,QAAQ,CAAC;YACjE;YACA,OAAO,IAAI,CAACg2D,6BAA6B,CACvC,IAAI,CAACC,wBAAwB,CAACb,EAAE,EAAEC,IAAI,CAAC,EACvCr1D,QACF,CAAC;UACH,CAAC,CAAC;QACJ;MAGF;QACE,OAAO,IAAI,CAACi2D,wBAAwB,CAACb,EAAE,EAAEC,IAAI,CAAC;IAClD;EACF;EAKAY,wBAAwBA,CAEtBb,EAAa,EACbC,IAAY,EACE;IACd,MAAMr1D,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IAEpC,OAAO,IAAI,CAAC+oD,WAAW,CACrB,IAAI,CAACoM,wBAAwB,CAAA,CAAE,EAC/Bn1D,QAAQ,EACRuP,uBAAuB,CAAC6lD,EAAE,CAAC,GAAGC,IAAI,GAAG,CAAC,GAAGA,IAC3C,CAAC;EACH;EAEAQ,iBAAiBA,CAAAA,EAA6B;IAAA,IAAAK,WAAA;IAC5C,MAAM;MAAEl2D;KAAU,GAAG,IAAI,CAAC6B,KAAK;IAC/B,MAAMhE,IAAI,GAAG,IAAI,CAACqmB,gBAAgB,EAAE;IACpC,MAAMiyC,mBAAmB,GAAG9hE,mCAAmC,CAAC6c,GAAG,CAEjErT,IAAI,CAAC5V,IACP,CAAC;IAGD,IAAIkuE,mBAAmB,IAAI,EAAAD,CAAAA,WAAA,GAACr4D,IAAI,CAAC3B,KAAK,KAAVg6D,IAAAA,IAAAA,WAAA,CAAY74D,aAAa,CAAE,EAAA;MACrD,IAAI,CAAC2D,KAAK,CAACjJ,MAAM,CAAChD,uBAAuB,EAAEiL,QAAQ,EAAE;QACnD/X,IAAI,EAAE4V,IAAI,CAAC5V;MACb,CAAC,CAAC;IACJ;IACA,IAAI,CAAC,IAAI,CAACmuE,qCAAqC,EAAE,EAAE;MAEjD,IAAI,CAACp1D,KAAK,CAACjJ,MAAM,CAACjD,eAAe,EAAEkL,QAAQ,CAAC;IAC9C;IAEA,OAAOnC,IAAI;EACb;EAEAw4D,0BAA0BA,CACxBruE,IAAmD,EACnD;IACA,IAAI,IAAI,CAACgyB,KAAK,CAAA,EAAY,CAAC,EAAE;MAC3B,IAAI,CAAChZ,KAAK,CAACjJ,MAAM,CAACnG,kCAAkC,EAAE5J,IAAI,CAACoP,QAAQ,CAAC;IACtE;EACF;EAIA2rD,eAAeA,CAEb7iD,mBAA6C,EAC7CqrD,QAAkB,EACJ;IACd,MAAMvrD,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IACpC,MAAMs2D,OAAO,GAAG,IAAI,CAACl7C,YAAY,GAAU,CAAC;IAE5C,IAAIk7C,OAAO,IAAI,IAAI,CAACC,oBAAoB,EAAE,EAAE;MAC1C,IAAI,CAAC/kD,IAAI,CAAA,CAAE;MACX,MAAMuR,IAAI,GAAG,IAAI,CAACyzC,UAAU,CAACx2D,QAAQ,CAAC;MACtC,IAAI,CAACurD,QAAQ,EAAE,IAAI,CAAC8K,0BAA0B,CAACtzC,IAAI,CAAC;MACpD,OAAOA,IAAI;IACb;IACA,MAAM0zC,MAAM,GAAG,IAAI,CAACz8C,KAAK,GAAU,CAAC;IACpC,MAAMhyB,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAA0C;IACrE,IAAIoQ,aAAa,CAAC,IAAI,CAACrN,KAAK,CAAC5Z,IAAI,CAAC,EAAE;MAClCD,IAAI,CAAC+sD,QAAQ,GAAG,IAAI,CAAClzC,KAAK,CAACrM,KAAK;MAChCxN,IAAI,CAACE,MAAM,GAAG,IAAI;MAElB,IAAI,IAAI,CAAC8xB,KAAK,CAAA,EAAU,CAAC,EAAE;QACzB,IAAI,CAACgzB,YAAY,CAAC,kBAAkB,CAAC;MACvC;MACA,MAAM0pB,QAAQ,GAAG,IAAI,CAAC18C,KAAK,GAAW,CAAC;MACvC,IAAI,CAACxI,IAAI,CAAA,CAAE;MAEXxpB,IAAI,CAACoP,QAAQ,GAAG,IAAI,CAAC2rD,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;MAEhD,IAAI,CAACnQ,qBAAqB,CAAC1yC,mBAAmB,EAAE,IAAI,CAAC;MAErD,IAAI,IAAI,CAAC2B,KAAK,CAAC6O,MAAM,IAAIgmD,QAAQ,EAAE;QACjC,MAAM1hB,GAAG,GAAGhtD,IAAI,CAACoP,QAAQ;QAEzB,IAAI49C,GAAG,CAAC/sD,IAAI,KAAK,YAAY,EAAE;UAC7B,IAAI,CAAC+Y,KAAK,CAACjJ,MAAM,CAACxE,YAAY,EAAEvL,IAAI,CAAC;QACtC,CAAA,MAAM,IAAI,IAAI,CAAC0a,wBAAwB,CAACsyC,GAAG,CAAC,EAAE;UAC7C,IAAI,CAACh0C,KAAK,CAACjJ,MAAM,CAACjO,kBAAkB,EAAE9B,IAAI,CAAC;QAC7C;MACF;MAEA,IAAI,CAACyuE,MAAM,EAAE;QACX,IAAI,CAAClL,QAAQ,EAAE;UACb,IAAI,CAAC8K,0BAA0B,CAACruE,IAAiC,CAAC;QACpE;QACA,OAAO,IAAI,CAACoX,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC;MACjD;IACF;IAEA,MAAM+6B,IAAI,GAAG,IAAI,CAAC4zC,WAAW,CAE3B3uE,IAAI,EACJyuE,MAAM,EACNv2D,mBACF,CAAC;IAED,IAAIo2D,OAAO,EAAE;MACX,MAAM;QAAEruE;OAAM,GAAG,IAAI,CAAC4Z,KAAK;MAC3B,MAAM4B,UAAU,GAAG,IAAI,CAAC5D,SAAS,CAAC,aAAa,CAAC,GAC5C8O,uBAAuB,CAAC1mB,IAAI,CAAC,GAC7B0mB,uBAAuB,CAAC1mB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC+xB,KAAK,CAAA,EAAU,CAAC;MAC3D,IAAIvW,UAAU,IAAI,CAAC,IAAI,CAACwxD,6BAA6B,EAAE,EAAE;QACvD,IAAI,CAACvlB,cAAc,CAAC33C,MAAM,CAACnP,sBAAsB,EAAEoX,QAAQ,CAAC;QAC5D,OAAO,IAAI,CAACw2D,UAAU,CAACx2D,QAAQ,CAAC;MAClC;IACF;IAEA,OAAO+iB,IAAI;EACb;EAGA4zC,WAAWA,CAET3uE,IAAkB,EAClByuE,MAAe,EACfv2D,mBAA6C,EAC/B;IACd,IAAIu2D,MAAM,EAAE;MACV,MAAMG,oBAAoB,GAAG5uE,IAAkC;MAC/D,IAAI,CAACquD,SAAS,CACZugB,oBAAoB,CAACx/D,QAAQ,EAC7B,IAAI,CAACgI,UAAU,CAACw3D,oBAAoB,EAAE,kBAAkB,CAC1D,CAAC;MACD,OAAO5uE,IAAI;IACb;IAEA,MAAMgY,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IACpC,IAAI+iB,IAAI,GAAG,IAAI,CAAC8zC,mBAAmB,CAAC32D,mBAAmB,CAAC;IACxD,IAAI,IAAI,CAAC0yC,qBAAqB,CAAC1yC,mBAAmB,EAAE,KAAK,CAAC,EAAE,OAAO6iB,IAAI;IACvE,OAAO9T,cAAc,CAAC,IAAI,CAACpN,KAAK,CAAC5Z,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC65B,kBAAkB,EAAE,EAAE;MACpE,MAAM95B,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAAqBxf,QAAQ,CAAC;MAC3DhY,IAAI,CAAC+sD,QAAQ,GAAG,IAAI,CAAClzC,KAAK,CAACrM,KAAK;MAChCxN,IAAI,CAACE,MAAM,GAAG,KAAK;MACnBF,IAAI,CAACoP,QAAQ,GAAG2rB,IAAI;MACpB,IAAI,CAACvR,IAAI,CAAA,CAAE;MACX,IAAI,CAAC6kC,SAAS,CAACtzB,IAAI,EAAGA,IAAI,GAAG,IAAI,CAAC3jB,UAAU,CAACpX,IAAI,EAAE,kBAAkB,CAAE,CAAC;IAC1E;IACA,OAAO+6B,IAAI;EACb;EAIA8zC,mBAAmBA,CAEjB32D,mBAA6C,EAC/B;IACd,MAAMF,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IACpC,MAAMgnC,gBAAgB,GAAG,IAAI,CAACnlC,KAAK,CAACmlC,gBAAgB;IACpD,MAAMjkB,IAAI,GAAG,IAAI,CAACrH,aAAa,CAACxb,mBAAmB,CAAC;IAEpD,IAAI,IAAI,CAACq0D,oBAAoB,CAACxxC,IAAI,EAAEikB,gBAAgB,CAAC,EAAE;MACrD,OAAOjkB,IAAI;IACb;IAEA,OAAO,IAAI,CAAC2I,eAAe,CAAC3I,IAAI,EAAE/iB,QAAQ,CAAC;EAC7C;EAEA0rB,eAAeA,CAEbppB,IAAkB,EAClBtC,QAAkB,EAClB2rB,OAAwB,EACV;IACd,MAAM9pB,KAAK,GAAG;MACZU,mBAAmB,EAAE,KAAK;MAC1Bu0D,eAAe,EAAE,IAAI,CAACpO,oBAAoB,CAACpmD,IAAI,CAAC;MAChD2pB,IAAI,EAAE;KACP;IACD,GAAG;MACD3pB,IAAI,GAAG,IAAI,CAACwpB,cAAc,CAACxpB,IAAI,EAAEtC,QAAQ,EAAE2rB,OAAO,EAAE9pB,KAAK,CAAC;MAG1DA,KAAK,CAACi1D,eAAe,GAAG,KAAK;IAC/B,CAAC,QAAQ,CAACj1D,KAAK,CAACoqB,IAAI;IACpB,OAAO3pB,IAAI;EACb;EAMAwpB,cAAcA,CAEZxpB,IAAkB,EAClBtC,QAAkB,EAClB2rB,OAAmC,EACnC9pB,KAA4B,EACd;IACd,MAAM;MAAE5Z;KAAM,GAAG,IAAI,CAAC4Z,KAAK;IAC3B,IAAI,CAAC8pB,OAAO,IAAI1jC,IAAI,OAAmB,EAAE;MACvC,OAAO,IAAI,CAAC8uE,SAAS,CAACz0D,IAAI,EAAEtC,QAAQ,EAAE2rB,OAAO,EAAE9pB,KAAK,CAAC;IACvD,CAAC,MAAM,IAAI2N,eAAe,CAACvnB,IAAI,CAAC,EAAE;MAChC,OAAO,IAAI,CAAC2gE,6BAA6B,CAACtmD,IAAI,EAAEtC,QAAQ,EAAE6B,KAAK,CAAC;IAClE;IAEA,IAAIV,QAAQ,GAAG,KAAK;IAEpB,IAAIlZ,IAAI,OAAmB,EAAE;MAC3B,IAAI0jC,OAAO,EAAE;QACX,IAAI,CAAC3qB,KAAK,CAACjJ,MAAM,CAACzI,qBAAqB,EAAE,IAAI,CAACuS,KAAK,CAAC7B,QAAQ,CAAC;QAC7D,IAAI,IAAI,CAACujB,iBAAiB,CAAE,CAAA,OAA8B,EAAE;UAE1D,OAAO,IAAI,CAAClhB,kBAAkB,CAACC,IAAI,EAAET,KAAK,CAAC;QAC7C;MACF;MACAA,KAAK,CAACU,mBAAmB,GAAGpB,QAAQ,GAAG,IAAI;MAC3C,IAAI,CAACqQ,IAAI,CAAA,CAAE;IACb;IAEA,IAAI,CAACma,OAAO,IAAI,IAAI,CAAC3R,KAAK,CAAA,EAAU,CAAC,EAAE;MACrC,OAAO,IAAI,CAACg9C,+BAA+B,CACzC10D,IAAI,EACJtC,QAAQ,EACR6B,KAAK,EACLV,QACF,CAAC;IACH,CAAC,MAAM;MACL,MAAMjC,QAAQ,GAAG,IAAI,CAAC0a,GAAG,EAAY,CAAC;MACtC,IAAI1a,QAAQ,IAAIiC,QAAQ,IAAI,IAAI,CAACyY,GAAG,CAAO,EAAA,CAAC,EAAE;QAC5C,OAAO,IAAI,CAACpX,WAAW,CAACF,IAAI,EAAEtC,QAAQ,EAAE6B,KAAK,EAAE3C,QAAQ,EAAEiC,QAAQ,CAAC;MACpE,CAAC,MAAM;QACL,OAAO,IAAI,CAACkB,kBAAkB,CAACC,IAAI,EAAET,KAAK,CAAC;MAC7C;IACF;EACF;EAEAQ,kBAAkBA,CAEhBC,IAAkB,EAClBT,KAA4B,EAC5B;IACAA,KAAK,CAACoqB,IAAI,GAAG,IAAI;IACjB,OAAO3pB,IAAI;EACb;EAMAE,WAAWA,CAETF,IAAkB,EAClBtC,QAAkB,EAClB6B,KAA4B,EAC5B3C,QAAiB,EACjBiC,QAAiB,EACgC;IACjD,MAAMnZ,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAE3Bxf,QAAQ,CAAC;IACXhY,IAAI,CAAC6R,MAAM,GAAGyI,IAAI;IAClBta,IAAI,CAACkX,QAAQ,GAAGA,QAAQ;IACxB,IAAIA,QAAQ,EAAE;MACZlX,IAAI,CAAC44B,QAAQ,GAAG,IAAI,CAAC/G,eAAe,EAAE;MACtC,IAAI,CAACN,MAAM,CAAA,CAAY,CAAC;IACzB,CAAA,MAAM,IAAI,IAAI,CAACS,KAAK,CAAA,GAAe,CAAC,EAAE;MACrC,IAAI1X,IAAI,CAACra,IAAI,KAAK,OAAO,EAAE;QACzB,IAAI,CAAC+Y,KAAK,CAACjJ,MAAM,CAACvH,iBAAiB,EAAEwP,QAAQ,CAAC;MAChD;MACA,IAAI,CAACY,UAAU,CAACC,cAAc,CAAC,IAAI,CAACgB,KAAK,CAACrM,KAAK,EAAE,IAAI,CAACqM,KAAK,CAAC7B,QAAQ,CAAC;MACrEhY,IAAI,CAAC44B,QAAQ,GAAG,IAAI,CAAC7iB,gBAAgB,EAAE;IACzC,CAAC,MAAM;MACL/V,IAAI,CAAC44B,QAAQ,GAAG,IAAI,CAACxG,eAAe,CAAC,IAAI,CAAC;IAC5C;IAEA,IAAIvY,KAAK,CAACU,mBAAmB,EAAE;MAC5Bva,IAAI,CAAwCmZ,QAAQ,GAAGA,QAAQ;MAChE,OAAO,IAAI,CAAC/B,UAAU,CAACpX,IAAI,EAAE,0BAA0B,CAAC;IAC1D,CAAC,MAAM;MACL,OAAO,IAAI,CAACoX,UAAU,CAACpX,IAAI,EAAE,kBAAkB,CAAC;IAClD;EACF;EAGA+uE,SAASA,CAEPz0D,IAAkB,EAClBtC,QAAkB,EAClB2rB,OAAmC,EACnC9pB,KAA4B,EACd;IACd,MAAM7Z,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAAmBxf,QAAQ,CAAC;IACzDhY,IAAI,CAAC6R,MAAM,GAAGyI,IAAI;IAClB,IAAI,CAACkP,IAAI,CAAA,CAAE;IACXxpB,IAAI,CAACoZ,MAAM,GAAG,IAAI,CAAC61D,eAAe,EAAE;IACpCp1D,KAAK,CAACoqB,IAAI,GAAG,IAAI;IACjB,OAAO,IAAI,CAACP,eAAe,CACzB,IAAI,CAACtsB,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC,EACvCgY,QAAQ,EACR2rB,OACF,CAAC;EACH;EAMAqrC,+BAA+BA,CAE7B10D,IAAkB,EAClBtC,QAAkB,EAClB6B,KAA4B,EAC5BV,QAAiB,EACH;IACd,MAAMumD,yBAAyB,GAAG,IAAI,CAAC7lD,KAAK,CAACwhB,sBAAsB;IACnE,IAAInjB,mBAA4C,GAAG,IAAI;IAEvD,IAAI,CAAC2B,KAAK,CAACwhB,sBAAsB,GAAG,IAAI;IACxC,IAAI,CAAC7R,IAAI,CAAA,CAAE;IAEX,MAAMxpB,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAC3Bxf,QACF,CAAC;IACDhY,IAAI,CAACoZ,MAAM,GAAGkB,IAAI;IAClB,MAAM;MAAEw0D,eAAe;MAAEv0D;IAAqB,CAAA,GAAGV,KAAK;IAEtD,IAAIi1D,eAAe,EAAE;MACnB,IAAI,CAAChjB,eAAe,CAAC3gC,KAAK,CAAC2+B,kBAAkB,CAAE,CAAA,CAAC;MAChD5xC,mBAAmB,GAAG,IAAIk0C,gBAAgB,EAAE;IAC9C;IAEA,IAAI7xC,mBAAmB,EAAE;MACtBva,IAAI,CAAsCmZ,QAAQ,GAAGA,QAAQ;IAChE;IAEA,IAAIA,QAAQ,EAAE;MACZnZ,IAAI,CAACuZ,SAAS,GAAG,IAAI,CAACqqB,4BAA4B,EAAE;IACtD,CAAC,MAAM;MACL5jC,IAAI,CAACuZ,SAAS,GAAG,IAAI,CAACqqB,4BAA4B,CAChDtpB,IAAI,CAACra,IAAI,KAAK,OAAO,EACrBD,IAAI,EACJkY,mBACF,CAAC;IACH;IACA,IAAIw1D,YAGyB,GAAG,IAAI,CAACz0D,oBAAoB,CACvDjZ,IAAI,EACJua,mBACF,CAAC;IAED,IAAIu0D,eAAe,IAAI,IAAI,CAAC7sC,qBAAqB,CAAE,CAAA,IAAI,CAAC9oB,QAAQ,EAAE;MAEhEU,KAAK,CAACoqB,IAAI,GAAG,IAAI;MACjB,IAAI,CAACkoB,yBAAyB,CAACj0C,mBAAoB,CAAC;MACpD,IAAI,CAAC4zC,eAAe,CAACnC,iBAAiB,EAAE;MACxC,IAAI,CAACmC,eAAe,CAAC1gC,IAAI,EAAE;MAC3BsiD,YAAY,GAAG,IAAI,CAAC3rC,iCAAiC,CACnD,IAAI,CAACvK,WAAW,CAA4Bxf,QAAQ,CAAC,EACrD01D,YACF,CAAC;IACH,CAAC,MAAM;MACL,IAAIoB,eAAe,EAAE;QACnB,IAAI,CAAClkB,qBAAqB,CAAC1yC,mBAAmB,EAAE,IAAI,CAAC;QACrD,IAAI,CAAC4zC,eAAe,CAAC1gC,IAAI,EAAE;MAC7B;MACA,IAAI,CAAC3R,qBAAqB,CAACi0D,YAAY,CAAC;IAC1C;IAEA,IAAI,CAAC7zD,KAAK,CAACwhB,sBAAsB,GAAGqkC,yBAAyB;IAE7D,OAAOgO,YAAY;EACrB;EAEAj0D,qBAAqBA,CACnBzZ,IAAiD,EACjD8+B,mBAA6B,EAC7B;IACA,IAAI,CAACuuB,oBAAoB,CAACrtD,IAAI,CAACuZ,SAAS,EAAEulB,mBAAmB,CAAC;EAChE;EAIA8hC,6BAA6BA,CAE3BtmD,IAAkB,EAClBtC,QAAkB,EAClB6B,KAA4B,EACA;IAC5B,MAAM7Z,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAA6Bxf,QAAQ,CAAC;IACnEhY,IAAI,CAACkvE,GAAG,GAAG50D,IAAI;IACfta,IAAI,CAACmvE,KAAK,GAAG,IAAI,CAACxU,aAAa,CAAC,IAAI,CAAC;IACrC,IAAI9gD,KAAK,CAACU,mBAAmB,EAAE;MAC7B,IAAI,CAACvB,KAAK,CAACjJ,MAAM,CAACxI,0BAA0B,EAAEyQ,QAAQ,CAAC;IACzD;IACA,OAAO,IAAI,CAACZ,UAAU,CAACpX,IAAI,EAAE,0BAA0B,CAAC;EAC1D;EAEA0gE,oBAAoBA,CAACpmD,IAAkB,EAAW;IAChD,OACEA,IAAI,CAACra,IAAI,KAAK,YAAY,IAC1Bqa,IAAI,CAACrU,IAAI,KAAK,OAAO,IACrB,IAAI,CAAC4T,KAAK,CAACmB,aAAa,CAAEvd,KAAK,KAAK6c,IAAI,CAACzc,GAAG,IAC5C,CAAC,IAAI,CAACi8B,kBAAkB,CAAA,CAAE,IAE1Bxf,IAAI,CAACzc,GAAG,GAAGyc,IAAI,CAAC1c,KAAK,KAAK,CAAC,IAC3B,IAAI,CAACm/B,iBAAiB,CAACziB,IAAI,CAAC1c,KAAK,CAAC,KAAK,IAAI,CAACic,KAAK,CAACmlC,gBAAgB;EAEtE;EAEA/lC,oBAAoBA,CAClBjZ,IAAe,EACfmZ,QAAiB,EACd;IACH,IAAInZ,IAAI,CAACoZ,MAAM,CAACnZ,IAAI,KAAK,QAAQ,EAAE;MACjC,IAAID,IAAI,CAACuZ,SAAS,CAACU,MAAM,KAAK,CAAC,IAAIja,IAAI,CAACuZ,SAAS,CAACU,MAAM,GAAG,CAAC,EAAE;QAC5D,IAAI,CAACjB,KAAK,CAACjJ,MAAM,CAACzM,eAAe,EAAEtD,IAAI,CAAC;MAC1C,CAAC,MAAM;QACL,KAAK,MAAMgtD,GAAG,IAAIhtD,IAAI,CAACuZ,SAAS,EAAE;UAChC,IAAIyzC,GAAG,CAAC/sD,IAAI,KAAK,eAAe,EAAE;YAChC,IAAI,CAAC+Y,KAAK,CAACjJ,MAAM,CAACvM,wBAAwB,EAAEwpD,GAAG,CAAC;UAClD;QACF;MACF;IACF;IACA,OAAO,IAAI,CAAC51C,UAAU,CACpBpX,IAAI,EACJmZ,QAAQ,GAAG,wBAAwB,GAAG,gBACxC,CAAC;EACH;EAEAyqB,4BAA4BA,CAE1BwrC,gBAA0B,EAC1BC,YAAoC,EACpCn3D,mBAA6C,EAC7B;IAChB,MAAM41C,IAAoB,GAAG,EAAE;IAC/B,IAAI10B,KAAK,GAAG,IAAI;IAChB,MAAMk2C,6BAA6B,GAAG,IAAI,CAACz1D,KAAK,CAACimC,0BAA0B;IAC3E,IAAI,CAACjmC,KAAK,CAACimC,0BAA0B,GAAG,KAAK;IAE7C,OAAO,CAAC,IAAI,CAACluB,GAAG,CAAA,EAAU,CAAC,EAAE;MAC3B,IAAIwH,KAAK,EAAE;QACTA,KAAK,GAAG,KAAK;MACf,CAAC,MAAM;QACL,IAAI,CAAC7H,MAAM,CAAA,EAAS,CAAC;QACrB,IAAI,IAAI,CAACS,KAAK,CAAA,EAAU,CAAC,EAAE;UACzB,IAAIq9C,YAAY,EAAE;YAChB,IAAI,CAACE,2BAA2B,CAACF,YAAY,CAAC;UAChD;UACA,IAAI,CAAC7lD,IAAI,CAAA,CAAE;UACX;QACF;MACF;MAEAskC,IAAI,CAAC3wC,IAAI,CACP,IAAI,CAACqyD,iBAAiB,CAEpB,EAAA,EAAA,KAAK,EACLt3D,mBAAmB,EACnBk3D,gBACF,CACF,CAAC;IACH;IAEA,IAAI,CAACv1D,KAAK,CAACimC,0BAA0B,GAAGwvB,6BAA6B;IAErE,OAAOxhB,IAAI;EACb;EAEA7rB,qBAAqBA,CAAAA,EAAY;IAC/B,OAAO,IAAI,CAACjQ,KAAK,CAAS,EAAA,CAAC,IAAI,CAAC,IAAI,CAAC8H,kBAAkB,EAAE;EAC3D;EAEAiI,iCAAiCA,CAE/B/hC,IAAuC,EACvCgiC,IAAsB,EACK;IAAA,IAAAytC,WAAA;IAC3B,IAAI,CAAC7wB,iCAAiC,CAAC5c,IAAI,CAAC;IAC5C,IAAI,CAACzQ,MAAM,CAAA,EAAS,CAAC;IACrB,IAAI,CAAC8S,oBAAoB,CACvBrkC,IAAI,EACJgiC,IAAI,CAACzoB,SAAS,EACd,IAAI,GAAAk2D,WAAA,GACJztC,IAAI,CAAC9tB,KAAK,qBAAVu7D,WAAA,CAAY7yC,gBACd,CAAC;IAED,IAAIoF,IAAI,CAAC0b,aAAa,EAAE;MACtBD,gBAAgB,CAACz9C,IAAI,EAAEgiC,IAAI,CAAC0b,aAAa,CAAC;IAC5C;IAEA,IAAI1b,IAAI,CAAC5oB,MAAM,CAACikC,gBAAgB,EAAE;MAChCI,gBAAgB,CAACz9C,IAAI,EAAEgiC,IAAI,CAAC5oB,MAAM,CAACikC,gBAAgB,CAAC;IACtD;IACA,OAAOr9C,IAAI;EACb;EAIAivE,eAAeA,CAAAA,EAA6B;IAC1C,MAAMj3D,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IACpC,OAAO,IAAI,CAAC0rB,eAAe,CAAC,IAAI,CAAChQ,aAAa,CAAA,CAAE,EAAE1b,QAAQ,EAAE,IAAI,CAAC;EACnE;EAcA0b,aAAaA,CAEXxb,mBAA6C,EAC/B;IACd,IAAIlY,IAAI;IACR,IAAI2Z,UAAgC,GAAG,IAAI;IAE3C,MAAM;MAAE1Z;KAAM,GAAG,IAAI,CAAC4Z,KAAK;IAC3B,QAAQ5Z,IAAI;MACV,KAAA,EAAA;QACE,OAAO,IAAI,CAACyvE,UAAU,EAAE;MAE1B,KAAA,EAAA;QACE1vE,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAkD;QACvE,IAAI,CAAC0S,IAAI,CAAA,CAAE;QAEX,IAAI,IAAI,CAACwI,KAAK,CAAA,EAAO,CAAC,EAAE;UACtB,OAAO,IAAI,CAAC29C,kCAAkC,CAC5C3vE,IACF,CAAC;QACH;QAEA,IAAI,IAAI,CAACgyB,KAAK,CAAA,EAAU,CAAC,EAAE;UACzB,IAAI,IAAI,CAAC5f,WAAW,MAAsC,EAAE;YAC1D,OAAO,IAAI,CAACw9D,eAAe,CAAC5vE,IAAkC,CAAC;UACjE,CAAC,MAAM;YACL,OAAO,IAAI,CAACoX,UAAU,CAACpX,IAAI,EAAE,QAAQ,CAAC;UACxC;QACF,CAAC,MAAM;UACL,IAAI,CAACgZ,KAAK,CAACjJ,MAAM,CAAC7F,iBAAiB,EAAE,IAAI,CAAC2P,KAAK,CAACC,eAAgB,CAAC;UACjE,OAAO,IAAI,CAAC1C,UAAU,CAACpX,IAAI,EAAE,QAAQ,CAAC;QACxC;MAEF,KAAA,EAAA;QACEA,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAoB;QACzC,IAAI,CAAC0S,IAAI,CAAA,CAAE;QACX,OAAO,IAAI,CAACpS,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;MAEhD,KAAA,EAAA;QAAa;UACX,OAAO,IAAI,CAAC6vE,OAAO,CAAC,IAAI,CAAC/4D,SAAS,CAAE,CAAA,EAAE,KAAK,CAAC;QAC9C;MAEA,KAAA,EAAA;MACA,KAAA,EAAA;QAAqB;UACnB,IAAI,CAACqvC,UAAU,CAAA,CAAE;UACjB,OAAO,IAAI,CAAC9zC,kBAAkB,CAAC,IAAI,CAACwH,KAAK,CAACrM,KAAK,CAAC;QAClD;MAEA,KAAA,GAAA;QACE,OAAO,IAAI,CAAC6F,mBAAmB,CAAC,IAAI,CAACwG,KAAK,CAACrM,KAAK,CAAC;MAEnD,KAAA,GAAA;QACE,OAAO,IAAI,CAACoF,kBAAkB,CAAC,IAAI,CAACiH,KAAK,CAACrM,KAAK,CAAC;MAElD,KAAA,GAAA;QACE,OAAO,IAAI,CAAC4F,kBAAkB,CAAC,IAAI,CAACyG,KAAK,CAACrM,KAAK,CAAC;MAElD,KAAA,EAAA;QACE,OAAO,IAAI,CAAC8F,gBAAgB,EAAE;MAEhC,KAAA,EAAA;QACE,OAAO,IAAI,CAACC,mBAAmB,CAAC,IAAI,CAAC;MACvC,KAAA,EAAA;QACE,OAAO,IAAI,CAACA,mBAAmB,CAAC,KAAK,CAAC;MAExC,KAAA,EAAA;QAAgB;UACd,MAAMiwB,UAAU,GAAG,IAAI,CAAC3pB,KAAK,CAACmlC,gBAAgB,KAAK,IAAI,CAACnlC,KAAK,CAACjc,KAAK;UACnE,OAAO,IAAI,CAAC2lC,kCAAkC,CAACC,UAAU,CAAC;QAC5D;MAEA,KAAA,CAAA;QAAkB;UAChB,OAAO,IAAI,CAACxE,cAAc,IAEV,KAAK,EACnB9mB,mBACF,CAAC;QACH;MACA,KAAA,CAAA;QAAgB;UACd,OAAO,IAAI,CAACw1C,eAAe,CAAA,CAAA,EAET,KAAK,EACN,KAAK,EACpBx1C,mBACF,CAAC;QACH;MACA,KAAA,EAAA;QACE,OAAO,IAAI,CAAC43D,2BAA2B,EAAE;MAE3C,KAAA,EAAA;QACEn2D,UAAU,GAAG,IAAI,CAACo2D,eAAe,EAAE;MAErC,KAAA,EAAA;QACE,OAAO,IAAI,CAAC9Q,UAAU,CACpB,IAAI,CAACkF,mBAAmB,CACtBxqD,UAAU,EACV,IAAI,CAAC7C,SAAS,CAAA,CAChB,CAAC,EACD,KACF,CAAC;MAEH,KAAA,EAAA;QACE,OAAO,IAAI,CAACk5D,mBAAmB,EAAE;MAEnC,KAAA,EAAA;MACA,KAAA,EAAA;QACE,OAAO,IAAI,CAACrV,aAAa,CAAC,KAAK,CAAC;MAIlC,KAAA,EAAA;QAAqB;UACnB36D,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAoB;UACzC,IAAI,CAAC0S,IAAI,CAAA,CAAE;UACXxpB,IAAI,CAAC6R,MAAM,GAAG,IAAI;UAClB,MAAMuH,MAAM,GAAIpZ,IAAI,CAACoZ,MAAM,GAAG,IAAI,CAAC61D,eAAe,CAAA,CAAG;UACrD,IAAI71D,MAAM,CAACnZ,IAAI,KAAK,kBAAkB,EAAE;YACtC,OAAO,IAAI,CAACmX,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;UAChD,CAAC,MAAM;YACL,MAAM,IAAI,CAACgZ,KAAK,CAACjJ,MAAM,CAAChG,eAAe,EAAEqP,MAAM,CAAC;UAClD;QACF;MAEA,KAAA,GAAA;QAAqB;UAOnB,IAAI,CAACJ,KAAK,CAACjJ,MAAM,CAACnI,mBAAmB,EAAE,IAAI,CAACiS,KAAK,CAAC7B,QAAQ,EAAE;YAC1Dja,cAAc,EAAE,IAAI,CAAC8b,KAAK,CAACrM;UAC7B,CAAC,CAAC;UACF,OAAO,IAAI,CAACuI,gBAAgB,EAAE;QAChC;MAEA,KAAA,EAAA;QAAsB;UACpB,OAAO,IAAI,CAACk6D,iCAAiC,CAAA,EAAA,EAAY,GAAG,CAAC;QAC/D;MAEA,KAAA,EAAA;QAAmB;UACjB,OAAO,IAAI,CAACA,iCAAiC,CAAA,EAAA,EAAgB,GAAG,CAAC;QACnE;MAEA,KAAA,EAAA;MACA,KAAA,EAAA;QAAkB;UAChB,OAAO,IAAI,CAACC,mBAAmB,CAAC,MAAM,CAAC;QACzC;MAEA,KAAA,EAAA;MACA,KAAA,EAAA;MACA,KAAA,EAAA;QAAc;UACZ,MAAMC,YAAY,GAAG,IAAI,CAACn6D,eAAe,CACvC,kBAAkB,EAClB,UACF,CAAC;UAED,IAAIm6D,YAAY,EAAE;YAChB,OAAO,IAAI,CAACD,mBAAmB,CAACC,YAAY,CAAC;UAC/C;UACA,MAAM,IAAI,CAACnrE,UAAU,EAAE;QACzB;MAEA,KAAA,EAAA;QAAY;UACV,MAAMwgD,WAAW,GAAG,IAAI,CAAChnB,KAAK,CAACinB,WAAW,CAAC,IAAI,CAACle,cAAc,CAAA,CAAE,CAAE;UAClE,IACElf,iBAAiB,CAACm9B,WAAW,CAAC,IAC9BA,WAAW,OAA0B,EACrC;YAGA,MAAM,IAAI,CAACmC,eAAe,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;UAC3D;UACA,MAAM,IAAI,CAAC3iD,UAAU,EAAE;QACzB;MAEA;QAEI,IAAI/E,IAAI,QAAe,EAAE;UACvB,OAAO,IAAI,CAACgT,mBAAmB,CAAC,IAAI,CAAC4G,KAAK,CAACrM,KAAK,CAAC;QAClD,CAAA,MAAM,IAAIvN,IAAI,MAAmB,IAAIA,IAAI,MAAoB,EAAE;UAC9D,OAAO,IAAI,CAAC++B,cAAc,CACxB,IAAI,CAACnlB,KAAK,CAAC5Z,IAAI,KAAA,CAAmB,GAA+B,CAAA,GAAA,CAAA,EACnD,IAChB,CAAC;QACF,CAAA,MAAM,IAAIA,IAAI,MAAiB,IAAIA,IAAI,MAAkB,EAAE;UAC1D,OAAO,IAAI,CAACytD,eAAe,CACzB,IAAI,CAAC7zC,KAAK,CAAC5Z,IAAI,MAAiB,GAA2B,CAAA,GAAA,CAAA,EAC3C,KAAK,EACN,IACjB,CAAC;QACH;QAGF,IAAIqmB,iBAAiB,CAACrmB,IAAI,CAAC,EAAE;UAC3B,IACE,IAAI,CAACmzB,YAAY,CAAA,GAAW,CAAC,IAC7B,IAAI,CAAC8wB,uBAAuB,CAAE,CAAA,KAAA,GAA6B,EAC3D;YACA,OAAO,IAAI,CAACksB,qBAAqB,EAAE;UACrC;UACA,MAAM5sC,UAAU,GAAG,IAAI,CAAC3pB,KAAK,CAACmlC,gBAAgB,KAAK,IAAI,CAACnlC,KAAK,CAACjc,KAAK;UACnE,MAAMq9B,WAAW,GAAG,IAAI,CAACphB,KAAK,CAACohB,WAAW;UAC1C,MAAM9kB,EAAE,GAAG,IAAI,CAACic,eAAe,EAAE;UAEjC,IACE,CAAC6I,WAAW,IACZ9kB,EAAE,CAAClQ,IAAI,KAAK,OAAO,IACnB,CAAC,IAAI,CAAC6zB,kBAAkB,EAAE,EAC1B;YACA,MAAM;cAAE75B;aAAM,GAAG,IAAI,CAAC4Z,KAAK;YAC3B,IAAI5Z,IAAI,OAAiB,EAAE;cACzB,IAAI,CAAC2+C,iCAAiC,CAACzoC,EAAE,CAAC;cAC1C,IAAI,CAACqT,IAAI,CAAA,CAAE;cACX,OAAO,IAAI,CAAC6mD,4BAA4B,CACtC,IAAI,CAAC18D,eAAe,CAACwC,EAAE,CACzB,CAAC;YACH,CAAC,MAAM,IAAImQ,iBAAiB,CAACrmB,IAAI,CAAC,EAAE;cAIlC,IAAI,IAAI,CAACs7B,iBAAiB,CAAE,CAAA,OAAuB,EAAE;gBAInD,OAAO,IAAI,CAAC+0C,4BAA4B,CACtC,IAAI,CAAC38D,eAAe,CAACwC,EAAE,CACzB,CAAC;cACH,CAAC,MAAM;gBAGL,OAAOA,EAAE;cACX;YACF,CAAC,MAAM,IAAIlW,IAAI,KAAA,EAAW,EAAE;cAC1B,IAAI,CAAC2+C,iCAAiC,CAACzoC,EAAE,CAAC;cAC1C,OAAO,IAAI,CAAC05D,OAAO,CAAC,IAAI,CAACl8D,eAAe,CAACwC,EAAE,CAAC,EAAE,IAAI,CAAC;YACrD;UACF;UAEA,IACEqtB,UAAU,IACV,IAAI,CAACxR,KAAK,CAAS,EAAA,CAAC,IACpB,CAAC,IAAI,CAAC8H,kBAAkB,EAAE,EAC1B;YACA,IAAI,CAACtQ,IAAI,CAAA,CAAE;YACX,OAAO,IAAI,CAAC6a,oBAAoB,CAC9B,IAAI,CAAC1wB,eAAe,CAACwC,EAAE,CAAC,EACxB,CAACA,EAAE,CAAC,EACJ,KACF,CAAC;UACH;UAEA,OAAOA,EAAE;QACX,CAAC,MAAM;UACL,MAAM,IAAI,CAACnR,UAAU,EAAE;QACzB;IACJ;EACF;EAYAirE,iCAAiCA,CAC/BM,cAAyB,EACzBC,eAAuB,EACT;IACd,MAAML,YAAY,GAAG,IAAI,CAACn6D,eAAe,CAAC,kBAAkB,EAAE,UAAU,CAAC;IAEzE,IAAIm6D,YAAY,EAAE;MAKhB,IAAI,CAACt2D,KAAK,CAAC5Z,IAAI,GAAGswE,cAAc;MAChC,IAAI,CAAC12D,KAAK,CAACrM,KAAK,GAAGgjE,eAAe;MAGlC,IAAI,CAAC32D,KAAK,CAACjL,GAAG,EAAE;MAChB,IAAI,CAACiL,KAAK,CAAChc,GAAG,EAAE;MAGhB,IAAI,CAACgc,KAAK,CAACpG,MAAM,GAAGzV,8BAA8B,CAAC,IAAI,CAAC6b,KAAK,CAACpG,MAAM,EAAE,CAAC,CAAC,CAAC;MAEzE,OAAO,IAAI,CAACy8D,mBAAmB,CAACC,YAAY,CAAC;IAC/C;IACA,MAAM,IAAI,CAACnrE,UAAU,EAAE;EACzB;EAQAkrE,mBAAmBA,CAACC,YAAoB,EAAgB;IACtD,MAAMnwE,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAoB;IAC/C,MAAMkB,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IACpC,MAAM6oD,SAAS,GAAG,IAAI,CAAChnD,KAAK,CAAC5Z,IAAI;IAGjC,IAAI,CAACupB,IAAI,CAAA,CAAE;IAKX,OAAO,IAAI,CAACinD,oBAAoB,CAACzwE,IAAI,EAAEgY,QAAQ,EAAEm4D,YAAY,EAAEtP,SAAS,CAAC;EAC3E;EAeA4P,oBAAoBA,CAGlBzwE,IAAe,EACfgY,QAAkB,EAClBm4D,YAAoB,EACpBtP,SAAoB,EACjB;IACH,IACE,IAAI,CAAC6P,+BAA+B,CAACP,YAAY,EAAEn4D,QAAQ,EAAE6oD,SAAS,CAAC,EACvE;MAIA,IAAoCsP,YAAY,KAAK,MAAM,EAAE;QAC3D,IAAI,CAAC,IAAI,CAACQ,uCAAuC,EAAE,EAAE;UACnD,IAAI,CAAC33D,KAAK,CAACjJ,MAAM,CAACpD,gBAAgB,EAAEqL,QAAQ,CAAC;QAC/C;QAIA,IAAI,CAAC44D,sBAAsB,CAAA,CAAE;QAE7B,OAAO,IAAI,CAACx5D,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;MAChD,CAAC,MAAM;QAGL,IAAI,CAAC,IAAI,CAAC2wE,uCAAuC,EAAE,EAAE;UACnD,IAAI,CAAC33D,KAAK,CAACjJ,MAAM,CAAC3C,sBAAsB,EAAG4K,QAAQ,CAAC;QACtD;QACA,IAAI,CAAC44D,sBAAsB,CAAA,CAAE;QAC7B,OAAO,IAAI,CAACx5D,UAAU,CAACpX,IAAI,EAAE,+BAA+B,CAAC;MAC/D;IACF,CAAC,MAAM;MAEL,MAAM,IAAI,CAACgZ,KAAK,CAACjJ,MAAM,CAACnD,0BAA0B,EAAEoL,QAAQ,EAAE;QAC5DnL,KAAK,EAAEwa,cAAc,CAACw5C,SAAS;MACjC,CAAC,CAAC;IACJ;EACF;EAWA6P,+BAA+BA,CAC7BP,YAAoB,EACpBn4D,QAAkB,EAClB6oD,SAAoB,EACX;IACT,QAAQsP,YAAY;MAClB,KAAK,MAAM;QAAE;UACX,OAAO,IAAI,CAACt4D,SAAS,CAAC,CACpB,kBAAkB,EAClB;YAEE0tC,UAAU,EAAEl+B,cAAc,CAACw5C,SAAS;UACrC,CAAA,CACF,CAAC;QACJ;MACA,KAAK,OAAO;QACV,OAAOA,SAAS,KAAY,EAAA;MAC9B;QACE,MAAM,IAAI,CAAC7nD,KAAK,CAACjJ,MAAM,CAACrD,0BAA0B,EAAEsL,QAAQ,CAAC;IACjE;EACF;EAGAs4D,4BAA4BA,CAE1BtwE,IAAuC,EACZ;IAG3B,IAAI,CAAC4rD,SAAS,CAACzgC,KAAK,CAACoxB,aAAa,CAAC,IAAI,EAAE,IAAI,CAACqP,SAAS,CAACxP,QAAQ,CAAC,CAAC;IAClE,MAAMlnC,MAAM,GAAG,CAAC,IAAI,CAACkd,eAAe,CAAE,CAAA,CAAC;IACvC,IAAI,CAACw5B,SAAS,CAACxgC,IAAI,EAAE;IACrB,IAAI,IAAI,CAACi/B,qBAAqB,EAAE,EAAE;MAChC,IAAI,CAACrxC,KAAK,CAACjJ,MAAM,CAACtK,yBAAyB,EAAE,IAAI,CAACoU,KAAK,CAACykB,WAAW,CAAA,CAAE,CAAC;IACxE;IACA,IAAI,CAAC/M,MAAM,CAAA,EAAS,CAAC;IAErB,OAAO,IAAI,CAAC8S,oBAAoB,CAACrkC,IAAI,EAAEkV,MAAM,EAAE,IAAI,CAAC;EACtD;EAIA26D,OAAOA,CAEL7vE,IAA4B,EAC5B6U,OAAgB,EACA;IAChB,IAAI,CAACmwC,YAAY,CAAC,eAAe,CAAC;IAClC,IAAInwC,OAAO,EAAE;MACX,IAAI,CAACmwC,YAAY,CAAC,oBAAoB,CAAC;IACzC;IACAhlD,IAAI,CAAC8iC,KAAK,GAAGjuB,OAAO;IACpB,IAAI,CAAC2U,IAAI,CAAA,CAAE;IACX,MAAM8hC,SAAS,GAAG,IAAI,CAACzxC,KAAK,CAACulC,MAAM;IACnC,IAAI,CAACvlC,KAAK,CAACulC,MAAM,GAAG,EAAE;IACtB,IAAIvqC,OAAO,EAAE;MAGX,IAAI,CAAC+2C,SAAS,CAACzgC,KAAK,EAAsB,CAAC;MAC3CnrB,IAAI,CAAC6V,IAAI,GAAG,IAAI,CAACi0D,UAAU,EAAE;MAC7B,IAAI,CAACle,SAAS,CAACxgC,IAAI,EAAE;IACvB,CAAC,MAAM;MACLprB,IAAI,CAAC6V,IAAI,GAAG,IAAI,CAACi0D,UAAU,EAAE;IAC/B;IAEA,IAAI,CAACjwD,KAAK,CAACulC,MAAM,GAAGkM,SAAS;IAC7B,OAAO,IAAI,CAACl0C,UAAU,CAACpX,IAAI,EAAE,cAAc,CAAC;EAC9C;EAGA0vE,UAAUA,CAAAA,EAAY;IACpB,MAAM1vE,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAW;IACtC,IAAI,CAAC0S,IAAI,CAAA,CAAE;IACX,IAAI,IAAI,CAACwI,KAAK,CAAA,EAAU,CAAC,IAAI,CAAC,IAAI,CAAC3G,KAAK,CAAC1U,gBAAgB,EAAE;MAIvD,IAAI,EAAE,IAAI,CAACvE,WAAW,KAAsC,CAAC,EAAE;QAC7D,IAAI,CAAC4G,KAAK,CAACjJ,MAAM,CAACxH,eAAe,EAAEvI,IAAI,CAAC;MAC1C;IAEH,CAAA,MAAM,IAAI,CAAC,IAAI,CAACqrB,KAAK,CAACd,UAAU,EAAE;MAI/B,IAAI,EAAE,IAAI,CAACnY,WAAW,KAAsC,CAAC,EAAE;QAC7D,IAAI,CAAC4G,KAAK,CAACjJ,MAAM,CAACtG,eAAe,EAAEzJ,IAAI,CAAC;MAC1C;IAEJ;IAEA,IACE,CAAC,IAAI,CAACgyB,KAAK,GAAU,CAAC,IACtB,CAAC,IAAI,CAACA,KAAK,CAAY,CAAA,CAAC,IACxB,CAAC,IAAI,CAACA,KAAK,CAAA,EAAO,CAAC,EACnB;MACA,IAAI,CAAChZ,KAAK,CAACjJ,MAAM,CAACvF,gBAAgB,EAAExK,IAAI,CAAC;IAC3C;IAEA,OAAO,IAAI,CAACoX,UAAU,CAACpX,IAAI,EAAE,OAAO,CAAC;EACvC;EAEA+V,gBAAgBA,CAAAA,EAAkB;IAChC,MAAM/V,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAiB;IAC5C,MAAMX,EAAE,GAAG,IAAI,CAACqhB,WAAW,CAGzBx5B,8BAA8B,CAAC,IAAI,CAAC6b,KAAK,CAAC7B,QAAQ,EAAE,CAAC,CACvD,CAAC;IACD,MAAM/R,IAAI,GAAG,IAAI,CAAC4T,KAAK,CAACrM,KAAK;IAC7B,IAAI,CAACgc,IAAI,CAAA,CAAE;IACXxpB,IAAI,CAACmW,EAAE,GAAG,IAAI,CAACwjB,gBAAgB,CAACxjB,EAAE,EAAElQ,IAAI,CAAC;IACzC,OAAO,IAAI,CAACmR,UAAU,CAACpX,IAAI,EAAE,aAAa,CAAC;EAC7C;EAEA8vE,2BAA2BA,CAAAA,EAEc;IACvC,MAAM9vE,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAyC;IAOpE,IAAI,CAAC0S,IAAI,CAAA,CAAE;IAEX,IAAI,IAAI,CAACoiC,SAAS,CAACxP,QAAQ,IAAI,IAAI,CAACpqB,KAAK,CAAO,EAAA,CAAC,EAAE;MACjD,MAAM6+C,IAAI,GAAG,IAAI,CAACl3C,gBAAgB,CAChC,IAAI,CAAChmB,eAAe,CAAe3T,IAAI,CAAC,EACxC,UACF,CAAC;MACD,IAAI,CAACwpB,IAAI,CAAA,CAAE;MAEX,IAAI,IAAI,CAACwI,KAAK,CAAA,GAAS,CAAC,EAAE;QACxB,IAAI,CAACgzB,YAAY,CAAC,cAAc,CAAC;MAClC,CAAA,MAAM,IAAI,CAAC,IAAI,CAACntC,SAAS,CAAC,cAAc,CAAC,EAAE;QAE1C,IAAI,CAAC7S,UAAU,CAAA,CAAE;MACnB;MACA,OAAO,IAAI,CAAC8rE,iBAAiB,CAC3B9wE,IAAI,EACJ6wE,IAAI,EACJ,MACF,CAAC;IACH;IACA,OAAO,IAAI,CAACE,aAAa,CAAC/wE,IAAoC,CAAC;EACjE;EAEA8wE,iBAAiBA,CACf9wE,IAA4B,EAC5B6wE,IAAkB,EAClBlhB,YAAoB,EACJ;IAChB3vD,IAAI,CAAC6wE,IAAI,GAAGA,IAAI;IAEhB,MAAM51C,WAAW,GAAG,IAAI,CAACphB,KAAK,CAACohB,WAAW;IAE1Cj7B,IAAI,CAAC44B,QAAQ,GAAG,IAAI,CAACxG,eAAe,CAAC,IAAI,CAAC;IAE1C,IAAIpyB,IAAI,CAAC44B,QAAQ,CAAC3yB,IAAI,KAAK0pD,YAAY,IAAI10B,WAAW,EAAE;MACtD,IAAI,CAACjiB,KAAK,CAACjJ,MAAM,CAAC5F,uBAAuB,EAAEnK,IAAI,CAAC44B,QAAQ,EAAE;QACxDxuB,MAAM,EAAEymE,IAAI,CAAC5qE,IAAI;QACjBoE,qBAAqB,EAAEslD;MACzB,CAAC,CAAC;IACJ;IAEA,OAAO,IAAI,CAACv4C,UAAU,CAACpX,IAAI,EAAE,cAAc,CAAC;EAC9C;EAIA2vE,kCAAkCA,CAEhC3vE,IAAiD,EACZ;IACrC,IAAI,CAACwpB,IAAI,CAAA,CAAE;IAEX,IAAI,IAAI,CAAC4J,YAAY,CAAW,GAAA,CAAC,IAAI,IAAI,CAACA,YAAY,CAAU,EAAA,CAAC,EAAE;MACjE,MAAM49C,QAAQ,GAAG,IAAI,CAAC59C,YAAY,IAAW,CAAC;MAE9C,IAAI,CAAC4xB,YAAY,CACfgsB,QAAQ,GAAG,oBAAoB,GAAG,0BACpC,CAAC;MACD,IAAI,CAACxnD,IAAI,CAAA,CAAE;MACVxpB,IAAI,CAAgC+gC,KAAK,GAAGiwC,QAAQ,GACjD,QAAQ,GACR,OAAO;MACX,OAAO,IAAI,CAACpB,eAAe,CAAC5vE,IAAkC,CAAC;IACjE,CAAC,MAAM;MACL,MAAMmW,EAAE,GAAG,IAAI,CAAC86D,kBAAkB,CAChC,IAAI,CAACt9D,eAAe,CAAe3T,IAAI,CAAC,EACxC,QAAQ,EACR,IAAI,CAAC6Z,KAAK,CAACC,eACb,CAAC;MACD,IAAI,IAAI,CAACsZ,YAAY,CAAA,GAAS,CAAC,EAAE;QAC/B,IAAI,CAAC,IAAI,CAACpK,QAAQ,EAAE;UAClB,IAAI,CAAChQ,KAAK,CAACjJ,MAAM,CAAC1R,uBAAuB,EAAE8X,EAAE,CAAC;QAChD;QACA,IAAI,CAACsmC,iBAAiB,GAAG,IAAI;MAC/B;MACA,OAAO,IAAI,CAACq0B,iBAAiB,CAAC9wE,IAAI,EAA4BmW,EAAE,EAAE,MAAM,CAAC;IAC3E;EACF;EAEAujB,kBAAkBA,CAChBlsB,KAAU,EACVvN,IAAe,EACfD,IAAS,EACN;IACH,IAAI,CAACiqD,QAAQ,CAACjqD,IAAI,EAAE,UAAU,EAAEwN,KAAK,CAAC;IACtC,IAAI,CAACy8C,QAAQ,CACXjqD,IAAI,EACJ,KAAK,EACL,IAAI,CAACw+B,KAAK,CAAC4G,KAAK,CAAC,IAAI,CAACrI,iBAAiB,CAAC/8B,IAAI,CAACpC,KAAK,CAAC,EAAE,IAAI,CAACic,KAAK,CAAChc,GAAG,CACrE,CAAC;IACDmC,IAAI,CAACwN,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACgc,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACpS,UAAU,CAAIpX,IAAI,EAAEC,IAAI,CAAC;EACvC;EAEAkT,YAAYA,CAAmB3F,KAAU,EAAEvN,IAAe,EAAK;IAC7D,MAAMD,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAE;IAC7B,OAAO,IAAI,CAAC4iB,kBAAkB,CAAClsB,KAAK,EAAEvN,IAAI,EAAED,IAAI,CAAC;EACnD;EAEAoT,kBAAkBA,CAAC5F,KAAU,EAAE;IAC7B,OAAO,IAAI,CAAC2F,YAAY,CAAkB3F,KAAK,EAAE,eAAe,CAAC;EACnE;EAEA6F,mBAAmBA,CAAC7F,KAAU,EAAE;IAC9B,OAAO,IAAI,CAAC2F,YAAY,CAAmB3F,KAAK,EAAE,gBAAgB,CAAC;EACrE;EAEAoF,kBAAkBA,CAACpF,KAAU,EAAE;IAc3B,OAAO,IAAI,CAAC2F,YAAY,CAAkB3F,KAAK,EAAE,eAAe,CAAC;EAErE;EAGAyF,mBAAmBA,CAACzF,KAAU,EAAE;IAC9B,OAAO,IAAI,CAAC2F,YAAY,CAAmB3F,KAAK,EAAE,gBAAgB,CAAC;EACrE;EAEA6E,kBAAkBA,CAAC7E,KAIlB,EAAE;IACD,MAAMxN,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAmB;IAC9C,IAAI,CAACmzC,QAAQ,CACXjqD,IAAI,EACJ,KAAK,EACL,IAAI,CAACw+B,KAAK,CAAC4G,KAAK,CAAC,IAAI,CAACrI,iBAAiB,CAAC/8B,IAAI,CAACpC,KAAK,CAAC,EAAE,IAAI,CAACic,KAAK,CAAChc,GAAG,CACrE,CAAC;IACDmC,IAAI,CAACsS,OAAO,GAAG9E,KAAK,CAAC8E,OAAO;IAC5BtS,IAAI,CAACuS,KAAK,GAAG/E,KAAK,CAAC+E,KAAK;IACxB,IAAI,CAACiX,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACpS,UAAU,CAACpX,IAAI,EAAE,eAAe,CAAC;EAC/C;EAEAuT,mBAAmBA,CAAC/F,KAAc,EAAE;IAClC,MAAMxN,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAoB;IAC/C9W,IAAI,CAACwN,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACgc,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACpS,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;EAChD;EAEAsT,gBAAgBA,CAAAA,EAAG;IACjB,MAAMtT,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAiB;IAC5C,IAAI,CAAC0S,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACpS,UAAU,CAACpX,IAAI,EAAE,aAAa,CAAC;EAC7C;EAGAujC,kCAAkCA,CAEhCC,UAAmB,EACL;IACd,MAAMxrB,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IAEpC,IAAI8Y,GAAG;IACP,IAAI,CAACtH,IAAI,CAAA,CAAE;IACX,IAAI,CAACsiC,eAAe,CAAC3gC,KAAK,CAAC0+B,iBAAiB,CAAE,CAAA,CAAC;IAE/C,MAAM6V,yBAAyB,GAAG,IAAI,CAAC7lD,KAAK,CAACwhB,sBAAsB;IACnE,MAAMi0C,6BAA6B,GAAG,IAAI,CAACz1D,KAAK,CAACimC,0BAA0B;IAC3E,IAAI,CAACjmC,KAAK,CAACwhB,sBAAsB,GAAG,IAAI;IACxC,IAAI,CAACxhB,KAAK,CAACimC,0BAA0B,GAAG,KAAK;IAE7C,MAAMoxB,aAAa,GAAG,IAAI,CAACr3D,KAAK,CAAC7B,QAAQ;IACzC,MAAM4mB,QAKH,GAAG,EAAE;IACR,MAAM1mB,mBAAmB,GAAG,IAAIk0C,gBAAgB,EAAE;IAClD,IAAIhzB,KAAK,GAAG,IAAI;IAChB,IAAI+3C,cAAc;IAClB,IAAIC,qBAAqB;IAEzB,OAAO,CAAC,IAAI,CAACp/C,KAAK,CAAA,EAAU,CAAC,EAAE;MAC7B,IAAIoH,KAAK,EAAE;QACTA,KAAK,GAAG,KAAK;MACf,CAAC,MAAM;QACL,IAAI,CAAC7H,MAAM,CAETrZ,EAAAA,EAAAA,mBAAmB,CAAC+yC,qBAAqB,KAAK,IAAI,GAC9C,IAAI,GACJ/yC,mBAAmB,CAAC+yC,qBAC1B,CAAC;QACD,IAAI,IAAI,CAACj5B,KAAK,CAAA,EAAU,CAAC,EAAE;UACzBo/C,qBAAqB,GAAG,IAAI,CAACv3D,KAAK,CAAC7B,QAAQ;UAC3C;QACF;MACF;MAEA,IAAI,IAAI,CAACga,KAAK,CAAA,EAAY,CAAC,EAAE;QAC3B,MAAMq/C,kBAAkB,GAAG,IAAI,CAACx3D,KAAK,CAAC7B,QAAQ;QAC9Cm5D,cAAc,GAAG,IAAI,CAACt3D,KAAK,CAAC7B,QAAQ;QACpC4mB,QAAQ,CAACzhB,IAAI,CACX,IAAI,CAAC6f,cAAc,CAAC,IAAI,CAACuwB,gBAAgB,CAAE,CAAA,EAAE8jB,kBAAkB,CACjE,CAAC;QAED,IAAI,CAAC,IAAI,CAACtjB,mBAAmB,CAAA,EAA2B,CAAC,EAAE;UACzD;QACF;MACF,CAAC,MAAM;QACLnvB,QAAQ,CAACzhB,IAAI,CACX,IAAI,CAACm0D,oCAAoC,CAEvCp5D,EAAAA,EAAAA,mBAAmB,EACnB,IAAI,CAAC8kB,cACP,CACF,CAAC;MACH;IACF;IAEA,MAAMu0C,WAAW,GAAG,IAAI,CAAC13D,KAAK,CAACmB,aAAc;IAC7C,IAAI,CAACuW,MAAM,CAAA,EAAU,CAAC;IAEtB,IAAI,CAAC1X,KAAK,CAACwhB,sBAAsB,GAAGqkC,yBAAyB;IAC7D,IAAI,CAAC7lD,KAAK,CAACimC,0BAA0B,GAAGwvB,6BAA6B;IAErE,IAAIkC,SAA+D,GACjE,IAAI,CAACh6C,WAAW,CAA4Bxf,QAAQ,CAAC;IACvD,IACEwrB,UAAU,IACV,IAAI,CAACN,gBAAgB,CAACtE,QAAQ,CAAC,KAC9B4yC,SAAS,GAAG,IAAI,CAACvuC,UAAU,CAACuuC,SAAS,CAAC,CAAC,EACxC;MACA,IAAI,CAACrlB,yBAAyB,CAACj0C,mBAAmB,CAAC;MACnD,IAAI,CAAC4zC,eAAe,CAACnC,iBAAiB,EAAE;MACxC,IAAI,CAACmC,eAAe,CAAC1gC,IAAI,EAAE;MAC3B,IAAI,CAACiZ,oBAAoB,CAACmtC,SAAS,EAAE5yC,QAAQ,EAAE,KAAK,CAAC;MAErD,OAAO4yC,SAAS;IAClB;IACA,IAAI,CAAC1lB,eAAe,CAAC1gC,IAAI,EAAE;IAE3B,IAAI,CAACwT,QAAQ,CAAC3kB,MAAM,EAAE;MACpB,IAAI,CAACjV,UAAU,CAAC,IAAI,CAAC6U,KAAK,CAACC,eAAe,CAAC;IAC7C;IACA,IAAIs3D,qBAAqB,EAAE,IAAI,CAACpsE,UAAU,CAACosE,qBAAqB,CAAC;IACjE,IAAID,cAAc,EAAE,IAAI,CAACnsE,UAAU,CAACmsE,cAAc,CAAC;IACnD,IAAI,CAACvmB,qBAAqB,CAAC1yC,mBAAmB,EAAE,IAAI,CAAC;IAErD,IAAI,CAACm1C,oBAAoB,CAACzuB,QAAQ,EAA4B,IAAI,CAAC;IACnE,IAAIA,QAAQ,CAAC3kB,MAAM,GAAG,CAAC,EAAE;MACvB6W,GAAG,GAAG,IAAI,CAAC0G,WAAW,CAAuB05C,aAAa,CAAC;MAC3DpgD,GAAG,CAAC83C,WAAW,GAAGhqC,QAA0B;MAE5C,IAAI,CAACxnB,UAAU,CAAC0Z,GAAG,EAAE,oBAAoB,CAAC;MAC1C,IAAI,CAAC/V,gBAAgB,CAAC+V,GAAG,EAAEygD,WAAW,CAAC;IACzC,CAAC,MAAM;MACLzgD,GAAG,GAAG8N,QAAQ,CAAC,CAAC,CAAC;IACnB;IAEA,OAAO,IAAI,CAAC6yC,eAAe,CACzBz5D,QAAQ,EAER8Y,GACF,CAAC;EACH;EAEA2gD,eAAeA,CAACz5D,QAAkB,EAAEpE,UAAwB,EAAgB;IAC1E,IAAI,EAAE,IAAI,CAACxB,WAAW,OAA6C,CAAC,EAAE;MACpE,IAAI,CAAC63C,QAAQ,CAACr2C,UAAU,EAAE,eAAe,EAAE,IAAI,CAAC;MAChD,IAAI,CAACq2C,QAAQ,CAACr2C,UAAU,EAAE,YAAY,EAAEoE,QAAQ,CAACva,KAAK,CAAC;MAEvD,IAAI,CAACohD,uBAAuB,CAC1BjrC,UAAU,EACVoE,QAAQ,CAACva,KAAK,EACd,IAAI,CAACoc,KAAK,CAACmB,aAAa,CAAEvd,KAC5B,CAAC;MAED,OAAOmW,UAAU;IACnB;IAEA,MAAM89D,eAAe,GACnB,IAAI,CAACl6C,WAAW,CAA4Bxf,QAAQ,CAAC;IACvD05D,eAAe,CAAC99D,UAAU,GAAGA,UAAU;IACvC,OAAO,IAAI,CAACwD,UAAU,CAACs6D,eAAe,EAAE,yBAAyB,CAAC;EACpE;EAGAxuC,gBAAgBA,CAAChuB,MAAgB,EAAW;IAC1C,OAAO,CAAC,IAAI,CAAC4kB,kBAAkB,EAAE;EACnC;EAEAmJ,UAAUA,CACRjjC,IAAuC,EACe;IACtD,IAAI,IAAI,CAAC4xB,GAAG,CAAA,EAAS,CAAC,EAAE;MACtB,OAAO5xB,IAAI;IACb;EACF;EAEAg9B,cAAcA,CACZh9B,IAAO,EAEPgY,QAAkB,EACiC;IACnD,OAAOhY,IAAI;EACb;EAEAgwE,mBAAmBA,CAAAA,EAAiD;IAClE,MAAMhwE,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAoC;IAC/D,IAAI,CAAC0S,IAAI,CAAA,CAAE;IACX,IAAI,IAAI,CAACwI,KAAK,CAAA,EAAO,CAAC,EAAE;MAEtB,MAAM6+C,IAAI,GAAG,IAAI,CAACl3C,gBAAgB,CAChC,IAAI,CAAChmB,eAAe,CAAe3T,IAAI,CAAC,EACxC,KACF,CAAC;MACD,IAAI,CAACwpB,IAAI,CAAA,CAAE;MACX,MAAMmoD,QAAQ,GAAG,IAAI,CAACb,iBAAiB,CACrC9wE,IAAI,EACJ6wE,IAAI,EACJ,QACF,CAAC;MAED,IAAI,CAAC,IAAI,CAACxlD,KAAK,CAACZ,cAAc,EAAE;QAC9B,IAAI,CAACzR,KAAK,CAACjJ,MAAM,CAAC1G,mBAAmB,EAAEsoE,QAAQ,CAAC;MAClD;MAEA,OAAOA,QAAQ;IACjB;IAEA,OAAO,IAAI,CAACC,QAAQ,CAAC5xE,IAA+B,CAAC;EACvD;EAQA4xE,QAAQA,CAAe5xE,IAA6B,EAAmB;IACrE,IAAI,CAACmkC,cAAc,CAACnkC,IAAI,CAAC;IAEzB,IAAI,IAAI,CAAC4xB,GAAG,CAAA,EAAU,CAAC,EAAE;MACvB,MAAMra,IAAI,GAAG,IAAI,CAACs6D,aAAa,GAAU,CAAC;MAC1C,IAAI,CAAChzC,gBAAgB,CAACtnB,IAAI,CAAC;MAE3BvX,IAAI,CAACuZ,SAAS,GAAGhC,IAAsB;IACzC,CAAC,MAAM;MACLvX,IAAI,CAACuZ,SAAS,GAAG,EAAE;IACrB;IAEA,OAAO,IAAI,CAACnC,UAAU,CAACpX,IAAI,EAAE,eAAe,CAAC;EAC/C;EAEAmkC,cAAcA,CAAenkC,IAA6B,EAAQ;IAChE,MAAM4kE,QAAQ,GAAG,IAAI,CAAC5yC,KAAK,GAAW,CAAC;IACvC,MAAM5Y,MAAM,GAAG,IAAI,CAAC61D,eAAe,EAAE;IACrCjvE,IAAI,CAACoZ,MAAM,GAAGA,MAAM;IACpB,IACEwrD,QAAQ,KACPxrD,MAAM,CAACnZ,IAAI,KAAK,QAAQ,IAAImZ,MAAM,CAACnZ,IAAI,KAAK,kBAAkB,CAAC,EAChE;MACA,IAAI,CAAC+Y,KAAK,CAACjJ,MAAM,CAACxM,0BAA0B,EAAE6V,MAAM,CAAC;IACvD;EACF;EAIA04D,oBAAoBA,CAACC,QAAiB,EAAqB;IACzD,MAAM;MAAEn0E,KAAK;MAAEoa,QAAQ;MAAEna,GAAG;MAAE2P;KAAO,GAAG,IAAI,CAACqM,KAAK;IAClD,MAAMm4D,SAAS,GAAGp0E,KAAK,GAAG,CAAC;IAC3B,MAAMq0E,IAAI,GAAG,IAAI,CAACz6C,WAAW,CAC3Bx5B,8BAA8B,CAACga,QAAQ,EAAE,CAAC,CAC5C,CAAC;IACD,IAAIxK,KAAK,KAAK,IAAI,EAAE;MAClB,IAAI,CAACukE,QAAQ,EAAE;QACb,IAAI,CAAC/4D,KAAK,CACRjJ,MAAM,CAAC1L,6BAA6B,EAEpCrG,8BAA8B,CAC5B,IAAI,CAAC6b,KAAK,CAACylC,6BAA6B,EACxC,CACF,CACF,CAAC;MACH;IACF;IAEA,MAAM4yB,MAAM,GAAG,IAAI,CAAClgD,KAAK,GAAgB,CAAC;IAC1C,MAAMmgD,SAAS,GAAGD,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAClC,MAAME,OAAO,GAAGv0E,GAAG,GAAGs0E,SAAS;IAC/BF,IAAI,CAACzkE,KAAK,GAAG;MACXyG,GAAG,EAAE,IAAI,CAACuqB,KAAK,CAAC4G,KAAK,CAAC4sC,SAAS,EAAEI,OAAO,CAAC,CAAC3rB,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;MACjE4rB,MAAM,EAAE7kE,KAAK,KAAK,IAAI,GAAG,IAAI,GAAGA,KAAK,CAAC43B,KAAK,CAAC,CAAC,EAAE+sC,SAAS;KACzD;IACDF,IAAI,CAACK,IAAI,GAAGJ,MAAM;IAClB,IAAI,CAAC1oD,IAAI,CAAA,CAAE;IACX,MAAMkkD,YAAY,GAAG,IAAI,CAACt2D,UAAU,CAAC66D,IAAI,EAAE,iBAAiB,CAAC;IAC7D,IAAI,CAACl3D,gBAAgB,CACnB2yD,YAAY,EACZ1vE,8BAA8B,CAAC,IAAI,CAAC6b,KAAK,CAACmB,aAAa,EAAGm3D,SAAS,CACrE,CAAC;IACD,OAAOzE,YAAY;EACrB;EAGA/S,aAAaA,CAAeoX,QAAiB,EAAqB;IAChE,MAAM/xE,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAqB;IAChD,IAAIy7D,MAAM,GAAG,IAAI,CAACT,oBAAoB,CAACC,QAAQ,CAAC;IAChD,MAAMS,MAAM,GAAG,CAACD,MAAM,CAAC;IACvB,MAAME,aAAa,GAAG,EAAE;IACxB,OAAO,CAACF,MAAM,CAACD,IAAI,EAAE;MACnBG,aAAa,CAACt1D,IAAI,CAAC,IAAI,CAACy9C,yBAAyB,CAAE,CAAA,CAAC;MACpD,IAAI,CAACzT,wBAAwB,CAAA,CAAE;MAC/BqrB,MAAM,CAACr1D,IAAI,CAAEo1D,MAAM,GAAG,IAAI,CAACT,oBAAoB,CAACC,QAAQ,CAAE,CAAC;IAC7D;IAGA/xE,IAAI,CAAC4oE,WAAW,GAAG6J,aAA4C;IAC/DzyE,IAAI,CAACwyE,MAAM,GAAGA,MAAM;IACpB,OAAO,IAAI,CAACp7D,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAGA46D,yBAAyBA,CAAAA,EAAwC;IAC/D,OAAO,IAAI,CAAC/oC,eAAe,EAAE;EAC/B;EAsBA67B,eAAeA,CAEbzuB,KAAgB,EAChBhnB,SAAkB,EAClBo0D,QAAyB,EACzBn0D,mBAA6C,EAC1C;IACH,IAAIm0D,QAAQ,EAAE;MACZ,IAAI,CAACrnB,YAAY,CAAC,gBAAgB,CAAC;IACrC;IACA,MAAMsqB,6BAA6B,GAAG,IAAI,CAACz1D,KAAK,CAACimC,0BAA0B;IAC3E,IAAI,CAACjmC,KAAK,CAACimC,0BAA0B,GAAG,KAAK;IAC7C,IAAIwsB,QAAQ,GAAG,KAAK;IACpB,IAAIlzC,KAAK,GAAG,IAAI;IAChB,MAAMp5B,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAExB;IAEH9W,IAAI,CAAC63B,UAAU,GAAG,EAAE;IACpB,IAAI,CAACrO,IAAI,CAAA,CAAE;IAEX,OAAO,CAAC,IAAI,CAACwI,KAAK,CAACiN,KAAK,CAAC,EAAE;MACzB,IAAI7F,KAAK,EAAE;QACTA,KAAK,GAAG,KAAK;MACf,CAAC,MAAM;QACL,IAAI,CAAC7H,MAAM,CAAA,EAAS,CAAC;QACrB,IAAI,IAAI,CAACS,KAAK,CAACiN,KAAK,CAAC,EAAE;UACrB,IAAI,CAACswC,2BAA2B,CAACvvE,IAAI,CAAC;UACtC;QACF;MACF;MAEA,IAAI+X,IAAI;MACR,IAAIE,SAAS,EAAE;QACbF,IAAI,GAAG,IAAI,CAACo2C,oBAAoB,EAAE;MACpC,CAAC,MAAM;QACLp2C,IAAI,GAAG,IAAI,CAAC0+C,uBAAuB,CAACv+C,mBAAmB,CAAC;QACxDo0D,QAAQ,GAAG,IAAI,CAACF,UAAU,CACxBr0D,IAAI,EACJs0D,QAAQ,EACRC,QAAQ,EACRp0D,mBACF,CAAC;MACH;MAEA,IACEm0D,QAAQ,IACR,CAAC,IAAI,CAACt3D,gBAAgB,CAACgD,IAAI,CAAC,IAC5BA,IAAI,CAAC9X,IAAI,KAAK,eAAe,EAC7B;QACA,IAAI,CAAC+Y,KAAK,CAACjJ,MAAM,CAAC3K,qBAAqB,EAAE2S,IAAI,CAAC;MAChD;MAIE,IAAIA,IAAI,CAACZ,SAAS,EAAE;QAClB,IAAI,CAAC8yC,QAAQ,CAAClyC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC;MACxC;MAIF/X,IAAI,CAAC63B,UAAU,CAAC1a,IAAI,CAACpF,IAAI,CAAC;IAC5B;IAEA,IAAI,CAACyR,IAAI,CAAA,CAAE;IAEX,IAAI,CAAC3P,KAAK,CAACimC,0BAA0B,GAAGwvB,6BAA6B;IACrE,IAAIrvE,IAAI,GAAG,kBAAkB;IAC7B,IAAIgY,SAAS,EAAE;MACbhY,IAAI,GAAG,eAAe;IACvB,CAAA,MAAM,IAAIosE,QAAQ,EAAE;MACnBpsE,IAAI,GAAG,kBAAkB;IAC3B;IAEA,OAAO,IAAI,CAACmX,UAAU,CAACpX,IAAI,EAAEC,IAAI,CAAC;EACpC;EAEAsvE,2BAA2BA,CAACvvE,IAAoB,EAAQ;IACtD,IAAI,CAACiqD,QAAQ,CAACjqD,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC6Z,KAAK,CAACC,eAAe,CAAErc,KAAK,CAAC;IACvE,IAAI,CAACwsD,QAAQ,CAACjqD,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAAC6Z,KAAK,CAACC,eAAe,EAAE,KAAK,CAAC;EAC5E;EAKA44D,wBAAwBA,CACtB36D,IAA8B,EACe;IAC7C,OACE,CAACA,IAAI,CAACb,QAAQ,IACda,IAAI,CAACpR,GAAG,CAAC1G,IAAI,KAAK,YAAY,KAC7B,IAAI,CAACmrD,qBAAqB,CAAA,CAAE,IAC3B,IAAI,CAACp5B,KAAK,CAAA,CAAY,CAAC,IACvB,IAAI,CAACA,KAAK,CAAA,EAAQ,CAAC,CAAC;EAE1B;EAGAykC,uBAAuBA,CAErBv+C,mBAA6C,EACX;IAClC,IAAIyB,UAAU,GAAG,EAAE;IACnB,IAAI,IAAI,CAACqY,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB,IAAI,IAAI,CAACna,SAAS,CAAC,YAAY,CAAC,EAAE;QAChC,IAAI,CAACmB,KAAK,CAACjJ,MAAM,CAACxF,4BAA4B,EAAE,IAAI,CAACsP,KAAK,CAAC7B,QAAQ,CAAC;MACtE;MAIA,OAAO,IAAI,CAACga,KAAK,CAAA,EAAM,CAAC,EAAE;QACxBrY,UAAU,CAACwD,IAAI,CAAC,IAAI,CAAC6wC,cAAc,CAAE,CAAA,CAAC;MACxC;IACF;IAEA,MAAMj2C,IAAI,GAAG,IAAI,CAACjB,SAAS,EAAoB;IAC/C,IAAIjC,OAAO,GAAG,KAAK;IACnB,IAAIqrB,UAAU,GAAG,KAAK;IACtB,IAAIloB,QAAQ;IAEZ,IAAI,IAAI,CAACga,KAAK,CAAA,EAAY,CAAC,EAAE;MAC3B,IAAIrY,UAAU,CAACM,MAAM,EAAE,IAAI,CAACjV,UAAU,CAAA,CAAE;MACxC,OAAO,IAAI,CAACsoD,WAAW,EAAE;IAC3B;IAEA,IAAI3zC,UAAU,CAACM,MAAM,EAAE;MACrBlC,IAAI,CAAC4B,UAAU,GAAGA,UAAU;MAC5BA,UAAU,GAAG,EAAE;IACjB;IAEA5B,IAAI,CAAC9C,MAAM,GAAG,KAAK;IAEnB,IAAIiD,mBAAmB,EAAE;MACvBF,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IAChC;IAEA,IAAIvB,WAAW,GAAG,IAAI,CAACmb,GAAG,GAAQ,CAAC;IACnC,IAAI,CAACoO,+BAA+B,CAACjoB,IAAI,CAAC;IAC1C,MAAMkjB,WAAW,GAAG,IAAI,CAACphB,KAAK,CAACohB,WAAW;IAC1C,IAAI,CAACmzB,iBAAiB,CAACr2C,IAAI,EAAEG,mBAAmB,CAAC;IAEjD,IAAI,CAACzB,WAAW,IAAI,CAACwkB,WAAW,IAAI,IAAI,CAACy3C,wBAAwB,CAAC36D,IAAI,CAAC,EAAE;MACvE,MAAM;QAAEpR;MAAK,CAAA,GAAGoR,IAAI;MACpB,MAAM46D,OAAO,GAAGhsE,GAAG,CAACV,IAAI;MAGxB,IAAI0sE,OAAO,KAAK,OAAO,IAAI,CAAC,IAAI,CAACtoB,qBAAqB,CAAA,CAAE,EAAE;QACxDx1C,OAAO,GAAG,IAAI;QACd,IAAI,CAAC+pC,iCAAiC,CAACj4C,GAAG,CAAC;QAC3C8P,WAAW,GAAG,IAAI,CAACmb,GAAG,GAAQ,CAAC;QAC/B,IAAI,CAACw8B,iBAAiB,CAACr2C,IAAI,CAAC;MAC9B;MAGA,IAAI46D,OAAO,KAAK,KAAK,IAAIA,OAAO,KAAK,KAAK,EAAE;QAC1CzyC,UAAU,GAAG,IAAI;QACjB,IAAI,CAAC0e,iCAAiC,CAACj4C,GAAG,CAAC;QAC3CoR,IAAI,CAAC1X,IAAI,GAAGsyE,OAAO;QACnB,IAAI,IAAI,CAAC3gD,KAAK,CAAA,EAAQ,CAAC,EAAE;UACvBvb,WAAW,GAAG,IAAI;UAClB,IAAI,CAACuC,KAAK,CAACjJ,MAAM,CAAC3P,mBAAmB,EAAE,IAAI,CAACyZ,KAAK,CAACykB,WAAW,EAAE,EAAE;YAC/Dj+B,IAAI,EAAEsyE;UACR,CAAC,CAAC;UACF,IAAI,CAACnpD,IAAI,CAAA,CAAE;QACb;QACA,IAAI,CAAC4kC,iBAAiB,CAACr2C,IAAI,CAAC;MAC9B;IACF;IAEA,OAAO,IAAI,CAACkoB,iBAAiB,CAC3BloB,IAAI,EACJC,QAAQ,EACRvB,WAAW,EACX5B,OAAO,EACP,KAAK,EACLqrB,UAAU,EACVhoB,mBACF,CAAC;EACH;EAEAyrD,iCAAiCA,CAC/B1uD,MAAsC,EAC9B;IACR,OAAOA,MAAM,CAAC5U,IAAI,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC;EACtC;EAGA2U,4BAA4BA,CAACC,MAAsC,EAAE;IACnE,OAAOA,MAAM,CAACC,MAAM;EACtB;EAIA6qB,uBAAuBA,CAAC9qB,MAAsC,EAAQ;IAAA,IAAA29D,OAAA;IACpE,MAAM/5C,UAAU,GAAG,IAAI,CAAC8qC,iCAAiC,CAAC1uD,MAAM,CAAC;IACjE,MAAMC,MAAM,GAAG,IAAI,CAACF,4BAA4B,CAACC,MAAM,CAAC;IAExD,IAAIC,MAAM,CAAC+E,MAAM,KAAK4e,UAAU,EAAE;MAChC,IAAI,CAAC7f,KAAK,CACR/D,MAAM,CAAC5U,IAAI,KAAK,KAAK,GAAG0P,MAAM,CAAClP,cAAc,GAAGkP,MAAM,CAACjP,cAAc,EACrEmU,MACF,CAAC;IACH;IAEA,IACEA,MAAM,CAAC5U,IAAI,KAAK,KAAK,IACrB,CAAA,CAAAuyE,OAAA,GAAA19D,MAAM,CAACA,MAAM,CAAC+E,MAAM,GAAG,CAAC,CAAC,KAAA,IAAA,GAAA,KAAA,CAAA,GAAzB24D,OAAA,CAA2B3yE,IAAI,MAAK,aAAa,EACjD;MACA,IAAI,CAAC+Y,KAAK,CAACjJ,MAAM,CAAChP,sBAAsB,EAAEkU,MAAM,CAAC;IACnD;EACF;EAGA49D,iBAAiBA,CAEf96D,IAA4B,EAC5BtB,WAAoB,EACpB5B,OAAgB,EAChBoD,SAAkB,EAClBioB,UAAmB,EACgB;IACnC,IAAIA,UAAU,EAAE;MAEd,MAAM4yC,YAAY,GAAG,IAAI,CAACt8D,WAAW,CACnCuB,IAAI,EAGJtB,WAAW,EACG,KAAK,EACC,KAAK,EACzB,KAAK,EACL,cACF,CAAC;MACD,IAAI,CAACspB,uBAAuB,CAAC+yC,YAAY,CAAC;MAC1C,OAAOA,YAAY;IACrB;IAEA,IAAIj+D,OAAO,IAAI4B,WAAW,IAAI,IAAI,CAACub,KAAK,CAAU,EAAA,CAAC,EAAE;MACnD,IAAI/Z,SAAS,EAAE,IAAI,CAACjT,UAAU,EAAE;MAChC+S,IAAI,CAAC1X,IAAI,GAAG,QAAQ;MACpB0X,IAAI,CAAC9C,MAAM,GAAG,IAAI;MAClB,OAAO,IAAI,CAACuB,WAAW,CACrBuB,IAAI,EACJtB,WAAW,EACX5B,OAAO,EACa,KAAK,EACzB,KAAK,EACL,cACF,CAAC;IACH;EACF;EAIAiD,mBAAmBA,CAEjBC,IAA8B,EAC9BC,QAAqC,EACrCC,SAAkB,EAClBC,mBAA6C,EACR;IACrCH,IAAI,CAACZ,SAAS,GAAG,KAAK;IAEtB,IAAI,IAAI,CAACya,GAAG,CAAA,EAAS,CAAC,EAAE;MACtB7Z,IAAI,CAACvK,KAAK,GAAGyK,SAAS,GAClB,IAAI,CAACmoB,iBAAiB,CAAC,IAAI,CAACvmB,KAAK,CAAC7B,QAAQ,CAAC,GAC3C,IAAI,CAACs5D,oCAAoC,CAEvCp5D,CAAAA,EAAAA,mBACF,CAAC;MAEL,OAAO,IAAI,CAACC,oBAAoB,CAACJ,IAAI,CAAC;IACxC;IAEA,IAAI,CAACA,IAAI,CAACb,QAAQ,IAAIa,IAAI,CAACpR,GAAG,CAAC1G,IAAI,KAAK,YAAY,EAAE;MAKpD,IAAI,CAACyhC,iBAAiB,CAAC3pB,IAAI,CAACpR,GAAG,CAACV,IAAI,EAAE8R,IAAI,CAACpR,GAAG,CAAC6H,GAAG,CAAC5Q,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;MAEtE,IAAIqa,SAAS,EAAE;QACbF,IAAI,CAACvK,KAAK,GAAG,IAAI,CAAC4yB,iBAAiB,CACjCpoB,QAAQ,EACR,IAAI,CAAC6C,eAAe,CAAC9C,IAAI,CAACpR,GAAG,CAC/B,CAAC;MACF,CAAA,MAAM,IAAI,IAAI,CAACqrB,KAAK,CAAA,EAAM,CAAC,EAAE;QAC5B,MAAM84B,kBAAkB,GAAG,IAAI,CAACjxC,KAAK,CAAC7B,QAAQ;QAC9C,IAAIE,mBAAmB,IAAI,IAAI,EAAE;UAC/B,IAAIA,mBAAmB,CAAC4yC,kBAAkB,KAAK,IAAI,EAAE;YACnD5yC,mBAAmB,CAAC4yC,kBAAkB,GAAGA,kBAAkB;UAC7D;QACF,CAAC,MAAM;UACL,IAAI,CAAC9xC,KAAK,CAACjJ,MAAM,CAAC/L,2BAA2B,EAAE8mD,kBAAkB,CAAC;QACpE;QACA/yC,IAAI,CAACvK,KAAK,GAAG,IAAI,CAAC4yB,iBAAiB,CACjCpoB,QAAQ,EACR,IAAI,CAAC6C,eAAe,CAAC9C,IAAI,CAACpR,GAAG,CAC/B,CAAC;MACH,CAAC,MAAM;QACLoR,IAAI,CAACvK,KAAK,GAAG,IAAI,CAACqN,eAAe,CAAC9C,IAAI,CAACpR,GAAG,CAAC;MAC7C;MACAoR,IAAI,CAACZ,SAAS,GAAG,IAAI;MAErB,OAAO,IAAI,CAACgB,oBAAoB,CAACJ,IAAI,CAAC;IACxC;EACF;EAEAI,oBAAoBA,CAACnY,IAA8B,EAAE;IACnD,OAAO,IAAI,CAACoX,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;EAChD;EAEAigC,iBAAiBA,CAEfloB,IAAe,EACfC,QAAqC,EACrCvB,WAAoB,EACpB5B,OAAgB,EAChBoD,SAAkB,EAClBioB,UAAmB,EACnBhoB,mBAA6C,EAC1C;IACH,MAAMlY,IAAI,GAAI,IAAI,CAAC6yE,iBAAiB,CAClC96D,IAAI,EACJtB,WAAW,EACX5B,OAAO,EACPoD,SAAS,EACTioB,UACF,CAAC,IACC,IAAI,CAACpoB,mBAAmB,CACtBC,IAAI,EACJC,QAAQ,EACRC,SAAS,EACTC,mBACF,CAAO;IAET,IAAI,CAAClY,IAAI,EAAE,IAAI,CAACgF,UAAU,EAAE;IAE5B,OAAOhF,IAAI;EACb;EAKAouD,iBAAiBA,CAEfr2C,IAE4B,EAC5BG,mBAA6C,EACvC;IACN,IAAI,IAAI,CAAC0Z,GAAG,CAAA,CAAY,CAAC,EAAE;MACxB7Z,IAAI,CAAmCb,QAAQ,GAAG,IAAI;MACvDa,IAAI,CAACpR,GAAG,GAAG,IAAI,CAACy1B,uBAAuB,EAAE;MACzC,IAAI,CAAC7K,MAAM,CAAA,CAAY,CAAC;IAC1B,CAAC,MAAM;MAEL,MAAM;QAAEtxB,IAAI;QAAEuN;OAAO,GAAG,IAAI,CAACqM,KAAK;MAClC,IAAIlT,GAAG;MAEP,IAAI6f,0BAA0B,CAACvmB,IAAI,CAAC,EAAE;QACpC0G,GAAG,GAAG,IAAI,CAACyrB,eAAe,CAAC,IAAI,CAAC;MAClC,CAAC,MAAM;QACL,QAAQnyB,IAAI;UACV,KAAA,GAAA;YACE0G,GAAG,GAAG,IAAI,CAAC0M,mBAAmB,CAAC7F,KAAK,CAAC;YACrC;UACF,KAAA,GAAA;YACE7G,GAAG,GAAG,IAAI,CAACyM,kBAAkB,CAAC5F,KAAK,CAAC;YACpC;UACF,KAAA,GAAA;YACE7G,GAAG,GAAG,IAAI,CAACiM,kBAAkB,CAACpF,KAAK,CAAC;YACpC;UACF,KAAA,GAAA;YAAqB;cAEnB,MAAMw9C,aAAa,GAAG,IAAI,CAACnxC,KAAK,CAAC7B,QAAQ;cACzC,IAAIE,mBAAmB,IAAI,IAAI,EAAE;gBAC/B,IAAIA,mBAAmB,CAAC8yC,aAAa,KAAK,IAAI,EAAE;kBAC9C9yC,mBAAmB,CAAC8yC,aAAa,GAAGA,aAAa;gBACnD;cACF,CAAC,MAAM;gBACL,IAAI,CAAChyC,KAAK,CAACjJ,MAAM,CAACxG,sBAAsB,EAAEyhD,aAAa,CAAC;cAC1D;cACArkD,GAAG,GAAG,IAAI,CAACoP,gBAAgB,EAAE;cAC7B;YACF;UACA;YACE,IAAqC9V,IAAI,QAAe,EAAE;cACxD0G,GAAG,GAAG,IAAI,CAACsM,mBAAmB,CAACzF,KAAK,CAAC;cACrC;YACF;YAEA,IAAI,CAACxI,UAAU,CAAA,CAAE;QACrB;MACF;MACC+S,IAAI,CAASpR,GAAG,GAAGA,GAAG;MACvB,IAAI1G,IAAI,QAAmB,EAAE;QAE3B8X,IAAI,CAACb,QAAQ,GAAG,KAAK;MACvB;IACF;EACF;EAIAtC,YAAYA,CAAC5U,IAAoC,EAAE6U,OAAgB,EAAQ;IACzE7U,IAAI,CAACmW,EAAE,GAAG,IAAI;IACdnW,IAAI,CAAC+yE,SAAS,GAAG,KAAK;IACtB/yE,IAAI,CAAC8iC,KAAK,GAAGjuB,OAAO;EACtB;EAIA2B,WAAWA,CAETxW,IAAe,EACfyW,WAAoB,EACpB5B,OAAgB,EAChB6B,aAAsB,EACtBC,gBAAyB,EACzB1W,IAAe,EACf2W,YAAqB,GAAG,KAAK,EAC1B;IACH,IAAI,CAAChC,YAAY,CAAC5U,IAAI,EAAE6U,OAAO,CAAC;IAChC7U,IAAI,CAAC+yE,SAAS,GAAGt8D,WAAW;IAC5B,IAAI,CAAC4U,KAAK,CAACF,KAAK,CACdN,QACiB,IACdjU,YAAY,SAAqB,CAAC,CAAC,IACnCD,gBAAgB,QAA4B,CAAC,CAClD,CAAC;IACD,IAAI,CAACi1C,SAAS,CAACzgC,KAAK,CAACoxB,aAAa,CAAC1nC,OAAO,EAAE7U,IAAI,CAAC+yE,SAAS,CAAC,CAAC;IAC5D,IAAI,CAACnxC,mBAAmB,CAAC5hC,IAAI,EAAE0W,aAAa,CAAC;IAC7C,MAAMg3D,YAAY,GAAG,IAAI,CAAC/yC,0BAA0B,CAAC36B,IAAI,EAAEC,IAAI,EAAE,IAAI,CAAC;IACtE,IAAI,CAAC2rD,SAAS,CAACxgC,IAAI,EAAE;IACrB,IAAI,CAACC,KAAK,CAACD,IAAI,EAAE;IAEjB,OAAOsiD,YAAY;EACrB;EAKA1uC,cAAcA,CAEZC,KAAgB,EAChBC,OAAgB,EAChBhnB,mBAA6C,EACN;IACvC,IAAIgnB,OAAO,EAAE;MACX,IAAI,CAAC8lB,YAAY,CAAC,gBAAgB,CAAC;IACrC;IACA,MAAMsqB,6BAA6B,GAAG,IAAI,CAACz1D,KAAK,CAACimC,0BAA0B;IAC3E,IAAI,CAACjmC,KAAK,CAACimC,0BAA0B,GAAG,KAAK;IAC7C,MAAM9/C,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAyC;IACpE,IAAI,CAAC0S,IAAI,CAAA,CAAE;IACXxpB,IAAI,CAACm/B,QAAQ,GAAG,IAAI,CAAC0yC,aAAa,CAChC5yC,KAAK,EACY,CAACC,OAAO,EACzBhnB,mBAAmB,EACnBlY,IACF,CAAC;IACD,IAAI,CAAC6Z,KAAK,CAACimC,0BAA0B,GAAGwvB,6BAA6B;IACrE,OAAO,IAAI,CAACl4D,UAAU,CACpBpX,IAAI,EACJk/B,OAAO,GAAG,iBAAiB,GAAG,iBAChC,CAAC;EACH;EAKAmF,oBAAoBA,CAElBrkC,IAAuC,EACvCkV,MAIa,EACbL,OAAgB,EAChB+nB,gBAAkC,EACP;IAC3B,IAAI,CAACvR,KAAK,CAACF,KAAK,CAACN,OAAoC,CAAC;IACtD,IAAItY,KAAK,GAAGgqC,aAAa,CAAC1nC,OAAO,EAAE,KAAK,CAAC;IAIzC,IAAI,CAAC,IAAI,CAACmd,KAAK,CAAU,CAAA,CAAC,IAAI,IAAI,CAAC45B,SAAS,CAACtP,KAAK,EAAE;MAClD/pC,KAAK,KAAsB;IAC7B;IACA,IAAI,CAACq5C,SAAS,CAACzgC,KAAK,CAAC5Y,KAAK,CAAC;IAC3B,IAAI,CAACqC,YAAY,CAAC5U,IAAI,EAAE6U,OAAO,CAAC;IAChC,MAAM6qD,yBAAyB,GAAG,IAAI,CAAC7lD,KAAK,CAACwhB,sBAAsB;IAEnE,IAAInmB,MAAM,EAAE;MACV,IAAI,CAAC2E,KAAK,CAACwhB,sBAAsB,GAAG,IAAI;MACxC,IAAI,CAAC8H,0BAA0B,CAACnjC,IAAI,EAAEkV,MAAM,EAAE0nB,gBAAgB,CAAC;IACjE;IACA,IAAI,CAAC/iB,KAAK,CAACwhB,sBAAsB,GAAG,KAAK;IACzC,IAAI,CAAChlB,iBAAiB,CAACrW,IAAI,EAAE,IAAI,CAAC;IAElC,IAAI,CAAC4rD,SAAS,CAACxgC,IAAI,EAAE;IACrB,IAAI,CAACC,KAAK,CAACD,IAAI,EAAE;IACjB,IAAI,CAACvR,KAAK,CAACwhB,sBAAsB,GAAGqkC,yBAAyB;IAE7D,OAAO,IAAI,CAACtoD,UAAU,CAACpX,IAAI,EAAE,yBAAyB,CAAC;EACzD;EAEAmjC,0BAA0BA,CACxBnjC,IAAuC,EACvCkV,MAE0E,EAC1E0nB,gBAAkC,EAC5B;IACN,IAAI,CAACD,gBAAgB,CAACznB,MAAM,EAAE0nB,gBAAgB,EAAE,KAAK,CAAC;IACtD58B,IAAI,CAACkV,MAAM,GAAGA,MAA+C;EAC/D;EAEAylB,0BAA0BA,CAMxB36B,IAAe,EAAEC,IAAe,EAAEsW,QAAiB,GAAG,KAAK,EAAK;IAEhE,IAAI,CAACF,iBAAiB,CAACrW,IAAI,EAAE,KAAK,EAAEuW,QAAQ,CAAC;IAC7C,OAAO,IAAI,CAACa,UAAU,CAACpX,IAAI,EAAEC,IAAI,CAAC;EACpC;EAGAoW,iBAAiBA,CAEfrW,IAAwB,EACxBsW,eAAgC,EAChCC,QAAiB,GAAG,KAAK,EACnB;IACN,MAAMy8D,YAAY,GAAG18D,eAAe,IAAI,CAAC,IAAI,CAAC0b,KAAK,CAAA,CAAU,CAAC;IAC9D,IAAI,CAAC85B,eAAe,CAAC3gC,KAAK,CAAC4+B,kBAAkB,CAAE,CAAA,CAAC;IAEhD,IAAIipB,YAAY,EAAE;MAEfhzE,IAAI,CAAuC6V,IAAI,GAC9C,IAAI,CAACqmB,gBAAgB,EAAE;MACzB,IAAI,CAACW,WAAW,CAAC78B,IAAI,EAAE,KAAK,EAAEsW,eAAe,EAAE,KAAK,CAAC;IACvD,CAAC,MAAM;MACL,MAAM2tD,SAAS,GAAG,IAAI,CAACpqD,KAAK,CAAC6O,MAAM;MAGnC,MAAM4iC,SAAS,GAAG,IAAI,CAACzxC,KAAK,CAACulC,MAAM;MACnC,IAAI,CAACvlC,KAAK,CAACulC,MAAM,GAAG,EAAE;MAItB,IAAI,CAACwM,SAAS,CAACzgC,KAAK,CAClB,IAAI,CAACygC,SAAS,CAAC1P,YAAY,CAAE,CAAA,IAC/B,CAAC;MACDl8C,IAAI,CAAC6V,IAAI,GAAG,IAAI,CAACi0D,UAAU,CACzB,IAAI,EACJ,KAAK,EAEJmJ,sBAA+B,IAAK;QACnC,MAAMC,SAAS,GAAG,CAAC,IAAI,CAACC,iBAAiB,CAACnzE,IAAI,CAACkV,MAAM,CAAC;QAEtD,IAAI+9D,sBAAsB,IAAIC,SAAS,EAAE;UAEvC,IAAI,CAACl6D,KAAK,CACRjJ,MAAM,CAAC9M,4BAA4B,EAEnC,CAACjD,IAAI,CAACK,IAAI,KAAK,QAAQ,IAAIL,IAAI,CAACK,IAAI,KAAK,aAAa,KAEpD,CAAC,CAACL,IAAI,CAAC2G,GAAG,GAER3G,IAAI,CAAC2G,GAAG,CAAC6H,GAAG,CAAC3Q,GAAG,GAChBmC,IACN,CAAC;QACH;QAEA,MAAMsjC,iBAAiB,GAAG,CAAC2gC,SAAS,IAAI,IAAI,CAACpqD,KAAK,CAAC6O,MAAM;QAIzD,IAAI,CAACmU,WAAW,CACd78B,IAAI,EACJ,CAAC,IAAI,CAAC6Z,KAAK,CAAC6O,MAAM,IAAI,CAACpS,eAAe,IAAI,CAACC,QAAQ,IAAI,CAAC28D,SAAS,EACjE58D,eAAe,EACfgtB,iBACF,CAAC;QAGD,IAAI,IAAI,CAACzpB,KAAK,CAAC6O,MAAM,IAAI1oB,IAAI,CAACmW,EAAE,EAAE;UAChC,IAAI,CAACs4C,eAAe,CAClBzuD,IAAI,CAACmW,EAAE,MAEPmtB,iBACF,CAAC;QACH;MACF,CACF,CAAC;MACD,IAAI,CAACsoB,SAAS,CAACxgC,IAAI,EAAE;MACrB,IAAI,CAACvR,KAAK,CAACulC,MAAM,GAAGkM,SAAS;IAC/B;IACA,IAAI,CAACQ,eAAe,CAAC1gC,IAAI,EAAE;EAC7B;EAEA40C,iBAAiBA,CAAChgE,IAAuC,EAAW;IAClE,OAAOA,IAAI,CAACC,IAAI,KAAK,YAAY;EACnC;EAEAkzE,iBAAiBA,CACfj+D,MAAsD,EAC7C;IACT,KAAK,IAAIkT,CAAC,GAAG,CAAC,EAAEyzB,GAAG,GAAG3mC,MAAM,CAAC+E,MAAM,EAAEmO,CAAC,GAAGyzB,GAAG,EAAEzzB,CAAC,EAAE,EAAE;MACjD,IAAI,CAAC,IAAI,CAAC43C,iBAAiB,CAAC9qD,MAAM,CAACkT,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;IACtD;IACA,OAAO,IAAI;EACb;EAEAyU,WAAWA,CACT78B,IAAwB,EACxBojC,eAAwB,EACxBC,eAAgC,EAChCC,iBAA0B,GAAG,IAAI,EAC3B;IACN,MAAMgrB,YAAY,GAAG,CAAClrB,eAAe,IAAI,IAAI92B,GAAG,CAAA,CAAU;IAO1D,MAAM8mE,gBAAgB,GAAG;MAAEnzE,IAAI,EAAE;KAA6B;IAC9D,KAAK,MAAMm6B,KAAK,IAAIp6B,IAAI,CAACkV,MAAM,EAAE;MAC/B,IAAI,CAACm5C,SAAS,CACZj0B,KAAK,EACLg5C,gBAAgB,KAEhB9kB,YAAY,EACZhrB,iBACF,CAAC;IACH;EACF;EAQAuuC,aAAaA,CAEX5yC,KAAgB,EAChB4uB,UAAoB,EACpB31C,mBAA6C,EAC7Cm3D,YAAoC,EACX;IACzB,MAAMvhB,IAA6B,GAAG,EAAE;IACxC,IAAI10B,KAAK,GAAG,IAAI;IAEhB,OAAO,CAAC,IAAI,CAACxH,GAAG,CAACqN,KAAK,CAAC,EAAE;MACvB,IAAI7F,KAAK,EAAE;QACTA,KAAK,GAAG,KAAK;MACf,CAAC,MAAM;QACL,IAAI,CAAC7H,MAAM,CAAA,EAAS,CAAC;QACrB,IAAI,IAAI,CAACS,KAAK,CAACiN,KAAK,CAAC,EAAE;UACrB,IAAIowC,YAAY,EAAE;YAChB,IAAI,CAACE,2BAA2B,CAACF,YAAY,CAAC;UAChD;UACA,IAAI,CAAC7lD,IAAI,CAAA,CAAE;UACX;QACF;MACF;MAEAskC,IAAI,CAAC3wC,IAAI,CAAC,IAAI,CAACqyD,iBAAiB,CAACvwC,KAAK,EAAE4uB,UAAU,EAAE31C,mBAAmB,CAAC,CAAC;IAC3E;IACA,OAAO41C,IAAI;EACb;EAgBA0hB,iBAAiBA,CAEfvwC,KAAgB,EAChB4uB,UAA2B,EAC3B31C,mBAA6C,EAC7Ck3D,gBAAiC,EAO1B;IACP,IAAIliB,GAAG;IACP,IAAI,IAAI,CAACl7B,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,IAAI,CAAC67B,UAAU,EAAE;QACf,IAAI,CAAC70C,KAAK,CAACjJ,MAAM,CAACrG,eAAe,EAAE,IAAI,CAACmQ,KAAK,CAACykB,WAAW,EAAE,EAAE;UAC3Dt5B,UAAU,EAAE;QACd,CAAC,CAAC;MACJ;MACAkoD,GAAG,GAAG,IAAI;IACX,CAAA,MAAM,IAAI,IAAI,CAACl7B,KAAK,CAAA,EAAY,CAAC,EAAE;MAClC,MAAMq/C,kBAAkB,GAAG,IAAI,CAACx3D,KAAK,CAAC7B,QAAQ;MAE9Ck1C,GAAG,GAAG,IAAI,CAAClwB,cAAc,CACvB,IAAI,CAACswB,WAAW,CAACp1C,mBAAmB,CAAC,EACrCm5D,kBACF,CAAC;IACF,CAAA,MAAM,IAAI,IAAI,CAACr/C,KAAK,CAAA,EAAY,CAAC,EAAE;MAClC,IAAI,CAACgzB,YAAY,CAAC,oBAAoB,CAAC;MACvC,IAAI,CAACoqB,gBAAgB,EAAE;QACrB,IAAI,CAACp2D,KAAK,CAACjJ,MAAM,CAAClH,6BAA6B,EAAE,IAAI,CAACgR,KAAK,CAAC7B,QAAQ,CAAC;MACvE;MACA,MAAMhY,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAyB;MACpD,IAAI,CAAC0S,IAAI,CAAA,CAAE;MACX0jC,GAAG,GAAG,IAAI,CAAC91C,UAAU,CAACpX,IAAI,EAAE,qBAAqB,CAAC;IACpD,CAAC,MAAM;MACLktD,GAAG,GAAG,IAAI,CAACokB,oCAAoC,CAC7CryC,KAAK,EACL/mB,mBAAmB,EACnB,IAAI,CAAC8kB,cACP,CAAC;IACH;IACA,OAAOkwB,GAAG;EACZ;EAQA96B,eAAeA,CAACmD,OAAiB,EAAgB;IAC/C,MAAMv1B,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAgB;IAC3C,MAAM7Q,IAAI,GAAG,IAAI,CAAC8kE,mBAAmB,CAACx1C,OAAO,CAAC;IAE9C,OAAO,IAAI,CAACoE,gBAAgB,CAAC35B,IAAI,EAAEiG,IAAI,CAAC;EAC1C;EAEA0zB,gBAAgBA,CAAC35B,IAA0B,EAAEiG,IAAY,EAAgB;IACvEjG,IAAI,CAACiG,IAAI,GAAGA,IAAI;IAChBjG,IAAI,CAACwO,GAAG,CAACzQ,cAAc,GAAGkI,IAAI;IAE9B,OAAO,IAAI,CAACmR,UAAU,CAACpX,IAAI,EAAE,YAAY,CAAC;EAC5C;EAEAixE,kBAAkBA,CAChBjxE,IAA0B,EAC1BiG,IAAY,EACZwN,MAAgB,EACF;IACdzT,IAAI,CAACiG,IAAI,GAAGA,IAAI;IAChBjG,IAAI,CAACwO,GAAG,CAACzQ,cAAc,GAAGkI,IAAI;IAE9B,OAAO,IAAI,CAAC4N,YAAY,CAAC7T,IAAI,EAAE,YAAY,EAAEyT,MAAM,CAAC;EACtD;EAEAs3D,mBAAmBA,CAACx1C,OAAiB,EAAU;IAC7C,IAAItvB,IAAY;IAEhB,MAAM;MAAE+R,QAAQ;MAAE/X;KAAM,GAAG,IAAI,CAAC4Z,KAAK;IAErC,IAAI2M,0BAA0B,CAACvmB,IAAI,CAAC,EAAE;MACpCgG,IAAI,GAAG,IAAI,CAAC4T,KAAK,CAACrM,KAAK;IACzB,CAAC,MAAM;MACL,IAAI,CAACxI,UAAU,CAAA,CAAE;IACnB;IAEA,MAAM+hB,cAAc,GAAGR,iCAAiC,CAACtmB,IAAI,CAAC;IAE9D,IAAIs1B,OAAO,EAAE;MAGX,IAAIxO,cAAc,EAAE;QAClB,IAAI,CAACo0B,YAAY,CAAA,GAAQ,CAAC;MAC5B;IACF,CAAC,MAAM;MACL,IAAI,CAACzZ,iBAAiB,CAACz7B,IAAI,EAAG+R,QAAQ,EAAE+O,cAAc,EAAE,KAAK,CAAC;IAChE;IAEA,IAAI,CAACyC,IAAI,CAAA,CAAE;IAEX,OAAOvjB,IAAI;EACb;EAEAy7B,iBAAiBA,CACf3Y,IAAY,EACZ/Q,QAAkB,EAClBmpD,aAAsB,EACtB1oD,SAAkB,EACZ;IAEN,IAAIsQ,IAAI,CAAC9O,MAAM,GAAG,EAAE,EAAE;MACpB;IACF;IAGA,IAAI,CAAC0P,iBAAiB,CAACZ,IAAI,CAAC,EAAE;MAC5B;IACF;IAEA,IAAIo4C,aAAa,IAAI93C,SAAS,CAACN,IAAI,CAAC,EAAE;MACpC,IAAI,CAAC/P,KAAK,CAACjJ,MAAM,CAAC9G,iBAAiB,EAAE+O,QAAQ,EAAE;QAC7C9O,OAAO,EAAE6f;MACX,CAAC,CAAC;MACF;IACF;IAEA,MAAMsqD,YAAY,GAAG,CAAC,IAAI,CAACx5D,KAAK,CAAC6O,MAAM,GACnCI,cAAc,GACdrQ,SAAS,GACP2Q,wBAAwB,GACxBH,oBAAoB;IAE1B,IAAIoqD,YAAY,CAACtqD,IAAI,EAAE,IAAI,CAACC,QAAQ,CAAC,EAAE;MACrC,IAAI,CAAChQ,KAAK,CAACjJ,MAAM,CAACvG,sBAAsB,EAAEwO,QAAQ,EAAE;QAClDzT,YAAY,EAAEwkB;MAChB,CAAC,CAAC;MACF;IACF,CAAC,MAAM,IAAIA,IAAI,KAAK,OAAO,EAAE;MAC3B,IAAI,IAAI,CAAC6iC,SAAS,CAACxP,QAAQ,EAAE;QAC3B,IAAI,CAACpjC,KAAK,CAACjJ,MAAM,CAAC7E,sBAAsB,EAAE8M,QAAQ,CAAC;QACnD;MACF;IACF,CAAC,MAAM,IAAI+Q,IAAI,KAAK,OAAO,EAAE;MAC3B,IAAI,IAAI,CAAC6iC,SAAS,CAACzP,QAAQ,EAAE;QAC3B,IAAI,CAACnjC,KAAK,CAACjJ,MAAM,CAACvP,sBAAsB,EAAEwX,QAAQ,CAAC;QACnD;MACF;MAEA,IAAI,IAAI,CAACqT,KAAK,CAACT,aAAa,EAAE;QAC5B,IAAI,CAAC5R,KAAK,CAACjJ,MAAM,CAACtP,mCAAmC,EAAEuX,QAAQ,CAAC;QAChE;MACF;MAEA,IAAI,CAAC8zC,eAAe,CAACpC,+BAA+B,CAAC1xC,QAAQ,CAAC;IAChE,CAAC,MAAM,IAAI+Q,IAAI,KAAK,WAAW,EAAE;MAC/B,IAAI,IAAI,CAACsC,KAAK,CAACV,+BAA+B,EAAE;QAC9C,IAAI,CAAC3R,KAAK,CAACjJ,MAAM,CAACzP,gBAAgB,EAAE0X,QAAQ,CAAC;QAC7C;MACF;IACF;EACF;EAIAu2D,oBAAoBA,CAAAA,EAAY;IAC9B,MAAM+E,cAAc,GAAG,IAAI,CAAC1nB,SAAS,CAACzP,QAAQ;IAE9C,IAAIm3B,cAAc,IAAI,CAAC,IAAI,CAACjoD,KAAK,CAAChB,UAAU,EAAE;MAC5C,IAAI,CAACxQ,KAAK,CAACkmC,gBAAgB,GAAG,IAAI;IACpC;IAEA,OAAOuzB,cAAc;EACvB;EAIA9E,UAAUA,CAAex2D,QAAkB,EAAqB;IAC9D,MAAMhY,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAAoBxf,QAAQ,CAAC;IAE1D,IAAI,CAAC8zC,eAAe,CAACvC,+BAA+B,CAClDx5C,MAAM,CAACrP,8BAA8B,EACrCV,IACF,CAAC;IAED,IAAI,IAAI,CAAC4xB,GAAG,CAAA,EAAQ,CAAC,EAAE;MACrB,IAAI,CAAC5Y,KAAK,CAACjJ,MAAM,CAAC1I,iBAAiB,EAAErH,IAAI,CAAC;IAC5C;IAEA,IACE,CAAC,IAAI,CAACqrB,KAAK,CAAChB,UAAU,IACtB,EAAE,IAAI,CAACjY,WAAW,IAAwC,CAAC,EAC3D;MACA,IAAI,IAAI,CAAC66D,6BAA6B,EAAE,EAAE;QACxC,IAAI,CAACvwB,2BAA2B,GAAG,IAAI;MACzC,CAAC,MAAM;QACL,IAAI,CAACD,iBAAiB,GAAG,IAAI;MAC/B;IACF;IAEA,IAAI,CAAC,IAAI,CAAC5iC,KAAK,CAACgmC,SAAS,EAAE;MACzB7/C,IAAI,CAACoP,QAAQ,GAAG,IAAI,CAAC2rD,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;IAClD;IAEA,OAAO,IAAI,CAAC3jD,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAEAitE,6BAA6BA,CAAAA,EAAY;IACvC,IAAI,IAAI,CAAC5iB,qBAAqB,EAAE,EAAE,OAAO,IAAI;IAC7C,MAAM;MAAEpqD;KAAM,GAAG,IAAI,CAAC4Z,KAAK;IAC3B,OAGE5Z,IAAI,KAAe,EAAA,IACnBA,IAAI,KAAA,EAAc,IAClBA,IAAI,KAAA,CAAgB,IACpBunB,eAAe,CAACvnB,IAAI,CAAC,IACpBA,IAAI,QAAW,IAAI,CAAC,IAAI,CAAC4Z,KAAK,CAACohB,WAAY,IAG5Ch7B,IAAI,QAAc,IAClBA,IAAI,KAAa,EAAA,IAGhB,IAAI,CAAC4X,SAAS,CAAC,aAAa,CAAC,IAAI5X,IAAI,KAAA,EAAA;EAE1C;EAIA6sE,UAAUA,CAAe90D,QAAkB,EAAqB;IAC9D,MAAMhY,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAAoBxf,QAAQ,CAAC;IAE1D,IAAI,CAAC8zC,eAAe,CAACvC,+BAA+B,CAClDx5C,MAAM,CAAC5E,gBAAgB,EACvBnL,IACF,CAAC;IAED,IAAIuzE,UAAU,GAAG,KAAK;IACtB,IAAInkE,QAA6B,GAAG,IAAI;IACxC,IAAI,CAAC,IAAI,CAACi7C,qBAAqB,EAAE,EAAE;MACjCkpB,UAAU,GAAG,IAAI,CAAC3hD,GAAG,GAAQ,CAAC;MAC9B,QAAQ,IAAI,CAAC/X,KAAK,CAAC5Z,IAAI;QACrB,KAAA,EAAA;QACA,KAAA,GAAA;QACA,KAAA,CAAA;QACA,KAAA,EAAA;QACA,KAAA,CAAA;QACA,KAAA,CAAA;QACA,KAAA,EAAA;QACA,KAAA,EAAA;UAIE,IAAI,CAACszE,UAAU,EAAE;QAEnB;UACEnkE,QAAQ,GAAG,IAAI,CAAC8sB,gBAAgB,EAAE;MACtC;IACF;IACAl8B,IAAI,CAACwzE,QAAQ,GAAGD,UAAU;IAC1BvzE,IAAI,CAACoP,QAAQ,GAAGA,QAAQ;IACxB,OAAO,IAAI,CAACgI,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAGA4vE,eAAeA,CAEb5vE,IAAgC,EACZ;IACpB,IAAI,CAACwpB,IAAI,CAAA,CAAE;IACXxpB,IAAI,CAACsZ,MAAM,GAAG,IAAI,CAAC8iB,uBAAuB,EAAE;IAC5Cp8B,IAAI,CAAC0R,OAAO,GAAG,IAAI;IACnB,IAAI,IAAI,CAACkgB,GAAG,CAAA,EAAS,CAAC,EAAE;MACtB,IAAI,CAAC,IAAI,CAACI,KAAK,CAAA,EAAU,CAAC,EAAE;QAC1BhyB,IAAI,CAAC0R,OAAO,GAAG,IAAI,CAAC0qB,uBAAuB,EAAE;QAC7C,IAAI,IAAI,CAACxK,GAAG,CAAA,EAAS,CAAC,EAAE;UACtB,IAAI,CAAC29C,2BAA2B,CAACvvE,IAAI,CAAC0R,OAAO,CAAC;UAC9C,IAAI,CAAC,IAAI,CAACsgB,KAAK,CAAA,EAAU,CAAC,EAAE;YAG1B,GAAG;cACD,IAAI,CAACoK,uBAAuB,CAAA,CAAE;YAChC,CAAC,QAAQ,IAAI,CAACxK,GAAG,CAAS,EAAA,CAAC,IAAI,CAAC,IAAI,CAACI,KAAK,CAAA,EAAU,CAAC;YAErD,IAAI,CAAChZ,KAAK,CAACjJ,MAAM,CAACzM,eAAe,EAAEtD,IAAI,CAAC;UAC1C;QACF;MACF,CAAC,MAAM;QACL,IAAI,CAACuvE,2BAA2B,CAACvvE,IAAI,CAACsZ,MAAM,CAAC;MAC/C;IACF;IACA,IAAI,CAACiY,MAAM,CAAA,EAAU,CAAC;IACtB,OAAO,IAAI,CAACna,UAAU,CAACpX,IAAI,EAAE,kBAAkB,CAAC;EAClD;EAKAstE,4BAA4BA,CAAC3uC,IAAkB,EAAEqiC,YAAsB,EAAE;IAEvE,IAAI,IAAI,CAACnpD,SAAS,CAAC,CAAC,kBAAkB,EAAE;MAAEytC,QAAQ,EAAE;IAAS,CAAA,CAAC,CAAC,EAAE;MAC/D,IAAI3mB,IAAI,CAAC1+B,IAAI,KAAK,oBAAoB,EAAE;QAGtC,IAAI,CAAC+Y,KAAK,CAACjJ,MAAM,CAAC7C,8BAA8B,EAAG8zD,YAAY,CAAC;MAClE;IACF;EACF;EAEAgN,6BAA6BA,CAACyF,SAAuB,EAAEz7D,QAAkB,EAAE;IACzE,IAAI,IAAI,CAAC07D,iBAAiB,CAACD,SAAS,CAAC,EAAE;MACrC,MAAM9/C,QAAQ,GAAG,IAAI,CAAC6D,WAAW,CAAyBxf,QAAQ,CAAC;MACnE2b,QAAQ,CAACva,MAAM,GAAGq6D,SAAS;MAC3B,OAAO,IAAI,CAACr8D,UAAU,CAACuc,QAAQ,EAAE,sBAAsB,CAAC;IAC1D,CAAC,MAAM;MACL,MAAMA,QAAQ,GAAG,IAAI,CAAC6D,WAAW,CAA4Bxf,QAAQ,CAAC;MACtE,IAAI,CAAC27D,kCAAkC,CAAC37D,QAAQ,CAAC;MACjD2b,QAAQ,CAAC/f,UAAU,GAAG6/D,SAAS;MAC/B,OAAO,IAAI,CAACr8D,UAAU,CAACuc,QAAQ,EAAE,yBAAyB,CAAC;IAC7D;EACF;EAEA+/C,iBAAiBA,CAAC9/D,UAAwB,EAAW;IACnD,QAAQA,UAAU,CAAC3T,IAAI;MACrB,KAAK,kBAAkB;QACrB,OACE,CAAC2T,UAAU,CAACsD,QAAQ,IAAI,IAAI,CAACw8D,iBAAiB,CAAC9/D,UAAU,CAAC/B,MAAM,CAAC;MAErE,KAAK,YAAY;QACf,OAAO,IAAI;MACb;QACE,OAAO,KAAK;IAChB;EACF;EAMA8hE,kCAAkCA,CAAC37D,QAAkB,EAAQ;IAO3D,IAAI,IAAI,CAACga,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,MAAM,IAAI,CAAChZ,KAAK,CAACjJ,MAAM,CAAC/C,mBAAmB,EAAG,IAAI,CAAC6M,KAAK,CAAC7B,QAAQ,CAAC;IACpE;IAGA,IAAI,CAAC,IAAI,CAACo2D,qCAAqC,EAAE,EAAE;MACjD,IAAI,CAACp1D,KAAK,CAACjJ,MAAM,CAAC5C,mBAAmB,EAAG6K,QAAQ,CAAC;IACnD;EACF;EAQA41D,uBAAuBA,CAAIgG,QAAiB,EAAK;IAC/C,MAAMC,sBAAsB,GAAG,IAAI,CAACh6D,KAAK,CAAColC,YAAY;IACtD,IAAI,CAACplC,KAAK,CAAColC,YAAY,GAAG;MAExBC,wBAAwB,EAAE,CAAC;MAE3BC,aAAa,EAAE;KAChB;IAED,IAAI;MACF,OAAOy0B,QAAQ,CAAA,CAAE;IACnB,CAAC,SAAS;MACR,IAAI,CAAC/5D,KAAK,CAAColC,YAAY,GAAG40B,sBAAsB;IAClD;EACF;EAUAC,kCAAkCA,CAAIF,QAAiB,EAAK;IAG1D,IAGE,IAAI,CAAC/7D,SAAS,CAAC,CAAC,kBAAkB,EAAE;MAAEytC,QAAQ,EAAE;IAAS,CAAA,CAAC,CAAC,EAC3D;MAEA,MAAMuuB,sBAAsB,GAAG,IAAI,CAACh6D,KAAK,CAAColC,YAAY;MACtD,IAAI,CAACplC,KAAK,CAAColC,YAAY,GAAG;QAExBC,wBAAwB,EAAE,CAAC;QAE3BC,aAAa,EAAE;OAChB;MAED,IAAI;QACF,OAAOy0B,QAAQ,CAAA,CAAE;MACnB,CAAC,SAAS;QACR,IAAI,CAAC/5D,KAAK,CAAColC,YAAY,GAAG40B,sBAAsB;MAClD;IACF,CAAC,MAAM;MAKL,OAAOD,QAAQ,CAAA,CAAE;IACnB;EACF;EAEA9F,8BAA8BA,CAAI8F,QAAiB,EAAK;IACtD,MAAMG,0BAA0B,GAAG,IAAI,CAACl6D,KAAK,CAACgmC,SAAS;IACvD,IAAI,CAAChmC,KAAK,CAACgmC,SAAS,GAAG,IAAI;IAE3B,IAAI;MACF,OAAO+zB,QAAQ,CAAA,CAAE;IACnB,CAAC,SAAS;MACR,IAAI,CAAC/5D,KAAK,CAACgmC,SAAS,GAAGk0B,0BAA0B;IACnD;EACF;EAEApH,UAAUA,CAAIiH,QAAiB,EAAK;IAClC,MAAMrhE,KAAK,GAAG,IAAI,CAACq5C,SAAS,CAAC1P,YAAY,CAAA,CAAE;IAC3C,MAAM83B,cAAc,GAAGC,IAAqB,CAAC1hE,KAAK;IAClD,IAAIyhE,cAAc,EAAE;MAClB,IAAI,CAACpoB,SAAS,CAACzgC,KAAK,CAAC5Y,KAAK,IAAqB,CAAC;MAChD,IAAI;QACF,OAAOqhE,QAAQ,CAAA,CAAE;MACnB,CAAC,SAAS;QACR,IAAI,CAAChoB,SAAS,CAACxgC,IAAI,EAAE;MACvB;IACF;IACA,OAAOwoD,QAAQ,CAAA,CAAE;EACnB;EAEAnH,aAAaA,CAAImH,QAAiB,EAAK;IACrC,MAAMrhE,KAAK,GAAG,IAAI,CAACq5C,SAAS,CAAC1P,YAAY,CAAA,CAAE;IAC3C,MAAMg4B,gBAAgB,GAAGD,IAAqB1hE,KAAK;IACnD,IAAI2hE,gBAAgB,EAAE;MACpB,IAAI,CAACtoB,SAAS,CAACzgC,KAAK,CAAC5Y,KAAK,GAAG,EAAmB,CAAC;MACjD,IAAI;QACF,OAAOqhE,QAAQ,CAAA,CAAE;MACnB,CAAC,SAAS;QACR,IAAI,CAAChoB,SAAS,CAACxgC,IAAI,EAAE;MACvB;IACF;IACA,OAAOwoD,QAAQ,CAAA,CAAE;EACnB;EAIAhD,sBAAsBA,CAAAA,EAAS;IAC7B,IAAI,CAAC/2D,KAAK,CAAColC,YAAY,CAACE,aAAa,GAAG,CAAC;EAC3C;EAEAwxB,uCAAuCA,CAAAA,EAAY;IACjD,OAAO,IAAI,CAAC92D,KAAK,CAAColC,YAAY,CAACC,wBAAwB,IAAI,CAAC;EAC9D;EAEAkvB,qCAAqCA,CAAAA,EAAY;IAC/C,OACE,IAAI,CAACv0D,KAAK,CAAColC,YAAY,CAACE,aAAa,IAAI,IAAI,IAC7C,IAAI,CAACtlC,KAAK,CAAColC,YAAY,CAACE,aAAa,IAAI,CAAC;EAE9C;EAEA4uB,uBAAuBA,CAAeV,IAAY,EAAgB;IAChE,MAAMr1D,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;IAEpC,IAAI,CAAC6B,KAAK,CAACmlC,gBAAgB,GAAG,IAAI,CAACnlC,KAAK,CAACjc,KAAK;IAC9C,MAAM0xE,6BAA6B,GAAG,IAAI,CAACz1D,KAAK,CAACimC,0BAA0B;IAC3E,IAAI,CAACjmC,KAAK,CAACimC,0BAA0B,GAAG,IAAI;IAE5C,MAAMq0B,GAAG,GAAG,IAAI,CAACpT,WAAW,CAC1B,IAAI,CAACoM,wBAAwB,EAAE,EAC/Bn1D,QAAQ,EACRq1D,IACF,CAAC;IAED,IAAI,CAACxzD,KAAK,CAACimC,0BAA0B,GAAGwvB,6BAA6B;IAErE,OAAO6E,GAAG;EACZ;EAGA/D,qBAAqBA,CAAAA,EAAmC;IACtD,IAAI,CAACprB,YAAY,CAAC,cAAc,CAAC;IACjC,MAAMhlD,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAsB;IACjD,IAAI,CAAC0S,IAAI,CAAA,CAAE;IACX,IAAI,CAAC,IAAI,CAACwI,KAAK,CAAA,CAAU,CAAC,EAAE;MAC1B,IAAI,CAAChtB,UAAU,CAAC,IAAI,GAAW,CAAC;IAClC;IAEA,MAAM2/B,OAAO,GAAG,IAAI,CAACnN,WAAW,CAAY,IAAI,CAAC3d,KAAK,CAACpG,MAAM,CAAC;IAC9D,IAAI,CAAC+V,IAAI,CAAA,CAAE;IAEX,MAAM4qD,YAAY,GAAG,IAAI,CAAC/oB,gBAAgB,CAAiB,IAAI,CAAC;IAChE,IAAI,CAACU,kBAAkB,CAAA,CAAE;IAEzB,IAAI;MACF/rD,IAAI,CAAC6V,IAAI,GAAG,IAAI,CAACw+D,YAAY,CAAC1vC,OAAO,EAAa,CAAA,EAAA,QAAQ,CAAC;IAC7D,CAAC,SAAS;MACRyvC,YAAY,EAAE;IAChB;IACA,OAAO,IAAI,CAACh9D,UAAU,CAAqBpX,IAAI,EAAE,kBAAkB,CAAC;EACtE;EAEA2tD,gBAAgBA,CAEdz1C,mBAA4C,EAC7B;IACf,IAAI,CAAC8sC,YAAY,CAAC,gBAAgB,CAAC;IACnC,MAAMhlD,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAiB;IAC5C,IAAIoB,mBAAmB,IAAI,IAAI,EAAE;MAC/BA,mBAAmB,CAACgzC,cAAc,GAAG,IAAI,CAACrxC,KAAK,CAAC7B,QAAQ;IAC1D;IACA,IAAI,CAACwR,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACpS,UAAU,CAACpX,IAAI,EAAE,aAAa,CAAC;EAC7C;EAEAsxE,oCAAoCA,CAElCryC,KAAgB,EAChB/mB,mBAAwD,EACxDgqB,cAAyB,EACzB;IACA,IAAIhqB,mBAAmB,IAAI,IAAI,IAAI,IAAI,CAAC8Z,KAAK,CAAS,EAAA,CAAC,EAAE;MACvD,MAAMsiD,QAAQ,GAAG,IAAI,CAAC/4C,iBAAiB,EAAE;MACzC,IACE+4C,QAAQ,KAAA,EAAoB,IAC5BA,QAAQ,MACLr1C,KAAK,KAAA,CAAgB,GAElBA,EAAAA,GAAAA,KAAK,MAAc,GAES,GAAA,GAAA,EAAA,CAAC,IACnCq1C,QAAQ,OAAuB,EAC/B;QAGA,OAAO,IAAI,CAACl0C,iBAAiB,CAC3B,IAAI,CAACvmB,KAAK,CAAC7B,QAAQ,EACnB,IAAI,CAAC21C,gBAAgB,CAACz1C,mBAAmB,CAC3C,CAAC;MACH;IACF;IACA,OAAO,IAAI,CAACkkB,uBAAuB,CAAClkB,mBAAmB,EAAEgqB,cAAc,CAAC;EAC1E;EAGAlC,+BAA+BA,CAE7BjoB,IAAmD,EAC7C,CAAC;AACX;ACjtGA,MAAMw8D,SAAS,GAAG;IAAEl0E,IAAI;EAA+B,CAAA;EACrDm0E,WAAW,GAAG;IAAEn0E,IAAI;GAAiC;AAkBvD,MAAMo0E,aAAa,GAAG,kBAAkB;AAExC,MAAMC,yBAAyB,GAAG,kBAAkB;AAUpD,SAASC,kBAAkBA,CACzBzjE,MAA6B,EAC7BstB,KAAa,EACbnuB,UAAkB,EAClB;EACA,KAAK,IAAI+X,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGlX,MAAM,CAAC+I,MAAM,EAAEmO,CAAC,EAAE,EAAE;IACtC,MAAMvb,KAAK,GAAGqE,MAAM,CAACkX,CAAC,CAAC;IACvB,MAAM;MAAEnoB;IAAM,CAAA,GAAG4M,KAAK;IACtB,IAAI,OAAO5M,IAAI,KAAK,QAAQ,EAAE;MAE1B,IAAIA,IAAI,QAAmB,EAAE;QAC3B,MAAM;UAAEuO,GAAG;UAAE5Q,KAAK;UAAE4P,KAAK;UAAE3P;QAAK,CAAA,GAAGgP,KAAK;QACxC,MAAM+nE,UAAU,GAAGh3E,KAAK,GAAG,CAAC;QAC5B,MAAMi3E,UAAU,GAAG72E,8BAA8B,CAACwQ,GAAG,CAAC5Q,KAAK,EAAE,CAAC,CAAC;QAC/DsT,MAAM,CAACoqC,MAAM,CACXlzB,CAAC,EACD,CAAC,EACD,IAAI26B,KAAK,CAAC;UAER9iD,IAAI,EAAEwnB,gBAAgB,CAAA,EAAQ,CAAC;UAC/Bja,KAAK,EAAE,GAAG;UACV5P,KAAK,EAAEA,KAAK;UACZC,GAAG,EAAE+2E,UAAU;UACf58D,QAAQ,EAAExJ,GAAG,CAAC5Q,KAAK;UACnB6V,MAAM,EAAEohE;QACV,CAAC,CAAC,EACF,IAAI9xB,KAAK,CAAC;UAER9iD,IAAI,EAAEwnB,gBAAgB,CAAA,GAAQ,CAAC;UAC/Bja,KAAK,EAAEA,KAAK;UACZ5P,KAAK,EAAEg3E,UAAU;UACjB/2E,GAAG,EAAEA,GAAG;UACRma,QAAQ,EAAE68D,UAAU;UACpBphE,MAAM,EAAEjF,GAAG,CAAC3Q;QACb,CAAA,CACH,CAAC;QACDuqB,CAAC,EAAE;QACH;MACF;MAEA,IAAIZ,eAAe,CAACvnB,IAAI,CAAC,EAAE;QACzB,MAAM;UAAEuO,GAAG;UAAE5Q,KAAK;UAAE4P,KAAK;UAAE3P;QAAK,CAAA,GAAGgP,KAAK;QACxC,MAAMioE,YAAY,GAAGl3E,KAAK,GAAG,CAAC;QAC9B,MAAMm3E,eAAe,GAAG/2E,8BAA8B,CAACwQ,GAAG,CAAC5Q,KAAK,EAAE,CAAC,CAAC;QACpE,IAAIo3E,UAAU;QACd,IAAIx2C,KAAK,CAACC,UAAU,CAAC7gC,KAAK,GAAGyS,UAAU,CAAC,KAAA,EAA0B,EAAE;UAClE2kE,UAAU,GAAG,IAAIjyB,KAAK,CAAC;YAErB9iD,IAAI,EAAEwnB,gBAAgB,CAAA,EAAa,CAAC;YACpCja,KAAK,EAAE,GAAG;YACV5P,KAAK,EAAEA,KAAK;YACZC,GAAG,EAAEi3E,YAAY;YACjB98D,QAAQ,EAAExJ,GAAG,CAAC5Q,KAAK;YACnB6V,MAAM,EAAEshE;UACV,CAAC,CAAC;QACJ,CAAC,MAAM;UACLC,UAAU,GAAG,IAAIjyB,KAAK,CAAC;YAErB9iD,IAAI,EAAEwnB,gBAAgB,CAAA,CAAU,CAAC;YACjCja,KAAK,EAAE,GAAG;YACV5P,KAAK,EAAEA,KAAK;YACZC,GAAG,EAAEi3E,YAAY;YACjB98D,QAAQ,EAAExJ,GAAG,CAAC5Q,KAAK;YACnB6V,MAAM,EAAEshE;UACV,CAAC,CAAC;QACJ;QACA,IAAIE,aAAa,EACfC,kBAAkB,EAClBC,qBAAqB,EACrBC,QAAQ;QACV,IAAIn1E,IAAI,OAAoB,EAAE;UAE5Bi1E,kBAAkB,GAAGr3E,GAAG,GAAG,CAAC;UAC5Bs3E,qBAAqB,GAAGn3E,8BAA8B,CAACwQ,GAAG,CAAC3Q,GAAG,EAAE,CAAC,CAAC,CAAC;UACnEo3E,aAAa,GAAGznE,KAAK,KAAK,IAAI,GAAG,IAAI,GAAGA,KAAK,CAAC43B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;UAC1DgwC,QAAQ,GAAG,IAAIryB,KAAK,CAAC;YAEnB9iD,IAAI,EAAEwnB,gBAAgB,CAAA,EAAa,CAAC;YACpCja,KAAK,EAAE,GAAG;YACV5P,KAAK,EAAEs3E,kBAAkB;YACzBr3E,GAAG,EAAEA,GAAG;YACRma,QAAQ,EAAEm9D,qBAAqB;YAC/B1hE,MAAM,EAAEjF,GAAG,CAAC3Q;UACd,CAAC,CAAC;QACJ,CAAC,MAAM;UAELq3E,kBAAkB,GAAGr3E,GAAG,GAAG,CAAC;UAC5Bs3E,qBAAqB,GAAGn3E,8BAA8B,CAACwQ,GAAG,CAAC3Q,GAAG,EAAE,CAAC,CAAC,CAAC;UACnEo3E,aAAa,GAAGznE,KAAK,KAAK,IAAI,GAAG,IAAI,GAAGA,KAAK,CAAC43B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;UAC1DgwC,QAAQ,GAAG,IAAIryB,KAAK,CAAC;YAEnB9iD,IAAI,EAAEwnB,gBAAgB,CAAA,EAAgB,CAAC;YACvCja,KAAK,EAAE,IAAI;YACX5P,KAAK,EAAEs3E,kBAAkB;YACzBr3E,GAAG,EAAEA,GAAG;YACRma,QAAQ,EAAEm9D,qBAAqB;YAC/B1hE,MAAM,EAAEjF,GAAG,CAAC3Q;UACd,CAAC,CAAC;QACJ;QACAqT,MAAM,CAACoqC,MAAM,CACXlzB,CAAC,EACD,CAAC,EACD4sD,UAAU,EACV,IAAIjyB,KAAK,CAAC;UAER9iD,IAAI,EAAEwnB,gBAAgB,CAAA,EAAY,CAAC;UACnCja,KAAK,EAAEynE,aAAa;UACpBr3E,KAAK,EAAEk3E,YAAY;UACnBj3E,GAAG,EAAEq3E,kBAAkB;UACvBl9D,QAAQ,EAAE+8D,eAAe;UACzBthE,MAAM,EAAE0hE;SACT,CAAC,EACFC,QACF,CAAC;QACDhtD,CAAC,IAAI,CAAC;QACN;MACF;MAGFvb,KAAK,CAAC5M,IAAI,GAAGwnB,gBAAgB,CAACxnB,IAAI,CAAC;IACrC;EACF;EACA,OAAOiR,MAAM;AACf;AACe,MAAemkE,eAAe,SAASlJ,gBAAgB,CAAC;EAQrEznC,aAAaA,CAEXvyB,IAAoB,EACpBwyB,OAA0B,EAClB;IACRxyB,IAAI,CAACwyB,OAAO,GAAG,IAAI,CAAC0vC,YAAY,CAC9B1vC,OAAO,EAEP,GAAA,EAAA,IAAI,CAACjzB,OAAO,CAACxB,UAAU,KAAK,QAAQ,GAAG,QAAQ,GAAG,QACpD,CAAC;IACDiC,IAAI,CAACirC,QAAQ,GAAG,IAAI,CAACA,QAAQ;IAE7B,IAAI,IAAI,CAAChrC,WAAW,MAAqB,EAAE;MACzCD,IAAI,CAACjB,MAAM,GAAGyjE,kBAAkB,CAC9B,IAAI,CAACzjE,MAAM,EACX,IAAI,CAACstB,KAAK,EACV,IAAI,CAACnuB,UACP,CAAC;IACH;IAEA,OAAO,IAAI,CAAC+G,UAAU,CAACjF,IAAI,EAAE,MAAM,CAAC;EACtC;EAEAkiE,YAAYA,CAEV1vC,OAA0B,EAC1B9mC,GAAc,EACdqS,UAAsB,EACX;IACXy0B,OAAO,CAACz0B,UAAU,GAAGA,UAAU;IAC/By0B,OAAO,CAAC2wC,WAAW,GAAG,IAAI,CAACC,yBAAyB,EAAE;IACtD,IAAI,CAACjgE,cAAc,CAACqvB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE9mC,GAAG,CAAC;IAC7C,IAAI,IAAI,CAACmrB,QAAQ,EAAE;MACjB,IACE,EAAE,IAAI,CAAC5W,WAAW,KAAqC,CAAC,IACxD,IAAI,CAACiZ,KAAK,CAACnB,gBAAgB,CAAC07B,IAAI,GAAG,CAAC,EACpC;QACA,KAAK,MAAM,CAACnjD,SAAS,EAAE0c,EAAE,CAAC,IAAI9P,KAAK,CAAC+4C,IAAI,CAAC,IAAI,CAAC/8B,KAAK,CAACnB,gBAAgB,CAAC,EAAE;UACrE,IAAI,CAAClR,KAAK,CAACjJ,MAAM,CAAChJ,qBAAqB,EAAEoY,EAAE,EAAE;YAAE1c;UAAU,CAAC,CAAC;QAC7D;MACF;MACA,IAAI,CAACwnD,QAAQ,CAACtlB,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC9qB,KAAK,CAACkmC,gBAAgB,CAAC;IACtE;IACA,IAAIy1B,eAA0B;IAC9B,IAAI33E,GAAG,QAAW,EAAE;MAElB23E,eAAe,GAAG,IAAI,CAACp+D,UAAU,CAACutB,OAAO,EAAE,SAAS,CAAC;IACvD,CAAC,MAAM;MAEL6wC,eAAe,GAAG,IAAI,CAAC3hE,YAAY,CACjC8wB,OAAO,EACP,SAAS,EACT3mC,8BAA8B,CAAC,IAAI,CAAC6b,KAAK,CAAC7B,QAAQ,EAAE,CAAC,CAAC,CACxD,CAAC;IACH;IACA,OAAOw9D,eAAe;EACxB;EAKAC,eAAeA,CAACrhE,IAA2B,EAAe;IACxD,MAAML,SAAS,GAAG,IAAI,CAACC,UAAU,CAACI,IAAI,EAAE,WAAW,CAAC;IAEpD,MAAMshE,gBAAgB,GAAG,IAAI,CAAC1hE,UAAU,CACtCI,IAAI,CAACR,UAAU,EACf,kBACF,CAAC;IACD,MAAMO,eAAe,GAAGuhE,gBAAgB,CAACloE,KAAK;IAC9C,MAAMyG,GAAG,GAAG,IAAI,CAACuqB,KAAK,CAAC4G,KAAK,CAC1B,IAAI,CAACrI,iBAAiB,CAAC24C,gBAAgB,CAAC93E,KAAK,CAAC,EAC9C,IAAI,CAACm/B,iBAAiB,CAAC24C,gBAAgB,CAAC73E,GAAG,CAC7C,CAAC;IACD,MAAMizB,GAAG,GAAI4kD,gBAAgB,CAACloE,KAAK,GAAGyG,GAAG,CAACmxB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE;IAEvD,IAAI,CAAC6kB,QAAQ,CAACyrB,gBAAgB,EAAE,KAAK,EAAEzhE,GAAG,CAAC;IAC3C,IAAI,CAACg2C,QAAQ,CAACyrB,gBAAgB,EAAE,UAAU,EAAE5kD,GAAG,CAAC;IAChD,IAAI,CAACm5B,QAAQ,CAACyrB,gBAAgB,EAAE,iBAAiB,EAAEvhE,eAAe,CAAC;IAEnEJ,SAAS,CAACvG,KAAK,GAAGkoE,gBAAgB;IAElC,OAAOthE,IAAI,CAACR,UAAU;IAEtB,OAAOG,SAAS;EAClB;EAEAwhE,yBAAyBA,CAAAA,EAAkC;IACzD,IAAI,CAAC,IAAI,CAACvjD,KAAK,CAAA,EAAwB,CAAC,EAAE;MACxC,OAAO,IAAI;IACb;IAEA,MAAMhyB,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAA0B;IACrD9W,IAAI,CAACwN,KAAK,GAAG,IAAI,CAACqM,KAAK,CAACrM,KAAK;IAC7B,IAAI,CAACgc,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACpS,UAAU,CAACpX,IAAI,EAAE,sBAAsB,CAAC;EACtD;EAEAg0B,KAAKA,CAAAA,EAAY;IACf,IAAI,CAAC,IAAI,CAACZ,YAAY,CAAA,GAAQ,CAAC,EAAE;MAC/B,OAAO,KAAK;IACd;IACA,OAAO,IAAI,CAACuiD,uBAAuB,EAAE;EACvC;EAEAxW,OAAOA,CAAAA,EAAY;IACjB,IAAI,CAAC,IAAI,CAAC/rC,YAAY,CAAA,GAAU,CAAC,EAAE;MACjC,OAAO,KAAK;IACd;IACA,OAAO,IAAI,CAAC6uC,+BAA+B,EAAE;EAC/C;EAEA2T,UAAUA,CAAAA,EAAY;IACpB,IAAI,CAAC,IAAI,CAACxiD,YAAY,CAAA,GAAU,CAAC,EAAE;MACjC,OAAO,KAAK;IACd;IACA,MAAM5J,IAAI,GAAG,IAAI,CAACw6B,oBAAoB,EAAE;IACxC,MAAM1oB,MAAM,GAAG,IAAI,CAAC+d,cAAc,CAAC7vB,IAAI,CAAC;IACxC,IAAI,IAAI,CAAC0gC,oBAAoB,CAAC1gC,IAAI,EAAE,IAAI,CAAC,EAAE;MACzC,MAAMqsD,eAAe,GAAG,IAAI,CAAC9xB,sBAAsB,CAACv6B,IAAI,GAAG,CAAC,CAAC;MAG7D,IACEqsD,eAAe,OAAuB,IACtCA,eAAe,OAAoB,IAEnCA,eAAe,OAAwB,EACvC;QACA,OAAO,KAAK;MACd;IACF;IACA,IACE,IAAI,CAACnN,yBAAyB,CAACptC,MAAM,EAAE9R,IAAI,CAAC,IAC5C,IAAI,CAAC0gC,oBAAoB,CAAC1gC,IAAI,EAAE,MAAM,CAAC,EACvC;MACA,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;EAEAy4C,+BAA+BA,CAAAA,EAAY;IACzC,MAAMz4C,IAAI,GAAG,IAAI,CAACw6B,oBAAoB,EAAE;IACxC,MAAM1oB,MAAM,GAAG,IAAI,CAAC+d,cAAc,CAAC7vB,IAAI,CAAC;IACxC,OAAO,IAAI,CAACk/C,yBAAyB,CAACptC,MAAM,EAAE9R,IAAI,CAAC;EACrD;EAEA41C,YAAYA,CAAAA,EAAY;IACtB,IAAI,CAAC,IAAI,CAAChsC,YAAY,CAAA,EAAU,CAAC,EAAE;MACjC,OAAO,KAAK;IACd;IACA,IAAI5J,IAAI,GAAG,IAAI,CAACw6B,oBAAoB,EAAE;IACtC,IAAI,IAAI,CAACkG,oBAAoB,CAAC1gC,IAAI,EAAE,OAAO,CAAC,EAAE;MAC5CA,IAAI,GAAG,IAAI,CAACy6B,yBAAyB,CAACz6B,IAAI,GAAG,CAAC,CAAC;MAC/C,MAAM8R,MAAM,GAAG,IAAI,CAAC+d,cAAc,CAAC7vB,IAAI,CAAC;MACxC,IAAI,IAAI,CAACk/C,yBAAyB,CAACptC,MAAM,EAAE9R,IAAI,CAAC,EAAE;QAChD,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd;EAEAk/C,yBAAyBA,CAAC7nC,EAAU,EAAEjyB,GAAW,EAAE;IACjD,IAAIyZ,iBAAiB,CAACwY,EAAE,CAAC,EAAE;MACzB6zC,yBAAyB,CAAC5wB,SAAS,GAAGl1C,GAAG;MACzC,IAAI8lE,yBAAyB,CAACpsD,IAAI,CAAC,IAAI,CAACkW,KAAK,CAAC,EAAE;QAG9C,MAAMiqC,KAAK,GAAG,IAAI,CAACpvB,cAAc,CAACq7B,yBAAyB,CAAC5wB,SAAS,CAAC;QACtE,IAAI,CAACt7B,gBAAgB,CAACigD,KAAK,CAAC,IAAIA,KAAK,OAAwB,EAAE;UAC7D,OAAO,KAAK;QACd;MACF;MACA,OAAO,IAAI;IACb,CAAC,MAAM,IAAI5nC,EAAE,KAAA,EAAwB,EAAE;MACrC,OAAO,IAAI;IACb,CAAC,MAAM;MACL,OAAO,KAAK;IACd;EACF;EAEAi1C,sBAAsBA,CAACj1C,EAAU,EAAE;IACjC,OACEA,EAAE,KAAA,EAAgC,IAAIA,EAAE,KAA6B,GAAA;EAEzE;EAMA80C,uBAAuBA,CAAAA,EAAY;IACjC,MAAMnsD,IAAI,GAAG,IAAI,CAAC+d,cAAc,EAAE;IAClC,MAAMjM,MAAM,GAAG,IAAI,CAAC+d,cAAc,CAAC7vB,IAAI,CAAC;IACxC,OACE,IAAI,CAACssD,sBAAsB,CAACx6C,MAAM,CAAC,IACnC,IAAI,CAACotC,yBAAyB,CAACptC,MAAM,EAAE9R,IAAI,CAAC;EAEhD;EAOAusD,0CAA0CA,CAAAA,EAAY;IACpD,MAAMvsD,IAAI,GAAG,IAAI,CAACw6B,oBAAoB,EAAE;IACxC,MAAM1oB,MAAM,GAAG,IAAI,CAAC+d,cAAc,CAAC7vB,IAAI,CAAC;IACxC,OACE8R,MAAM,KAA6B,GAAA,IACnC,IAAI,CAACotC,yBAAyB,CAACptC,MAAM,EAAE9R,IAAI,CAAC;EAEhD;EAEAwsD,WAAWA,CAAAA,EAAY;IACrB,OACE,CAAC,IAAI,CAAC3qD,KAAK,CAACrC,QAAQ,IAAI,CAAC,IAAI,CAACqC,KAAK,CAAClB,UAAU,KAC9C,CAAC,IAAI,CAACkB,KAAK,CAACN,mBAAmB;EAEnC;EAGAkrD,eAAeA,CAAAA,EAAe;IAC5B,OAAO,IAAI,CAACr7C,kBAAkB,CAC5Bs7C,KACqC,IACQ,IAI/C,CAAC;EACH;EAGAC,sBAAsBA,CAAAA,EAAe;IACnC,OAAO,IAAI,CAACv7C,kBAAkB,CAC5Bs7C,KAC6C,IAC1C,CAAC,IAAI,CAACxkE,OAAO,CAACH,MAAM,IAAI,IAAI,CAACsI,KAAK,CAAC6O,MAAM,GACtC,CAAC,IACsC,CAC/C,CAAC;EACH;EAEAkhD,+CAA+CA,CAE7CwM,oBAA6B,GAAG,KAAK,EACrC;IACA,IAAI7jE,KAAyB,IAAmC;IAChE,IAAI,IAAI,CAACb,OAAO,CAACH,MAAM,IAAI,CAAC,IAAI,CAACsI,KAAK,CAAC6O,MAAM,EAAE;MAC7CnW,KAAK,KAA+C;MACpD,IAAI6jE,oBAAoB,EAAE;QACxB7jE,KAAK,KAA2C;MAClD;IACF;IACA,OAAO,IAAI,CAACqoB,kBAAkB,CAACroB,KAAK,CAAC;EACvC;EASA8jE,cAAcA,CAAAA,EAAe;IAC3B,OAAO,IAAI,CAACz7C,kBAAkB,EAAiC,CAAC;EAClE;EAIAA,kBAAkBA,CAEhBroB,KAAyB,EAOA;IACzB,IAAIoH,UAAgC,GAAG,IAAI;IAE3C,IAAI,IAAI,CAACqY,KAAK,CAAA,EAAM,CAAC,EAAE;MACrBrY,UAAU,GAAG,IAAI,CAACo2D,eAAe,CAAC,IAAI,CAAC;IACzC;IACA,OAAO,IAAI,CAACjO,qBAAqB,CAACvvD,KAAK,EAAEoH,UAAU,CAAC;EACtD;EAEAmoD,qBAAqBA,CAEnBvvD,KAAyB,EACzBoH,UAAiC,EACpB;IACb,MAAMmlD,SAAS,GAAG,IAAI,CAACjlD,KAAK,CAAC5Z,IAAI;IACjC,MAAMD,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAE;IAC7B,MAAMw/D,gBAAgB,GAAG,CAAC,EAAE/jE,KAAK,IAAsC,CAAC;IACxE,MAAMgkE,wBAAwB,GAAG,CAAC,EAChChkE,KAAK,IAA8C,CACpD;IACD,MAAMiD,QAAQ,GAAGjD,KAAK,IAAuC;IAM7D,QAAQusD,SAAS;MACf,KAAA,EAAA;QACE,OAAO,IAAI,CAAC0X,2BAA2B,CAACx2E,IAAI,EAAgB,IAAI,CAAC;MACnE,KAAA,EAAA;QACE,OAAO,IAAI,CAACw2E,2BAA2B,CAACx2E,IAAI,EAAgB,KAAK,CAAC;MACpE,KAAA,EAAA;QACE,OAAO,IAAI,CAACy2E,sBAAsB,CAACz2E,IAAmC,CAAC;MACzE,KAAA,EAAA;QACE,OAAO,IAAI,CAAC02E,qBAAqB,CAAC12E,IAAkC,CAAC;MACvE,KAAA,EAAA;QACE,OAAO,IAAI,CAAC22E,iBAAiB,CAAC32E,IAA8B,CAAC;MAC/D,KAAA,EAAA;QACE,IAAI,IAAI,CAACu7B,iBAAiB,EAAE,OAAkB,EAAE;QAChD,IAAI,CAACg7C,wBAAwB,EAAE;UAC7B,IAAI,CAACv9D,KAAK,CACR,IAAI,CAACa,KAAK,CAAC6O,MAAM,GACb3Y,MAAM,CAACnE,cAAc,GACrB,IAAI,CAAC8F,OAAO,CAACH,MAAM,GACjBxB,MAAM,CAAC3H,oBAAoB,GAC3B2H,MAAM,CAAC5H,cAAc,EAC3B,IAAI,CAAC0R,KAAK,CAAC7B,QACb,CAAC;QACH;QACA,OAAO,IAAI,CAACgnD,sBAAsB,CAChCh/D,IAAI,EACJ,KAAK,EACL,CAACs2E,gBAAgB,IAAIC,wBACvB,CAAC;MACH,KAAA,EAAA;QACE,IAAI,CAACD,gBAAgB,EAAE,IAAI,CAACtxE,UAAU,EAAE;QACxC,OAAO,IAAI,CAACi6D,UAAU,CACpB,IAAI,CAACkF,mBAAmB,CACtBxqD,UAAU,EACV3Z,IACF,CAAC,EACD,IACF,CAAC;MAEH,KAAA,EAAA;QACE,OAAO,IAAI,CAAC42E,gBAAgB,CAAC52E,IAA6B,CAAC;MAC7D,KAAA,EAAA;QACE,OAAO,IAAI,CAAC62E,oBAAoB,CAAC72E,IAAiC,CAAC;MACrE,KAAA,EAAA;QACE,OAAO,IAAI,CAAC82E,oBAAoB,CAAC92E,IAAiC,CAAC;MACrE,KAAA,EAAA;QACE,OAAO,IAAI,CAAC+2E,mBAAmB,CAAC/2E,IAAgC,CAAC;MACnE,KAAA,EAAA;QACE,OAAO,IAAI,CAACg3E,iBAAiB,CAACh3E,IAA8B,CAAC;MAE/D,KAAA,EAAA;QAEE,IAAI,IAAI,CAACo/D,YAAY,EAAE,EAAE;UACvB,IAAI,CAAC,IAAI,CAAC4W,WAAW,EAAE,EAAE;YACvB,IAAI,CAACh9D,KAAK,CAACjJ,MAAM,CAAClG,0BAA0B,EAAE7J,IAAI,CAAC;UACrD,CAAC,MAAM,IAAI,CAACs2E,gBAAgB,EAAE;YAC5B,IAAI,CAACt9D,KAAK,CAACjJ,MAAM,CAAC3G,4BAA4B,EAAEpJ,IAAI,CAAC;WACtD,MAAM,IAAI,CAAC,IAAI,CAACuuE,oBAAoB,EAAE,EAAE;YACvC,IAAI,CAACv1D,KAAK,CAACjJ,MAAM,CAACpP,2BAA2B,EAAEX,IAAI,CAAC;UACtD;UACA,IAAI,CAACwpB,IAAI,CAAA,CAAE;UACX,OAAO,IAAI,CAAC01C,iBAAiB,CAC3Bl/D,IAAI,EACJ,aACF,CAAC;QACH;QACA;MACF,KAAA,GAAA;QAEE,IACE,IAAI,CAAC6Z,KAAK,CAACohB,WAAW,IACtB,CAAC,IAAI,CAAC86C,0CAA0C,CAAA,CAAE,EAClD;UACA;QACF;QACA,IAAI,CAAC,IAAI,CAACC,WAAW,EAAE,EAAE;UACvB,IAAI,CAACh9D,KAAK,CAACjJ,MAAM,CAAClG,0BAA0B,EAAE,IAAI,CAACgQ,KAAK,CAAC7B,QAAQ,CAAC;QACpE,CAAC,MAAM,IAAI,CAACs+D,gBAAgB,EAAE;UAC5B,IAAI,CAACt9D,KAAK,CAACjJ,MAAM,CAAC3G,4BAA4B,EAAE,IAAI,CAACyQ,KAAK,CAAC7B,QAAQ,CAAC;QACtE;QACA,OAAO,IAAI,CAACknD,iBAAiB,CAC3Bl/D,IAAI,EACJ,OACF,CAAC;MACH,KAAA,GAAA;QAAc;UACZ,IAAI,IAAI,CAAC6Z,KAAK,CAACohB,WAAW,EAAE;YAC1B;UACF;UAGA,MAAMzR,IAAI,GAAG,IAAI,CAAC+d,cAAc,EAAE;UAClC,MAAMjM,MAAM,GAAG,IAAI,CAAC+d,cAAc,CAAC7vB,IAAI,CAAC;UACxC,IAAI8R,MAAM,OAAgC,EAAE;YAC1C,IAAI,CAACg7C,gBAAgB,IAAI,IAAI,CAAChsB,qBAAqB,CAAE,CAAA,EAAE;YACvD,IACE,CAAC,IAAI,CAACoe,yBAAyB,CAACptC,MAAM,EAAE9R,IAAI,CAAC,IAC7C8R,MAAM,KAAA,GAA6B,EACnC;cACA;YACF;UACF;QACF;MAEA,KAAA,EAAA;QAAgB;UACd,IAAI,CAACg7C,gBAAgB,EAAE;YACrB,IAAI,CAACt9D,KAAK,CAACjJ,MAAM,CAAC3G,4BAA4B,EAAE,IAAI,CAACyQ,KAAK,CAAC7B,QAAQ,CAAC;UACtE;QACF;MAEA,KAAA,EAAA;QAAc;UACZ,MAAM3X,IAAI,GAAG,IAAI,CAACwZ,KAAK,CAACrM,KAAK;UAC7B,OAAO,IAAI,CAAC0xD,iBAAiB,CAC3Bl/D,IAAI,EACJK,IACF,CAAC;QACH;MACA,KAAA,EAAA;QACE,OAAO,IAAI,CAAC42E,mBAAmB,CAACj3E,IAAgC,CAAC;MACnE,KAAA,EAAA;QACE,OAAO,IAAI,CAACk3E,kBAAkB,CAACl3E,IAA+B,CAAC;MACjE,KAAA,CAAA;QACE,OAAO,IAAI,CAAC8pE,UAAU,EAAE;MAC1B,KAAA,EAAA;QACE,OAAO,IAAI,CAACqN,mBAAmB,CAACn3E,IAAgC,CAAC;MACnE,KAAA,EAAA;QAAiB;UACf,MAAMo3E,iBAAiB,GAAG,IAAI,CAAC77C,iBAAiB,EAAE;UAClD,IACE67C,iBAAiB,KAAA,EAA8B,IAC/CA,iBAAiB,OAAkB,EACnC;YACA;UACF;QACF;MAEA,KAAA,EAAA;QAAiB;UACf,IACE,EAAE,IAAI,CAAChlE,WAAW,IAA0C,CAAC,IAC7D,CAACoD,QAAQ,EACT;YACA,IAAI,CAACwD,KAAK,CAACjJ,MAAM,CAAC/G,sBAAsB,EAAE,IAAI,CAAC6Q,KAAK,CAAC7B,QAAQ,CAAC;UAChE;UAEA,IAAI,CAACwR,IAAI,CAAA,CAAE;UAEX,IAAI5O,MAAM;UACV,IAAIkkD,SAAS,OAAe,EAAE;YAC5BlkD,MAAM,GAAG,IAAI,CAACgZ,WAAW,CAAC5zB,IAAmC,CAAC;UAChE,CAAC,MAAM;YACL4a,MAAM,GAAG,IAAI,CAAClB,WAAW,CACvB1Z,IAAI,EAKJ2Z,UACF,CAAC;UACH;UAEA,IAAI,CAACwjB,uBAAuB,CAACviB,MAAM,CAAC;UAEpC,OAAOA,MAAM;QACf;MAEA;QAAS;UACP,IAAI,IAAI,CAACy8D,eAAe,EAAE,EAAE;YAC1B,IAAI,CAACf,gBAAgB,EAAE;cACrB,IAAI,CAACt9D,KAAK,CACRjJ,MAAM,CAACxP,qCAAqC,EAC5C,IAAI,CAACsZ,KAAK,CAAC7B,QACb,CAAC;YACH;YACA,IAAI,CAACwR,IAAI,CAAA,CAAE;YACX,OAAO,IAAI,CAACw1C,sBAAsB,CAChCh/D,IAAI,EACJ,IAAI,EACJ,CAACs2E,gBAAgB,IAAIC,wBACvB,CAAC;UACH;QACF;IACF;IAOA,MAAMe,SAAS,GAAG,IAAI,CAACz9D,KAAK,CAACrM,KAAK;IAClC,MAAMutB,IAAI,GAAG,IAAI,CAAClJ,eAAe,EAAE;IAEnC,IACEvL,iBAAiB,CAACw4C,SAAS,CAAC,IAC5B/jC,IAAI,CAAC96B,IAAI,KAAK,YAAY,IAC1B,IAAI,CAAC2xB,GAAG,CAAA,EAAS,CAAC,EAClB;MACA,OAAO,IAAI,CAAC2lD,qBAAqB,CAC/Bv3E,IAAI,EACJs3E,SAAS,EACTv8C,IAAI,EACJxoB,KACF,CAAC;IACH,CAAC,MAAM;MACL,OAAO,IAAI,CAACuoB,wBAAwB,CAClC96B,IAAI,EACJ+6B,IAAI,EACJphB,UACF,CAAC;IACH;EACF;EAEAwjB,uBAAuBA,CAACn9B,IAAY,EAAQ;IAC1C,IACE,EAAE,IAAI,CAACoS,WAAW,IAA0C,CAAC,IAC7D,CAAC,IAAI,CAAC4W,QAAQ,EACd;MACA,IAAI,CAAChQ,KAAK,CAACjJ,MAAM,CAACxR,mBAAmB,EAAEyB,IAAI,CAAC;IAC9C;EACF;EAEAw3E,6BAA6BA,CAAAA,EAAY;IACvC,IAAI,IAAI,CAAC3/D,SAAS,CAAC,mBAAmB,CAAC,EAAE,OAAO,IAAI;IACpD,OACE,IAAI,CAACA,SAAS,CAAC,YAAY,CAAC,IAC5B,IAAI,CAAC7B,eAAe,CAAC,YAAY,EAAE,wBAAwB,CAAC,KAAK,KAAK;EAE1E;EAQAmuD,mBAAmBA,CACjBsT,eAAiD,EACjDC,SAAY,EACZC,UAA0E,EACvE;IACH,IAAIF,eAAe,EAAE;MAAA,IAAAG,qBAAA;MACnB,IAAAA,CAAAA,qBAAA,GAAIF,SAAS,CAAC/9D,UAAU,KAApBi+D,IAAAA,IAAAA,qBAAA,CAAsB39D,MAAM,EAAE;QAGhC,IACE,OAAO,IAAI,CAACjE,eAAe,CACzB,YAAY,EACZ,wBACF,CAAC,KAAK,SAAS,EACf;UAIA,IAAI,CAACgD,KAAK,CACRjJ,MAAM,CAACvO,2BAA2B,EAClCk2E,SAAS,CAAC/9D,UAAU,CAAC,CAAC,CACxB,CAAC;QACH;QACA+9D,SAAS,CAAC/9D,UAAU,CAAC2jC,OAAO,CAAC,GAAGm6B,eAAe,CAAC;MAClD,CAAC,MAAM;QACLC,SAAS,CAAC/9D,UAAU,GAAG89D,eAAe;MACxC;MACA,IAAI,CAACzgE,0BAA0B,CAAC0gE,SAAS,EAAED,eAAe,CAAC,CAAC,CAAC,CAAC;MAC9D,IAAIE,UAAU,EAAE,IAAI,CAAC3gE,0BAA0B,CAAC2gE,UAAU,EAAED,SAAS,CAAC;IACxE;IACA,OAAOA,SAAS;EAClB;EAEAhU,uBAAuBA,CAAAA,EAAY;IACjC,OAAO,IAAI,CAAC1xC,KAAK,CAAA,EAAU,CAAC;EAC9B;EAEA+9C,eAAeA,CAAe8H,WAAqB,EAAiB;IAClE,MAAMl+D,UAAU,GAAG,EAAE;IACrB,GAAG;MACDA,UAAU,CAACwD,IAAI,CAAC,IAAI,CAAC6wC,cAAc,CAAE,CAAA,CAAC;IACxC,CAAC,QAAQ,IAAI,CAACh8B,KAAK,GAAM,CAAC;IAE1B,IAAI,IAAI,CAACA,KAAK,CAAA,EAAW,CAAC,EAAE;MAC1B,IAAI,CAAC6lD,WAAW,EAAE;QAChB,IAAI,CAAC7yE,UAAU,CAAA,CAAE;MACnB;MAEA,IAAI,CAAC,IAAI,CAACwyE,6BAA6B,EAAE,EAAE;QACzC,IAAI,CAACx+D,KAAK,CAACjJ,MAAM,CAACrO,oBAAoB,EAAE,IAAI,CAACmY,KAAK,CAAC7B,QAAQ,CAAC;MAC9D;KACD,MAAM,IAAI,CAAC,IAAI,CAAC0rD,uBAAuB,EAAE,EAAE;MAC1C,MAAM,IAAI,CAAC1qD,KAAK,CAACjJ,MAAM,CAAC5G,0BAA0B,EAAE,IAAI,CAAC0Q,KAAK,CAAC7B,QAAQ,CAAC;IAC1E;IAEA,OAAO2B,UAAU;EACnB;EAEAq0C,cAAcA,CAAAA,EAA4B;IACxC,IAAI,CAACrG,eAAe,CAAC,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;IAEzD,MAAM3nD,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAe;IAC1C,IAAI,CAAC0S,IAAI,CAAA,CAAE;IAEX,IAAI,IAAI,CAAC3R,SAAS,CAAC,YAAY,CAAC,EAAE;MAChC,MAAMG,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;MACpC,IAAI+iB,IAAkB;MAEtB,IAAI,IAAI,CAAC/I,KAAK,CAAA,EAAU,CAAC,EAAE;QACzB,MAAMha,QAAQ,GAAG,IAAI,CAAC6B,KAAK,CAAC7B,QAAQ;QACpC,IAAI,CAACwR,IAAI,CAAA,CAAE;QACXuR,IAAI,GAAG,IAAI,CAAClJ,eAAe,EAAE;QAC7B,IAAI,CAACN,MAAM,CAAA,EAAU,CAAC;QACtBwJ,IAAI,GAAG,IAAI,CAAC02C,eAAe,CAACz5D,QAAQ,EAAE+iB,IAAI,CAAC;QAE3C,MAAM+8C,cAAc,GAAG,IAAI,CAACj+D,KAAK,CAAC7B,QAAQ;QAC1ChY,IAAI,CAAC4T,UAAU,GAAG,IAAI,CAAC6vD,4BAA4B,CAAC1oC,IAAI,EAAE/iB,QAAQ,CAAC;QACnE,IACE,IAAI,CAAChC,eAAe,CAAC,YAAY,EAAE,wBAAwB,CAAC,KAC1D,KAAK,IACPhW,IAAI,CAAC4T,UAAU,KAAKmnB,IAAI,EACxB;UACA,IAAI,CAAC/hB,KAAK,CACRjJ,MAAM,CAACzO,oCAAoC,EAC3Cw2E,cACF,CAAC;QACH;MACF,CAAC,MAAM;QACL/8C,IAAI,GAAG,IAAI,CAAC3I,eAAe,CAAC,KAAK,CAAC;QAElC,OAAO,IAAI,CAACR,GAAG,CAAA,EAAO,CAAC,EAAE;UACvB,MAAM5xB,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAAqBxf,QAAQ,CAAC;UAC3DhY,IAAI,CAAC6R,MAAM,GAAGkpB,IAAI;UAClB,IAAI,IAAI,CAAC/I,KAAK,CAAA,GAAe,CAAC,EAAE;YAC9B,IAAI,CAACpZ,UAAU,CAACC,cAAc,CAC5B,IAAI,CAACgB,KAAK,CAACrM,KAAK,EAChB,IAAI,CAACqM,KAAK,CAAC7B,QACb,CAAC;YACDhY,IAAI,CAAC44B,QAAQ,GAAG,IAAI,CAAC7iB,gBAAgB,EAAE;UACzC,CAAC,MAAM;YACL/V,IAAI,CAAC44B,QAAQ,GAAG,IAAI,CAACxG,eAAe,CAAC,IAAI,CAAC;UAC5C;UACApyB,IAAI,CAACkX,QAAQ,GAAG,KAAK;UACrB6jB,IAAI,GAAG,IAAI,CAAC3jB,UAAU,CAACpX,IAAI,EAAE,kBAAkB,CAAC;QAClD;QAEAA,IAAI,CAAC4T,UAAU,GAAG,IAAI,CAAC6vD,4BAA4B,CAAC1oC,IAAI,EAAE/iB,QAAQ,CAAC;MACrE;IACF,CAAC,MAAM;MACLhY,IAAI,CAAC4T,UAAU,GAAG,IAAI,CAACi7D,mBAAmB,EAAE;IAC9C;IACA,OAAO,IAAI,CAACz3D,UAAU,CAACpX,IAAI,EAAE,WAAW,CAAC;EAC3C;EAEAyjE,4BAA4BA,CAE1B1oC,IAAkB,EAClB/iB,QAAkB,EACJ;IACd,IAAI,IAAI,CAAC4Z,GAAG,CAAA,EAAU,CAAC,EAAE;MACvB,MAAM5xB,IAAI,GAAG,IAAI,CAACw3B,WAAW,CAAmBxf,QAAQ,CAAC;MACzDhY,IAAI,CAACoZ,MAAM,GAAG2hB,IAAI;MAClB/6B,IAAI,CAACuZ,SAAS,GAAG,IAAI,CAACqqB,4BAA4B,EAAE;MACpD,IAAI,CAAC/E,gBAAgB,CAAC7+B,IAAI,CAACuZ,SAAS,CAAC;MACrC,OAAO,IAAI,CAACnC,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;IAChD;IAEA,OAAO+6B,IAAI;EACb;EAUAy7C,2BAA2BA,CACzBx2E,IAAoD,EACpD0pE,OAAgB,EACwB;IACxC,IAAI,CAAClgD,IAAI,CAAA,CAAE;IAEX,IAAI,IAAI,CAAC+gC,gBAAgB,EAAE,EAAE;MAC3BvqD,IAAI,CAAC8b,KAAK,GAAG,IAAI;IACnB,CAAC,MAAM;MACL9b,IAAI,CAAC8b,KAAK,GAAG,IAAI,CAACsW,eAAe,EAAE;MACnC,IAAI,CAACS,SAAS,CAAA,CAAE;IAClB;IAEA,IAAI,CAAC42C,mBAAmB,CAACzpE,IAAI,EAAE0pE,OAAO,CAAC;IAEvC,OAAO,IAAI,CAACtyD,UAAU,CACpBpX,IAAI,EACJ0pE,OAAO,GAAG,gBAAgB,GAAG,mBAC/B,CAAC;EACH;EAEAD,mBAAmBA,CACjBzpE,IAAoD,EACpD0pE,OAAgB,EAChB;IACA,IAAIthD,CAAC;IACL,KAAKA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACvO,KAAK,CAACulC,MAAM,CAACnlC,MAAM,EAAE,EAAEmO,CAAC,EAAE;MAC7C,MAAM2vD,GAAG,GAAG,IAAI,CAACl+D,KAAK,CAACulC,MAAM,CAACh3B,CAAC,CAAC;MAChC,IAAIpoB,IAAI,CAAC8b,KAAK,IAAI,IAAI,IAAIi8D,GAAG,CAAC9xE,IAAI,KAAKjG,IAAI,CAAC8b,KAAK,CAAC7V,IAAI,EAAE;QACtD,IAAI8xE,GAAG,CAAC13E,IAAI,IAAI,IAAI,KAAKqpE,OAAO,IAAIqO,GAAG,CAAC13E,IAAI,MAAuB,CAAC,EAAE;UACpE;QACF;QACA,IAAIL,IAAI,CAAC8b,KAAK,IAAI4tD,OAAO,EAAE;MAC7B;IACF;IACA,IAAIthD,CAAC,KAAK,IAAI,CAACvO,KAAK,CAACulC,MAAM,CAACnlC,MAAM,EAAE;MAClC,MAAMha,IAAI,GAAGypE,OAAO,GAAG,gBAAgB,GAAG,mBAAmB;MAC7D,IAAI,CAAC1wD,KAAK,CAACjJ,MAAM,CAAC/M,oBAAoB,EAAEhD,IAAI,EAAE;QAAEC;MAAK,CAAC,CAAC;IACzD;EACF;EAEAw2E,sBAAsBA,CACpBz2E,IAAiC,EACZ;IACrB,IAAI,CAACwpB,IAAI,CAAA,CAAE;IACX,IAAI,CAACqJ,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAACzb,UAAU,CAACpX,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAEAg4E,qBAAqBA,CAAAA,EAA6B;IAChD,IAAI,CAACzmD,MAAM,CAAA,EAAU,CAAC;IACtB,MAAMT,GAAG,GAAG,IAAI,CAACe,eAAe,EAAE;IAClC,IAAI,CAACN,MAAM,CAAA,EAAU,CAAC;IACtB,OAAOT,GAAG;EACZ;EAGA4lD,qBAAqBA,CAEnB12E,IAAgC,EACZ;IACpB,IAAI,CAACwpB,IAAI,CAAA,CAAE;IACX,IAAI,CAAC3P,KAAK,CAACulC,MAAM,CAACjiC,IAAI,CAACo3D,SAAS,CAAC;IAGjCv0E,IAAI,CAAC6V,IAAI,GAIP,IAAI,CAACi+D,kCAAkC,CAAC,MAEtC,IAAI,CAACuC,cAAc,CAAA,CACrB,CAAC;IAEH,IAAI,CAACx8D,KAAK,CAACulC,MAAM,CAACz3B,GAAG,EAAE;IAEvB,IAAI,CAAC4J,MAAM,CAAA,EAAU,CAAC;IACtBvxB,IAAI,CAACsoB,IAAI,GAAG,IAAI,CAAC0vD,qBAAqB,EAAE;IACxC,IAAI,CAACpmD,GAAG,CAAA,EAAQ,CAAC;IACjB,OAAO,IAAI,CAACxa,UAAU,CAACpX,IAAI,EAAE,kBAAkB,CAAC;EAClD;EAUA22E,iBAAiBA,CAEf32E,IAAwC,EAC7B;IACX,IAAI,CAACwpB,IAAI,CAAA,CAAE;IACX,IAAI,CAAC3P,KAAK,CAACulC,MAAM,CAACjiC,IAAI,CAACo3D,SAAS,CAAC;IAEjC,IAAI0D,OAAO,GAAG,IAAI;IAElB,IAAI,IAAI,CAAC7kD,YAAY,CAAU,EAAA,CAAC,IAAI,IAAI,CAACm7C,oBAAoB,CAAA,CAAE,EAAE;MAC/D0J,OAAO,GAAG,IAAI,CAACp+D,KAAK,CAAC7B,QAAQ;MAC7B,IAAI,CAACwR,IAAI,CAAA,CAAE;IACb;IACA,IAAI,CAAC6B,KAAK,CAACF,KAAK,EAAgB,CAAC;IACjC,IAAI,CAACoG,MAAM,CAAA,EAAU,CAAC;IAEtB,IAAI,IAAI,CAACS,KAAK,CAAA,EAAQ,CAAC,EAAE;MACvB,IAAIimD,OAAO,KAAK,IAAI,EAAE;QACpB,IAAI,CAACjzE,UAAU,CAACizE,OAAO,CAAC;MAC1B;MACA,OAAO,IAAI,CAACC,QAAQ,CAACl4E,IAAI,EAA4B,IAAI,CAAC;IAC5D;IAEA,MAAMm4E,aAAa,GAAG,IAAI,CAAC/kD,YAAY,IAAQ,CAAC;IAChD;MACE,MAAMglD,oBAAoB,GAAG,IAAI,CAAChZ,YAAY,EAAE;MAChD,MAAMiZ,yBAAyB,GAC7BD,oBAAoB,IAAI,IAAI,CAACxC,UAAU,CAAA,CAAE;MAC3C,MAAM0C,YAAY,GACfH,aAAa,IAAI,IAAI,CAACxC,uBAAuB,CAAA,CAAE,IAChD0C,yBAAyB;MAE3B,IAAI,IAAI,CAACrmD,KAAK,CAAA,EAAQ,CAAC,IAAI,IAAI,CAACA,KAAK,CAAA,EAAU,CAAC,IAAIsmD,YAAY,EAAE;QAChE,MAAMC,QAAQ,GAAG,IAAI,CAACzhE,SAAS,EAAyB;QACxD,IAAIzW,IAAI;QACR,IAAI+3E,oBAAoB,EAAE;UACxB/3E,IAAI,GAAG,aAAa;UACpB,IAAI,CAAC,IAAI,CAACkuE,oBAAoB,EAAE,EAAE;YAChC,IAAI,CAACv1D,KAAK,CAACjJ,MAAM,CAACpP,2BAA2B,EAAE,IAAI,CAACkZ,KAAK,CAAC7B,QAAQ,CAAC;UACrE;UACA,IAAI,CAACwR,IAAI,CAAA,CAAE;QACb,CAAC,MAAM;UACLnpB,IAAI,GAAG,IAAI,CAACwZ,KAAK,CAACrM,KAAK;QACzB;QACA,IAAI,CAACgc,IAAI,CAAA,CAAE;QACX,IAAI,CAACgvD,QAAQ,CAACD,QAAQ,EAAE,IAAI,EAAEl4E,IAAI,CAAC;QACnC,MAAM0lC,IAAI,GAAG,IAAI,CAAC3uB,UAAU,CAACmhE,QAAQ,EAAE,qBAAqB,CAAC;QAE7D,MAAME,OAAO,GAAG,IAAI,CAACzmD,KAAK,GAAO,CAAC;QAClC,IAAIymD,OAAO,IAAIJ,yBAAyB,EAAE;UACxC,IAAI,CAACr/D,KAAK,CAACjJ,MAAM,CAACnN,UAAU,EAAEmjC,IAAI,CAAC;QACrC;QACA,IACE,CAAC0yC,OAAO,IAAI,IAAI,CAACrlD,YAAY,CAAO,GAAA,CAAC,KACrC2S,IAAI,CAAC67B,YAAY,CAAC3nD,MAAM,KAAK,CAAC,EAC9B;UACA,OAAO,IAAI,CAACy+D,UAAU,CAAC14E,IAAI,EAAuB+lC,IAAI,EAAEkyC,OAAO,CAAC;QAClE;QACA,IAAIA,OAAO,KAAK,IAAI,EAAE;UACpB,IAAI,CAACjzE,UAAU,CAACizE,OAAO,CAAC;QAC1B;QACA,OAAO,IAAI,CAACC,QAAQ,CAACl4E,IAAI,EAA4B+lC,IAAI,CAAC;MAC5D;IACF;IAIA,MAAM4yC,eAAe,GAAG,IAAI,CAACvlD,YAAY,GAAU,CAAC;IAEpD,MAAMlb,mBAAmB,GAAG,IAAIk0C,gBAAgB,EAAE;IAClD,MAAMrmB,IAAI,GAAG,IAAI,CAAClU,eAAe,CAAC,IAAI,EAAE3Z,mBAAmB,CAAC;IAC5D,MAAM0gE,OAAO,GAAG,IAAI,CAACxlD,YAAY,IAAO,CAAC;IACzC,IAAIwlD,OAAO,EAAE;MAEX,IAAIT,aAAa,EAAE;QACjB,IAAI,CAACn/D,KAAK,CAACjJ,MAAM,CAACjN,QAAQ,EAAEijC,IAAI,CAAC;MACnC;MAEA,IAEEkyC,OAAO,KAAK,IAAI,IAChBU,eAAe,IACf5yC,IAAI,CAAC9lC,IAAI,KAAK,YAAY,EAC1B;QAKA,IAAI,CAAC+Y,KAAK,CAACjJ,MAAM,CAAClN,UAAU,EAAEkjC,IAAI,CAAC;MACrC;IACF;IACA,IAAI6yC,OAAO,IAAI,IAAI,CAAC5mD,KAAK,CAAA,EAAO,CAAC,EAAE;MACjC,IAAI,CAACm6B,yBAAyB,CAACj0C,mBAAmB,CAAC;MACnD,IAAI,CAACQ,YAAY,CAACqtB,IAAI,EAAc,IAAI,CAAC;MACzC,MAAM9lC,IAAI,GAAG24E,OAAO,GAAG,gBAAgB,GAAG,gBAAgB;MAC1D,IAAI,CAACvqB,SAAS,CAACtoB,IAAI,EAAE;QAAE9lC;MAAK,CAAC,CAAC;MAC9B,OAAO,IAAI,CAACy4E,UAAU,CACpB14E,IAAI,EAEJ+lC,IAAI,EACJkyC,OACF,CAAC;IACH,CAAC,MAAM;MACL,IAAI,CAACrtB,qBAAqB,CAAC1yC,mBAAmB,EAAE,IAAI,CAAC;IACvD;IACA,IAAI+/D,OAAO,KAAK,IAAI,EAAE;MACpB,IAAI,CAACjzE,UAAU,CAACizE,OAAO,CAAC;IAC1B;IACA,OAAO,IAAI,CAACC,QAAQ,CAACl4E,IAAI,EAA4B+lC,IAAI,CAAC;EAC5D;EAGAi5B,sBAAsBA,CAEpBh/D,IAAmC,EACnC6U,OAAgB,EAChBgkE,oBAA6B,EACN;IACvB,IAAI,CAACrvD,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACunD,aAAa,CACvB/wE,IAAI,EACJ84E,KACGD,oBAAoB,OAA0C,CAAC,CAAC,IAChEhkE,OAAO,OAA6B,CAAC,CAC1C,CAAC;EACH;EAGA+hE,gBAAgBA,CAAe52E,IAA2B,EAAE;IAC1D,IAAI,CAACwpB,IAAI,CAAA,CAAE;IACXxpB,IAAI,CAACsoB,IAAI,GAAG,IAAI,CAAC0vD,qBAAqB,EAAE;IAGxCh4E,IAAI,CAAC27B,UAAU,GAAG,IAAI,CAACiuC,+CAA+C,EAAE;IACxE5pE,IAAI,CAACi8B,SAAS,GAAG,IAAI,CAACrK,GAAG,CAAA,EAAS,CAAC,GAC/B,IAAI,CAACg4C,+CAA+C,CAAE,CAAA,GACtD,IAAI;IACR,OAAO,IAAI,CAACxyD,UAAU,CAACpX,IAAI,EAAE,aAAa,CAAC;EAC7C;EAEA62E,oBAAoBA,CAAe72E,IAA+B,EAAE;IAClE,IAAI,CAAC,IAAI,CAAC4rD,SAAS,CAACvP,SAAS,EAAE;MAC7B,IAAI,CAACrjC,KAAK,CAACjJ,MAAM,CAAC7M,aAAa,EAAE,IAAI,CAAC2W,KAAK,CAAC7B,QAAQ,CAAC;IACvD;IAEA,IAAI,CAACwR,IAAI,CAAA,CAAE;IAMX,IAAI,IAAI,CAAC+gC,gBAAgB,EAAE,EAAE;MAC3BvqD,IAAI,CAACoP,QAAQ,GAAG,IAAI;IACtB,CAAC,MAAM;MACLpP,IAAI,CAACoP,QAAQ,GAAG,IAAI,CAACyiB,eAAe,EAAE;MACtC,IAAI,CAACgB,SAAS,CAAA,CAAE;IAClB;IAEA,OAAO,IAAI,CAACzb,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAGA82E,oBAAoBA,CAAe92E,IAA+B,EAAE;IAClE,IAAI,CAACwpB,IAAI,CAAA,CAAE;IACXxpB,IAAI,CAAC+4E,YAAY,GAAG,IAAI,CAACf,qBAAqB,EAAE;IAChD,MAAMgB,KAAiC,GAAIh5E,IAAI,CAACg5E,KAAK,GAAG,EAAG;IAC3D,IAAI,CAACznD,MAAM,CAAA,CAAU,CAAC;IACtB,IAAI,CAAC1X,KAAK,CAACulC,MAAM,CAACjiC,IAAI,CAACq3D,WAAW,CAAC;IACnC,IAAI,CAACnpD,KAAK,CAACF,KAAK,IAAiB,CAAC;IAMlC,IAAI8tD,GAAG;IACP,KAAK,IAAIC,UAAU,EAAE,CAAC,IAAI,CAAClnD,KAAK,CAAU,CAAA,CAAC,GAAI;MAC7C,IAAI,IAAI,CAACA,KAAK,CAAS,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAY,EAAA,CAAC,EAAE;QACnD,MAAMmnD,MAAM,GAAG,IAAI,CAACnnD,KAAK,GAAS,CAAC;QACnC,IAAIinD,GAAG,EAAE,IAAI,CAAC7hE,UAAU,CAAC6hE,GAAG,EAAE,YAAY,CAAC;QAE3CD,KAAK,CAAC77D,IAAI,CAAE87D,GAAG,GAAG,IAAI,CAACniE,SAAS,CAAiB,CAAA,CAAC;QAClDmiE,GAAG,CAACt9C,UAAU,GAAG,EAAE;QACnB,IAAI,CAACnS,IAAI,CAAA,CAAE;QACX,IAAI2vD,MAAM,EAAE;UACVF,GAAG,CAAC3wD,IAAI,GAAG,IAAI,CAACuJ,eAAe,EAAE;QACnC,CAAC,MAAM;UACL,IAAIqnD,UAAU,EAAE;YACd,IAAI,CAAClgE,KAAK,CACRjJ,MAAM,CAAC/I,wBAAwB,EAC/B,IAAI,CAAC6S,KAAK,CAACC,eACb,CAAC;UACH;UACAo/D,UAAU,GAAG,IAAI;UACjBD,GAAG,CAAC3wD,IAAI,GAAG,IAAI;QACjB;QACA,IAAI,CAACiJ,MAAM,CAAA,EAAS,CAAC;MACvB,CAAC,MAAM;QACL,IAAI0nD,GAAG,EAAE;UACPA,GAAG,CAACt9C,UAAU,CAACxe,IAAI,CAAC,IAAI,CAACg5D,sBAAsB,CAAE,CAAA,CAAC;QACpD,CAAC,MAAM;UACL,IAAI,CAACnxE,UAAU,CAAA,CAAE;QACnB;MACF;IACF;IACA,IAAI,CAACqmB,KAAK,CAACD,IAAI,EAAE;IACjB,IAAI6tD,GAAG,EAAE,IAAI,CAAC7hE,UAAU,CAAC6hE,GAAG,EAAE,YAAY,CAAC;IAC3C,IAAI,CAACzvD,IAAI,CAAA,CAAE;IACX,IAAI,CAAC3P,KAAK,CAACulC,MAAM,CAACz3B,GAAG,EAAE;IACvB,OAAO,IAAI,CAACvQ,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAEA+2E,mBAAmBA,CAAe/2E,IAA8B,EAAE;IAChE,IAAI,CAACwpB,IAAI,CAAA,CAAE;IACX,IAAI,IAAI,CAAC6gC,qBAAqB,EAAE,EAAE;MAChC,IAAI,CAACrxC,KAAK,CAACjJ,MAAM,CAAC9I,iBAAiB,EAAE,IAAI,CAAC4S,KAAK,CAACmB,aAAc,CAAC;IACjE;IACAhb,IAAI,CAACoP,QAAQ,GAAG,IAAI,CAACyiB,eAAe,EAAE;IACtC,IAAI,CAACgB,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAACzb,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;EAChD;EAEA+jE,qBAAqBA,CAAAA,EAA0B;IAC7C,MAAM3pC,KAAK,GAAG,IAAI,CAACuH,gBAAgB,EAAE;IAErC,IAAI,CAACtW,KAAK,CAACF,KAAK,CACd,IAAI,CAACzZ,OAAO,CAACH,MAAM,IAAI6oB,KAAK,CAACn6B,IAAI,KAAK,YAAY,QAGpD,CAAC;IACD,IAAI,CAACouD,SAAS,CACZj0B,KAAK,EACL;MAAEn6B,IAAI,EAAE;IAAc,CAAC,GAEzB,CAAC;IAED,OAAOm6B,KAAK;EACd;EAEA48C,iBAAiBA,CAEfh3E,IAA4B,EACZ;IAChB,IAAI,CAACwpB,IAAI,CAAA,CAAE;IAEXxpB,IAAI,CAACo5E,KAAK,GAAG,IAAI,CAACtP,UAAU,EAAE;IAC9B9pE,IAAI,CAACq5E,OAAO,GAAG,IAAI;IAEnB,IAAI,IAAI,CAACrnD,KAAK,CAAA,EAAU,CAAC,EAAE;MACzB,MAAMsnD,MAAM,GAAG,IAAI,CAACxiE,SAAS,EAAiB;MAC9C,IAAI,CAAC0S,IAAI,CAAA,CAAE;MACX,IAAI,IAAI,CAACwI,KAAK,CAAA,EAAU,CAAC,EAAE;QACzB,IAAI,CAACT,MAAM,CAAA,EAAU,CAAC;QACtB+nD,MAAM,CAACl/C,KAAK,GAAG,IAAI,CAAC2pC,qBAAqB,EAAE;QAC3C,IAAI,CAACxyC,MAAM,CAAA,EAAU,CAAC;MACxB,CAAC,MAAM;QACL+nD,MAAM,CAACl/C,KAAK,GAAG,IAAI;QACnB,IAAI,CAAC/O,KAAK,CAACF,KAAK,EAAgB,CAAC;MACnC;MAGAmuD,MAAM,CAACzjE,IAAI,GAGT,IAAI,CAACi+D,kCAAkC,CAAC,MAEtC,IAAI,CAAChK,UAAU,CAAC,KAAK,EAAE,KAAK,CAC9B,CAAC;MAEH,IAAI,CAACz+C,KAAK,CAACD,IAAI,EAAE;MACjBprB,IAAI,CAACq5E,OAAO,GAAG,IAAI,CAACjiE,UAAU,CAACkiE,MAAM,EAAE,aAAa,CAAC;IACvD;IAEAt5E,IAAI,CAACu5E,SAAS,GAAG,IAAI,CAAC3nD,GAAG,CAAA,EAAY,CAAC,GAAG,IAAI,CAACk4C,UAAU,CAAE,CAAA,GAAG,IAAI;IAEjE,IAAI,CAAC9pE,IAAI,CAACq5E,OAAO,IAAI,CAACr5E,IAAI,CAACu5E,SAAS,EAAE;MACpC,IAAI,CAACvgE,KAAK,CAACjJ,MAAM,CAAC7I,gBAAgB,EAAElH,IAAI,CAAC;IAC3C;IAEA,OAAO,IAAI,CAACoX,UAAU,CAACpX,IAAI,EAAE,cAAc,CAAC;EAC9C;EAIAk/D,iBAAiBA,CAEfl/D,IAAmC,EACnCK,IAAuD,EACvDshE,uBAAgC,GAAG,KAAK,EACjB;IACvB,IAAI,CAACn4C,IAAI,CAAA,CAAE;IACX,IAAI,CAACgvD,QAAQ,CAACx4E,IAAI,EAAE,KAAK,EAAEK,IAAI,EAAEshE,uBAAuB,CAAC;IACzD,IAAI,CAAC9uC,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAACzb,UAAU,CAACpX,IAAI,EAAE,qBAAqB,CAAC;EACrD;EAGAi3E,mBAAmBA,CAEjBj3E,IAA8B,EACZ;IAClB,IAAI,CAACwpB,IAAI,CAAA,CAAE;IACXxpB,IAAI,CAACsoB,IAAI,GAAG,IAAI,CAAC0vD,qBAAqB,EAAE;IACxC,IAAI,CAACn+D,KAAK,CAACulC,MAAM,CAACjiC,IAAI,CAACo3D,SAAS,CAAC;IAGjCv0E,IAAI,CAAC6V,IAAI,GAIP,IAAI,CAACi+D,kCAAkC,CAAC,MAEtC,IAAI,CAACuC,cAAc,CAAA,CACrB,CAAC;IAEH,IAAI,CAACx8D,KAAK,CAACulC,MAAM,CAACz3B,GAAG,EAAE;IAEvB,OAAO,IAAI,CAACvQ,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;EAChD;EAEAk3E,kBAAkBA,CAEhBl3E,IAA6B,EACZ;IACjB,IAAI,IAAI,CAAC6Z,KAAK,CAAC6O,MAAM,EAAE;MACrB,IAAI,CAAC1P,KAAK,CAACjJ,MAAM,CAAChE,UAAU,EAAE,IAAI,CAAC8N,KAAK,CAAC7B,QAAQ,CAAC;IACpD;IACA,IAAI,CAACwR,IAAI,CAAA,CAAE;IACXxpB,IAAI,CAAC6R,MAAM,GAAG,IAAI,CAACmmE,qBAAqB,EAAE;IAG1Ch4E,IAAI,CAAC6V,IAAI,GAKP,IAAI,CAACi+D,kCAAkC,CAAC,MAEtC,IAAI,CAACuC,cAAc,CAAA,CACrB,CAAC;IAEH,OAAO,IAAI,CAACj/D,UAAU,CAACpX,IAAI,EAAE,eAAe,CAAC;EAC/C;EAEAm3E,mBAAmBA,CAACn3E,IAA8B,EAAoB;IACpE,IAAI,CAACwpB,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACpS,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;EAChD;EAGAu3E,qBAAqBA,CAEnBv3E,IAAgC,EAChCs3E,SAAiB,EACjBv8C,IAAkB,EAClBxoB,KAAyB,EACL;IACpB,KAAK,MAAMuJ,KAAK,IAAI,IAAI,CAACjC,KAAK,CAACulC,MAAM,EAAE;MACrC,IAAItjC,KAAK,CAAC7V,IAAI,KAAKqxE,SAAS,EAAE;QAC5B,IAAI,CAACt+D,KAAK,CAACjJ,MAAM,CAACzK,kBAAkB,EAAEy1B,IAAI,EAAE;UAC1Cx1B,SAAS,EAAE+xE;QACb,CAAC,CAAC;MACJ;IACF;IAEA,MAAMj3E,IAAI,GAAGymB,WAAW,CAAC,IAAI,CAACjN,KAAK,CAAC5Z,IAAI,CAAC,OAErC,IAAI,CAAC+xB,KAAK,CAAA,EAAW,CAAC,OAEpB,IAAI;IACV,KAAK,IAAI5J,CAAC,GAAG,IAAI,CAACvO,KAAK,CAACulC,MAAM,CAACnlC,MAAM,GAAG,CAAC,EAAEmO,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MACtD,MAAMtM,KAAK,GAAG,IAAI,CAACjC,KAAK,CAACulC,MAAM,CAACh3B,CAAC,CAAC;MAClC,IAAItM,KAAK,CAAC09D,cAAc,KAAKx5E,IAAI,CAACpC,KAAK,EAAE;QACvCke,KAAK,CAAC09D,cAAc,GAAG,IAAI,CAAC/1C,iBAAiB,CAAC,IAAI,CAAC5pB,KAAK,CAACjc,KAAK,CAAC;QAC/Dke,KAAK,CAACzb,IAAI,GAAGA,IAAI;MACnB,CAAC,MAAM;QACL;MACF;IACF;IAEA,IAAI,CAACwZ,KAAK,CAACulC,MAAM,CAACjiC,IAAI,CAAC;MACrBlX,IAAI,EAAEqxE,SAAS;MACfj3E,IAAI,EAAEA,IAAI;MACVm5E,cAAc,EAAE,IAAI,CAAC/1C,iBAAiB,CAAC,IAAI,CAAC5pB,KAAK,CAACjc,KAAK;IACzD,CAAC,CAAC;IAEFoC,IAAI,CAAC6V,IAAI,GACPtD,KAAK,IAA0C,GAC3C,IAAI,CAACq3D,+CAA+C,CAAC,IAAI,CAAC,GAC1D,IAAI,CAACyM,cAAc,CAAA,CAAE;IAE3B,IAAI,CAACx8D,KAAK,CAACulC,MAAM,CAACz3B,GAAG,EAAE;IACvB3nB,IAAI,CAAC8b,KAAK,GAAGif,IAAI;IACjB,OAAO,IAAI,CAAC3jB,UAAU,CAACpX,IAAI,EAAE,kBAAkB,CAAC;EAClD;EAEA86B,wBAAwBA,CACtB96B,IAAmC,EACnC+6B,IAAkB,EAElBphB,UAA4C,EAC5C;IACA3Z,IAAI,CAAC4T,UAAU,GAAGmnB,IAAI;IACtB,IAAI,CAAClI,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAACzb,UAAU,CAACpX,IAAI,EAAE,qBAAqB,CAAC;EACrD;EAMA8pE,UAAUA,CAERv0D,eAAwB,GAAG,KAAK,EAChCw0D,qBAA8B,GAAG,IAAI,EACrCt0D,eAA2D,EACzC;IAClB,MAAMzV,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAoB;IAC/C,IAAIvB,eAAe,EAAE;MACnB,IAAI,CAACsE,KAAK,CAAC0lC,YAAY,CAACgF,KAAK,EAAE;IACjC;IACA,IAAI,CAAChzB,MAAM,CAAA,CAAU,CAAC;IACtB,IAAIw4C,qBAAqB,EAAE;MACzB,IAAI,CAAC1+C,KAAK,CAACF,KAAK,EAAgB,CAAC;IACnC;IACA,IAAI,CAAC7V,cAAc,CACjBtV,IAAI,EACJuV,eAAe,EACf,KAAK,EAELE,CAAAA,EAAAA,eACF,CAAC;IACD,IAAIs0D,qBAAqB,EAAE;MACzB,IAAI,CAAC1+C,KAAK,CAACD,IAAI,EAAE;IACnB;IACA,OAAO,IAAI,CAAChU,UAAU,CAACpX,IAAI,EAAE,gBAAgB,CAAC;EAChD;EAEAmV,gBAAgBA,CAACf,IAAiB,EAAiC;IACjE,OACEA,IAAI,CAACnU,IAAI,KAAK,qBAAqB,IACnCmU,IAAI,CAACR,UAAU,CAAC3T,IAAI,KAAK,eAAe,IACxC,CAACmU,IAAI,CAACR,UAAU,CAACM,KAAK,CAAEmB,aAAa;EAEzC;EAEAC,cAAcA,CAEZtV,IAAkC,EAClCuV,eAA2C,EAC3CC,QAAiB,EACjB3X,GAAc,EACd4X,eAA2D,EACrD;IACN,MAAMI,IAAkC,GAAI7V,IAAI,CAAC6V,IAAI,GAAG,EAAG;IAC3D,MAAMF,UAA8C,GAAI3V,IAAI,CAAC2V,UAAU,GACrE,EAAG;IACL,IAAI,CAACooD,2BAA2B,CAC9BloD,IAAI,EACJN,eAAe,GAAGI,UAAU,GAAGvF,SAAS,EACxCoF,QAAQ,EACR3X,GAAG,EACH4X,eACF,CAAC;EACH;EAKAsoD,2BAA2BA,CAEzBloD,IAAmB,EACnBF,UAA4C,EAC5CH,QAAiB,EACjB3X,GAAc,EACd4X,eAA2D,EACrD;IACN,MAAMwuD,SAAS,GAAG,IAAI,CAACpqD,KAAK,CAAC6O,MAAM;IACnC,IAAIuqD,sBAAsB,GAAG,KAAK;IAClC,IAAIwG,kBAAkB,GAAG,KAAK;IAE9B,OAAO,CAAC,IAAI,CAACznD,KAAK,CAACn0B,GAAG,CAAC,EAAE;MACvB,MAAMuW,IAAI,GAAGoB,QAAQ,GACjB,IAAI,CAACygE,eAAe,CAAA,CAAE,GACtB,IAAI,CAACE,sBAAsB,EAAE;MAEjC,IAAIxgE,UAAU,IAAI,CAAC8jE,kBAAkB,EAAE;QACrC,IAAI,IAAI,CAACtkE,gBAAgB,CAACf,IAAI,CAAC,EAAE;UAC/B,MAAML,SAAS,GAAG,IAAI,CAAC0hE,eAAe,CAACrhE,IAAI,CAAC;UAC5CuB,UAAU,CAACwH,IAAI,CAACpJ,SAAS,CAAC;UAE1B,IACE,CAACk/D,sBAAsB,IACvBl/D,SAAS,CAACvG,KAAK,CAACA,KAAK,KAAK,YAAY,EACtC;YACAylE,sBAAsB,GAAG,IAAI;YAC7B,IAAI,CAAC5uB,SAAS,CAAC,IAAI,CAAC;UACtB;UAEA;QACF;QACAo1B,kBAAkB,GAAG,IAAI;QAEzB,IAAI,CAAC5/D,KAAK,CAAC0lC,YAAY,CAACgF,KAAK,EAAE;MACjC;MACA1uC,IAAI,CAACsH,IAAI,CAAC/I,IAAI,CAAC;IACjB;IAEAqB,eAAe,IAAA,IAAA,IAAfA,eAAe,CAAEusB,IAAI,CAAC,IAAI,EAAEixC,sBAAsB,CAAC;IAEnD,IAAI,CAAChP,SAAS,EAAE;MACd,IAAI,CAAC5f,SAAS,CAAC,KAAK,CAAC;IACvB;IAEA,IAAI,CAAC76B,IAAI,CAAA,CAAE;EACb;EAMA0uD,QAAQA,CAENl4E,IAA4B,EAC5B+lC,IAAkD,EAClC;IAChB/lC,IAAI,CAAC+lC,IAAI,GAAGA,IAAI;IAChB,IAAI,CAAClT,SAAS,CAAgB,KAAK,CAAC;IACpC7yB,IAAI,CAACsoB,IAAI,GAAG,IAAI,CAAC0J,KAAK,CAAA,EAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,CAACH,eAAe,EAAE;IAC/D,IAAI,CAACgB,SAAS,CAAgB,KAAK,CAAC;IACpC7yB,IAAI,CAACyuE,MAAM,GAAG,IAAI,CAACz8C,KAAK,CAAA,EAAU,CAAC,GAAG,IAAI,GAAG,IAAI,CAACH,eAAe,EAAE;IACnE,IAAI,CAACN,MAAM,CAAA,EAAU,CAAC;IAGtBvxB,IAAI,CAAC6V,IAAI,GAIP,IAAI,CAACi+D,kCAAkC,CAAC,MAEtC,IAAI,CAACuC,cAAc,CAAA,CACrB,CAAC;IAEH,IAAI,CAAChrD,KAAK,CAACD,IAAI,EAAE;IACjB,IAAI,CAACvR,KAAK,CAACulC,MAAM,CAACz3B,GAAG,EAAE;IAEvB,OAAO,IAAI,CAACvQ,UAAU,CAACpX,IAAI,EAAE,cAAc,CAAC;EAC9C;EAKA04E,UAAUA,CAER14E,IAAuB,EACvB+lC,IAAiD,EACjDkyC,OAAyB,EACd;IACX,MAAMQ,OAAO,GAAG,IAAI,CAACzmD,KAAK,GAAO,CAAC;IAClC,IAAI,CAACxI,IAAI,CAAA,CAAE;IAEX,IAAIivD,OAAO,EAAE;MACX,IAAIR,OAAO,KAAK,IAAI,EAAE,IAAI,CAACjzE,UAAU,CAACizE,OAAO,CAAC;IAChD,CAAC,MAAM;MACLj4E,IAAI,CAAC05E,KAAK,GAAGzB,OAAO,KAAK,IAAI;IAC/B;IAEA,IACElyC,IAAI,CAAC9lC,IAAI,KAAK,qBAAqB,IACnC8lC,IAAI,CAAC67B,YAAY,CAAC,CAAC,CAAC,CAAC77B,IAAI,IAAI,IAAI,KAChC,CAAC0yC,OAAO,IACP,CAAC,IAAI,CAAC/mE,OAAO,CAACH,MAAM,IACpB,IAAI,CAACsI,KAAK,CAAC6O,MAAM,IACjBqd,IAAI,CAAC1lC,IAAI,KAAK,KAAK,IACnB0lC,IAAI,CAAC67B,YAAY,CAAC,CAAC,CAAC,CAACzrD,EAAE,CAAClW,IAAI,KAAK,YAAY,CAAC,EAChD;MACA,IAAI,CAAC+Y,KAAK,CAACjJ,MAAM,CAACpN,sBAAsB,EAAEojC,IAAI,EAAE;QAC9C9lC,IAAI,EAAEw4E,OAAO,GAAG,gBAAgB,GAAG;MACrC,CAAC,CAAC;IACJ;IAEA,IAAI1yC,IAAI,CAAC9lC,IAAI,KAAK,mBAAmB,EAAE;MACrC,IAAI,CAAC+Y,KAAK,CAACjJ,MAAM,CAACtL,UAAU,EAAEshC,IAAI,EAAE;QAClCrhC,QAAQ,EAAE;UAAEzE,IAAI,EAAE;QAAe;MACnC,CAAC,CAAC;IACJ;IAEAD,IAAI,CAAC2+B,IAAI,GAAGoH,IAAI;IAChB/lC,IAAI,CAACw1B,KAAK,GAAGijD,OAAO,GAChB,IAAI,CAAC5mD,eAAe,EAAE,GACtB,IAAI,CAACuK,uBAAuB,EAAE;IAClC,IAAI,CAAC7K,MAAM,CAAA,EAAU,CAAC;IAGtBvxB,IAAI,CAAC6V,IAAI,GAIP,IAAI,CAACi+D,kCAAkC,CAAC,MAEtC,IAAI,CAACuC,cAAc,CAAA,CACrB,CAAC;IAEH,IAAI,CAAChrD,KAAK,CAACD,IAAI,EAAE;IACjB,IAAI,CAACvR,KAAK,CAACulC,MAAM,CAACz3B,GAAG,EAAE;IAEvB,OAAO,IAAI,CAACvQ,UAAU,CAACpX,IAAI,EAAEy4E,OAAO,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;EAC7E;EAIAD,QAAQA,CAENx4E,IAAmC,EACnC25E,KAAc,EACdt5E,IAAuD,EACvDshE,uBAAgC,GAAG,KAAK,EACT;IAC/B,MAAMC,YAAoC,GAAI5hE,IAAI,CAAC4hE,YAAY,GAAG,EAAG;IACrE5hE,IAAI,CAACK,IAAI,GAAGA,IAAI;IAChB,SAAS;MACP,MAAMyhC,IAAI,GAAG,IAAI,CAAChrB,SAAS,EAAwB;MACnD,IAAI,CAAC+qB,UAAU,CAACC,IAAI,EAAEzhC,IAAI,CAAC;MAC3ByhC,IAAI,CAACiE,IAAI,GAAG,CAAC,IAAI,CAACnU,GAAG,CAAA,EAAM,CAAC,GACxB,IAAI,GACJ+nD,KAAK,GACH,IAAI,CAAC/M,0BAA0B,CAAE,CAAA,GACjC,IAAI,CAACxwC,uBAAuB,CAAA,CAAE;MAEpC,IAAI0F,IAAI,CAACiE,IAAI,KAAK,IAAI,IAAI,CAAC47B,uBAAuB,EAAE;QAClD,IACE7/B,IAAI,CAAC3rB,EAAE,CAAClW,IAAI,KAAK,YAAY,IAC7B,EAAE05E,KAAK,KAAK,IAAI,CAAC3nD,KAAK,CAAA,EAAO,CAAC,IAAI,IAAI,CAACoB,YAAY,CAAO,GAAA,CAAC,CAAC,CAAC,EAC7D;UACA,IAAI,CAACpa,KAAK,CACRjJ,MAAM,CAAC1O,6BAA6B,EACpC,IAAI,CAACwY,KAAK,CAACmB,aAAa,EACxB;YACE3a,IAAI,EAAE;UACR,CACF,CAAC;QACH,CAAC,MAAM,IACL,CAACA,IAAI,KAAK,OAAO,IAAIA,IAAI,KAAK,OAAO,IAAIA,IAAI,KAAK,aAAa,KAC/D,EAAE,IAAI,CAAC2xB,KAAK,CAAA,EAAO,CAAC,IAAI,IAAI,CAACoB,YAAY,CAAA,GAAO,CAAC,CAAC,EAClD;UACA,IAAI,CAACpa,KAAK,CACRjJ,MAAM,CAAC1O,6BAA6B,EACpC,IAAI,CAACwY,KAAK,CAACmB,aAAa,EACxB;YAAE3a;UAAK,CACT,CAAC;QACH;MACF;MACAuhE,YAAY,CAACzkD,IAAI,CAAC,IAAI,CAAC/F,UAAU,CAAC0qB,IAAI,EAAE,oBAAoB,CAAC,CAAC;MAC9D,IAAI,CAAC,IAAI,CAAClQ,GAAG,CAAA,EAAS,CAAC,EAAE;IAC3B;IACA,OAAO5xB,IAAI;EACb;EAEA6hC,UAAUA,CAERC,IAAkC,EAClCzhC,IAAuD,EACjD;IACN,MAAM8V,EAAE,GAAG,IAAI,CAACwrB,gBAAgB,EAAE;IAClC,IAAIthC,IAAI,KAAK,OAAO,IAAIA,IAAI,KAAK,aAAa,EAAE;MAC9C,IAAI8V,EAAE,CAAClW,IAAI,KAAK,cAAc,IAAIkW,EAAE,CAAClW,IAAI,KAAK,eAAe,EAAE;QAC7D,IAAI,CAAC+Y,KAAK,CAACjJ,MAAM,CAACjF,iCAAiC,EAAEqL,EAAE,CAAC3H,GAAG,CAAC5Q,KAAK,CAAC;MACpE;IACF,CAAC,MAAM;MACL,IAAIuY,EAAE,CAAClW,IAAI,KAAK,aAAa,EAAE;QAC7B,IAAI,CAAC+Y,KAAK,CAACjJ,MAAM,CAACjG,qBAAqB,EAAEqM,EAAE,CAAC3H,GAAG,CAAC5Q,KAAK,CAAC;MACxD;IACF;IACA,IAAI,CAACywD,SAAS,CACZl4C,EAAE,EACF;MAAElW,IAAI,EAAE;IAAqB,CAAC,EAC9BI,IAAI,KAAK,KAAK,WAChB,CAAC;IACDyhC,IAAI,CAAC3rB,EAAE,GAAGA,EAAE;EACd;EAGAk6D,4BAA4BA,CAE1BrwE,IAAkC,EACZ;IACtB,OAAO,IAAI,CAAC+wE,aAAa,CAAC/wE,IAAI,GAAyB,CAAC;EAC1D;EAKA+wE,aAAaA,CAEX/wE,IAAe,EACfuS,KAAwB,IAA+B,EACpD;IACH,MAAMqnE,kBAAkB,GAAGrnE,KAAK,IAAuC;IACvE,MAAMsnE,aAAa,GAAG,CAAC,EAAEtnE,KAAK,IAAgC,CAAC;IAC/D,MAAM03D,SAAS,GAAG4P,aAAa,IAAI,EAAEtnE,KAAK,IAA+B,CAAC;IAC1E,MAAMsC,OAAO,GAAG,CAAC,EAAEtC,KAAK,IAA0B,CAAC;IAEnD,IAAI,CAACqC,YAAY,CAAC5U,IAAI,EAAE6U,OAAO,CAAC;IAEhC,IAAI,IAAI,CAACmd,KAAK,CAAA,EAAQ,CAAC,EAAE;MACvB,IAAI4nD,kBAAkB,EAAE;QACtB,IAAI,CAAC5gE,KAAK,CACRjJ,MAAM,CAAChN,iCAAiC,EACxC,IAAI,CAAC8W,KAAK,CAAC7B,QACb,CAAC;MACH;MACA,IAAI,CAACwR,IAAI,CAAA,CAAE;MACXxpB,IAAI,CAAC+yE,SAAS,GAAG,IAAI;IACvB;IAEA,IAAI8G,aAAa,EAAE;MACjB75E,IAAI,CAACmW,EAAE,GAAG,IAAI,CAAC6zD,eAAe,CAACC,SAAS,CAAC;IAC3C;IAEA,MAAMvK,yBAAyB,GAAG,IAAI,CAAC7lD,KAAK,CAACwhB,sBAAsB;IACnE,IAAI,CAACxhB,KAAK,CAACwhB,sBAAsB,GAAG,KAAK;IACzC,IAAI,CAAChQ,KAAK,CAACF,KAAK,IAAmB,CAAC;IACpC,IAAI,CAACygC,SAAS,CAACzgC,KAAK,CAACoxB,aAAa,CAAC1nC,OAAO,EAAE7U,IAAI,CAAC+yE,SAAS,CAAC,CAAC;IAE5D,IAAI,CAAC8G,aAAa,EAAE;MAClB75E,IAAI,CAACmW,EAAE,GAAG,IAAI,CAAC6zD,eAAe,EAAE;IAClC;IAEA,IAAI,CAACpoC,mBAAmB,CAAC5hC,IAAI,EAAsB,KAAK,CAAC;IAKzD,IAAI,CAAC8zE,kCAAkC,CAAC,MAAM;MAE5C,IAAI,CAACn5C,0BAA0B,CAC7B36B,IAAI,EACJ65E,aAAa,GAAG,qBAAqB,GAAG,oBAC1C,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAACjuB,SAAS,CAACxgC,IAAI,EAAE;IACrB,IAAI,CAACC,KAAK,CAACD,IAAI,EAAE;IAEjB,IAAIyuD,aAAa,IAAI,CAACD,kBAAkB,EAAE;MAIxC,IAAI,CAACzZ,2BAA2B,CAACngE,IAAS,CAAC;IAC7C;IAEA,IAAI,CAAC6Z,KAAK,CAACwhB,sBAAsB,GAAGqkC,yBAAyB;IAC7D,OAAO1/D,IAAI;EACb;EAEAgqE,eAAeA,CAACC,SAAmB,EAAmC;IACpE,OAAOA,SAAS,IAAI3jD,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC,GAClD,IAAI,CAACmyB,eAAe,CAAE,CAAA,GACtB,IAAI;EACV;EAEAwP,mBAAmBA,CAEjB5hC,IAAwB,EACxB0W,aAAuB,EACjB;IACN,IAAI,CAAC6a,MAAM,CAAA,EAAU,CAAC;IACtB,IAAI,CAACu6B,eAAe,CAAC3gC,KAAK,CAACy+B,4BAA4B,CAAE,CAAA,CAAC;IAC1D5pD,IAAI,CAACkV,MAAM,GAAG,IAAI,CAACs4C,gBAAgB,SAGjCC,KACG/2C,aAAa,OAAiD,CAAC,CACpE,CAAgB;IAEhB,IAAI,CAACo1C,eAAe,CAAC1gC,IAAI,EAAE;EAC7B;EAEA+0C,2BAA2BA,CAACngE,IAAgB,EAAQ;IAClD,IAAI,CAACA,IAAI,CAACmW,EAAE,EAAE;IAMd,IAAI,CAACkV,KAAK,CAACC,WAAW,CACpBtrB,IAAI,CAACmW,EAAE,CAAClQ,IAAI,EACZ,CAAC,IAAI,CAACyL,OAAO,CAACH,MAAM,IAAI,IAAI,CAACsI,KAAK,CAAC6O,MAAM,IAAI1oB,IAAI,CAAC+yE,SAAS,IAAI/yE,IAAI,CAAC8iC,KAAK,GACrE,IAAI,CAACzX,KAAK,CAACL,mBAAmB,WAEJ,KACD,EAC7BhrB,IAAI,CAACmW,EAAE,CAAC3H,GAAG,CAAC5Q,KACd,CAAC;EACH;EAKAqhE,UAAUA,CAERj/D,IAAe,EACf49B,WAAiD,EACjDC,UAAoB,EACjB;IACH,IAAI,CAACrU,IAAI,CAAA,CAAE;IAGX,MAAMy6C,SAAS,GAAG,IAAI,CAACpqD,KAAK,CAAC6O,MAAM;IACnC,IAAI,CAAC7O,KAAK,CAAC6O,MAAM,GAAG,IAAI;IAExB,IAAI,CAACiV,YAAY,CAAC39B,IAAI,EAAE49B,WAAW,EAAEC,UAAU,CAAC;IAChD,IAAI,CAAC+B,eAAe,CAAC5/B,IAAI,CAAC;IAE1BA,IAAI,CAAC6V,IAAI,GAAG,IAAI,CAACq0D,cAAc,CAAC,CAAC,CAAClqE,IAAI,CAACgS,UAAU,EAAEiyD,SAAS,CAAC;IAE7D,OAAO,IAAI,CAAC7sD,UAAU,CACpBpX,IAAI,EACJ49B,WAAW,GAAG,kBAAkB,GAAG,iBACrC,CAAC;EACH;EAEA0B,eAAeA,CAAAA,EAAY;IACzB,OAAO,IAAI,CAACtN,KAAK,CAAM,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAA,EAAQ,CAAC,IAAI,IAAI,CAACA,KAAK,EAAU,CAAC;EAC1E;EAEAqN,aAAaA,CAAAA,EAAY;IACvB,OAAO,IAAI,CAACrN,KAAK,CAAA,EAAU,CAAC;EAC9B;EAEA3a,iBAAiBA,CAAC1Q,GAAiC,EAAW;IAC5D,OACGA,GAAG,CAAC1G,IAAI,KAAK,YAAY,IAAI0G,GAAG,CAACV,IAAI,KAAK,aAAa,IACvDU,GAAG,CAAC1G,IAAI,KAAK,eAAe,IAAI0G,GAAG,CAAC6G,KAAK,KAAK,aAAc;EAEjE;EAEA+xB,sBAAsBA,CAACtqB,MAAuC,EAAW;IACvE,OACE,CAACA,MAAM,CAACiC,QAAQ,IAAI,CAACjC,MAAM,CAACmiB,MAAM,IAAI,IAAI,CAAC/f,iBAAiB,CAACpC,MAAM,CAACtO,GAAG,CAAC;EAE5E;EAGAujE,cAAcA,CAEZ3H,aAAsB,EACtB0B,SAAkB,EACL;IACb,IAAI,CAACrrD,UAAU,CAACuS,KAAK,EAAE;IAEvB,MAAMtR,KAA8B,GAAG;MACrCigE,cAAc,EAAE,KAAK;MACrBvX;KACD;IACD,IAAI5oD,UAAyB,GAAG,EAAE;IAClC,MAAMokB,SAAS,GAAG,IAAI,CAACjnB,SAAS,EAAe;IAC/CinB,SAAS,CAACloB,IAAI,GAAG,EAAE;IAEnB,IAAI,CAAC0b,MAAM,CAAA,CAAU,CAAC;IAItB,IAAI,CAACuiD,kCAAkC,CAAC,MAAM;MAE5C,OAAO,CAAC,IAAI,CAAC9hD,KAAK,CAAA,CAAU,CAAC,EAAE;QAC7B,IAAI,IAAI,CAACJ,GAAG,CAAA,EAAQ,CAAC,EAAE;UACrB,IAAIjY,UAAU,CAACM,MAAM,GAAG,CAAC,EAAE;YACzB,MAAM,IAAI,CAACjB,KAAK,CACdjJ,MAAM,CAACpO,kBAAkB,EACzB,IAAI,CAACkY,KAAK,CAACmB,aACb,CAAC;UACH;UACA;QACF;QAEA,IAAI,IAAI,CAACgX,KAAK,CAAA,EAAM,CAAC,EAAE;UACrBrY,UAAU,CAACwD,IAAI,CAAC,IAAI,CAAC6wC,cAAc,CAAE,CAAA,CAAC;UACtC;QACF;QAEA,MAAMhwB,MAAM,GAAG,IAAI,CAAClnB,SAAS,EAAiB;QAG9C,IAAI6C,UAAU,CAACM,MAAM,EAAE;UAErB+jB,MAAM,CAACrkB,UAAU,GAAGA,UAAU;UAC9B,IAAI,CAAC3C,0BAA0B,CAACgnB,MAAM,EAAErkB,UAAU,CAAC,CAAC,CAAC,CAAC;UACtDA,UAAU,GAAG,EAAE;QACjB;QAEA,IAAI,CAACmkB,gBAAgB,CAACC,SAAS,EAAEC,MAAM,EAAEnkB,KAAK,CAAC;QAE/C,IAEEmkB,MAAM,CAAC39B,IAAI,KAAK,aAAa,IAE7B29B,MAAM,CAACrkB,UAAU,IAEjBqkB,MAAM,CAACrkB,UAAU,CAACM,MAAM,GAAG,CAAC,EAC5B;UACA,IAAI,CAACjB,KAAK,CAACjJ,MAAM,CAACtO,oBAAoB,EAAEu8B,MAAM,CAAC;QACjD;MACF;IACF,CAAC,CAAC;IAEF,IAAI,CAACnkB,KAAK,CAAC6O,MAAM,GAAGu7C,SAAS;IAE7B,IAAI,CAACz6C,IAAI,CAAA,CAAE;IAEX,IAAI7P,UAAU,CAACM,MAAM,EAAE;MACrB,MAAM,IAAI,CAACjB,KAAK,CAACjJ,MAAM,CAACtH,iBAAiB,EAAE,IAAI,CAACoR,KAAK,CAAC7B,QAAQ,CAAC;IACjE;IAEA,IAAI,CAACY,UAAU,CAACwS,IAAI,EAAE;IAEtB,OAAO,IAAI,CAAChU,UAAU,CAAC2mB,SAAS,EAAE,WAAW,CAAC;EAChD;EAIAE,4BAA4BA,CAE1BF,SAA8B,EAC9BC,MAA6B,EACpB;IACT,MAAMr3B,GAAG,GAAG,IAAI,CAACyrB,eAAe,CAAC,IAAI,CAAC;IAEtC,IAAI,IAAI,CAACiN,aAAa,EAAE,EAAE;MACxB,MAAMpqB,MAAqB,GAAG+oB,MAAa;MAG3C/oB,MAAM,CAAC5U,IAAI,GAAG,QAAQ;MACtB4U,MAAM,CAACiC,QAAQ,GAAG,KAAK;MACvBjC,MAAM,CAACtO,GAAG,GAAGA,GAAG;MAChBsO,MAAM,CAACmiB,MAAM,GAAG,KAAK;MACrB,IAAI,CAACoI,eAAe,CAClBzB,SAAS,EACT9oB,MAAM,EACN,KAAK,EACL,KAAK,EACe,KAAK,EACzB,KACF,CAAC;MACD,OAAO,IAAI;IACb,CAAC,MAAM,IAAI,IAAI,CAACqqB,eAAe,EAAE,EAAE;MACjC,MAAMvnB,IAAqB,GAAGimB,MAAa;MAG3CjmB,IAAI,CAACb,QAAQ,GAAG,KAAK;MACrBa,IAAI,CAACpR,GAAG,GAAGA,GAAG;MACdoR,IAAI,CAACqf,MAAM,GAAG,KAAK;MACnB2G,SAAS,CAACloB,IAAI,CAACsH,IAAI,CAAC,IAAI,CAAC7F,kBAAkB,CAACS,IAAI,CAAC,CAAC;MAClD,OAAO,IAAI;IACb;IACA,IAAI,CAAC6mC,iCAAiC,CAACj4C,GAAG,CAAC;IAC3C,OAAO,KAAK;EACd;EAEAm3B,gBAAgBA,CAEdC,SAA8B,EAC9BC,MAA6B,EAC7BnkB,KAA8B,EACxB;IACN,MAAMsd,QAAQ,GAAG,IAAI,CAAC/D,YAAY,IAAW,CAAC;IAE9C,IAAI+D,QAAQ,EAAE;MACZ,IAAI,IAAI,CAAC8G,4BAA4B,CAACF,SAAS,EAAEC,MAAM,CAAC,EAAE;QAExD;MACF;MACA,IAAI,IAAI,CAACpM,GAAG,CAAA,CAAU,CAAC,EAAE;QACvB,IAAI,CAACywC,qBAAqB,CAACtkC,SAAS,EAAEC,MAA8B,CAAC;QACrE;MACF;IACF;IAEA,IAAI,CAACskC,4BAA4B,CAACvkC,SAAS,EAAEC,MAAM,EAAEnkB,KAAK,EAAEsd,QAAQ,CAAC;EACvE;EAEAmrC,4BAA4BA,CAE1BvkC,SAA8B,EAC9BC,MAA6B,EAC7BnkB,KAA8B,EAC9Bsd,QAAiB,EACjB;IACA,MAAM4iD,YAAY,GAAG/7C,MAAuB;IAC5C,MAAMg8C,aAAa,GAAGh8C,MAA8B;IACpD,MAAMi8C,UAAU,GAAGj8C,MAAyB;IAC5C,MAAMk8C,WAAW,GAAGl8C,MAAgC;IACpD,MAAMm8C,YAAY,GAAGn8C,MAAiC;IAEtD,MAAM/oB,MAAkD,GAAG8kE,YAAY;IACvE,MAAMK,YAAqD,GAAGL,YAAY;IAE1E/7C,MAAM,CAAC5G,MAAM,GAAGD,QAAQ;IACxB,IAAI,CAAC6I,+BAA+B,CAAChC,MAAM,CAAC;IAE5C,IAAI,IAAI,CAACpM,GAAG,CAAA,EAAQ,CAAC,EAAE;MAErB3c,MAAM,CAAC5U,IAAI,GAAG,QAAQ;MACtB,MAAM+V,aAAa,GAAG,IAAI,CAAC4b,KAAK,IAAe,CAAC;MAChD,IAAI,CAACqoD,qBAAqB,CAACplE,MAAM,CAAC;MAClC,IAAI,CAACutD,4BAA4B,CAACvtD,MAAM,CAAC;MAEzC,IAAImB,aAAa,EAAE;QAEjB,IAAI,CAACupB,sBAAsB,CAAC5B,SAAS,EAAEi8C,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC;QAClE;MACF;MAEA,IAAI,IAAI,CAACz6C,sBAAsB,CAACw6C,YAAY,CAAC,EAAE;QAC7C,IAAI,CAAC/gE,KAAK,CAACjJ,MAAM,CAAC3O,sBAAsB,EAAE24E,YAAY,CAACpzE,GAAG,CAAC;MAC7D;MAEA,IAAI,CAAC64B,eAAe,CAClBzB,SAAS,EACTg8C,YAAY,EACZ,IAAI,EACJ,KAAK,EACe,KAAK,EACzB,KACF,CAAC;MAED;IACF;IAEA,MAAM3mD,YAAY,GAChB,CAAC,IAAI,CAACvZ,KAAK,CAACohB,WAAW,IAAI3U,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC;IAC/D,MAAM0G,GAAG,GAAG,IAAI,CAAC0zE,qBAAqB,CAACr8C,MAAM,CAAC;IAC9C,MAAMs8C,iBAAiB,GAAGlnD,YAAY,GAAIzsB,GAAG,CAAkBV,IAAI,GAAG,IAAI;IAC1E,MAAMs0E,SAAS,GAAG,IAAI,CAACnkE,aAAa,CAACzP,GAAG,CAAC;IACzC,MAAM6zE,0BAA0B,GAAG,IAAI,CAAC3gE,KAAK,CAAC7B,QAAQ;IAEtD,IAAI,CAACwqD,4BAA4B,CAAC4X,YAAY,CAAC;IAE/C,IAAI,IAAI,CAAC/6C,aAAa,EAAE,EAAE;MACxBpqB,MAAM,CAAC5U,IAAI,GAAG,QAAQ;MAEtB,IAAIk6E,SAAS,EAAE;QACb,IAAI,CAAC56C,sBAAsB,CAAC5B,SAAS,EAAEi8C,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC;QACnE;MACF;MAGA,MAAMtjE,aAAa,GAAG,IAAI,CAAC6oB,sBAAsB,CAACw6C,YAAY,CAAC;MAC/D,IAAIt6C,iBAAiB,GAAG,KAAK;MAC7B,IAAI/oB,aAAa,EAAE;QACjBqjE,YAAY,CAAC15E,IAAI,GAAG,aAAa;QAGjC,IAAIwZ,KAAK,CAACigE,cAAc,IAAI,CAAC,IAAI,CAACjiE,SAAS,CAAC,YAAY,CAAC,EAAE;UACzD,IAAI,CAACmB,KAAK,CAACjJ,MAAM,CAAC/N,oBAAoB,EAAE2E,GAAG,CAAC;QAC9C;QACA,IAAI+P,aAAa,IAAI,IAAI,CAACmB,SAAS,CAAC,YAAY,CAAC,IAAImmB,MAAM,CAAC6hC,QAAQ,EAAE;UACpE,IAAI,CAAC7mD,KAAK,CAACjJ,MAAM,CAACvI,qBAAqB,EAAEb,GAAG,CAAC;QAC/C;QACAkT,KAAK,CAACigE,cAAc,GAAG,IAAI;QAC3Br6C,iBAAiB,GAAG5lB,KAAK,CAAC0oD,aAAa;MACzC;MAEA,IAAI,CAAC/iC,eAAe,CAClBzB,SAAS,EACTg8C,YAAY,EACZ,KAAK,EACL,KAAK,EACLrjE,aAAa,EACb+oB,iBACF,CAAC;IACH,CAAC,MAAM,IAAI,IAAI,CAACH,eAAe,EAAE,EAAE;MACjC,IAAIi7C,SAAS,EAAE;QACb,IAAI,CAACE,wBAAwB,CAAC18C,SAAS,EAAEm8C,WAAW,CAAC;MACvD,CAAC,MAAM;QACL,IAAI,CAACQ,iBAAiB,CAAC38C,SAAS,EAAEk8C,UAAU,CAAC;MAC/C;IACD,CAAA,MAAM,IAAIK,iBAAiB,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC/vB,gBAAgB,CAAA,CAAE,EAAE;MAEpE,IAAI,CAAC3L,iCAAiC,CAACj4C,GAAG,CAAC;MAC3C,MAAM8P,WAAW,GAAG,IAAI,CAACmb,GAAG,GAAQ,CAAC;MAErC,IAAIwoD,YAAY,CAACjhE,QAAQ,EAAE;QACzB,IAAI,CAACnU,UAAU,CAACw1E,0BAA0B,CAAC;MAC7C;MAEAvlE,MAAM,CAAC5U,IAAI,GAAG,QAAQ;MAEtB,MAAMk6E,SAAS,GAAG,IAAI,CAACvoD,KAAK,IAAe,CAAC;MAC5C,IAAI,CAACqoD,qBAAqB,CAACplE,MAAM,CAAC;MAClC,IAAI,CAACutD,4BAA4B,CAAC4X,YAAY,CAAC;MAE/C,IAAIG,SAAS,EAAE;QAEb,IAAI,CAAC56C,sBAAsB,CACzB5B,SAAS,EACTi8C,aAAa,EACbvjE,WAAW,EACX,IACF,CAAC;MACH,CAAC,MAAM;QACL,IAAI,IAAI,CAAC8oB,sBAAsB,CAACw6C,YAAY,CAAC,EAAE;UAC7C,IAAI,CAAC/gE,KAAK,CAACjJ,MAAM,CAAC5O,kBAAkB,EAAE44E,YAAY,CAACpzE,GAAG,CAAC;QACzD;QAEA,IAAI,CAAC64B,eAAe,CAClBzB,SAAS,EACTg8C,YAAY,EACZtjE,WAAW,EACX,IAAI,EACgB,KAAK,EACzB,KACF,CAAC;MACH;IACD,CAAA,MAAM,IACL,CAAC6jE,iBAAiB,KAAK,KAAK,IAAIA,iBAAiB,KAAK,KAAK,KAC3D,EAAE,IAAI,CAACtoD,KAAK,CAAQ,EAAA,CAAC,IAAI,IAAI,CAACu4B,gBAAgB,CAAE,CAAA,CAAC,EACjD;MAGA,IAAI,CAAC3L,iCAAiC,CAACj4C,GAAG,CAAC;MAC3CsO,MAAM,CAAC5U,IAAI,GAAGi6E,iBAAiB;MAE/B,MAAMC,SAAS,GAAG,IAAI,CAACvoD,KAAK,IAAe,CAAC;MAC5C,IAAI,CAACqoD,qBAAqB,CAACN,YAAY,CAAC;MAExC,IAAIQ,SAAS,EAAE;QAEb,IAAI,CAAC56C,sBAAsB,CAAC5B,SAAS,EAAEi8C,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC;MACrE,CAAC,MAAM;QACL,IAAI,IAAI,CAACz6C,sBAAsB,CAACw6C,YAAY,CAAC,EAAE;UAC7C,IAAI,CAAC/gE,KAAK,CAACjJ,MAAM,CAAC7O,qBAAqB,EAAE64E,YAAY,CAACpzE,GAAG,CAAC;QAC5D;QACA,IAAI,CAAC64B,eAAe,CAClBzB,SAAS,EACTg8C,YAAY,EACZ,KAAK,EACL,KAAK,EACe,KAAK,EACzB,KACF,CAAC;MACH;MAEA,IAAI,CAACh6C,uBAAuB,CAACg6C,YAAY,CAAC;IAC3C,CAAA,MAAM,IAAIO,iBAAiB,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC/vB,gBAAgB,CAAA,CAAE,EAAE;MACvE,IAAI,CAACvF,YAAY,CAAC,wBAAwB,CAAC;MAC3C,IAAI,CAACpG,iCAAiC,CAACj4C,GAAG,CAAC;MAG3C,MAAM4zE,SAAS,GAAG,IAAI,CAACvoD,KAAK,IAAe,CAAC;MAC5C,IAAI,CAACqoD,qBAAqB,CAACJ,UAAU,CAAC;MACtC,IAAI,CAACU,yBAAyB,CAAC58C,SAAS,EAAEo8C,YAAY,EAAEI,SAAS,CAAC;IACpE,CAAC,MAAM,IAAI,IAAI,CAAChwB,gBAAgB,EAAE,EAAE;MAElC,IAAIgwB,SAAS,EAAE;QACb,IAAI,CAACE,wBAAwB,CAAC18C,SAAS,EAAEm8C,WAAW,CAAC;MACvD,CAAC,MAAM;QACL,IAAI,CAACQ,iBAAiB,CAAC38C,SAAS,EAAEk8C,UAAU,CAAC;MAC/C;IACF,CAAC,MAAM;MACL,IAAI,CAACj1E,UAAU,CAAA,CAAE;IACnB;EACF;EAGAq1E,qBAAqBA,CAEnBr8C,MAA6B,EACgB;IAC7C,MAAM;MAAE/9B,IAAI;MAAEuN;KAAO,GAAG,IAAI,CAACqM,KAAK;IAClC,IACE,CAAC5Z,IAAI,KAAY,GAAA,IAAIA,IAAI,KAAc,GAAA,KACvC+9B,MAAM,CAAC5G,MAAM,IACb5pB,KAAK,KAAK,WAAW,EACrB;MACA,IAAI,CAACwL,KAAK,CAACjJ,MAAM,CAACzH,eAAe,EAAE,IAAI,CAACuR,KAAK,CAAC7B,QAAQ,CAAC;IACzD;IAEA,IAAI/X,IAAI,QAAmB,EAAE;MAC3B,IAAIuN,KAAK,KAAK,aAAa,EAAE;QAC3B,IAAI,CAACwL,KAAK,CAACjJ,MAAM,CAAC9O,4BAA4B,EAAE,IAAI,CAAC4Y,KAAK,CAAC7B,QAAQ,CAAC;MACtE;MACA,MAAMrR,GAAG,GAAG,IAAI,CAACoP,gBAAgB,EAAE;MACnCioB,MAAM,CAACr3B,GAAG,GAAGA,GAAG;MAChB,OAAOA,GAAG;IACZ;IAEA,IAAI,CAACynD,iBAAiB,CAACpwB,MAAM,CAAC;IAC9B,OAAOA,MAAM,CAACr3B,GAAG;EACnB;EAEA07D,qBAAqBA,CAEnBtkC,SAA8B,EAC9BC,MAIC,EACD;IAAA,IAAA48C,kBAAA;IAEA,IAAI,CAACvvD,KAAK,CAACF,KAAK,CACdN,SAAwC,KAC1C,CAAC;IAED,MAAMygC,SAAS,GAAG,IAAI,CAACzxC,KAAK,CAACulC,MAAM;IACnC,IAAI,CAACvlC,KAAK,CAACulC,MAAM,GAAG,EAAE;IAGtB,IAAI,CAACwM,SAAS,CAACzgC,KAAK,EAAgB,CAAC;IACrC,MAAMtV,IAAmB,GAAImoB,MAAM,CAACnoB,IAAI,GAAG,EAAG;IAC9C,IAAI,CAACkoD,2BAA2B,CAACloD,IAAI,EAAEzF,SAAS,EAAE,KAAK,EAAA,CAAW,CAAC;IACnE,IAAI,CAACw7C,SAAS,CAACxgC,IAAI,EAAE;IACrB,IAAI,CAACC,KAAK,CAACD,IAAI,EAAE;IACjB,IAAI,CAACvR,KAAK,CAACulC,MAAM,GAAGkM,SAAS;IAC7BvtB,SAAS,CAACloB,IAAI,CAACsH,IAAI,CAAC,IAAI,CAAC/F,UAAU,CAAgB4mB,MAAM,EAAE,aAAa,CAAC,CAAC;IAC1E,IAAA48C,CAAAA,kBAAA,GAAI58C,MAAM,CAACrkB,UAAU,KAAjBihE,IAAAA,IAAAA,kBAAA,CAAmB3gE,MAAM,EAAE;MAC7B,IAAI,CAACjB,KAAK,CAACjJ,MAAM,CAACnO,oBAAoB,EAAEo8B,MAAM,CAAC;IACjD;EACF;EAEA08C,iBAAiBA,CAEf38C,SAA8B,EAC9BhmB,IAAqB,EACrB;IACA,IAAI,CAACA,IAAI,CAACb,QAAQ,IAAI,IAAI,CAACG,iBAAiB,CAACU,IAAI,CAACpR,GAAG,CAAC,EAAE;MAGtD,IAAI,CAACqS,KAAK,CAACjJ,MAAM,CAAC/O,qBAAqB,EAAE+W,IAAI,CAACpR,GAAG,CAAC;IACpD;IAEAo3B,SAAS,CAACloB,IAAI,CAACsH,IAAI,CAAC,IAAI,CAAC7F,kBAAkB,CAACS,IAAI,CAAC,CAAC;EACpD;EAEA0iE,wBAAwBA,CAEtB18C,SAA8B,EAC9BhmB,IAAoC,EACpC;IACA,MAAM/X,IAAI,GAAG,IAAI,CAACyX,yBAAyB,CAACM,IAAI,CAAC;IACjDgmB,SAAS,CAACloB,IAAI,CAACsH,IAAI,CAACnd,IAAI,CAAC;IAEzB,IAAI,CAAC4Y,UAAU,CAACyvC,kBAAkB,CAChC,IAAI,CAACnyC,gBAAgB,CAAClW,IAAI,CAAC2G,GAAG,CAAC,KAE/B3G,IAAI,CAAC2G,GAAG,CAAC6H,GAAG,CAAC5Q,KACf,CAAC;EACH;EAEA+8E,yBAAyBA,CAEvB58C,SAA8B,EAC9BhmB,IAA6B,EAC7BwiE,SAAkB,EAClB;IACA,IAAI,CAACA,SAAS,IAAI,CAACxiE,IAAI,CAACb,QAAQ,IAAI,IAAI,CAACG,iBAAiB,CAACU,IAAI,CAACpR,GAAG,CAAC,EAAE;MAGpE,IAAI,CAACqS,KAAK,CAACjJ,MAAM,CAAC/O,qBAAqB,EAAE+W,IAAI,CAACpR,GAAG,CAAC;IACpD;IAEA,MAAM3G,IAAI,GAAG,IAAI,CAAC0X,0BAA0B,CAACK,IAAI,CAAC;IAClDgmB,SAAS,CAACloB,IAAI,CAACsH,IAAI,CAACnd,IAAI,CAAC;IAEzB,IAAIu6E,SAAS,EAAE;MACb,IAAI,CAAC3hE,UAAU,CAACyvC,kBAAkB,CAChC,IAAI,CAACnyC,gBAAgB,CAAClW,IAAI,CAAC2G,GAAoB,CAAC,KAEhD3G,IAAI,CAAC2G,GAAG,CAAC6H,GAAG,CAAC5Q,KACf,CAAC;IACH;EACF;EAEA4hC,eAAeA,CAEbzB,SAA8B,EAC9B9oB,MAA6B,EAC7BwB,WAAoB,EACpB5B,OAAgB,EAChB6B,aAAsB,EACtB+oB,iBAA0B,EACpB;IACN1B,SAAS,CAACloB,IAAI,CAACsH,IAAI,CACjB,IAAI,CAAC3G,WAAW,CACdvB,MAAM,EACNwB,WAAW,EACX5B,OAAO,EACP6B,aAAa,EACb+oB,iBAAiB,EACjB,aAAa,EACb,IACF,CACF,CAAC;EACH;EAEAE,sBAAsBA,CAEpB5B,SAA8B,EAC9B9oB,MAAoC,EACpCwB,WAAoB,EACpB5B,OAAgB,EACV;IACN,MAAM7U,IAAI,GAAG,IAAI,CAACwW,WAAW,CAC3BvB,MAAM,EACNwB,WAAW,EACX5B,OAAO,EACa,KAAK,EACzB,KAAK,EACL,oBAAoB,EACpB,IACF,CAAC;IACDkpB,SAAS,CAACloB,IAAI,CAACsH,IAAI,CAACnd,IAAI,CAAC;IAEzB,MAAMK,IAAI,GACRL,IAAI,CAACK,IAAI,KAAK,KAAK,GACfL,IAAI,CAACo3B,MAAM,QAEuB,GAClCp3B,IAAI,CAACK,IAAI,KAAK,KAAK,GACjBL,IAAI,CAACo3B,MAAM,QAEuB,IACZ;IAC9B,IAAI,CAAC0rC,gCAAgC,CAAC9iE,IAAI,EAAEK,IAAI,CAAC;EACnD;EAEAyiE,gCAAgCA,CAC9B9iE,IAAsD,EACtDK,IAAY,EACZ;IACA,IAAI,CAACuY,UAAU,CAACyvC,kBAAkB,CAChC,IAAI,CAACnyC,gBAAgB,CAAClW,IAAI,CAAC2G,GAAoB,CAAC,EAChDtG,IAAI,EACJL,IAAI,CAAC2G,GAAG,CAAC6H,GAAG,CAAC5Q,KACf,CAAC;EACH;EAGA4kE,4BAA4BA,CAE1BC,YAAqD,EAC/C,CAAC;EAGThrD,yBAAyBA,CAEvBzX,IAAoC,EACZ;IACxB,IAAI,CAAC66E,gBAAgB,CAAC76E,IAAI,CAAC;IAC3B,IAAI,CAAC6yB,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAACzb,UAAU,CAACpX,IAAI,EAAE,sBAAsB,CAAC;EACtD;EAGAsX,kBAAkBA,CAAetX,IAAqB,EAAmB;IACvE,IAAI,CAAC66E,gBAAgB,CAAC76E,IAAI,CAAC;IAC3B,IAAI,CAAC6yB,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAACzb,UAAU,CAACpX,IAAI,EAAE,eAAe,CAAC;EAC/C;EAEA0X,0BAA0BA,CAExB1X,IAA6B,EACJ;IACzB,IAAI,CAAC66E,gBAAgB,CAAC76E,IAAI,CAAC;IAC3B,IAAI,CAAC6yB,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAACzb,UAAU,CAACpX,IAAI,EAAE,uBAAuB,CAAC;EACvD;EAGA66E,gBAAgBA,CAEd76E,IAEC,EACK;IACN,IAAI,CAACqrB,KAAK,CAACF,KAAK,CAACN,QAAiC,CAAC;IACnD,IAAI,CAACihC,eAAe,CAAC3gC,KAAK,CAAC4+B,kBAAkB,CAAE,CAAA,CAAC;IAChD,IAAI,CAAC6B,SAAS,CAACzgC,KAAK,EAAgB,CAAC;IACrCnrB,IAAI,CAACwN,KAAK,GAAG,IAAI,CAACokB,GAAG,CAAA,EAAM,CAAC,GAAG,IAAI,CAACwK,uBAAuB,CAAE,CAAA,GAAG,IAAI;IACpE,IAAI,CAAC0vB,eAAe,CAAC1gC,IAAI,EAAE;IAC3B,IAAI,CAACwgC,SAAS,CAACxgC,IAAI,EAAE;IACrB,IAAI,CAACC,KAAK,CAACD,IAAI,EAAE;EACnB;EAEAuS,YAAYA,CACV39B,IAAqB,EACrB49B,WAAoB,EACpBC,UAA2B,EAC3BtS,WAAwB,OAAyB,EAC3C;IACN,IAAIjF,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC,EAAE;MACtCD,IAAI,CAACmW,EAAE,GAAG,IAAI,CAACic,eAAe,EAAE;MAChC,IAAIwL,WAAW,EAAE;QACf,IAAI,CAACoxB,yBAAyB,CAAChvD,IAAI,CAACmW,EAAE,EAAEoV,WAAW,CAAC;MACtD;IACF,CAAC,MAAM;MACL,IAAIsS,UAAU,IAAI,CAACD,WAAW,EAAE;QAC9B59B,IAAI,CAACmW,EAAE,GAAG,IAAI;MAChB,CAAC,MAAM;QACL,MAAM,IAAI,CAAC6C,KAAK,CAACjJ,MAAM,CAACpK,gBAAgB,EAAE,IAAI,CAACkU,KAAK,CAAC7B,QAAQ,CAAC;MAChE;IACF;EACF;EAGA4nB,eAAeA,CAAe5/B,IAAqB,EAAQ;IACzDA,IAAI,CAACgS,UAAU,GAAG,IAAI,CAAC4f,GAAG,CAAA,EAAY,CAAC,GAAG,IAAI,CAACi9C,mBAAmB,CAAE,CAAA,GAAG,IAAI;EAC7E;EAKAn1D,WAAWA,CAET1Z,IAIC,EACD2Z,UAA4C,EAC/B;IACb,MAAM2kD,sBAAsB,GAAG,IAAI,CAACgD,qBAAqB,CACvDthE,IAAI,EACW,IACjB,CAAC;IACD,MAAM86E,UAAU,GAAG,IAAI,CAAC3Q,gCAAgC,CACtDnqE,IAAI,EACJs+D,sBACF,CAAC;IACD,MAAMyc,iBAAiB,GAAG,CAACD,UAAU,IAAI,IAAI,CAAClpD,GAAG,CAAA,EAAS,CAAC;IAC3D,MAAMopD,OAAO,GAAGD,iBAAiB,IAAI,IAAI,CAACv9C,aAAa,CAACx9B,IAAI,CAAC;IAC7D,MAAM09B,YAAY,GAChBs9C,OAAO,IAAI,IAAI,CAACv9C,kCAAkC,CAACz9B,IAAI,CAAC;IAC1D,MAAMi7E,mBAAmB,GACvBF,iBAAiB,KAAK,CAACr9C,YAAY,IAAI,IAAI,CAAC9L,GAAG,CAAS,EAAA,CAAC,CAAC;IAC5D,MAAMspD,cAAc,GAAGJ,UAAU,IAAIE,OAAO;IAE5C,IAAIA,OAAO,IAAI,CAACt9C,YAAY,EAAE;MAC5B,IAAIo9C,UAAU,EAAE,IAAI,CAAC91E,UAAU,EAAE;MACjC,IAAI2U,UAAU,EAAE;QACd,MAAM,IAAI,CAACX,KAAK,CAACjJ,MAAM,CAAC/F,0BAA0B,EAAEhK,IAAI,CAAC;MAC3D;MACA,IAAI,CAACu9B,eAAe,CAACv9B,IAAI,EAAE,IAAI,CAAC;MAEhC,IAAI,CAACy8C,iBAAiB,GAAG,IAAI;MAE7B,OAAO,IAAI,CAACrlC,UAAU,CAACpX,IAAI,EAAE,sBAAsB,CAAC;IACtD;IAEA,MAAMm7E,aAAa,GAAG,IAAI,CAACC,+BAA+B,CAACp7E,IAAI,CAAC;IAEhE,IAAI86E,UAAU,IAAIC,iBAAiB,IAAI,CAACC,OAAO,IAAI,CAACG,aAAa,EAAE;MACjE,IAAI,CAACn2E,UAAU,CAAC,IAAI,GAAW,CAAC;IAClC;IAEA,IAAI04B,YAAY,IAAIu9C,mBAAmB,EAAE;MACvC,IAAI,CAACj2E,UAAU,CAAC,IAAI,IAAU,CAAC;IACjC;IAEA,IAAIq2E,cAAc;IAClB,IAAIH,cAAc,IAAIC,aAAa,EAAE;MACnCE,cAAc,GAAG,KAAK;MACtB,IAAI1hE,UAAU,EAAE;QACd,MAAM,IAAI,CAACX,KAAK,CAACjJ,MAAM,CAAC/F,0BAA0B,EAAEhK,IAAI,CAAC;MAC3D;MACA,IAAI,CAACu9B,eAAe,CAClBv9B,IAAI,EACJk7E,cACF,CAAC;IACH,CAAC,MAAM;MACLG,cAAc,GAAG,IAAI,CAACC,2BAA2B,CAC/Ct7E,IACF,CAAC;IACH;IAEA,IAAIk7E,cAAc,IAAIC,aAAa,IAAIE,cAAc,EAAE;MAAA,IAAAE,kBAAA;MACrD,MAAMziD,KAAK,GAAG94B,IAAwC;MACtD,IAAI,CAACqqE,WAAW,CAACvxC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAACA,KAAK,CAACxf,MAAM,CAAC;MACpD,IAAI,CAAAiiE,CAAAA,kBAAA,GAAAziD,KAAK,CAAC3e,WAAW,KAAjBohE,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAA,CAAmBt7E,IAAI,MAAK,kBAAkB,EAAE;QAClD,IAAI,CAACkkE,mBAAmB,CAACxqD,UAAU,EAAEmf,KAAK,CAAC3e,WAAW,EAAE2e,KAAK,CAAC;MAC/D,CAAA,MAAM,IAAInf,UAAU,EAAE;QACrB,MAAM,IAAI,CAACX,KAAK,CAACjJ,MAAM,CAAC/F,0BAA0B,EAAEhK,IAAI,CAAC;MAC3D;MACA,IAAI,CAACy8C,iBAAiB,GAAG,IAAI;MAC7B,OAAO,IAAI,CAACrlC,UAAU,CAAC0hB,KAAK,EAAE,wBAAwB,CAAC;IACzD;IAEA,IAAI,IAAI,CAAClH,GAAG,CAAA,EAAY,CAAC,EAAE;MACzB,MAAMkH,KAAK,GAAG94B,IAA0C;MAExD,MAAM8hC,IAAI,GAAG,IAAI,CAAC3G,4BAA4B,EAAE;MAChDrC,KAAK,CAAC3e,WAAW,GAAG2nB,IAAI;MAExB,IAAIA,IAAI,CAAC7hC,IAAI,KAAK,kBAAkB,EAAE;QACpC,IAAI,CAACkkE,mBAAmB,CAACxqD,UAAU,EAAEmoB,IAAI,EAAwBhJ,KAAK,CAAC;MACxE,CAAA,MAAM,IAAInf,UAAU,EAAE;QACrB,MAAM,IAAI,CAACX,KAAK,CAACjJ,MAAM,CAAC/F,0BAA0B,EAAEhK,IAAI,CAAC;MAC3D;MAEA,IAAI,CAACqqE,WAAW,CAACvxC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;MACnC,IAAI,CAAC2jB,iBAAiB,GAAG,IAAI;MAC7B,OAAO,IAAI,CAACrlC,UAAU,CAAC0hB,KAAK,EAAE,0BAA0B,CAAC;IAC3D;IAEA,MAAM,IAAI,CAAC9zB,UAAU,CAAC,IAAI,GAAW,CAAC;EACxC;EAEAw4B,aAAaA,CACXx9B,IAAoB,EAC+C;IACnE,OAAO,IAAI,CAAC4xB,GAAG,CAAA,EAAQ,CAAC;EAC1B;EAEAu4C,gCAAgCA,CAC9BnqE,IAIC,EACDs+D,sBAA2C,EACD;IAC1C,IAAIA,sBAAsB,IAAI,IAAI,CAACpjC,wBAAwB,EAAE,EAAE;MAE7D,IAAI,CAAC8pB,YAAY,CAAC,mBAAmB,EAAEsZ,sBAAsB,IAAtBA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAsB,CAAE9vD,GAAG,CAAC5Q,KAAK,CAAC;MACzE,MAAMuY,EAAE,GAAGmoD,sBAAsB,IAAI,IAAI,CAAClsC,eAAe,CAAC,IAAI,CAAC;MAC/D,MAAMoO,SAAS,GAAG,IAAI,CAAC7sB,eAAe,CAA2BwC,EAAE,CAAC;MACpEqqB,SAAS,CAACzmB,QAAQ,GAAG5D,EAAE;MACtBnW,IAAI,CAAsCga,UAAU,GAAG,CACtD,IAAI,CAAC5C,UAAU,CAACopB,SAAS,EAAE,wBAAwB,CAAC,CACrD;MACD,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;EAEA/C,kCAAkCA,CAChCz9B,IAA+D,EACrB;IAC1C,IAAI,IAAI,CAACozB,YAAY,CAAA,EAAO,CAAC,EAAE;MAAA,IAAAzjB,IAAA,EAAA6rE,eAAA;MAC7B,CAAAA,eAAA,GAAA,CAAA7rE,IAAA,GAAC3P,IAAI,EAAsCga,UAAU,KAAAwhE,IAAAA,GAAAA,eAAA,GAArD7rE,IAAA,CAA2CqK,UAAU,GAAK,EAAE;MAE5D,MAAMwmB,SAAS,GAAG,IAAI,CAAChJ,WAAW,CAChC,IAAI,CAAC3d,KAAK,CAACC,eACb,CAAC;MAED,IAAI,CAAC0P,IAAI,CAAA,CAAE;MAEXgX,SAAS,CAACzmB,QAAQ,GAAG,IAAI,CAACurD,qBAAqB,EAAE;MAChDtlE,IAAI,CAAsCga,UAAU,CAACmD,IAAI,CACxD,IAAI,CAAC/F,UAAU,CAACopB,SAAS,EAAE,0BAA0B,CACvD,CAAC;MACD,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;EAEA46C,+BAA+BA,CAC7Bp7E,IAAoB,EACsB;IAC1C,IAAI,IAAI,CAACgyB,KAAK,CAAA,CAAU,CAAC,EAAE;MACzB,MAAM8G,KAAK,GAAG94B,IAAwC;MAEtD,IAAI,CAAC84B,KAAK,CAAC9e,UAAU,EAAE8e,KAAK,CAAC9e,UAAU,GAAG,EAAE;MAC5C,MAAMyhE,YAAY,GAAG3iD,KAAK,CAAC7E,UAAU,KAAK,MAAM;MAChD6E,KAAK,CAAC9e,UAAU,CAACmD,IAAI,CAAC,GAAG,IAAI,CAACmgB,qBAAqB,CAACm+C,YAAY,CAAC,CAAC;MAClE3iD,KAAK,CAACxf,MAAM,GAAG,IAAI;MACnB,IAAqC,IAAI,CAACzB,SAAS,CAAC,kBAAkB,CAAC,EAAE;QACvEihB,KAAK,CAAC4iD,UAAU,GAAG,EAAE;MACvB,CAAC,MAAM;QACL5iD,KAAK,CAACtf,UAAU,GAAG,EAAE;MACvB;MACAsf,KAAK,CAAC3e,WAAW,GAAG,IAAI;MACxB,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;EAEAmhE,2BAA2BA,CAEzBt7E,IAAsC,EAC7B;IACT,IAAI,IAAI,CAACg7B,4BAA4B,EAAE,EAAE;MACvCh7B,IAAI,CAACga,UAAU,GAAG,EAAE;MACpBha,IAAI,CAACsZ,MAAM,GAAG,IAAI;MAClB,IAAqC,IAAI,CAACzB,SAAS,CAAC,kBAAkB,CAAC,EAAE;QACvE7X,IAAI,CAAC07E,UAAU,GAAG,EAAE;MACtB,CAAC,MAAM;QACL17E,IAAI,CAACwZ,UAAU,GAAG,EAAE;MACtB;MACAxZ,IAAI,CAACma,WAAW,GAAG,IAAI,CAACijB,sBAAsB,CAACp9B,IAAI,CAAC;MACpD,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;EAEAq3E,eAAeA,CAAAA,EAAY;IACzB,IAAI,CAAC,IAAI,CAACjkD,YAAY,GAAU,CAAC,EAAE,OAAO,KAAK;IAC/C,MAAM5J,IAAI,GAAG,IAAI,CAACw6B,oBAAoB,EAAE;IACxC,OAAO,IAAI,CAACkG,oBAAoB,CAAC1gC,IAAI,EAAE,UAAU,CAAC;EACpD;EAEA2R,4BAA4BA,CAAAA,EAEiB;IAC3C,MAAMJ,IAAI,GAAG,IAAI,CAACjkB,SAAS,EAAE;IAE7B,IAAI,IAAI,CAACkb,KAAK,CAAA,EAAa,CAAC,EAAE;MAC5B,IAAI,CAACxI,IAAI,CAAA,CAAE;MACX,OAAO,IAAI,CAACunD,aAAa,CACvBh2C,IAAI,EACJ+9C,KACF,CAAC;IACH,CAAC,MAAM,IAAI,IAAI,CAACzB,eAAe,EAAE,EAAE;MACjC,IAAI,CAAC7tD,IAAI,CAAA,CAAE;MACX,IAAI,CAACA,IAAI,CAAA,CAAE;MACX,OAAO,IAAI,CAACunD,aAAa,CACvBh2C,IAAI,EACJ+9C,KAC8B,IAEhC,CAAC;IACH;IAEA,IAAI,IAAI,CAAC9mD,KAAK,CAAA,EAAU,CAAC,EAAE;MACzB,OAAO,IAAI,CAACitC,UAAU,CAAClkC,IAAI,EAA+B,IAAI,EAAE,IAAI,CAAC;IACvE;IAEA,IAAI,IAAI,CAAC/I,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB,IACE,IAAI,CAACna,SAAS,CAAC,YAAY,CAAC,IAC5B,IAAI,CAAC7B,eAAe,CAAC,YAAY,EAAE,wBAAwB,CAAC,KAAK,IAAI,EACrE;QACA,IAAI,CAACgD,KAAK,CAACjJ,MAAM,CAACxO,qBAAqB,EAAE,IAAI,CAACsY,KAAK,CAAC7B,QAAQ,CAAC;MAC/D;MACA,OAAO,IAAI,CAACinD,UAAU,CACpB,IAAI,CAACkF,mBAAmB,CACtB,IAAI,CAAC4L,eAAe,CAAC,KAAK,CAAC,EAC3B,IAAI,CAACj5D,SAAS,CAAA,CAChB,CAAC,EACD,IAAI,EACJ,IACF,CAAC;IACH;IAEA,IACE,IAAI,CAACkb,KAAK,CAAA,EAAU,CAAC,IACrB,IAAI,CAACA,KAAK,CAAA,EAAQ,CAAC,IACnB,IAAI,CAACgC,KAAK,CAAE,CAAA,IACZ,IAAI,CAACmrC,OAAO,CAAA,CAAE,IACd,IAAI,CAACC,YAAY,EAAE,EACnB;MACA,MAAM,IAAI,CAACpmD,KAAK,CAACjJ,MAAM,CAAC9F,wBAAwB,EAAE,IAAI,CAAC4P,KAAK,CAAC7B,QAAQ,CAAC;IACxE;IAEA,MAAM+oC,GAAG,GAAG,IAAI,CAAC3kB,uBAAuB,EAAE;IAC1C,IAAI,CAACvJ,SAAS,CAAA,CAAE;IAChB,OAAOkuB,GAAG;EACZ;EAGA3jB,sBAAsBA,CAGpBp9B,IAAsC,EACJ;IAClC,IAAI,IAAI,CAACgyB,KAAK,CAAA,EAAU,CAAC,EAAE;MACzB,MAAMhyB,IAAI,GAAG,IAAI,CAACi/D,UAAU,CAC1B,IAAI,CAACnoD,SAAS,EAAsB,EACpC,IAAI,EACJ,KACF,CAAC;MACD,OAAO9W,IAAI;IACb;IACA,OAAO,IAAI,CAACm2E,sBAAsB,EAAE;EACtC;EAEAj7C,wBAAwBA,CAAAA,EAAY;IAClC,MAAM;MAAEj7B;KAAM,GAAG,IAAI,CAAC4Z,KAAK;IAC3B,IAAIyM,iBAAiB,CAACrmB,IAAI,CAAC,EAAE;MAC3B,IAAKA,IAAI,KAAA,EAAc,IAAI,CAAC,IAAI,CAAC4Z,KAAK,CAACohB,WAAW,IAAKh7B,IAAI,KAAA,GAAY,EAAE;QACvE,OAAO,KAAK;MACd;MACA,IACE,CAACA,IAAI,KAAa,GAAA,IAAIA,IAAI,KAAA,GAAkB,KAC5C,CAAC,IAAI,CAAC4Z,KAAK,CAACohB,WAAW,EACvB;QAKA,MAAMzR,IAAI,GAAG,IAAI,CAAC+d,cAAc,EAAE;QAClC,MAAMo0C,QAAQ,GAAG,IAAI,CAACn9C,KAAK,CAACC,UAAU,CAACjV,IAAI,CAAC;QAC5C,IACEmyD,QAAQ,QAA6B,IACpC,IAAI,CAACjT,yBAAyB,CAACiT,QAAQ,EAAEnyD,IAAI,CAAC,IAC7C,CAAC,IAAI,CAACgV,KAAK,CAAC4rB,UAAU,CAAC,MAAM,EAAE5gC,IAAI,CAAE,EACvC;UACA,IAAI,CAACm+B,eAAe,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;UAC5C,OAAO,KAAK;QACd;MACF;IACD,CAAA,MAAM,IAAI,CAAC,IAAI,CAAC31B,KAAK,CAAA,EAAY,CAAC,EAAE;MACnC,OAAO,KAAK;IACd;IAEA,MAAMxI,IAAI,GAAG,IAAI,CAAC+d,cAAc,EAAE;IAClC,MAAMq0C,OAAO,GAAG,IAAI,CAAC1xB,oBAAoB,CAAC1gC,IAAI,EAAE,MAAM,CAAC;IACvD,IACE,IAAI,CAACgV,KAAK,CAACC,UAAU,CAACjV,IAAI,CAAC,KAAoB,EAAA,IAC9ClD,iBAAiB,CAAC,IAAI,CAACzM,KAAK,CAAC5Z,IAAI,CAAC,IAAI27E,OAAQ,EAC/C;MACA,OAAO,IAAI;IACb;IAEA,IAAI,IAAI,CAAC5pD,KAAK,GAAY,CAAC,IAAI4pD,OAAO,EAAE;MACtC,MAAMC,aAAa,GAAG,IAAI,CAACr9C,KAAK,CAACC,UAAU,CACzC,IAAI,CAAColB,mBAAmB,CAACr6B,IAAI,GAAG,CAAC,CACnC,CAAC;MACD,OACEqyD,aAAa,KAAA,EAA4B,IACzCA,aAAa,KAAyB,EAAA;IAE1C;IACA,OAAO,KAAK;EACd;EAEAt+C,eAAeA,CAEbv9B,IAA+D,EAC/DuxB,MAAgB,EACV;IACN,IAAI,IAAI,CAAC0B,aAAa,CAAA,EAAS,CAAC,EAAE;MAChCjzB,IAAI,CAACsZ,MAAM,GAAG,IAAI,CAACoxD,iBAAiB,EAAE;MACtC,IAAI,CAACL,WAAW,CAACrqE,IAAI,CAAC;MACtB,IAAI,CAAC87E,0BAA0B,CAAC97E,IAAI,CAAC;MACrC,IAAI,CAAC+7E,qBAAqB,CAAC/7E,IAAI,CAAC;IACjC,CAAA,MAAM,IAAIuxB,MAAM,EAAE;MACjB,IAAI,CAACvsB,UAAU,CAAA,CAAE;IACnB;IAEA,IAAI,CAAC6tB,SAAS,CAAA,CAAE;EAClB;EAEAmI,4BAA4BA,CAAAA,EAAY;IACtC,MAAM;MAAE/6B;KAAM,GAAG,IAAI,CAAC4Z,KAAK;IAC3B,IAAI5Z,IAAI,OAAU,EAAE;MAClB,IAAI,CAAC0nD,eAAe,CAAC,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;MACzD,IAAI,IAAI,CAAC9vC,SAAS,CAAC,YAAY,CAAC,EAAE;QAChC,IACE,IAAI,CAAC7B,eAAe,CAAC,YAAY,EAAE,wBAAwB,CAAC,KAAK,IAAI,EACrE;UACA,IAAI,CAACgD,KAAK,CAACjJ,MAAM,CAACxO,qBAAqB,EAAE,IAAI,CAACsY,KAAK,CAAC7B,QAAQ,CAAC;QAC/D;QAEA,OAAO,IAAI;MACb;IACF;IAEA,IAAI,IAAI,CAACmnD,OAAO,EAAE,EAAE;MAClB,IAAI,CAACnmD,KAAK,CAACjJ,MAAM,CAAClF,sBAAsB,EAAE,IAAI,CAACgP,KAAK,CAAC7B,QAAQ,CAAC;MAC9D,OAAO,IAAI;IACb;IAEA,IAAI,IAAI,CAAConD,YAAY,EAAE,EAAE;MACvB,IAAI,CAACpmD,KAAK,CAACjJ,MAAM,CAAClF,sBAAsB,EAAE,IAAI,CAACgP,KAAK,CAAC7B,QAAQ,CAAC;MAC9D,OAAO,IAAI;IACb;IAEA,OACE/X,IAAI,OAAY,IAChBA,IAAI,OAAc,IAClBA,IAAI,KAAiB,EAAA,IACrBA,IAAI,KAAA,EAAc,IAClB,IAAI,CAAC+zB,KAAK,CAAE,CAAA,IACZ,IAAI,CAACqjD,eAAe,CAAA,CAAE;EAE1B;EAEAhN,WAAWA,CACTrqE,IAIC,EACDg8E,UAAoB,EACpBC,SAAmB,EACnBC,MAAgB,EACV;IACN,IAAIF,UAAU,EAAE;MAAA,IAAAG,gBAAA;MAEd,IAAIF,SAAS,EAAE;QAEb,IAAI,CAAC7a,qBAAqB,CAACphE,IAAI,EAAE,SAAS,CAAC;QAC3C,IAAI,IAAI,CAAC6X,SAAS,CAAC,mBAAmB,CAAC,EAAE;UAAA,IAAAukE,kBAAA;UACvC,MAAMjiE,WAAW,GAAIna,IAAI,CACtBma,WAAW;UACd,IACEA,WAAW,CAACla,IAAI,KAAK,YAAY,IACjCka,WAAW,CAAClU,IAAI,KAAK,MAAM,IAC3BkU,WAAW,CAACtc,GAAG,GAAGsc,WAAW,CAACvc,KAAK,KAAK,CAAC,IACzC,GAAAw+E,kBAAA,GAACjiE,WAAW,CAACjG,KAAK,KAAA,IAAA,IAAjBkoE,kBAAA,CAAmB/mE,aAAa,CACjC,EAAA;YACA,IAAI,CAAC2D,KAAK,CAACjJ,MAAM,CAACrN,6BAA6B,EAAEyX,WAAW,CAAC;UAC/D;QACF;OAED,MAAM,IAAAgiE,CAAAA,gBAAA,GAAIn8E,IAAI,CAACga,UAAU,KAAfmiE,IAAAA,IAAAA,gBAAA,CAAiBliE,MAAM,EAAE;QAGlC,KAAK,MAAMumB,SAAS,IAAIxgC,IAAI,CAACga,UAAU,EAAE;UACvC,MAAM;YAAED;UAAU,CAAA,GAAGymB,SAAS;UAC9B,MAAMr+B,UAAU,GACd4X,QAAQ,CAAC9Z,IAAI,KAAK,YAAY,GAAG8Z,QAAQ,CAAC9T,IAAI,GAAG8T,QAAQ,CAACvM,KAAK;UACjE,IAAI,CAAC4zD,qBAAqB,CAAC5gC,SAAS,EAAEr+B,UAAU,CAAC;UACjD,IAAI,CAAC+5E,MAAM,IAAI17C,SAAS,CAACC,KAAK,EAAE;YAC9B,MAAM;cAAEA;YAAO,CAAA,GAAGD,SAAS;YAC3B,IAAIC,KAAK,CAACxgC,IAAI,KAAK,YAAY,EAAE;cAC/B,IAAI,CAAC+Y,KAAK,CAACjJ,MAAM,CAACvN,qBAAqB,EAAEg+B,SAAS,EAAE;gBAClD/9B,SAAS,EAAEg+B,KAAK,CAACjzB,KAAK;gBACtBrL;cACF,CAAC,CAAC;YACJ,CAAC,MAAM;cAEL,IAAI,CAACu/B,iBAAiB,CAACjB,KAAK,CAACx6B,IAAI,EAAEw6B,KAAK,CAACjyB,GAAG,CAAC5Q,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;cAEhE,IAAI,CAACytB,KAAK,CAACO,gBAAgB,CAAC6U,KAAK,CAAC;YACpC;UACF;QACF;MACF,CAAC,MAAM,IAAKzgC,IAAI,CAAsCma,WAAW,EAAE;QACjE,MAAM2nB,IAAI,GAAI9hC,IAAI,CAAsCma,WAAY;QAEpE,IACE2nB,IAAI,CAAC7hC,IAAI,KAAK,qBAAqB,IACnC6hC,IAAI,CAAC7hC,IAAI,KAAK,kBAAkB,EAChC;UACA,MAAM;YAAEkW;UAAI,CAAA,GAAG2rB,IAAI;UACnB,IAAI,CAAC3rB,EAAE,EAAE,MAAM,IAAIxE,KAAK,CAAC,mBAAmB,CAAC;UAE7C,IAAI,CAACyvD,qBAAqB,CAACphE,IAAI,EAAEmW,EAAE,CAAClQ,IAAI,CAAC;QAC3C,CAAC,MAAM,IAAI67B,IAAI,CAAC7hC,IAAI,KAAK,qBAAqB,EAAE;UAC9C,KAAK,MAAMka,WAAW,IAAI2nB,IAAI,CAAC8/B,YAAY,EAAE;YAC3C,IAAI,CAAC9sD,gBAAgB,CAACqF,WAAW,CAAChE,EAAE,CAAC;UACvC;QACF;MACF;IACF;EACF;EAEArB,gBAAgBA,CAAC9U,IAAkC,EAAQ;IACzD,IAAIA,IAAI,CAACC,IAAI,KAAK,YAAY,EAAE;MAC9B,IAAI,CAACmhE,qBAAqB,CAACphE,IAAI,EAAEA,IAAI,CAACiG,IAAI,CAAC;IAC7C,CAAC,MAAM,IAAIjG,IAAI,CAACC,IAAI,KAAK,eAAe,EAAE;MACxC,KAAK,MAAM8X,IAAI,IAAI/X,IAAI,CAAC63B,UAAU,EAAE;QAClC,IAAI,CAAC/iB,gBAAgB,CAACiD,IAAI,CAAC;MAC7B;IACF,CAAC,MAAM,IAAI/X,IAAI,CAACC,IAAI,KAAK,cAAc,EAAE;MACvC,KAAK,MAAMgyE,IAAI,IAAIjyE,IAAI,CAACm/B,QAAQ,EAAE;QAChC,IAAI8yC,IAAI,EAAE;UACR,IAAI,CAACn9D,gBAAgB,CAACm9D,IAAI,CAAC;QAC7B;MACF;IACF,CAAC,MAAM,IAAIjyE,IAAI,CAACC,IAAI,KAAK,gBAAgB,EAAE;MAEzC,IAAI,CAAC6U,gBAAgB,CAAC9U,IAAI,CAACwN,KAAK,CAAC;IACnC,CAAC,MAAM,IAAIxN,IAAI,CAACC,IAAI,KAAK,aAAa,EAAE;MACtC,IAAI,CAAC6U,gBAAgB,CAAC9U,IAAI,CAACoP,QAAQ,CAAC;IACtC,CAAC,MAAM,IAAIpP,IAAI,CAACC,IAAI,KAAK,mBAAmB,EAAE;MAC5C,IAAI,CAAC6U,gBAAgB,CAAC9U,IAAI,CAAC2+B,IAAI,CAAC;IAClC;EACF;EAEAyiC,qBAAqBA,CACnBphE,IAMC,EACDmC,UAAkB,EACZ;IACN,IAAI,IAAI,CAACqpD,mBAAmB,CAACtiC,GAAG,CAAC/mB,UAAU,CAAC,EAAE;MAC5C,IAAIA,UAAU,KAAK,SAAS,EAAE;QAC5B,IAAI,CAAC6W,KAAK,CAACjJ,MAAM,CAAC9N,sBAAsB,EAAEjC,IAAI,CAAC;MACjD,CAAC,MAAM;QACL,IAAI,CAACgZ,KAAK,CAACjJ,MAAM,CAAC7N,eAAe,EAAElC,IAAI,EAAE;UAAEmC;QAAW,CAAC,CAAC;MAC1D;IACF;IACA,IAAI,CAACqpD,mBAAmB,CAACv/B,GAAG,CAAC9pB,UAAU,CAAC;EAC1C;EAIAm7B,qBAAqBA,CAAConC,cAAuB,EAAuB;IAClE,MAAM2X,KAAK,GAAG,EAAE;IAChB,IAAIjjD,KAAK,GAAG,IAAI;IAGhB,IAAI,CAAC7H,MAAM,CAAA,CAAU,CAAC;IAEtB,OAAO,CAAC,IAAI,CAACK,GAAG,CAAA,CAAU,CAAC,EAAE;MAC3B,IAAIwH,KAAK,EAAE;QACTA,KAAK,GAAG,KAAK;MACf,CAAC,MAAM;QACL,IAAI,CAAC7H,MAAM,CAAA,EAAS,CAAC;QACrB,IAAI,IAAI,CAACK,GAAG,CAAA,CAAU,CAAC,EAAE;MAC3B;MACA,MAAMuP,eAAe,GAAG,IAAI,CAAC/N,YAAY,IAAS,CAAC;MACnD,MAAMqxC,QAAQ,GAAG,IAAI,CAACzyC,KAAK,IAAU,CAAC;MACtC,MAAMhyB,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAqB;MAChD9W,IAAI,CAACygC,KAAK,GAAG,IAAI,CAAC6kC,qBAAqB,EAAkB;MACzD+W,KAAK,CAACl/D,IAAI,CACR,IAAI,CAACqnD,oBAAoB,CACvBxkE,IAAI,EACJykE,QAAQ,EACRC,cAAc,EACdvjC,eACF,CACF,CAAC;IACH;IAEA,OAAOk7C,KAAK;EACd;EAEA7X,oBAAoBA,CAClBxkE,IAAS,EACTykE,QAAiB,EAEjBC,cAAuB,EACvBvjC,eAAwB,EAEL;IACnB,IAAI,IAAI,CAAClO,aAAa,CAAA,EAAO,CAAC,EAAE;MAC9BjzB,IAAI,CAAC+Z,QAAQ,GAAG,IAAI,CAACurD,qBAAqB,EAAE;IAC7C,CAAA,MAAM,IAAIb,QAAQ,EAAE;MACnBzkE,IAAI,CAAC+Z,QAAQ,GAAG,IAAI,CAACe,kBAAkB,CAAC9a,IAAI,CAACygC,KAAK,CAAC;IACrD,CAAC,MAAM,IAAI,CAACzgC,IAAI,CAAC+Z,QAAQ,EAAE;MACzB/Z,IAAI,CAAC+Z,QAAQ,GAAG,IAAI,CAACc,eAAe,CAAC7a,IAAI,CAACygC,KAAK,CAAC;IAClD;IACA,OAAO,IAAI,CAACrpB,UAAU,CAAoBpX,IAAI,EAAE,iBAAiB,CAAC;EACpE;EAGAslE,qBAAqBA,CAAAA,EAAmC;IACtD,IAAI,IAAI,CAACtzC,KAAK,CAAA,GAAU,CAAC,EAAE;MACzB,MAAMpX,MAAM,GAAG,IAAI,CAACxH,kBAAkB,CAAC,IAAI,CAACyG,KAAK,CAACrM,KAAK,CAAC;MACxD,MAAM8uE,SAAS,GAAG7H,aAAa,CAACvjD,IAAI,CAACtW,MAAM,CAACpN,KAAK,CAAC;MAClD,IAAI8uE,SAAS,EAAE;QACb,IAAI,CAACtjE,KAAK,CAACjJ,MAAM,CAACnJ,gCAAgC,EAAEgU,MAAM,EAAE;UAC1D/T,iBAAiB,EAAEy1E,SAAS,CAAC,CAAC,CAAC,CAAC79C,UAAU,CAAC,CAAC;QAC9C,CAAC,CAAC;MACJ;MACA,OAAO7jB,MAAM;IACf;IACA,OAAO,IAAI,CAACwX,eAAe,CAAC,IAAI,CAAC;EACnC;EAEAmqD,kBAAkBA,CAChBv8E,IAEC,EACQ;IACT,IAAIA,IAAI,CAAC07E,UAAU,IAAI,IAAI,EAAE;MAC3B,OAAO17E,IAAI,CAAC07E,UAAU,CAAC7zB,IAAI,CAAC,CAAC;QAAElhD,GAAG;QAAE6G;MAAM,CAAC,KAAK;QAC9C,OACEA,KAAK,CAACA,KAAK,KAAK,MAAM,KACrB7G,GAAG,CAAC1G,IAAI,KAAK,YAAY,GACtB0G,GAAG,CAACV,IAAI,KAAK,MAAM,GACnBU,GAAG,CAAC6G,KAAK,KAAK,MAAM,CAAC;MAE7B,CAAC,CAAC;IACJ;IACA,OAAO,KAAK;EACd;EAEA6yB,qBAAqBA,CAACrgC,IAAiC,EAAE;IACvD,MAAM;MAAEga;IAAY,CAAA,GAAGha,IAAI;IAC3B,MAAMw8E,iBAAiB,GACrBxiE,UAAU,CAACC,MAAM,KAAK,CAAC,GAAGD,UAAU,CAAC,CAAC,CAAC,CAAC/Z,IAAI,GAAG,IAAI;IAErD,IAAID,IAAI,CAAC+gC,KAAK,KAAK,QAAQ,EAAE;MAC3B,IAAIy7C,iBAAiB,KAAK,wBAAwB,EAAE;QAClD,IAAI,CAACxjE,KAAK,CACRjJ,MAAM,CAAC1H,gCAAgC,EACvC2R,UAAU,CAAC,CAAC,CAAC,CAACxL,GAAG,CAAC5Q,KACpB,CAAC;MACH;IACF,CAAC,MAAM,IAAIoC,IAAI,CAAC+gC,KAAK,KAAK,OAAO,EAAE;MACjC,IAAIy7C,iBAAiB,KAAK,0BAA0B,EAAE;QACpD,IAAI,CAACxjE,KAAK,CACRjJ,MAAM,CAAClO,4BAA4B,EACnCmY,UAAU,CAAC,CAAC,CAAC,CAACxL,GAAG,CAAC5Q,KACpB,CAAC;MACH;IACF,CAAC,MAAM,IAAIoC,IAAI,CAACsgC,MAAM,EAAE;MAAA,IAAAm8C,gBAAA;MACtB,IAAID,iBAAiB,KAAK,wBAAwB,EAAE;QAClD,IAAI,CAACxjE,KAAK,CAACjJ,MAAM,CAACpM,0BAA0B,EAAEqW,UAAU,CAAC,CAAC,CAAC,CAACxL,GAAG,CAAC5Q,KAAK,CAAC;MACxE;MAEA,IAAI,CAAA6+E,CAAAA,gBAAA,GAAAz8E,IAAI,CAAC07E,UAAU,KAAfe,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAA,CAAiBxiE,MAAM,IAAG,CAAC,EAAE;QAC/B,IAAI,CAACjB,KAAK,CACRjJ,MAAM,CAACrM,4BAA4B,EACnCsW,UAAU,CAAC,CAAC,CAAC,CAACxL,GAAG,CAAC5Q,KACpB,CAAC;MACH;IACF;EACF;EAEAm+E,qBAAqBA,CACnB/7E,IAEC,EACD;IAEA,IAAI,IAAI,CAACu8E,kBAAkB,CAACv8E,IAAI,CAAC,IAAIA,IAAI,CAACC,IAAI,KAAK,sBAAsB,EAAE;MAEzE,MAAM;QAAE+Z;MAAY,CAAA,GAAGha,IAAI;MAC3B,IAAIga,UAAU,IAAI,IAAI,EAAE;QAEtB,MAAM0iE,wBAAwB,GAAG1iE,UAAU,CAAC2iE,IAAI,CAACn8C,SAAS,IAAI;UAC5D,IAAIa,QAAQ;UACZ,IAAIb,SAAS,CAACvgC,IAAI,KAAK,iBAAiB,EAAE;YACxCohC,QAAQ,GAAGb,SAAS,CAACC,KAAK;UAC5B,CAAC,MAAM,IAAID,SAAS,CAACvgC,IAAI,KAAK,iBAAiB,EAAE;YAC/CohC,QAAQ,GAAGb,SAAS,CAACa,QAAQ;UAC/B;UACA,IAAIA,QAAQ,KAAKjxB,SAAS,EAAE;YAC1B,OAAOixB,QAAQ,CAACphC,IAAI,KAAK,YAAY,GACjCohC,QAAQ,CAACp7B,IAAI,KAAK,SAAS,GAC3Bo7B,QAAQ,CAAC7zB,KAAK,KAAK,SAAS;UAClC;QACF,CAAC,CAAC;QACF,IAAIkvE,wBAAwB,KAAKtsE,SAAS,EAAE;UAC1C,IAAI,CAAC4I,KAAK,CACRjJ,MAAM,CAACtM,2BAA2B,EAClCi5E,wBAAwB,CAACluE,GAAG,CAAC5Q,KAC/B,CAAC;QACH;MACF;IACF;EACF;EAEA+iC,sBAAsBA,CAACC,QAAiB,EAAW;IACjD,IAAIA,QAAQ,EAAE,OAAO,KAAK;IAC1B,OACE,IAAI,CAACxN,YAAY,CAAW,GAAA,CAAC,IAC7B,IAAI,CAACA,YAAY,CAAA,EAAU,CAAC,IACM,IAAI,CAACA,YAAY,IAAW,CAAC;EAEnE;EAEA0N,gBAAgBA,CACd9gC,IAA4D,EAC5D4gC,QAAiB,EACjBG,KAAoB,EACpBvyB,GAAc,EACR;IACN,IAAIoyB,QAAQ,EAAE;MAWZ;IACF;IAEA,IAAqCG,KAAK,KAAK,QAAQ,EAAE;MACvD,IAAI,CAACikB,YAAY,CAAC,kBAAkB,EAAEx2C,GAAG,CAAC;MACzCxO,IAAI,CAAyBsgC,MAAM,GAAG,IAAI;IAC5C,CAAA,MAAM,IAAI,IAAI,CAACzoB,SAAS,CAAC,kBAAkB,CAAC,EAAE;MAC5C7X,IAAI,CAAyBsgC,MAAM,GAAG,KAAK;IAC9C;IAEA,IAAIS,KAAK,KAAK,QAAQ,EAAE;MACtB,IAAI,CAACikB,YAAY,CAAC,oBAAoB,EAAEx2C,GAAG,CAAC;MAC3CxO,IAAI,CAAyB+gC,KAAK,GAAG,QAAQ;IAChD,CAAC,MAAM,IAAIA,KAAK,KAAK,OAAO,EAAE;MAC5B,IAAI,CAACikB,YAAY,CAAC,0BAA0B,EAAEx2C,GAAG,CAAC;MACjDxO,IAAI,CAAyB+gC,KAAK,GAAG,OAAO;IAC9C,CAAA,MAAM,IAAI,IAAI,CAAClpB,SAAS,CAAC,oBAAoB,CAAC,EAAE;MAC9C7X,IAAI,CAAyB+gC,KAAK,GAAG,IAAI;IAC5C;EACF;EAaAugC,qBAAqBA,CACnBthE,IAA+D,EAC/D4gC,QAAiB,EACI;IACrB,IAAI,CAAC,IAAI,CAACD,sBAAsB,CAACC,QAAQ,CAAC,EAAE;MAC1C,IAAI,CAACE,gBAAgB,CACnB9gC,IAAI,EACJ4gC,QAAQ,EACR,IACF,CAAC;MACD,OAAO,IAAI;IACb;IAEA,MAAMg8C,eAAe,GAAG,IAAI,CAAC9lE,SAAS,EAAgB;IACtD,MAAM+lE,mBAAmB,GAAG,IAAI,CAAC9R,mBAAmB,CAAC,IAAI,CAAC;IAE1D,MAAM;MAAE9qE;KAAM,GAAG,IAAI,CAAC4Z,KAAK;IAC3B,MAAMijE,aAAa,GAAGt2D,0BAA0B,CAACvmB,IAAI,CAAC,GAOlDA,IAAI,KAAA,EAAa,IAAI,IAAI,CAACs7B,iBAAiB,CAAE,CAAA,KAAyB,GAAA,GAQtEt7B,IAAI,KAAa,EAAA;IAErB,IAAI68E,aAAa,EAAE;MACjB,IAAI,CAACh8C,gBAAgB,CACnB9gC,IAAI,EACJ4gC,QAAQ,EACRi8C,mBAAmB,EACnBD,eAAe,CAACpuE,GAAG,CAAC5Q,KACtB,CAAC;MACD,OAAO,IAAI;IACb,CAAC,MAAM;MACL,IAAI,CAACkjC,gBAAgB,CACnB9gC,IAAI,EACJ4gC,QAAQ,EACR,IACF,CAAC;MAED,OAAO,IAAI,CAACjH,gBAAgB,CAACijD,eAAe,EAAEC,mBAAmB,CAAC;IACpE;EACF;EAEAE,wBAAwBA,CAEtBh8C,KAAa,EACb;IACA,MAAM;MAAE9gC;KAAM,GAAG,IAAI,CAAC4Z,KAAK;IAC3B,OAAOyM,iBAAiB,CAACrmB,IAAI,CAAC,GAO1BA,IAAI,KAAa,EAAA,IAAI,IAAI,CAACs7B,iBAAiB,EAAE,KAAyB,GAAA,GAQtEt7B,IAAI,KAAa,EAAA;EACvB;EAKA2zB,WAAWA,CAAe5zB,IAAiC,EAAe;IACxE,IAAI,IAAI,CAACgyB,KAAK,CAAA,GAAU,CAAC,EAAE;MAEzB,OAAO,IAAI,CAACgrD,8BAA8B,CAACh9E,IAAI,CAAC;IAClD;IAEA,OAAO,IAAI,CAACuhE,6BAA6B,CACvCvhE,IAAI,EACJ,IAAI,CAACshE,qBAAqB,CAACthE,IAAI,EAAiB,KAAK,CACvD,CAAC;EACH;EAEAuhE,6BAA6BA,CAE3BvhE,IAAiC,EACjCs+D,sBAA2C,EAC9B;IACbt+D,IAAI,CAACga,UAAU,GAAG,EAAE;IAIpB,MAAM8gE,UAAU,GAAG,IAAI,CAACmC,gCAAgC,CACtDj9E,IAAI,EACJs+D,sBACF,CAAC;IAOD,MAAM4e,SAAS,GAAG,CAACpC,UAAU,IAAI,IAAI,CAAClpD,GAAG,CAAA,EAAS,CAAC;IAGnD,MAAMopD,OAAO,GAAGkC,SAAS,IAAI,IAAI,CAAC1S,6BAA6B,CAACxqE,IAAI,CAAC;IAGrE,IAAIk9E,SAAS,IAAI,CAAClC,OAAO,EAAE,IAAI,CAACvQ,0BAA0B,CAACzqE,IAAI,CAAC;IAChE,IAAI,CAAC2xB,gBAAgB,CAAA,EAAS,CAAC;IAE/B,OAAO,IAAI,CAACqrD,8BAA8B,CAACh9E,IAAI,CAAC;EAClD;EAEAg9E,8BAA8BA,CAE5Bh9E,IAAiC,EACpB;IAAA,IAAAm9E,iBAAA;IACb,CAAAA,iBAAA,GAAAn9E,IAAI,CAACga,UAAU,KAAA,IAAA,GAAAmjE,iBAAA,GAAfn9E,IAAI,CAACga,UAAU,GAAK,EAAE;IACtBha,IAAI,CAACsZ,MAAM,GAAG,IAAI,CAACoxD,iBAAiB,EAAE;IACtC,IAAI,CAACoR,0BAA0B,CAAC97E,IAAI,CAAC;IACrC,IAAI,CAACqgC,qBAAqB,CAACrgC,IAAI,CAAC;IAChC,IAAI,CAAC+7E,qBAAqB,CAAC/7E,IAAI,CAAC;IAEhC,IAAI,CAAC6yB,SAAS,CAAA,CAAE;IAChB,IAAI,CAAC4pB,iBAAiB,GAAG,IAAI;IAC7B,OAAO,IAAI,CAACrlC,UAAU,CAACpX,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAEA0qE,iBAAiBA,CAAAA,EAAgC;IAC/C,IAAI,CAAC,IAAI,CAAC14C,KAAK,CAAA,GAAU,CAAC,EAAE,IAAI,CAAChtB,UAAU,EAAE;IAC7C,OAAO,IAAI,CAAC0uB,aAAa,EAAE;EAC7B;EAEA6M,yBAAyBA,CAMvBvgC,IAAiC,EACjCwgC,SAAoB,EACpBvgC,IAAe,EACT;IACNugC,SAAS,CAACC,KAAK,GAAG,IAAI,CAACrO,eAAe,EAAE;IACxCpyB,IAAI,CAACga,UAAU,CAACmD,IAAI,CAAC,IAAI,CAACujB,qBAAqB,CAACF,SAAS,EAAEvgC,IAAI,CAAC,CAAC;EACnE;EAEAygC,qBAAqBA,CAMnBF,SAAoB,EACpBvgC,IAAe,EACfsrB,WAAwB,OAA2B,EACnD;IACA,IAAI,CAAC8iC,SAAS,CAAC7tB,SAAS,CAACC,KAAK,EAAE;MAAExgC;IAAM,CAAA,EAAEsrB,WAAW,CAAC;IACtD,OAAO,IAAI,CAACnU,UAAU,CAACopB,SAAS,EAAEvgC,IAAI,CAAC;EACzC;EAOAm9E,qBAAqBA,CAAAA,EAAwB;IAC3C,IAAI,CAAC7rD,MAAM,CAAA,CAAU,CAAC;IAEtB,MAAM8rD,KAAK,GAAG,EAAE;IAChB,MAAMC,SAAS,GAAG,IAAIhxE,GAAG,EAAE;IAE3B,GAAG;MACD,IAAI,IAAI,CAAC0lB,KAAK,CAAA,CAAU,CAAC,EAAE;QACzB;MACF;MAEA,MAAMhyB,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAqB;MAGhD,MAAM67D,OAAO,GAAG,IAAI,CAAC94D,KAAK,CAACrM,KAAK;MAIhC,IAAI8vE,SAAS,CAACp0D,GAAG,CAACypD,OAAO,CAAC,EAAE;QAC1B,IAAI,CAAC35D,KAAK,CACRjJ,MAAM,CAACrJ,iCAAiC,EACxC,IAAI,CAACmT,KAAK,CAAC7B,QAAQ,EACnB;UACErR,GAAG,EAAEgsE;QACP,CACF,CAAC;MACH;MACA2K,SAAS,CAACrxD,GAAG,CAAC0mD,OAAO,CAAC;MACtB,IAAI,IAAI,CAAC3gD,KAAK,CAAA,GAAU,CAAC,EAAE;QACzBhyB,IAAI,CAAC2G,GAAG,GAAG,IAAI,CAACyM,kBAAkB,CAACu/D,OAAO,CAAC;MAC7C,CAAC,MAAM;QACL3yE,IAAI,CAAC2G,GAAG,GAAG,IAAI,CAACyrB,eAAe,CAAC,IAAI,CAAC;MACvC;MACA,IAAI,CAACb,MAAM,CAAA,EAAS,CAAC;MAErB,IAAI,CAAC,IAAI,CAACS,KAAK,CAAA,GAAU,CAAC,EAAE;QAC1B,MAAM,IAAI,CAAChZ,KAAK,CACdjJ,MAAM,CAACtJ,2BAA2B,EAClC,IAAI,CAACoT,KAAK,CAAC7B,QACb,CAAC;MACH;MACAhY,IAAI,CAACwN,KAAK,GAAG,IAAI,CAAC4F,kBAAkB,CAAC,IAAI,CAACyG,KAAK,CAACrM,KAAK,CAAC;MACtD6vE,KAAK,CAAClgE,IAAI,CAAC,IAAI,CAAC/F,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC,CAAC;IACtD,CAAC,QAAQ,IAAI,CAAC4xB,GAAG,GAAS,CAAC;IAE3B,IAAI,CAACL,MAAM,CAAA,CAAU,CAAC;IAEtB,OAAO8rD,KAAK;EACd;EAMAE,qBAAqBA,CAAAA,EAAG;IACtB,MAAMF,KAA0B,GAAG,EAAE;IACrC,MAAM7jE,UAAU,GAAG,IAAIlN,GAAG,EAAE;IAC5B,GAAG;MACD,MAAMtM,IAAI,GAAG,IAAI,CAAC8W,SAAS,EAAqB;MAChD9W,IAAI,CAAC2G,GAAG,GAAG,IAAI,CAACyrB,eAAe,CAAC,IAAI,CAAC;MAErC,IAAIpyB,IAAI,CAAC2G,GAAG,CAACV,IAAI,KAAK,MAAM,EAAE;QAC5B,IAAI,CAAC+S,KAAK,CAACjJ,MAAM,CAACvJ,gCAAgC,EAAExG,IAAI,CAAC2G,GAAG,CAAC;MAC/D;MAEA,IAAI6S,UAAU,CAAC0P,GAAG,CAAClpB,IAAI,CAAC2G,GAAG,CAACV,IAAI,CAAC,EAAE;QACjC,IAAI,CAAC+S,KAAK,CAACjJ,MAAM,CAACrJ,iCAAiC,EAAE1G,IAAI,CAAC2G,GAAG,EAAE;UAC7DA,GAAG,EAAE3G,IAAI,CAAC2G,GAAG,CAACV;QAChB,CAAC,CAAC;MACJ;MACAuT,UAAU,CAACyS,GAAG,CAACjsB,IAAI,CAAC2G,GAAG,CAACV,IAAI,CAAC;MAC7B,IAAI,CAACsrB,MAAM,CAAA,EAAS,CAAC;MACrB,IAAI,CAAC,IAAI,CAACS,KAAK,CAAA,GAAU,CAAC,EAAE;QAC1B,MAAM,IAAI,CAAChZ,KAAK,CACdjJ,MAAM,CAACtJ,2BAA2B,EAClC,IAAI,CAACoT,KAAK,CAAC7B,QACb,CAAC;MACH;MACAhY,IAAI,CAACwN,KAAK,GAAG,IAAI,CAAC4F,kBAAkB,CAAC,IAAI,CAACyG,KAAK,CAACrM,KAAK,CAAC;MACtD6vE,KAAK,CAAClgE,IAAI,CAAC,IAAI,CAAC/F,UAAU,CAACpX,IAAI,EAAE,iBAAiB,CAAC,CAAC;IACtD,CAAC,QAAQ,IAAI,CAAC4xB,GAAG,GAAS,CAAC;IAE3B,OAAOyrD,KAAK;EACd;EAEAvB,0BAA0BA,CACxB97E,IAEC,EACD;IACA,IAAIwZ,UAA+B;IAGjC,IAAIgkE,OAAO,GAAG,KAAK;IAIrB,IAAI,IAAI,CAACxrD,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,IACE,IAAI,CAACq4B,qBAAqB,CAAE,CAAA,IAC5B,IAAI,CAAC9uB,iBAAiB,CAAA,CAAE,KAAA,EAA8B,EACtD;QAGA;MACF;MAEA,IAAI,CAAC/R,IAAI,CAAA,CAAE;MAEX,IAAqC,IAAI,CAAC3R,SAAS,CAAC,kBAAkB,CAAC,EAAE;QACvE2B,UAAU,GAAG,IAAI,CAAC+jE,qBAAqB,EAAE;QACzC,IAAI,CAACtzB,QAAQ,CAACjqD,IAAI,EAAE,4BAA4B,EAAE,IAAI,CAAC;MACzD,CAAC,MAAM;QACLwZ,UAAU,GAAG,IAAI,CAAC4jE,qBAAqB,EAAE;MAC3C;MAEEI,OAAO,GAAG,IAAI;IAElB,CAAC,MAAM,IAEL,IAAI,CAACpqD,YAAY,CAAW,EAAA,CAAC,IAC7B,CAAC,IAAI,CAACi3B,qBAAqB,EAAE,EAC7B;MACA,IACE,CAAC,IAAI,CAACxyC,SAAS,CAAC,wBAAwB,CAAC,IACzC,CAAC,IAAI,CAACA,SAAS,CAAC,kBAAkB,CAAC,EACnC;QACA,IAAI,CAACmB,KAAK,CAACjJ,MAAM,CAAC5M,yBAAyB,EAAE,IAAI,CAAC0W,KAAK,CAAC7B,QAAQ,CAAC;MACnE;MACA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAC,kBAAkB,CAAC,EAAE;QACvC,IAAI,CAACoyC,QAAQ,CAACjqD,IAAI,EAAE,wBAAwB,EAAE,IAAI,CAAC;MACrD;MACA,IAAI,CAACwpB,IAAI,CAAA,CAAE;MACXhQ,UAAU,GAAG,IAAI,CAAC4jE,qBAAqB,EAAE;IAC3C,CAAC,MAAM;MACL5jE,UAAU,GAAG,EAAE;IACjB;IAEA,IAEE,CAACgkE,OAAQ,IACT,IAAI,CAAC3lE,SAAS,CAAC,kBAAkB,CAAC,EAClC;MACA7X,IAAI,CAAC07E,UAAU,GAAGliE,UAAU;IAC9B,CAAC,MAAM;MACLxZ,IAAI,CAACwZ,UAAU,GAAGA,UAAU;IAC9B;EACF;EAEAyjE,gCAAgCA,CAC9Bj9E,IAAiC,EACjCs+D,sBAA2C,EAClC;IAET,IAAIA,sBAAsB,EAAE;MAC1B,MAAM99B,SAAS,GAAG,IAAI,CAAC7sB,eAAe,CACpC2qD,sBACF,CAAC;MACD99B,SAAS,CAACC,KAAK,GAAG69B,sBAAsB;MACxCt+D,IAAI,CAACga,UAAU,CAACmD,IAAI,CAClB,IAAI,CAACujB,qBAAqB,CAACF,SAAS,EAAE,wBAAwB,CAChE,CAAC;MACD,OAAO,IAAI;IACZ,CAAA,MAAM,IAELha,0BAA0B,CAAC,IAAI,CAAC3M,KAAK,CAAC5Z,IAAI,CAAC,EAC3C;MACA,IAAI,CAACsgC,yBAAyB,CAC5BvgC,IAAI,EACJ,IAAI,CAAC8W,SAAS,CAAA,CAA4B,EAC1C,wBACF,CAAC;MACD,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;EAEA0zD,6BAA6BA,CAACxqE,IAAiC,EAAW;IACxE,IAAI,IAAI,CAACgyB,KAAK,CAAA,EAAQ,CAAC,EAAE;MACvB,MAAMwO,SAAS,GAAG,IAAI,CAAC1pB,SAAS,EAA8B;MAC9D,IAAI,CAAC0S,IAAI,CAAA,CAAE;MACX,IAAI,CAACmI,gBAAgB,CAAA,EAAO,CAAC;MAE7B,IAAI,CAAC4O,yBAAyB,CAC5BvgC,IAAI,EACJwgC,SAAS,EACT,0BACF,CAAC;MACD,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;EAEAiqC,0BAA0BA,CAACzqE,IAAiC,EAAE;IAC5D,IAAIo5B,KAAK,GAAG,IAAI;IAChB,IAAI,CAAC7H,MAAM,CAAA,CAAU,CAAC;IACtB,OAAO,CAAC,IAAI,CAACK,GAAG,CAAA,CAAU,CAAC,EAAE;MAC3B,IAAIwH,KAAK,EAAE;QACTA,KAAK,GAAG,KAAK;MACf,CAAC,MAAM;QAEL,IAAI,IAAI,CAACxH,GAAG,CAAA,EAAS,CAAC,EAAE;UACtB,MAAM,IAAI,CAAC5Y,KAAK,CAACjJ,MAAM,CAAChO,sBAAsB,EAAE,IAAI,CAAC8X,KAAK,CAAC7B,QAAQ,CAAC;QACtE;QAEA,IAAI,CAACuZ,MAAM,CAAA,EAAS,CAAC;QACrB,IAAI,IAAI,CAACK,GAAG,CAAA,CAAU,CAAC,EAAE;MAC3B;MAEA,MAAM4O,SAAS,GAAG,IAAI,CAAC1pB,SAAS,EAAqB;MACrD,MAAMmqB,gBAAgB,GAAG,IAAI,CAACjP,KAAK,IAAU,CAAC;MAC9C,MAAMmP,eAAe,GAAG,IAAI,CAAC/N,YAAY,IAAS,CAAC;MACnDoN,SAAS,CAACa,QAAQ,GAAG,IAAI,CAACikC,qBAAqB,EAAE;MACjD,MAAMmY,eAAe,GAAG,IAAI,CAACz8C,oBAAoB,CAC/CR,SAAS,EACTS,gBAAgB,EAChBjhC,IAAI,CAAC8vB,UAAU,KAAK,MAAM,IAAI9vB,IAAI,CAAC8vB,UAAU,KAAK,QAAQ,EAC1DqR,eAAe,EACf/wB,SACF,CAAC;MACDpQ,IAAI,CAACga,UAAU,CAACmD,IAAI,CAACsgE,eAAe,CAAC;IACvC;EACF;EAGAz8C,oBAAoBA,CAClBR,SAAoC,EACpCS,gBAAyB,EAEzBC,kBAA2B,EAC3BC,eAAwB,EACxB5V,WAAoC,EACjB;IACnB,IAAI,IAAI,CAAC0H,aAAa,CAAA,EAAO,CAAC,EAAE;MAC9BuN,SAAS,CAACC,KAAK,GAAG,IAAI,CAACrO,eAAe,EAAE;IAC1C,CAAC,MAAM;MACL,MAAM;QAAEiP;MAAU,CAAA,GAAGb,SAAS;MAC9B,IAAIS,gBAAgB,EAAE;QACpB,MAAM,IAAI,CAACjoB,KAAK,CAACjJ,MAAM,CAAC3M,qBAAqB,EAAEo9B,SAAS,EAAE;UACxDn9B,UAAU,EAAGg+B,QAAQ,CAAqB7zB;QAC5C,CAAC,CAAC;MACJ;MACA,IAAI,CAACk0B,iBAAiB,CACnBL,QAAQ,CAAkBp7B,IAAI,EAC/Bu6B,SAAS,CAAChyB,GAAG,CAAC5Q,KAAK,EACnB,IAAI,EACJ,IACF,CAAC;MACD,IAAI,CAAC4iC,SAAS,CAACC,KAAK,EAAE;QACpBD,SAAS,CAACC,KAAK,GAAG,IAAI,CAAC5lB,eAAe,CAACwmB,QAAwB,CAAC;MAClE;IACF;IACA,OAAO,IAAI,CAACX,qBAAqB,CAC/BF,SAAS,EACT,iBAAiB,EACjBjV,WACF,CAAC;EACH;EAIAmU,WAAWA,CACTtF,KAAuD,EAC9C;IACT,OAAOA,KAAK,CAACn6B,IAAI,KAAK,YAAY,IAAIm6B,KAAK,CAACn0B,IAAI,KAAK,MAAM;EAC7D;AACF;ACv6Ge,MAAMy3E,MAAM,SAASrI,eAAe,CAAC;EAClD/3E,WAAWA,CACToU,OAAyC,EACzC8sB,KAAa,EACb2sC,UAAsB,EACtB;IACA,MAAMwS,iBAAiB,GAAGnsE,UAAU,CAACE,OAAO,CAAC;IAC7C,KAAK,CAACisE,iBAAiB,EAAEn/C,KAAK,CAAC;IAE/B,IAAI,CAAC9sB,OAAO,GAAGisE,iBAAiB;IAChC,IAAI,CAACtyB,gBAAgB,CAAA,CAAE;IACvB,IAAI,CAACt6C,OAAO,GAAGo6D,UAAU;IACzB,IAAI,CAACrtE,QAAQ,GAAG6/E,iBAAiB,CAACxtE,cAAc;IAChD,IAAI,CAACE,UAAU,GAAGstE,iBAAiB,CAACttE,UAAU;IAE9C,IAAI+B,WAAW,GAAG,CAAC;IACnB,IAAIurE,iBAAiB,CAACntE,yBAAyB,EAAE;MAC/C4B,WAAW,KAAyC;IACtD;IACA,IAAIurE,iBAAiB,CAACltE,0BAA0B,EAAE;MAChD2B,WAAW,KAA0C;IACvD;IACA,IAAIurE,iBAAiB,CAAChtE,2BAA2B,EAAE;MACjDyB,WAAW,KAA2C;IACxD;IACA,IAAIurE,iBAAiB,CAAC/sE,uBAAuB,EAAE;MAC7CwB,WAAW,MAAuC;IACpD;IACA,IAAIurE,iBAAiB,CAAC9sE,sBAAsB,EAAE;MAC5CuB,WAAW,MAAsC;IACnD;IACA,IAAIurE,iBAAiB,CAACjtE,6BAA6B,EAAE;MACnD0B,WAAW,KAA6C;IAC1D;IACA,IAAIurE,iBAAiB,CAAC7sE,yBAAyB,EAAE;MAC/CsB,WAAW,MAAyC;IACtD;IACA,IAAIurE,iBAAiB,CAAC1sE,MAAM,EAAE;MAC5BmB,WAAW,OAAsB;IACnC;IACA,IAAIurE,iBAAiB,CAACzsE,MAAM,EAAE;MAC5BkB,WAAW,OAAsB;IACnC;IACA,IAAIurE,iBAAiB,CAACxsE,uBAAuB,EAAE;MAC7CiB,WAAW,OAAuC;IACpD;IACA,IAAIurE,iBAAiB,CAACvsE,8BAA8B,EAAE;MACpDgB,WAAW,QAA8C;IAC3D;IACA,IAAIurE,iBAAiB,CAACtsE,aAAa,EAAE;MACnCe,WAAW,QAA6B;IAC1C;IACA,IAAIurE,iBAAiB,CAACrsE,aAAa,EAAE;MACnCc,WAAW,QAA6B;IAC1C;IACA,IAAIurE,iBAAiB,CAACpsE,MAAM,EAAE;MAC5Ba,WAAW,QAAsB;IACnC;IAEA,IAAI,CAACA,WAAW,GAAGA,WAAW;EAChC;EAGAue,eAAeA,CAAAA,EAAuC;IACpD,OAAO5G,YAAY;EACrB;EAEA7X,KAAKA,CAAAA,EAAsB;IACzB,IAAI,CAAC65C,kBAAkB,CAAA,CAAE;IACzB,MAAM55C,IAAI,GAAG,IAAI,CAAC2E,SAAS,EAAU;IACrC,MAAM6tB,OAAO,GAAG,IAAI,CAAC7tB,SAAS,EAAa;IAC3C,IAAI,CAAC0tB,SAAS,CAAA,CAAE;IAEhBryB,IAAI,CAAC4sC,MAAM,GAAG,IAAI;IAClB,MAAMnkC,MAAM,GAAG,IAAI,CAAC8pB,aAAa,CAACvyB,IAAI,EAAEwyB,OAAO,CAAC;IAChD/pB,MAAM,CAACmkC,MAAM,GAAG,IAAI,CAACllC,KAAK,CAACklC,MAAM;IACjCnkC,MAAM,CAACwiC,QAAQ,CAACnjC,MAAM,GAAG,IAAI,CAACJ,KAAK,CAACkkC,WAAW;IAC/C,OAAOnjC,MAAM;EACf;AACF;AC7CO,SAAS1I,KAAKA,CACnBssB,KAAa,EACb9sB,OAAuB,EACJ;EAAA,IAAAksE,QAAA;EACnB,IAAI,CAAA,CAAAA,QAAA,GAAAlsE,OAAO,KAAA,IAAA,GAAA,KAAA,CAAA,GAAPksE,QAAA,CAAS1tE,UAAU,MAAK,aAAa,EAAE;IACzCwB,OAAO,GAAAnF,MAAA,CAAAC,MAAA,CAAA,CAAA,CAAA,EACFkF,OAAO,CACX;IACD,IAAI;MACFA,OAAO,CAACxB,UAAU,GAAG,QAAQ;MAC7B,MAAM8Z,MAAM,GAAG6zD,SAAS,CAACnsE,OAAO,EAAE8sB,KAAK,CAAC;MACxC,MAAMs/C,GAAG,GAAG9zD,MAAM,CAAC9X,KAAK,EAAE;MAE1B,IAAI8X,MAAM,CAACyyB,iBAAiB,EAAE;QAC5B,OAAOqhC,GAAG;MACZ;MAEA,IAAI9zD,MAAM,CAAC0yB,2BAA2B,EAAE;QAMtC,IAAI;UACFhrC,OAAO,CAACxB,UAAU,GAAG,QAAQ;UAC7B,OAAO2tE,SAAS,CAACnsE,OAAO,EAAE8sB,KAAK,CAAC,CAACtsB,KAAK,CAAA,CAAE;QAC1C,CAAC,CAAC,OAAAa,OAAA,EAAM,CAAC;MACX,CAAC,MAAM;QAGL+qE,GAAG,CAACn5C,OAAO,CAACz0B,UAAU,GAAG,QAAQ;MACnC;MAEA,OAAO4tE,GAAG;IACX,CAAA,CAAC,OAAOC,WAAW,EAAE;MACpB,IAAI;QACFrsE,OAAO,CAACxB,UAAU,GAAG,QAAQ;QAC7B,OAAO2tE,SAAS,CAACnsE,OAAO,EAAE8sB,KAAK,CAAC,CAACtsB,KAAK,CAAA,CAAE;MAC1C,CAAC,CAAC,OAAAgqD,QAAA,EAAM,CAAC;MAET,MAAM6hB,WAAW;IACnB;EACF,CAAC,MAAM;IACL,OAAOF,SAAS,CAACnsE,OAAO,EAAE8sB,KAAK,CAAC,CAACtsB,KAAK,CAAA,CAAE;EAC1C;AACF;AAEO,SAAS2f,eAAeA,CAC7B2M,KAAa,EACb9sB,OAAuB,EACE;EACzB,MAAMsY,MAAM,GAAG6zD,SAAS,CAACnsE,OAAO,EAAE8sB,KAAK,CAAC;EACxC,IAAIxU,MAAM,CAACtY,OAAO,CAACV,UAAU,EAAE;IAC7BgZ,MAAM,CAACnQ,KAAK,CAAC6O,MAAM,GAAG,IAAI;EAC5B;EACA,OAAOsB,MAAM,CAACu6C,aAAa,EAAE;AAC/B;AAEA,SAASyZ,0BAA0BA,CACjCC,kBAAsC,EACH;EACnC,MAAMxhE,UAA6C,GAAG,CAAA,CAAE;EACxD,KAAK,MAAMk6C,QAAQ,IAAIpqD,MAAM,CAACkD,IAAI,CAChCwuE,kBACF,CAAC,EAAkC;IACjCxhE,UAAU,CAACk6C,QAAQ,CAAC,GAAGlvC,gBAAgB,CAACw2D,kBAAkB,CAACtnB,QAAQ,CAAC,CAAC;EACvE;EACA,OAAOl6C,UAAU;AACnB;MAEayhE,QAAQ,GAAGF,0BAA0B,CAACC,EAAkB,CAAC;AAEtE,SAASJ,SAASA,CAChBnsE,OAAyC,EACzC8sB,KAAa,EACL;EACR,IAAIkjC,GAAG,GAAGgc,MAAM;EAChB,MAAMvS,UAAsB,GAAG,IAAI/uD,GAAG,EAAE;EACxC,IAAI1K,OAAO,IAAA,IAAA,IAAPA,OAAO,CAAEX,OAAO,EAAE;IACpB,KAAK,MAAMksC,MAAM,IAAIvrC,OAAO,CAACX,OAAO,EAAE;MACpC,IAAI9K,IAAI,EAAEwL,IAAI;MACd,IAAI,OAAOwrC,MAAM,KAAK,QAAQ,EAAE;QAC9Bh3C,IAAI,GAAGg3C,MAAM;MACf,CAAC,MAAM;QACL,CAACh3C,IAAI,EAAEwL,IAAI,CAAC,GAAGwrC,MAAM;MACvB;MACA,IAAI,CAACkuB,UAAU,CAACjiD,GAAG,CAACjjB,IAAI,CAAC,EAAE;QACzBklE,UAAU,CAACl8D,GAAG,CAAChJ,IAAI,EAAEwL,IAAI,IAAI,CAAE,CAAA,CAAC;MAClC;IACF;IACAy5D,eAAe,CAACC,UAAU,CAAC;IAC3BzJ,GAAG,GAAGyc,cAAc,CAAChT,UAAU,CAAC;EAClC;EAEA,OAAO,IAAIzJ,GAAG,CAAChwD,OAAO,EAAE8sB,KAAK,EAAE2sC,UAAU,CAAC;AAC5C;AAEA,MAAMiT,gBAAgB,GAAG,IAAIhiE,GAAG,EAAwC;AAGxE,SAAS+hE,cAAcA,CACrBhT,UAA4B,EACE;EAC9B,MAAMkT,UAAU,GAAG,EAAE;EACrB,KAAK,MAAMp4E,IAAI,IAAIimE,gBAAgB,EAAE;IACnC,IAAIf,UAAU,CAACjiD,GAAG,CAACjjB,IAAI,CAAC,EAAE;MACxBo4E,UAAU,CAAClhE,IAAI,CAAClX,IAAI,CAAC;IACvB;EACF;EACA,MAAMU,GAAG,GAAG03E,UAAU,CAACj4E,IAAI,CAAC,GAAG,CAAC;EAChC,IAAIs7D,GAAG,GAAG0c,gBAAgB,CAACpvE,GAAG,CAACrI,GAAG,CAAE;EACpC,IAAI,CAAC+6D,GAAG,EAAE;IACRA,GAAG,GAAGgc,MAAM;IACZ,KAAK,MAAMzgC,MAAM,IAAIohC,UAAU,EAAE;MAE/B3c,GAAG,GAAGuK,YAAY,CAAChvB,MAAM,CAAC,CAACykB,GAAG,CAAC;IACjC;IACA0c,gBAAgB,CAACnvE,GAAG,CAACtI,GAAG,EAAE+6D,GAAG,CAAC;EAChC;EACA,OAAOA,GAAG;AACZ;;;"} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/parser/package.json b/vanilla/node_modules/@babel/parser/package.json
new file mode 100644
index 0000000..817f2e4
--- /dev/null
+++ b/vanilla/node_modules/@babel/parser/package.json
@@ -0,0 +1,50 @@
+{
+ "name": "@babel/parser",
+ "version": "7.29.0",
+ "description": "A JavaScript parser",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-parser",
+ "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A+parser+%28babylon%29%22+is%3Aopen",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "keywords": [
+ "babel",
+ "javascript",
+ "parser",
+ "tc39",
+ "ecmascript",
+ "@babel/parser"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-parser"
+ },
+ "main": "./lib/index.js",
+ "types": "./typings/babel-parser.d.ts",
+ "files": [
+ "bin",
+ "lib",
+ "typings/babel-parser.d.ts",
+ "index.cjs"
+ ],
+ "engines": {
+ "node": ">=6.0.0"
+ },
+ "# dependencies": "This package doesn't actually have runtime dependencies. @babel/types is only needed for type definitions.",
+ "dependencies": {
+ "@babel/types": "^7.29.0"
+ },
+ "devDependencies": {
+ "@babel/code-frame": "^7.29.0",
+ "@babel/helper-check-duplicate-nodes": "^7.28.6",
+ "@babel/helper-fixtures": "^7.28.6",
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "charcodes": "^0.2.0"
+ },
+ "bin": "./bin/babel-parser.js",
+ "type": "commonjs"
+} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/parser/typings/babel-parser.d.ts b/vanilla/node_modules/@babel/parser/typings/babel-parser.d.ts
new file mode 100644
index 0000000..d083b0a
--- /dev/null
+++ b/vanilla/node_modules/@babel/parser/typings/babel-parser.d.ts
@@ -0,0 +1,262 @@
+// This file is auto-generated! Do not modify it directly.
+// Run `yarn gulp bundle-dts` to re-generate it.
+/* eslint-disable @typescript-eslint/consistent-type-imports, @typescript-eslint/no-redundant-type-constituents */
+import { File, Expression } from '@babel/types';
+
+declare class Position {
+ line: number;
+ column: number;
+ index: number;
+ constructor(line: number, col: number, index: number);
+}
+
+type SyntaxPlugin = "flow" | "typescript" | "jsx" | "pipelineOperator" | "placeholders";
+type ParseErrorCode = "BABEL_PARSER_SYNTAX_ERROR" | "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED";
+interface ParseErrorSpecification<ErrorDetails> {
+ code: ParseErrorCode;
+ reasonCode: string;
+ syntaxPlugin?: SyntaxPlugin;
+ missingPlugin?: string | string[];
+ loc: Position;
+ details: ErrorDetails;
+ pos: number;
+}
+type ParseError$1<ErrorDetails> = SyntaxError & ParseErrorSpecification<ErrorDetails>;
+
+type BABEL_8_BREAKING = false;
+type IF_BABEL_7<V> = false extends BABEL_8_BREAKING ? V : never;
+
+type Plugin$1 =
+ | "asyncDoExpressions"
+ | IF_BABEL_7<"asyncGenerators">
+ | IF_BABEL_7<"bigInt">
+ | IF_BABEL_7<"classPrivateMethods">
+ | IF_BABEL_7<"classPrivateProperties">
+ | IF_BABEL_7<"classProperties">
+ | IF_BABEL_7<"classStaticBlock">
+ | IF_BABEL_7<"decimal">
+ | "decorators-legacy"
+ | "deferredImportEvaluation"
+ | "decoratorAutoAccessors"
+ | "destructuringPrivate"
+ | IF_BABEL_7<"deprecatedImportAssert">
+ | "doExpressions"
+ | IF_BABEL_7<"dynamicImport">
+ | IF_BABEL_7<"explicitResourceManagement">
+ | "exportDefaultFrom"
+ | IF_BABEL_7<"exportNamespaceFrom">
+ | "flow"
+ | "flowComments"
+ | "functionBind"
+ | "functionSent"
+ | "importMeta"
+ | "jsx"
+ | IF_BABEL_7<"jsonStrings">
+ | IF_BABEL_7<"logicalAssignment">
+ | IF_BABEL_7<"importAssertions">
+ | IF_BABEL_7<"importReflection">
+ | "moduleBlocks"
+ | IF_BABEL_7<"moduleStringNames">
+ | IF_BABEL_7<"nullishCoalescingOperator">
+ | IF_BABEL_7<"numericSeparator">
+ | IF_BABEL_7<"objectRestSpread">
+ | IF_BABEL_7<"optionalCatchBinding">
+ | IF_BABEL_7<"optionalChaining">
+ | "partialApplication"
+ | "placeholders"
+ | IF_BABEL_7<"privateIn">
+ | IF_BABEL_7<"regexpUnicodeSets">
+ | "sourcePhaseImports"
+ | "throwExpressions"
+ | IF_BABEL_7<"topLevelAwait">
+ | "v8intrinsic"
+ | ParserPluginWithOptions[0];
+
+type ParserPluginWithOptions =
+ | ["decorators", DecoratorsPluginOptions]
+ | ["discardBinding", { syntaxType: "void" }]
+ | ["estree", { classFeatures?: boolean }]
+ | IF_BABEL_7<["importAttributes", { deprecatedAssertSyntax: boolean }]>
+ | IF_BABEL_7<["moduleAttributes", { version: "may-2020" }]>
+ | ["optionalChainingAssign", { version: "2023-07" }]
+ | ["pipelineOperator", PipelineOperatorPluginOptions]
+ | ["recordAndTuple", RecordAndTuplePluginOptions]
+ | ["flow", FlowPluginOptions]
+ | ["typescript", TypeScriptPluginOptions];
+
+type PluginConfig = Plugin$1 | ParserPluginWithOptions;
+
+interface DecoratorsPluginOptions {
+ decoratorsBeforeExport?: boolean;
+ allowCallParenthesized?: boolean;
+}
+
+interface PipelineOperatorPluginOptions {
+ proposal: BABEL_8_BREAKING extends false
+ ? "minimal" | "fsharp" | "hack" | "smart"
+ : "fsharp" | "hack";
+ topicToken?: "%" | "#" | "@@" | "^^" | "^";
+}
+
+interface RecordAndTuplePluginOptions {
+ syntaxType: "bar" | "hash";
+}
+
+type FlowPluginOptions = BABEL_8_BREAKING extends true
+ ? {
+ all?: boolean;
+ enums?: boolean;
+ }
+ : {
+ all?: boolean;
+ };
+
+interface TypeScriptPluginOptions {
+ dts?: boolean;
+ disallowAmbiguousJSXLike?: boolean;
+}
+
+type Plugin = PluginConfig;
+
+type SourceType = "script" | "commonjs" | "module" | "unambiguous";
+interface Options {
+ /**
+ * By default, import and export declarations can only appear at a program's top level.
+ * Setting this option to true allows them anywhere where a statement is allowed.
+ */
+ allowImportExportEverywhere?: boolean;
+ /**
+ * By default, await use is not allowed outside of an async function.
+ * Set this to true to accept such code.
+ */
+ allowAwaitOutsideFunction?: boolean;
+ /**
+ * By default, a return statement at the top level raises an error.
+ * Set this to true to accept such code.
+ */
+ allowReturnOutsideFunction?: boolean;
+ /**
+ * By default, new.target use is not allowed outside of a function or class.
+ * Set this to true to accept such code.
+ */
+ allowNewTargetOutsideFunction?: boolean;
+ /**
+ * By default, super calls are not allowed outside of a method.
+ * Set this to true to accept such code.
+ */
+ allowSuperOutsideMethod?: boolean;
+ /**
+ * By default, exported identifiers must refer to a declared variable.
+ * Set this to true to allow export statements to reference undeclared variables.
+ */
+ allowUndeclaredExports?: boolean;
+ /**
+ * By default, yield use is not allowed outside of a generator function.
+ * Set this to true to accept such code.
+ */
+ allowYieldOutsideFunction?: boolean;
+ /**
+ * By default, Babel parser JavaScript code according to Annex B syntax.
+ * Set this to `false` to disable such behavior.
+ */
+ annexB?: boolean;
+ /**
+ * By default, Babel attaches comments to adjacent AST nodes.
+ * When this option is set to false, comments are not attached.
+ * It can provide up to 30% performance improvement when the input code has many comments.
+ * @babel/eslint-parser will set it for you.
+ * It is not recommended to use attachComment: false with Babel transform,
+ * as doing so removes all the comments in output code, and renders annotations such as
+ * /* istanbul ignore next *\/ nonfunctional.
+ */
+ attachComment?: boolean;
+ /**
+ * By default, Babel always throws an error when it finds some invalid code.
+ * When this option is set to true, it will store the parsing error and
+ * try to continue parsing the invalid input file.
+ */
+ errorRecovery?: boolean;
+ /**
+ * Indicate the mode the code should be parsed in.
+ * Can be one of "script", "commonjs", "module", or "unambiguous". Defaults to "script".
+ * "unambiguous" will make @babel/parser attempt to guess, based on the presence
+ * of ES6 import or export statements.
+ * Files with ES6 imports and exports are considered "module" and are otherwise "script".
+ *
+ * Use "commonjs" to parse code that is intended to be run in a CommonJS environment such as Node.js.
+ */
+ sourceType?: SourceType;
+ /**
+ * Correlate output AST nodes with their source filename.
+ * Useful when generating code and source maps from the ASTs of multiple input files.
+ */
+ sourceFilename?: string;
+ /**
+ * By default, all source indexes start from 0.
+ * You can provide a start index to alternatively start with.
+ * Useful for integration with other source tools.
+ */
+ startIndex?: number;
+ /**
+ * By default, the first line of code parsed is treated as line 1.
+ * You can provide a line number to alternatively start with.
+ * Useful for integration with other source tools.
+ */
+ startLine?: number;
+ /**
+ * By default, the parsed code is treated as if it starts from line 1, column 0.
+ * You can provide a column number to alternatively start with.
+ * Useful for integration with other source tools.
+ */
+ startColumn?: number;
+ /**
+ * Array containing the plugins that you want to enable.
+ */
+ plugins?: Plugin[];
+ /**
+ * Should the parser work in strict mode.
+ * Defaults to true if sourceType === 'module'. Otherwise, false.
+ */
+ strictMode?: boolean;
+ /**
+ * Adds a ranges property to each node: [node.start, node.end]
+ */
+ ranges?: boolean;
+ /**
+ * Adds all parsed tokens to a tokens property on the File node.
+ */
+ tokens?: boolean;
+ /**
+ * By default, the parser adds information about parentheses by setting
+ * `extra.parenthesized` to `true` as needed.
+ * When this option is `true` the parser creates `ParenthesizedExpression`
+ * AST nodes instead of using the `extra` property.
+ */
+ createParenthesizedExpressions?: boolean;
+ /**
+ * The default is false in Babel 7 and true in Babel 8
+ * Set this to true to parse it as an `ImportExpression` node.
+ * Otherwise `import(foo)` is parsed as `CallExpression(Import, [Identifier(foo)])`.
+ */
+ createImportExpressions?: boolean;
+}
+
+type ParserOptions = Partial<Options>;
+type ParseError = ParseError$1<object>;
+type ParseResult<Result extends File | Expression = File> = Result & {
+ comments: File["comments"];
+ errors: null | ParseError[];
+ tokens?: File["tokens"];
+};
+/**
+ * Parse the provided code as an entire ECMAScript program.
+ */
+declare function parse(input: string, options?: ParserOptions): ParseResult<File>;
+declare function parseExpression(input: string, options?: ParserOptions): ParseResult<Expression>;
+
+declare const tokTypes: {
+ // todo(flow->ts) real token type
+ [name: string]: any;
+};
+
+export { DecoratorsPluginOptions, FlowPluginOptions, ParseError, ParseResult, ParserOptions, PluginConfig as ParserPlugin, ParserPluginWithOptions, PipelineOperatorPluginOptions, RecordAndTuplePluginOptions, TypeScriptPluginOptions, parse, parseExpression, tokTypes };
diff --git a/vanilla/node_modules/@babel/types/LICENSE b/vanilla/node_modules/@babel/types/LICENSE
new file mode 100644
index 0000000..f31575e
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vanilla/node_modules/@babel/types/README.md b/vanilla/node_modules/@babel/types/README.md
new file mode 100644
index 0000000..54c9f81
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/README.md
@@ -0,0 +1,19 @@
+# @babel/types
+
+> Babel Types is a Lodash-esque utility library for AST nodes
+
+See our website [@babel/types](https://babeljs.io/docs/babel-types) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20types%22+is%3Aopen) associated with this package.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/types
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/types --dev
+```
diff --git a/vanilla/node_modules/@babel/types/lib/asserts/assertNode.js b/vanilla/node_modules/@babel/types/lib/asserts/assertNode.js
new file mode 100644
index 0000000..c43d9c4
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/asserts/assertNode.js
@@ -0,0 +1,16 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = assertNode;
+var _isNode = require("../validators/isNode.js");
+function assertNode(node) {
+ if (!(0, _isNode.default)(node)) {
+ var _node$type;
+ const type = (_node$type = node == null ? void 0 : node.type) != null ? _node$type : JSON.stringify(node);
+ throw new TypeError(`Not a valid node of type "${type}"`);
+ }
+}
+
+//# sourceMappingURL=assertNode.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/asserts/assertNode.js.map b/vanilla/node_modules/@babel/types/lib/asserts/assertNode.js.map
new file mode 100644
index 0000000..e1bc90b
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/asserts/assertNode.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_isNode","require","assertNode","node","isNode","_node$type","type","JSON","stringify","TypeError"],"sources":["../../src/asserts/assertNode.ts"],"sourcesContent":["import isNode from \"../validators/isNode.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function assertNode(node?: any): asserts node is t.Node {\n if (!isNode(node)) {\n const type = node?.type ?? JSON.stringify(node);\n throw new TypeError(`Not a valid node of type \"${type}\"`);\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAGe,SAASC,UAAUA,CAACC,IAAU,EAA0B;EACrE,IAAI,CAAC,IAAAC,eAAM,EAACD,IAAI,CAAC,EAAE;IAAA,IAAAE,UAAA;IACjB,MAAMC,IAAI,IAAAD,UAAA,GAAGF,IAAI,oBAAJA,IAAI,CAAEG,IAAI,YAAAD,UAAA,GAAIE,IAAI,CAACC,SAAS,CAACL,IAAI,CAAC;IAC/C,MAAM,IAAIM,SAAS,CAAC,6BAA6BH,IAAI,GAAG,CAAC;EAC3D;AACF","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/asserts/generated/index.js b/vanilla/node_modules/@babel/types/lib/asserts/generated/index.js
new file mode 100644
index 0000000..27d00bd
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/asserts/generated/index.js
@@ -0,0 +1,1251 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.assertAccessor = assertAccessor;
+exports.assertAnyTypeAnnotation = assertAnyTypeAnnotation;
+exports.assertArgumentPlaceholder = assertArgumentPlaceholder;
+exports.assertArrayExpression = assertArrayExpression;
+exports.assertArrayPattern = assertArrayPattern;
+exports.assertArrayTypeAnnotation = assertArrayTypeAnnotation;
+exports.assertArrowFunctionExpression = assertArrowFunctionExpression;
+exports.assertAssignmentExpression = assertAssignmentExpression;
+exports.assertAssignmentPattern = assertAssignmentPattern;
+exports.assertAwaitExpression = assertAwaitExpression;
+exports.assertBigIntLiteral = assertBigIntLiteral;
+exports.assertBinary = assertBinary;
+exports.assertBinaryExpression = assertBinaryExpression;
+exports.assertBindExpression = assertBindExpression;
+exports.assertBlock = assertBlock;
+exports.assertBlockParent = assertBlockParent;
+exports.assertBlockStatement = assertBlockStatement;
+exports.assertBooleanLiteral = assertBooleanLiteral;
+exports.assertBooleanLiteralTypeAnnotation = assertBooleanLiteralTypeAnnotation;
+exports.assertBooleanTypeAnnotation = assertBooleanTypeAnnotation;
+exports.assertBreakStatement = assertBreakStatement;
+exports.assertCallExpression = assertCallExpression;
+exports.assertCatchClause = assertCatchClause;
+exports.assertClass = assertClass;
+exports.assertClassAccessorProperty = assertClassAccessorProperty;
+exports.assertClassBody = assertClassBody;
+exports.assertClassDeclaration = assertClassDeclaration;
+exports.assertClassExpression = assertClassExpression;
+exports.assertClassImplements = assertClassImplements;
+exports.assertClassMethod = assertClassMethod;
+exports.assertClassPrivateMethod = assertClassPrivateMethod;
+exports.assertClassPrivateProperty = assertClassPrivateProperty;
+exports.assertClassProperty = assertClassProperty;
+exports.assertCompletionStatement = assertCompletionStatement;
+exports.assertConditional = assertConditional;
+exports.assertConditionalExpression = assertConditionalExpression;
+exports.assertContinueStatement = assertContinueStatement;
+exports.assertDebuggerStatement = assertDebuggerStatement;
+exports.assertDecimalLiteral = assertDecimalLiteral;
+exports.assertDeclaration = assertDeclaration;
+exports.assertDeclareClass = assertDeclareClass;
+exports.assertDeclareExportAllDeclaration = assertDeclareExportAllDeclaration;
+exports.assertDeclareExportDeclaration = assertDeclareExportDeclaration;
+exports.assertDeclareFunction = assertDeclareFunction;
+exports.assertDeclareInterface = assertDeclareInterface;
+exports.assertDeclareModule = assertDeclareModule;
+exports.assertDeclareModuleExports = assertDeclareModuleExports;
+exports.assertDeclareOpaqueType = assertDeclareOpaqueType;
+exports.assertDeclareTypeAlias = assertDeclareTypeAlias;
+exports.assertDeclareVariable = assertDeclareVariable;
+exports.assertDeclaredPredicate = assertDeclaredPredicate;
+exports.assertDecorator = assertDecorator;
+exports.assertDirective = assertDirective;
+exports.assertDirectiveLiteral = assertDirectiveLiteral;
+exports.assertDoExpression = assertDoExpression;
+exports.assertDoWhileStatement = assertDoWhileStatement;
+exports.assertEmptyStatement = assertEmptyStatement;
+exports.assertEmptyTypeAnnotation = assertEmptyTypeAnnotation;
+exports.assertEnumBody = assertEnumBody;
+exports.assertEnumBooleanBody = assertEnumBooleanBody;
+exports.assertEnumBooleanMember = assertEnumBooleanMember;
+exports.assertEnumDeclaration = assertEnumDeclaration;
+exports.assertEnumDefaultedMember = assertEnumDefaultedMember;
+exports.assertEnumMember = assertEnumMember;
+exports.assertEnumNumberBody = assertEnumNumberBody;
+exports.assertEnumNumberMember = assertEnumNumberMember;
+exports.assertEnumStringBody = assertEnumStringBody;
+exports.assertEnumStringMember = assertEnumStringMember;
+exports.assertEnumSymbolBody = assertEnumSymbolBody;
+exports.assertExistsTypeAnnotation = assertExistsTypeAnnotation;
+exports.assertExportAllDeclaration = assertExportAllDeclaration;
+exports.assertExportDeclaration = assertExportDeclaration;
+exports.assertExportDefaultDeclaration = assertExportDefaultDeclaration;
+exports.assertExportDefaultSpecifier = assertExportDefaultSpecifier;
+exports.assertExportNamedDeclaration = assertExportNamedDeclaration;
+exports.assertExportNamespaceSpecifier = assertExportNamespaceSpecifier;
+exports.assertExportSpecifier = assertExportSpecifier;
+exports.assertExpression = assertExpression;
+exports.assertExpressionStatement = assertExpressionStatement;
+exports.assertExpressionWrapper = assertExpressionWrapper;
+exports.assertFile = assertFile;
+exports.assertFlow = assertFlow;
+exports.assertFlowBaseAnnotation = assertFlowBaseAnnotation;
+exports.assertFlowDeclaration = assertFlowDeclaration;
+exports.assertFlowPredicate = assertFlowPredicate;
+exports.assertFlowType = assertFlowType;
+exports.assertFor = assertFor;
+exports.assertForInStatement = assertForInStatement;
+exports.assertForOfStatement = assertForOfStatement;
+exports.assertForStatement = assertForStatement;
+exports.assertForXStatement = assertForXStatement;
+exports.assertFunction = assertFunction;
+exports.assertFunctionDeclaration = assertFunctionDeclaration;
+exports.assertFunctionExpression = assertFunctionExpression;
+exports.assertFunctionParameter = assertFunctionParameter;
+exports.assertFunctionParent = assertFunctionParent;
+exports.assertFunctionTypeAnnotation = assertFunctionTypeAnnotation;
+exports.assertFunctionTypeParam = assertFunctionTypeParam;
+exports.assertGenericTypeAnnotation = assertGenericTypeAnnotation;
+exports.assertIdentifier = assertIdentifier;
+exports.assertIfStatement = assertIfStatement;
+exports.assertImmutable = assertImmutable;
+exports.assertImport = assertImport;
+exports.assertImportAttribute = assertImportAttribute;
+exports.assertImportDeclaration = assertImportDeclaration;
+exports.assertImportDefaultSpecifier = assertImportDefaultSpecifier;
+exports.assertImportExpression = assertImportExpression;
+exports.assertImportNamespaceSpecifier = assertImportNamespaceSpecifier;
+exports.assertImportOrExportDeclaration = assertImportOrExportDeclaration;
+exports.assertImportSpecifier = assertImportSpecifier;
+exports.assertIndexedAccessType = assertIndexedAccessType;
+exports.assertInferredPredicate = assertInferredPredicate;
+exports.assertInterfaceDeclaration = assertInterfaceDeclaration;
+exports.assertInterfaceExtends = assertInterfaceExtends;
+exports.assertInterfaceTypeAnnotation = assertInterfaceTypeAnnotation;
+exports.assertInterpreterDirective = assertInterpreterDirective;
+exports.assertIntersectionTypeAnnotation = assertIntersectionTypeAnnotation;
+exports.assertJSX = assertJSX;
+exports.assertJSXAttribute = assertJSXAttribute;
+exports.assertJSXClosingElement = assertJSXClosingElement;
+exports.assertJSXClosingFragment = assertJSXClosingFragment;
+exports.assertJSXElement = assertJSXElement;
+exports.assertJSXEmptyExpression = assertJSXEmptyExpression;
+exports.assertJSXExpressionContainer = assertJSXExpressionContainer;
+exports.assertJSXFragment = assertJSXFragment;
+exports.assertJSXIdentifier = assertJSXIdentifier;
+exports.assertJSXMemberExpression = assertJSXMemberExpression;
+exports.assertJSXNamespacedName = assertJSXNamespacedName;
+exports.assertJSXOpeningElement = assertJSXOpeningElement;
+exports.assertJSXOpeningFragment = assertJSXOpeningFragment;
+exports.assertJSXSpreadAttribute = assertJSXSpreadAttribute;
+exports.assertJSXSpreadChild = assertJSXSpreadChild;
+exports.assertJSXText = assertJSXText;
+exports.assertLVal = assertLVal;
+exports.assertLabeledStatement = assertLabeledStatement;
+exports.assertLiteral = assertLiteral;
+exports.assertLogicalExpression = assertLogicalExpression;
+exports.assertLoop = assertLoop;
+exports.assertMemberExpression = assertMemberExpression;
+exports.assertMetaProperty = assertMetaProperty;
+exports.assertMethod = assertMethod;
+exports.assertMiscellaneous = assertMiscellaneous;
+exports.assertMixedTypeAnnotation = assertMixedTypeAnnotation;
+exports.assertModuleDeclaration = assertModuleDeclaration;
+exports.assertModuleExpression = assertModuleExpression;
+exports.assertModuleSpecifier = assertModuleSpecifier;
+exports.assertNewExpression = assertNewExpression;
+exports.assertNoop = assertNoop;
+exports.assertNullLiteral = assertNullLiteral;
+exports.assertNullLiteralTypeAnnotation = assertNullLiteralTypeAnnotation;
+exports.assertNullableTypeAnnotation = assertNullableTypeAnnotation;
+exports.assertNumberLiteral = assertNumberLiteral;
+exports.assertNumberLiteralTypeAnnotation = assertNumberLiteralTypeAnnotation;
+exports.assertNumberTypeAnnotation = assertNumberTypeAnnotation;
+exports.assertNumericLiteral = assertNumericLiteral;
+exports.assertObjectExpression = assertObjectExpression;
+exports.assertObjectMember = assertObjectMember;
+exports.assertObjectMethod = assertObjectMethod;
+exports.assertObjectPattern = assertObjectPattern;
+exports.assertObjectProperty = assertObjectProperty;
+exports.assertObjectTypeAnnotation = assertObjectTypeAnnotation;
+exports.assertObjectTypeCallProperty = assertObjectTypeCallProperty;
+exports.assertObjectTypeIndexer = assertObjectTypeIndexer;
+exports.assertObjectTypeInternalSlot = assertObjectTypeInternalSlot;
+exports.assertObjectTypeProperty = assertObjectTypeProperty;
+exports.assertObjectTypeSpreadProperty = assertObjectTypeSpreadProperty;
+exports.assertOpaqueType = assertOpaqueType;
+exports.assertOptionalCallExpression = assertOptionalCallExpression;
+exports.assertOptionalIndexedAccessType = assertOptionalIndexedAccessType;
+exports.assertOptionalMemberExpression = assertOptionalMemberExpression;
+exports.assertParenthesizedExpression = assertParenthesizedExpression;
+exports.assertPattern = assertPattern;
+exports.assertPatternLike = assertPatternLike;
+exports.assertPipelineBareFunction = assertPipelineBareFunction;
+exports.assertPipelinePrimaryTopicReference = assertPipelinePrimaryTopicReference;
+exports.assertPipelineTopicExpression = assertPipelineTopicExpression;
+exports.assertPlaceholder = assertPlaceholder;
+exports.assertPrivate = assertPrivate;
+exports.assertPrivateName = assertPrivateName;
+exports.assertProgram = assertProgram;
+exports.assertProperty = assertProperty;
+exports.assertPureish = assertPureish;
+exports.assertQualifiedTypeIdentifier = assertQualifiedTypeIdentifier;
+exports.assertRecordExpression = assertRecordExpression;
+exports.assertRegExpLiteral = assertRegExpLiteral;
+exports.assertRegexLiteral = assertRegexLiteral;
+exports.assertRestElement = assertRestElement;
+exports.assertRestProperty = assertRestProperty;
+exports.assertReturnStatement = assertReturnStatement;
+exports.assertScopable = assertScopable;
+exports.assertSequenceExpression = assertSequenceExpression;
+exports.assertSpreadElement = assertSpreadElement;
+exports.assertSpreadProperty = assertSpreadProperty;
+exports.assertStandardized = assertStandardized;
+exports.assertStatement = assertStatement;
+exports.assertStaticBlock = assertStaticBlock;
+exports.assertStringLiteral = assertStringLiteral;
+exports.assertStringLiteralTypeAnnotation = assertStringLiteralTypeAnnotation;
+exports.assertStringTypeAnnotation = assertStringTypeAnnotation;
+exports.assertSuper = assertSuper;
+exports.assertSwitchCase = assertSwitchCase;
+exports.assertSwitchStatement = assertSwitchStatement;
+exports.assertSymbolTypeAnnotation = assertSymbolTypeAnnotation;
+exports.assertTSAnyKeyword = assertTSAnyKeyword;
+exports.assertTSArrayType = assertTSArrayType;
+exports.assertTSAsExpression = assertTSAsExpression;
+exports.assertTSBaseType = assertTSBaseType;
+exports.assertTSBigIntKeyword = assertTSBigIntKeyword;
+exports.assertTSBooleanKeyword = assertTSBooleanKeyword;
+exports.assertTSCallSignatureDeclaration = assertTSCallSignatureDeclaration;
+exports.assertTSConditionalType = assertTSConditionalType;
+exports.assertTSConstructSignatureDeclaration = assertTSConstructSignatureDeclaration;
+exports.assertTSConstructorType = assertTSConstructorType;
+exports.assertTSDeclareFunction = assertTSDeclareFunction;
+exports.assertTSDeclareMethod = assertTSDeclareMethod;
+exports.assertTSEntityName = assertTSEntityName;
+exports.assertTSEnumBody = assertTSEnumBody;
+exports.assertTSEnumDeclaration = assertTSEnumDeclaration;
+exports.assertTSEnumMember = assertTSEnumMember;
+exports.assertTSExportAssignment = assertTSExportAssignment;
+exports.assertTSExpressionWithTypeArguments = assertTSExpressionWithTypeArguments;
+exports.assertTSExternalModuleReference = assertTSExternalModuleReference;
+exports.assertTSFunctionType = assertTSFunctionType;
+exports.assertTSImportEqualsDeclaration = assertTSImportEqualsDeclaration;
+exports.assertTSImportType = assertTSImportType;
+exports.assertTSIndexSignature = assertTSIndexSignature;
+exports.assertTSIndexedAccessType = assertTSIndexedAccessType;
+exports.assertTSInferType = assertTSInferType;
+exports.assertTSInstantiationExpression = assertTSInstantiationExpression;
+exports.assertTSInterfaceBody = assertTSInterfaceBody;
+exports.assertTSInterfaceDeclaration = assertTSInterfaceDeclaration;
+exports.assertTSIntersectionType = assertTSIntersectionType;
+exports.assertTSIntrinsicKeyword = assertTSIntrinsicKeyword;
+exports.assertTSLiteralType = assertTSLiteralType;
+exports.assertTSMappedType = assertTSMappedType;
+exports.assertTSMethodSignature = assertTSMethodSignature;
+exports.assertTSModuleBlock = assertTSModuleBlock;
+exports.assertTSModuleDeclaration = assertTSModuleDeclaration;
+exports.assertTSNamedTupleMember = assertTSNamedTupleMember;
+exports.assertTSNamespaceExportDeclaration = assertTSNamespaceExportDeclaration;
+exports.assertTSNeverKeyword = assertTSNeverKeyword;
+exports.assertTSNonNullExpression = assertTSNonNullExpression;
+exports.assertTSNullKeyword = assertTSNullKeyword;
+exports.assertTSNumberKeyword = assertTSNumberKeyword;
+exports.assertTSObjectKeyword = assertTSObjectKeyword;
+exports.assertTSOptionalType = assertTSOptionalType;
+exports.assertTSParameterProperty = assertTSParameterProperty;
+exports.assertTSParenthesizedType = assertTSParenthesizedType;
+exports.assertTSPropertySignature = assertTSPropertySignature;
+exports.assertTSQualifiedName = assertTSQualifiedName;
+exports.assertTSRestType = assertTSRestType;
+exports.assertTSSatisfiesExpression = assertTSSatisfiesExpression;
+exports.assertTSStringKeyword = assertTSStringKeyword;
+exports.assertTSSymbolKeyword = assertTSSymbolKeyword;
+exports.assertTSTemplateLiteralType = assertTSTemplateLiteralType;
+exports.assertTSThisType = assertTSThisType;
+exports.assertTSTupleType = assertTSTupleType;
+exports.assertTSType = assertTSType;
+exports.assertTSTypeAliasDeclaration = assertTSTypeAliasDeclaration;
+exports.assertTSTypeAnnotation = assertTSTypeAnnotation;
+exports.assertTSTypeAssertion = assertTSTypeAssertion;
+exports.assertTSTypeElement = assertTSTypeElement;
+exports.assertTSTypeLiteral = assertTSTypeLiteral;
+exports.assertTSTypeOperator = assertTSTypeOperator;
+exports.assertTSTypeParameter = assertTSTypeParameter;
+exports.assertTSTypeParameterDeclaration = assertTSTypeParameterDeclaration;
+exports.assertTSTypeParameterInstantiation = assertTSTypeParameterInstantiation;
+exports.assertTSTypePredicate = assertTSTypePredicate;
+exports.assertTSTypeQuery = assertTSTypeQuery;
+exports.assertTSTypeReference = assertTSTypeReference;
+exports.assertTSUndefinedKeyword = assertTSUndefinedKeyword;
+exports.assertTSUnionType = assertTSUnionType;
+exports.assertTSUnknownKeyword = assertTSUnknownKeyword;
+exports.assertTSVoidKeyword = assertTSVoidKeyword;
+exports.assertTaggedTemplateExpression = assertTaggedTemplateExpression;
+exports.assertTemplateElement = assertTemplateElement;
+exports.assertTemplateLiteral = assertTemplateLiteral;
+exports.assertTerminatorless = assertTerminatorless;
+exports.assertThisExpression = assertThisExpression;
+exports.assertThisTypeAnnotation = assertThisTypeAnnotation;
+exports.assertThrowStatement = assertThrowStatement;
+exports.assertTopicReference = assertTopicReference;
+exports.assertTryStatement = assertTryStatement;
+exports.assertTupleExpression = assertTupleExpression;
+exports.assertTupleTypeAnnotation = assertTupleTypeAnnotation;
+exports.assertTypeAlias = assertTypeAlias;
+exports.assertTypeAnnotation = assertTypeAnnotation;
+exports.assertTypeCastExpression = assertTypeCastExpression;
+exports.assertTypeParameter = assertTypeParameter;
+exports.assertTypeParameterDeclaration = assertTypeParameterDeclaration;
+exports.assertTypeParameterInstantiation = assertTypeParameterInstantiation;
+exports.assertTypeScript = assertTypeScript;
+exports.assertTypeofTypeAnnotation = assertTypeofTypeAnnotation;
+exports.assertUnaryExpression = assertUnaryExpression;
+exports.assertUnaryLike = assertUnaryLike;
+exports.assertUnionTypeAnnotation = assertUnionTypeAnnotation;
+exports.assertUpdateExpression = assertUpdateExpression;
+exports.assertUserWhitespacable = assertUserWhitespacable;
+exports.assertV8IntrinsicIdentifier = assertV8IntrinsicIdentifier;
+exports.assertVariableDeclaration = assertVariableDeclaration;
+exports.assertVariableDeclarator = assertVariableDeclarator;
+exports.assertVariance = assertVariance;
+exports.assertVoidPattern = assertVoidPattern;
+exports.assertVoidTypeAnnotation = assertVoidTypeAnnotation;
+exports.assertWhile = assertWhile;
+exports.assertWhileStatement = assertWhileStatement;
+exports.assertWithStatement = assertWithStatement;
+exports.assertYieldExpression = assertYieldExpression;
+var _is = require("../../validators/is.js");
+var _deprecationWarning = require("../../utils/deprecationWarning.js");
+function assert(type, node, opts) {
+ if (!(0, _is.default)(type, node, opts)) {
+ throw new Error(`Expected type "${type}" with option ${JSON.stringify(opts)}, ` + `but instead got "${node.type}".`);
+ }
+}
+function assertArrayExpression(node, opts) {
+ assert("ArrayExpression", node, opts);
+}
+function assertAssignmentExpression(node, opts) {
+ assert("AssignmentExpression", node, opts);
+}
+function assertBinaryExpression(node, opts) {
+ assert("BinaryExpression", node, opts);
+}
+function assertInterpreterDirective(node, opts) {
+ assert("InterpreterDirective", node, opts);
+}
+function assertDirective(node, opts) {
+ assert("Directive", node, opts);
+}
+function assertDirectiveLiteral(node, opts) {
+ assert("DirectiveLiteral", node, opts);
+}
+function assertBlockStatement(node, opts) {
+ assert("BlockStatement", node, opts);
+}
+function assertBreakStatement(node, opts) {
+ assert("BreakStatement", node, opts);
+}
+function assertCallExpression(node, opts) {
+ assert("CallExpression", node, opts);
+}
+function assertCatchClause(node, opts) {
+ assert("CatchClause", node, opts);
+}
+function assertConditionalExpression(node, opts) {
+ assert("ConditionalExpression", node, opts);
+}
+function assertContinueStatement(node, opts) {
+ assert("ContinueStatement", node, opts);
+}
+function assertDebuggerStatement(node, opts) {
+ assert("DebuggerStatement", node, opts);
+}
+function assertDoWhileStatement(node, opts) {
+ assert("DoWhileStatement", node, opts);
+}
+function assertEmptyStatement(node, opts) {
+ assert("EmptyStatement", node, opts);
+}
+function assertExpressionStatement(node, opts) {
+ assert("ExpressionStatement", node, opts);
+}
+function assertFile(node, opts) {
+ assert("File", node, opts);
+}
+function assertForInStatement(node, opts) {
+ assert("ForInStatement", node, opts);
+}
+function assertForStatement(node, opts) {
+ assert("ForStatement", node, opts);
+}
+function assertFunctionDeclaration(node, opts) {
+ assert("FunctionDeclaration", node, opts);
+}
+function assertFunctionExpression(node, opts) {
+ assert("FunctionExpression", node, opts);
+}
+function assertIdentifier(node, opts) {
+ assert("Identifier", node, opts);
+}
+function assertIfStatement(node, opts) {
+ assert("IfStatement", node, opts);
+}
+function assertLabeledStatement(node, opts) {
+ assert("LabeledStatement", node, opts);
+}
+function assertStringLiteral(node, opts) {
+ assert("StringLiteral", node, opts);
+}
+function assertNumericLiteral(node, opts) {
+ assert("NumericLiteral", node, opts);
+}
+function assertNullLiteral(node, opts) {
+ assert("NullLiteral", node, opts);
+}
+function assertBooleanLiteral(node, opts) {
+ assert("BooleanLiteral", node, opts);
+}
+function assertRegExpLiteral(node, opts) {
+ assert("RegExpLiteral", node, opts);
+}
+function assertLogicalExpression(node, opts) {
+ assert("LogicalExpression", node, opts);
+}
+function assertMemberExpression(node, opts) {
+ assert("MemberExpression", node, opts);
+}
+function assertNewExpression(node, opts) {
+ assert("NewExpression", node, opts);
+}
+function assertProgram(node, opts) {
+ assert("Program", node, opts);
+}
+function assertObjectExpression(node, opts) {
+ assert("ObjectExpression", node, opts);
+}
+function assertObjectMethod(node, opts) {
+ assert("ObjectMethod", node, opts);
+}
+function assertObjectProperty(node, opts) {
+ assert("ObjectProperty", node, opts);
+}
+function assertRestElement(node, opts) {
+ assert("RestElement", node, opts);
+}
+function assertReturnStatement(node, opts) {
+ assert("ReturnStatement", node, opts);
+}
+function assertSequenceExpression(node, opts) {
+ assert("SequenceExpression", node, opts);
+}
+function assertParenthesizedExpression(node, opts) {
+ assert("ParenthesizedExpression", node, opts);
+}
+function assertSwitchCase(node, opts) {
+ assert("SwitchCase", node, opts);
+}
+function assertSwitchStatement(node, opts) {
+ assert("SwitchStatement", node, opts);
+}
+function assertThisExpression(node, opts) {
+ assert("ThisExpression", node, opts);
+}
+function assertThrowStatement(node, opts) {
+ assert("ThrowStatement", node, opts);
+}
+function assertTryStatement(node, opts) {
+ assert("TryStatement", node, opts);
+}
+function assertUnaryExpression(node, opts) {
+ assert("UnaryExpression", node, opts);
+}
+function assertUpdateExpression(node, opts) {
+ assert("UpdateExpression", node, opts);
+}
+function assertVariableDeclaration(node, opts) {
+ assert("VariableDeclaration", node, opts);
+}
+function assertVariableDeclarator(node, opts) {
+ assert("VariableDeclarator", node, opts);
+}
+function assertWhileStatement(node, opts) {
+ assert("WhileStatement", node, opts);
+}
+function assertWithStatement(node, opts) {
+ assert("WithStatement", node, opts);
+}
+function assertAssignmentPattern(node, opts) {
+ assert("AssignmentPattern", node, opts);
+}
+function assertArrayPattern(node, opts) {
+ assert("ArrayPattern", node, opts);
+}
+function assertArrowFunctionExpression(node, opts) {
+ assert("ArrowFunctionExpression", node, opts);
+}
+function assertClassBody(node, opts) {
+ assert("ClassBody", node, opts);
+}
+function assertClassExpression(node, opts) {
+ assert("ClassExpression", node, opts);
+}
+function assertClassDeclaration(node, opts) {
+ assert("ClassDeclaration", node, opts);
+}
+function assertExportAllDeclaration(node, opts) {
+ assert("ExportAllDeclaration", node, opts);
+}
+function assertExportDefaultDeclaration(node, opts) {
+ assert("ExportDefaultDeclaration", node, opts);
+}
+function assertExportNamedDeclaration(node, opts) {
+ assert("ExportNamedDeclaration", node, opts);
+}
+function assertExportSpecifier(node, opts) {
+ assert("ExportSpecifier", node, opts);
+}
+function assertForOfStatement(node, opts) {
+ assert("ForOfStatement", node, opts);
+}
+function assertImportDeclaration(node, opts) {
+ assert("ImportDeclaration", node, opts);
+}
+function assertImportDefaultSpecifier(node, opts) {
+ assert("ImportDefaultSpecifier", node, opts);
+}
+function assertImportNamespaceSpecifier(node, opts) {
+ assert("ImportNamespaceSpecifier", node, opts);
+}
+function assertImportSpecifier(node, opts) {
+ assert("ImportSpecifier", node, opts);
+}
+function assertImportExpression(node, opts) {
+ assert("ImportExpression", node, opts);
+}
+function assertMetaProperty(node, opts) {
+ assert("MetaProperty", node, opts);
+}
+function assertClassMethod(node, opts) {
+ assert("ClassMethod", node, opts);
+}
+function assertObjectPattern(node, opts) {
+ assert("ObjectPattern", node, opts);
+}
+function assertSpreadElement(node, opts) {
+ assert("SpreadElement", node, opts);
+}
+function assertSuper(node, opts) {
+ assert("Super", node, opts);
+}
+function assertTaggedTemplateExpression(node, opts) {
+ assert("TaggedTemplateExpression", node, opts);
+}
+function assertTemplateElement(node, opts) {
+ assert("TemplateElement", node, opts);
+}
+function assertTemplateLiteral(node, opts) {
+ assert("TemplateLiteral", node, opts);
+}
+function assertYieldExpression(node, opts) {
+ assert("YieldExpression", node, opts);
+}
+function assertAwaitExpression(node, opts) {
+ assert("AwaitExpression", node, opts);
+}
+function assertImport(node, opts) {
+ assert("Import", node, opts);
+}
+function assertBigIntLiteral(node, opts) {
+ assert("BigIntLiteral", node, opts);
+}
+function assertExportNamespaceSpecifier(node, opts) {
+ assert("ExportNamespaceSpecifier", node, opts);
+}
+function assertOptionalMemberExpression(node, opts) {
+ assert("OptionalMemberExpression", node, opts);
+}
+function assertOptionalCallExpression(node, opts) {
+ assert("OptionalCallExpression", node, opts);
+}
+function assertClassProperty(node, opts) {
+ assert("ClassProperty", node, opts);
+}
+function assertClassAccessorProperty(node, opts) {
+ assert("ClassAccessorProperty", node, opts);
+}
+function assertClassPrivateProperty(node, opts) {
+ assert("ClassPrivateProperty", node, opts);
+}
+function assertClassPrivateMethod(node, opts) {
+ assert("ClassPrivateMethod", node, opts);
+}
+function assertPrivateName(node, opts) {
+ assert("PrivateName", node, opts);
+}
+function assertStaticBlock(node, opts) {
+ assert("StaticBlock", node, opts);
+}
+function assertImportAttribute(node, opts) {
+ assert("ImportAttribute", node, opts);
+}
+function assertAnyTypeAnnotation(node, opts) {
+ assert("AnyTypeAnnotation", node, opts);
+}
+function assertArrayTypeAnnotation(node, opts) {
+ assert("ArrayTypeAnnotation", node, opts);
+}
+function assertBooleanTypeAnnotation(node, opts) {
+ assert("BooleanTypeAnnotation", node, opts);
+}
+function assertBooleanLiteralTypeAnnotation(node, opts) {
+ assert("BooleanLiteralTypeAnnotation", node, opts);
+}
+function assertNullLiteralTypeAnnotation(node, opts) {
+ assert("NullLiteralTypeAnnotation", node, opts);
+}
+function assertClassImplements(node, opts) {
+ assert("ClassImplements", node, opts);
+}
+function assertDeclareClass(node, opts) {
+ assert("DeclareClass", node, opts);
+}
+function assertDeclareFunction(node, opts) {
+ assert("DeclareFunction", node, opts);
+}
+function assertDeclareInterface(node, opts) {
+ assert("DeclareInterface", node, opts);
+}
+function assertDeclareModule(node, opts) {
+ assert("DeclareModule", node, opts);
+}
+function assertDeclareModuleExports(node, opts) {
+ assert("DeclareModuleExports", node, opts);
+}
+function assertDeclareTypeAlias(node, opts) {
+ assert("DeclareTypeAlias", node, opts);
+}
+function assertDeclareOpaqueType(node, opts) {
+ assert("DeclareOpaqueType", node, opts);
+}
+function assertDeclareVariable(node, opts) {
+ assert("DeclareVariable", node, opts);
+}
+function assertDeclareExportDeclaration(node, opts) {
+ assert("DeclareExportDeclaration", node, opts);
+}
+function assertDeclareExportAllDeclaration(node, opts) {
+ assert("DeclareExportAllDeclaration", node, opts);
+}
+function assertDeclaredPredicate(node, opts) {
+ assert("DeclaredPredicate", node, opts);
+}
+function assertExistsTypeAnnotation(node, opts) {
+ assert("ExistsTypeAnnotation", node, opts);
+}
+function assertFunctionTypeAnnotation(node, opts) {
+ assert("FunctionTypeAnnotation", node, opts);
+}
+function assertFunctionTypeParam(node, opts) {
+ assert("FunctionTypeParam", node, opts);
+}
+function assertGenericTypeAnnotation(node, opts) {
+ assert("GenericTypeAnnotation", node, opts);
+}
+function assertInferredPredicate(node, opts) {
+ assert("InferredPredicate", node, opts);
+}
+function assertInterfaceExtends(node, opts) {
+ assert("InterfaceExtends", node, opts);
+}
+function assertInterfaceDeclaration(node, opts) {
+ assert("InterfaceDeclaration", node, opts);
+}
+function assertInterfaceTypeAnnotation(node, opts) {
+ assert("InterfaceTypeAnnotation", node, opts);
+}
+function assertIntersectionTypeAnnotation(node, opts) {
+ assert("IntersectionTypeAnnotation", node, opts);
+}
+function assertMixedTypeAnnotation(node, opts) {
+ assert("MixedTypeAnnotation", node, opts);
+}
+function assertEmptyTypeAnnotation(node, opts) {
+ assert("EmptyTypeAnnotation", node, opts);
+}
+function assertNullableTypeAnnotation(node, opts) {
+ assert("NullableTypeAnnotation", node, opts);
+}
+function assertNumberLiteralTypeAnnotation(node, opts) {
+ assert("NumberLiteralTypeAnnotation", node, opts);
+}
+function assertNumberTypeAnnotation(node, opts) {
+ assert("NumberTypeAnnotation", node, opts);
+}
+function assertObjectTypeAnnotation(node, opts) {
+ assert("ObjectTypeAnnotation", node, opts);
+}
+function assertObjectTypeInternalSlot(node, opts) {
+ assert("ObjectTypeInternalSlot", node, opts);
+}
+function assertObjectTypeCallProperty(node, opts) {
+ assert("ObjectTypeCallProperty", node, opts);
+}
+function assertObjectTypeIndexer(node, opts) {
+ assert("ObjectTypeIndexer", node, opts);
+}
+function assertObjectTypeProperty(node, opts) {
+ assert("ObjectTypeProperty", node, opts);
+}
+function assertObjectTypeSpreadProperty(node, opts) {
+ assert("ObjectTypeSpreadProperty", node, opts);
+}
+function assertOpaqueType(node, opts) {
+ assert("OpaqueType", node, opts);
+}
+function assertQualifiedTypeIdentifier(node, opts) {
+ assert("QualifiedTypeIdentifier", node, opts);
+}
+function assertStringLiteralTypeAnnotation(node, opts) {
+ assert("StringLiteralTypeAnnotation", node, opts);
+}
+function assertStringTypeAnnotation(node, opts) {
+ assert("StringTypeAnnotation", node, opts);
+}
+function assertSymbolTypeAnnotation(node, opts) {
+ assert("SymbolTypeAnnotation", node, opts);
+}
+function assertThisTypeAnnotation(node, opts) {
+ assert("ThisTypeAnnotation", node, opts);
+}
+function assertTupleTypeAnnotation(node, opts) {
+ assert("TupleTypeAnnotation", node, opts);
+}
+function assertTypeofTypeAnnotation(node, opts) {
+ assert("TypeofTypeAnnotation", node, opts);
+}
+function assertTypeAlias(node, opts) {
+ assert("TypeAlias", node, opts);
+}
+function assertTypeAnnotation(node, opts) {
+ assert("TypeAnnotation", node, opts);
+}
+function assertTypeCastExpression(node, opts) {
+ assert("TypeCastExpression", node, opts);
+}
+function assertTypeParameter(node, opts) {
+ assert("TypeParameter", node, opts);
+}
+function assertTypeParameterDeclaration(node, opts) {
+ assert("TypeParameterDeclaration", node, opts);
+}
+function assertTypeParameterInstantiation(node, opts) {
+ assert("TypeParameterInstantiation", node, opts);
+}
+function assertUnionTypeAnnotation(node, opts) {
+ assert("UnionTypeAnnotation", node, opts);
+}
+function assertVariance(node, opts) {
+ assert("Variance", node, opts);
+}
+function assertVoidTypeAnnotation(node, opts) {
+ assert("VoidTypeAnnotation", node, opts);
+}
+function assertEnumDeclaration(node, opts) {
+ assert("EnumDeclaration", node, opts);
+}
+function assertEnumBooleanBody(node, opts) {
+ assert("EnumBooleanBody", node, opts);
+}
+function assertEnumNumberBody(node, opts) {
+ assert("EnumNumberBody", node, opts);
+}
+function assertEnumStringBody(node, opts) {
+ assert("EnumStringBody", node, opts);
+}
+function assertEnumSymbolBody(node, opts) {
+ assert("EnumSymbolBody", node, opts);
+}
+function assertEnumBooleanMember(node, opts) {
+ assert("EnumBooleanMember", node, opts);
+}
+function assertEnumNumberMember(node, opts) {
+ assert("EnumNumberMember", node, opts);
+}
+function assertEnumStringMember(node, opts) {
+ assert("EnumStringMember", node, opts);
+}
+function assertEnumDefaultedMember(node, opts) {
+ assert("EnumDefaultedMember", node, opts);
+}
+function assertIndexedAccessType(node, opts) {
+ assert("IndexedAccessType", node, opts);
+}
+function assertOptionalIndexedAccessType(node, opts) {
+ assert("OptionalIndexedAccessType", node, opts);
+}
+function assertJSXAttribute(node, opts) {
+ assert("JSXAttribute", node, opts);
+}
+function assertJSXClosingElement(node, opts) {
+ assert("JSXClosingElement", node, opts);
+}
+function assertJSXElement(node, opts) {
+ assert("JSXElement", node, opts);
+}
+function assertJSXEmptyExpression(node, opts) {
+ assert("JSXEmptyExpression", node, opts);
+}
+function assertJSXExpressionContainer(node, opts) {
+ assert("JSXExpressionContainer", node, opts);
+}
+function assertJSXSpreadChild(node, opts) {
+ assert("JSXSpreadChild", node, opts);
+}
+function assertJSXIdentifier(node, opts) {
+ assert("JSXIdentifier", node, opts);
+}
+function assertJSXMemberExpression(node, opts) {
+ assert("JSXMemberExpression", node, opts);
+}
+function assertJSXNamespacedName(node, opts) {
+ assert("JSXNamespacedName", node, opts);
+}
+function assertJSXOpeningElement(node, opts) {
+ assert("JSXOpeningElement", node, opts);
+}
+function assertJSXSpreadAttribute(node, opts) {
+ assert("JSXSpreadAttribute", node, opts);
+}
+function assertJSXText(node, opts) {
+ assert("JSXText", node, opts);
+}
+function assertJSXFragment(node, opts) {
+ assert("JSXFragment", node, opts);
+}
+function assertJSXOpeningFragment(node, opts) {
+ assert("JSXOpeningFragment", node, opts);
+}
+function assertJSXClosingFragment(node, opts) {
+ assert("JSXClosingFragment", node, opts);
+}
+function assertNoop(node, opts) {
+ assert("Noop", node, opts);
+}
+function assertPlaceholder(node, opts) {
+ assert("Placeholder", node, opts);
+}
+function assertV8IntrinsicIdentifier(node, opts) {
+ assert("V8IntrinsicIdentifier", node, opts);
+}
+function assertArgumentPlaceholder(node, opts) {
+ assert("ArgumentPlaceholder", node, opts);
+}
+function assertBindExpression(node, opts) {
+ assert("BindExpression", node, opts);
+}
+function assertDecorator(node, opts) {
+ assert("Decorator", node, opts);
+}
+function assertDoExpression(node, opts) {
+ assert("DoExpression", node, opts);
+}
+function assertExportDefaultSpecifier(node, opts) {
+ assert("ExportDefaultSpecifier", node, opts);
+}
+function assertRecordExpression(node, opts) {
+ assert("RecordExpression", node, opts);
+}
+function assertTupleExpression(node, opts) {
+ assert("TupleExpression", node, opts);
+}
+function assertDecimalLiteral(node, opts) {
+ assert("DecimalLiteral", node, opts);
+}
+function assertModuleExpression(node, opts) {
+ assert("ModuleExpression", node, opts);
+}
+function assertTopicReference(node, opts) {
+ assert("TopicReference", node, opts);
+}
+function assertPipelineTopicExpression(node, opts) {
+ assert("PipelineTopicExpression", node, opts);
+}
+function assertPipelineBareFunction(node, opts) {
+ assert("PipelineBareFunction", node, opts);
+}
+function assertPipelinePrimaryTopicReference(node, opts) {
+ assert("PipelinePrimaryTopicReference", node, opts);
+}
+function assertVoidPattern(node, opts) {
+ assert("VoidPattern", node, opts);
+}
+function assertTSParameterProperty(node, opts) {
+ assert("TSParameterProperty", node, opts);
+}
+function assertTSDeclareFunction(node, opts) {
+ assert("TSDeclareFunction", node, opts);
+}
+function assertTSDeclareMethod(node, opts) {
+ assert("TSDeclareMethod", node, opts);
+}
+function assertTSQualifiedName(node, opts) {
+ assert("TSQualifiedName", node, opts);
+}
+function assertTSCallSignatureDeclaration(node, opts) {
+ assert("TSCallSignatureDeclaration", node, opts);
+}
+function assertTSConstructSignatureDeclaration(node, opts) {
+ assert("TSConstructSignatureDeclaration", node, opts);
+}
+function assertTSPropertySignature(node, opts) {
+ assert("TSPropertySignature", node, opts);
+}
+function assertTSMethodSignature(node, opts) {
+ assert("TSMethodSignature", node, opts);
+}
+function assertTSIndexSignature(node, opts) {
+ assert("TSIndexSignature", node, opts);
+}
+function assertTSAnyKeyword(node, opts) {
+ assert("TSAnyKeyword", node, opts);
+}
+function assertTSBooleanKeyword(node, opts) {
+ assert("TSBooleanKeyword", node, opts);
+}
+function assertTSBigIntKeyword(node, opts) {
+ assert("TSBigIntKeyword", node, opts);
+}
+function assertTSIntrinsicKeyword(node, opts) {
+ assert("TSIntrinsicKeyword", node, opts);
+}
+function assertTSNeverKeyword(node, opts) {
+ assert("TSNeverKeyword", node, opts);
+}
+function assertTSNullKeyword(node, opts) {
+ assert("TSNullKeyword", node, opts);
+}
+function assertTSNumberKeyword(node, opts) {
+ assert("TSNumberKeyword", node, opts);
+}
+function assertTSObjectKeyword(node, opts) {
+ assert("TSObjectKeyword", node, opts);
+}
+function assertTSStringKeyword(node, opts) {
+ assert("TSStringKeyword", node, opts);
+}
+function assertTSSymbolKeyword(node, opts) {
+ assert("TSSymbolKeyword", node, opts);
+}
+function assertTSUndefinedKeyword(node, opts) {
+ assert("TSUndefinedKeyword", node, opts);
+}
+function assertTSUnknownKeyword(node, opts) {
+ assert("TSUnknownKeyword", node, opts);
+}
+function assertTSVoidKeyword(node, opts) {
+ assert("TSVoidKeyword", node, opts);
+}
+function assertTSThisType(node, opts) {
+ assert("TSThisType", node, opts);
+}
+function assertTSFunctionType(node, opts) {
+ assert("TSFunctionType", node, opts);
+}
+function assertTSConstructorType(node, opts) {
+ assert("TSConstructorType", node, opts);
+}
+function assertTSTypeReference(node, opts) {
+ assert("TSTypeReference", node, opts);
+}
+function assertTSTypePredicate(node, opts) {
+ assert("TSTypePredicate", node, opts);
+}
+function assertTSTypeQuery(node, opts) {
+ assert("TSTypeQuery", node, opts);
+}
+function assertTSTypeLiteral(node, opts) {
+ assert("TSTypeLiteral", node, opts);
+}
+function assertTSArrayType(node, opts) {
+ assert("TSArrayType", node, opts);
+}
+function assertTSTupleType(node, opts) {
+ assert("TSTupleType", node, opts);
+}
+function assertTSOptionalType(node, opts) {
+ assert("TSOptionalType", node, opts);
+}
+function assertTSRestType(node, opts) {
+ assert("TSRestType", node, opts);
+}
+function assertTSNamedTupleMember(node, opts) {
+ assert("TSNamedTupleMember", node, opts);
+}
+function assertTSUnionType(node, opts) {
+ assert("TSUnionType", node, opts);
+}
+function assertTSIntersectionType(node, opts) {
+ assert("TSIntersectionType", node, opts);
+}
+function assertTSConditionalType(node, opts) {
+ assert("TSConditionalType", node, opts);
+}
+function assertTSInferType(node, opts) {
+ assert("TSInferType", node, opts);
+}
+function assertTSParenthesizedType(node, opts) {
+ assert("TSParenthesizedType", node, opts);
+}
+function assertTSTypeOperator(node, opts) {
+ assert("TSTypeOperator", node, opts);
+}
+function assertTSIndexedAccessType(node, opts) {
+ assert("TSIndexedAccessType", node, opts);
+}
+function assertTSMappedType(node, opts) {
+ assert("TSMappedType", node, opts);
+}
+function assertTSTemplateLiteralType(node, opts) {
+ assert("TSTemplateLiteralType", node, opts);
+}
+function assertTSLiteralType(node, opts) {
+ assert("TSLiteralType", node, opts);
+}
+function assertTSExpressionWithTypeArguments(node, opts) {
+ assert("TSExpressionWithTypeArguments", node, opts);
+}
+function assertTSInterfaceDeclaration(node, opts) {
+ assert("TSInterfaceDeclaration", node, opts);
+}
+function assertTSInterfaceBody(node, opts) {
+ assert("TSInterfaceBody", node, opts);
+}
+function assertTSTypeAliasDeclaration(node, opts) {
+ assert("TSTypeAliasDeclaration", node, opts);
+}
+function assertTSInstantiationExpression(node, opts) {
+ assert("TSInstantiationExpression", node, opts);
+}
+function assertTSAsExpression(node, opts) {
+ assert("TSAsExpression", node, opts);
+}
+function assertTSSatisfiesExpression(node, opts) {
+ assert("TSSatisfiesExpression", node, opts);
+}
+function assertTSTypeAssertion(node, opts) {
+ assert("TSTypeAssertion", node, opts);
+}
+function assertTSEnumBody(node, opts) {
+ assert("TSEnumBody", node, opts);
+}
+function assertTSEnumDeclaration(node, opts) {
+ assert("TSEnumDeclaration", node, opts);
+}
+function assertTSEnumMember(node, opts) {
+ assert("TSEnumMember", node, opts);
+}
+function assertTSModuleDeclaration(node, opts) {
+ assert("TSModuleDeclaration", node, opts);
+}
+function assertTSModuleBlock(node, opts) {
+ assert("TSModuleBlock", node, opts);
+}
+function assertTSImportType(node, opts) {
+ assert("TSImportType", node, opts);
+}
+function assertTSImportEqualsDeclaration(node, opts) {
+ assert("TSImportEqualsDeclaration", node, opts);
+}
+function assertTSExternalModuleReference(node, opts) {
+ assert("TSExternalModuleReference", node, opts);
+}
+function assertTSNonNullExpression(node, opts) {
+ assert("TSNonNullExpression", node, opts);
+}
+function assertTSExportAssignment(node, opts) {
+ assert("TSExportAssignment", node, opts);
+}
+function assertTSNamespaceExportDeclaration(node, opts) {
+ assert("TSNamespaceExportDeclaration", node, opts);
+}
+function assertTSTypeAnnotation(node, opts) {
+ assert("TSTypeAnnotation", node, opts);
+}
+function assertTSTypeParameterInstantiation(node, opts) {
+ assert("TSTypeParameterInstantiation", node, opts);
+}
+function assertTSTypeParameterDeclaration(node, opts) {
+ assert("TSTypeParameterDeclaration", node, opts);
+}
+function assertTSTypeParameter(node, opts) {
+ assert("TSTypeParameter", node, opts);
+}
+function assertStandardized(node, opts) {
+ assert("Standardized", node, opts);
+}
+function assertExpression(node, opts) {
+ assert("Expression", node, opts);
+}
+function assertBinary(node, opts) {
+ assert("Binary", node, opts);
+}
+function assertScopable(node, opts) {
+ assert("Scopable", node, opts);
+}
+function assertBlockParent(node, opts) {
+ assert("BlockParent", node, opts);
+}
+function assertBlock(node, opts) {
+ assert("Block", node, opts);
+}
+function assertStatement(node, opts) {
+ assert("Statement", node, opts);
+}
+function assertTerminatorless(node, opts) {
+ assert("Terminatorless", node, opts);
+}
+function assertCompletionStatement(node, opts) {
+ assert("CompletionStatement", node, opts);
+}
+function assertConditional(node, opts) {
+ assert("Conditional", node, opts);
+}
+function assertLoop(node, opts) {
+ assert("Loop", node, opts);
+}
+function assertWhile(node, opts) {
+ assert("While", node, opts);
+}
+function assertExpressionWrapper(node, opts) {
+ assert("ExpressionWrapper", node, opts);
+}
+function assertFor(node, opts) {
+ assert("For", node, opts);
+}
+function assertForXStatement(node, opts) {
+ assert("ForXStatement", node, opts);
+}
+function assertFunction(node, opts) {
+ assert("Function", node, opts);
+}
+function assertFunctionParent(node, opts) {
+ assert("FunctionParent", node, opts);
+}
+function assertPureish(node, opts) {
+ assert("Pureish", node, opts);
+}
+function assertDeclaration(node, opts) {
+ assert("Declaration", node, opts);
+}
+function assertFunctionParameter(node, opts) {
+ assert("FunctionParameter", node, opts);
+}
+function assertPatternLike(node, opts) {
+ assert("PatternLike", node, opts);
+}
+function assertLVal(node, opts) {
+ assert("LVal", node, opts);
+}
+function assertTSEntityName(node, opts) {
+ assert("TSEntityName", node, opts);
+}
+function assertLiteral(node, opts) {
+ assert("Literal", node, opts);
+}
+function assertImmutable(node, opts) {
+ assert("Immutable", node, opts);
+}
+function assertUserWhitespacable(node, opts) {
+ assert("UserWhitespacable", node, opts);
+}
+function assertMethod(node, opts) {
+ assert("Method", node, opts);
+}
+function assertObjectMember(node, opts) {
+ assert("ObjectMember", node, opts);
+}
+function assertProperty(node, opts) {
+ assert("Property", node, opts);
+}
+function assertUnaryLike(node, opts) {
+ assert("UnaryLike", node, opts);
+}
+function assertPattern(node, opts) {
+ assert("Pattern", node, opts);
+}
+function assertClass(node, opts) {
+ assert("Class", node, opts);
+}
+function assertImportOrExportDeclaration(node, opts) {
+ assert("ImportOrExportDeclaration", node, opts);
+}
+function assertExportDeclaration(node, opts) {
+ assert("ExportDeclaration", node, opts);
+}
+function assertModuleSpecifier(node, opts) {
+ assert("ModuleSpecifier", node, opts);
+}
+function assertAccessor(node, opts) {
+ assert("Accessor", node, opts);
+}
+function assertPrivate(node, opts) {
+ assert("Private", node, opts);
+}
+function assertFlow(node, opts) {
+ assert("Flow", node, opts);
+}
+function assertFlowType(node, opts) {
+ assert("FlowType", node, opts);
+}
+function assertFlowBaseAnnotation(node, opts) {
+ assert("FlowBaseAnnotation", node, opts);
+}
+function assertFlowDeclaration(node, opts) {
+ assert("FlowDeclaration", node, opts);
+}
+function assertFlowPredicate(node, opts) {
+ assert("FlowPredicate", node, opts);
+}
+function assertEnumBody(node, opts) {
+ assert("EnumBody", node, opts);
+}
+function assertEnumMember(node, opts) {
+ assert("EnumMember", node, opts);
+}
+function assertJSX(node, opts) {
+ assert("JSX", node, opts);
+}
+function assertMiscellaneous(node, opts) {
+ assert("Miscellaneous", node, opts);
+}
+function assertTypeScript(node, opts) {
+ assert("TypeScript", node, opts);
+}
+function assertTSTypeElement(node, opts) {
+ assert("TSTypeElement", node, opts);
+}
+function assertTSType(node, opts) {
+ assert("TSType", node, opts);
+}
+function assertTSBaseType(node, opts) {
+ assert("TSBaseType", node, opts);
+}
+function assertNumberLiteral(node, opts) {
+ (0, _deprecationWarning.default)("assertNumberLiteral", "assertNumericLiteral");
+ assert("NumberLiteral", node, opts);
+}
+function assertRegexLiteral(node, opts) {
+ (0, _deprecationWarning.default)("assertRegexLiteral", "assertRegExpLiteral");
+ assert("RegexLiteral", node, opts);
+}
+function assertRestProperty(node, opts) {
+ (0, _deprecationWarning.default)("assertRestProperty", "assertRestElement");
+ assert("RestProperty", node, opts);
+}
+function assertSpreadProperty(node, opts) {
+ (0, _deprecationWarning.default)("assertSpreadProperty", "assertSpreadElement");
+ assert("SpreadProperty", node, opts);
+}
+function assertModuleDeclaration(node, opts) {
+ (0, _deprecationWarning.default)("assertModuleDeclaration", "assertImportOrExportDeclaration");
+ assert("ModuleDeclaration", node, opts);
+}
+
+//# sourceMappingURL=index.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/asserts/generated/index.js.map b/vanilla/node_modules/@babel/types/lib/asserts/generated/index.js.map
new file mode 100644
index 0000000..864825f
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/asserts/generated/index.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_is","require","_deprecationWarning","assert","type","node","opts","is","Error","JSON","stringify","assertArrayExpression","assertAssignmentExpression","assertBinaryExpression","assertInterpreterDirective","assertDirective","assertDirectiveLiteral","assertBlockStatement","assertBreakStatement","assertCallExpression","assertCatchClause","assertConditionalExpression","assertContinueStatement","assertDebuggerStatement","assertDoWhileStatement","assertEmptyStatement","assertExpressionStatement","assertFile","assertForInStatement","assertForStatement","assertFunctionDeclaration","assertFunctionExpression","assertIdentifier","assertIfStatement","assertLabeledStatement","assertStringLiteral","assertNumericLiteral","assertNullLiteral","assertBooleanLiteral","assertRegExpLiteral","assertLogicalExpression","assertMemberExpression","assertNewExpression","assertProgram","assertObjectExpression","assertObjectMethod","assertObjectProperty","assertRestElement","assertReturnStatement","assertSequenceExpression","assertParenthesizedExpression","assertSwitchCase","assertSwitchStatement","assertThisExpression","assertThrowStatement","assertTryStatement","assertUnaryExpression","assertUpdateExpression","assertVariableDeclaration","assertVariableDeclarator","assertWhileStatement","assertWithStatement","assertAssignmentPattern","assertArrayPattern","assertArrowFunctionExpression","assertClassBody","assertClassExpression","assertClassDeclaration","assertExportAllDeclaration","assertExportDefaultDeclaration","assertExportNamedDeclaration","assertExportSpecifier","assertForOfStatement","assertImportDeclaration","assertImportDefaultSpecifier","assertImportNamespaceSpecifier","assertImportSpecifier","assertImportExpression","assertMetaProperty","assertClassMethod","assertObjectPattern","assertSpreadElement","assertSuper","assertTaggedTemplateExpression","assertTemplateElement","assertTemplateLiteral","assertYieldExpression","assertAwaitExpression","assertImport","assertBigIntLiteral","assertExportNamespaceSpecifier","assertOptionalMemberExpression","assertOptionalCallExpression","assertClassProperty","assertClassAccessorProperty","assertClassPrivateProperty","assertClassPrivateMethod","assertPrivateName","assertStaticBlock","assertImportAttribute","assertAnyTypeAnnotation","assertArrayTypeAnnotation","assertBooleanTypeAnnotation","assertBooleanLiteralTypeAnnotation","assertNullLiteralTypeAnnotation","assertClassImplements","assertDeclareClass","assertDeclareFunction","assertDeclareInterface","assertDeclareModule","assertDeclareModuleExports","assertDeclareTypeAlias","assertDeclareOpaqueType","assertDeclareVariable","assertDeclareExportDeclaration","assertDeclareExportAllDeclaration","assertDeclaredPredicate","assertExistsTypeAnnotation","assertFunctionTypeAnnotation","assertFunctionTypeParam","assertGenericTypeAnnotation","assertInferredPredicate","assertInterfaceExtends","assertInterfaceDeclaration","assertInterfaceTypeAnnotation","assertIntersectionTypeAnnotation","assertMixedTypeAnnotation","assertEmptyTypeAnnotation","assertNullableTypeAnnotation","assertNumberLiteralTypeAnnotation","assertNumberTypeAnnotation","assertObjectTypeAnnotation","assertObjectTypeInternalSlot","assertObjectTypeCallProperty","assertObjectTypeIndexer","assertObjectTypeProperty","assertObjectTypeSpreadProperty","assertOpaqueType","assertQualifiedTypeIdentifier","assertStringLiteralTypeAnnotation","assertStringTypeAnnotation","assertSymbolTypeAnnotation","assertThisTypeAnnotation","assertTupleTypeAnnotation","assertTypeofTypeAnnotation","assertTypeAlias","assertTypeAnnotation","assertTypeCastExpression","assertTypeParameter","assertTypeParameterDeclaration","assertTypeParameterInstantiation","assertUnionTypeAnnotation","assertVariance","assertVoidTypeAnnotation","assertEnumDeclaration","assertEnumBooleanBody","assertEnumNumberBody","assertEnumStringBody","assertEnumSymbolBody","assertEnumBooleanMember","assertEnumNumberMember","assertEnumStringMember","assertEnumDefaultedMember","assertIndexedAccessType","assertOptionalIndexedAccessType","assertJSXAttribute","assertJSXClosingElement","assertJSXElement","assertJSXEmptyExpression","assertJSXExpressionContainer","assertJSXSpreadChild","assertJSXIdentifier","assertJSXMemberExpression","assertJSXNamespacedName","assertJSXOpeningElement","assertJSXSpreadAttribute","assertJSXText","assertJSXFragment","assertJSXOpeningFragment","assertJSXClosingFragment","assertNoop","assertPlaceholder","assertV8IntrinsicIdentifier","assertArgumentPlaceholder","assertBindExpression","assertDecorator","assertDoExpression","assertExportDefaultSpecifier","assertRecordExpression","assertTupleExpression","assertDecimalLiteral","assertModuleExpression","assertTopicReference","assertPipelineTopicExpression","assertPipelineBareFunction","assertPipelinePrimaryTopicReference","assertVoidPattern","assertTSParameterProperty","assertTSDeclareFunction","assertTSDeclareMethod","assertTSQualifiedName","assertTSCallSignatureDeclaration","assertTSConstructSignatureDeclaration","assertTSPropertySignature","assertTSMethodSignature","assertTSIndexSignature","assertTSAnyKeyword","assertTSBooleanKeyword","assertTSBigIntKeyword","assertTSIntrinsicKeyword","assertTSNeverKeyword","assertTSNullKeyword","assertTSNumberKeyword","assertTSObjectKeyword","assertTSStringKeyword","assertTSSymbolKeyword","assertTSUndefinedKeyword","assertTSUnknownKeyword","assertTSVoidKeyword","assertTSThisType","assertTSFunctionType","assertTSConstructorType","assertTSTypeReference","assertTSTypePredicate","assertTSTypeQuery","assertTSTypeLiteral","assertTSArrayType","assertTSTupleType","assertTSOptionalType","assertTSRestType","assertTSNamedTupleMember","assertTSUnionType","assertTSIntersectionType","assertTSConditionalType","assertTSInferType","assertTSParenthesizedType","assertTSTypeOperator","assertTSIndexedAccessType","assertTSMappedType","assertTSTemplateLiteralType","assertTSLiteralType","assertTSExpressionWithTypeArguments","assertTSInterfaceDeclaration","assertTSInterfaceBody","assertTSTypeAliasDeclaration","assertTSInstantiationExpression","assertTSAsExpression","assertTSSatisfiesExpression","assertTSTypeAssertion","assertTSEnumBody","assertTSEnumDeclaration","assertTSEnumMember","assertTSModuleDeclaration","assertTSModuleBlock","assertTSImportType","assertTSImportEqualsDeclaration","assertTSExternalModuleReference","assertTSNonNullExpression","assertTSExportAssignment","assertTSNamespaceExportDeclaration","assertTSTypeAnnotation","assertTSTypeParameterInstantiation","assertTSTypeParameterDeclaration","assertTSTypeParameter","assertStandardized","assertExpression","assertBinary","assertScopable","assertBlockParent","assertBlock","assertStatement","assertTerminatorless","assertCompletionStatement","assertConditional","assertLoop","assertWhile","assertExpressionWrapper","assertFor","assertForXStatement","assertFunction","assertFunctionParent","assertPureish","assertDeclaration","assertFunctionParameter","assertPatternLike","assertLVal","assertTSEntityName","assertLiteral","assertImmutable","assertUserWhitespacable","assertMethod","assertObjectMember","assertProperty","assertUnaryLike","assertPattern","assertClass","assertImportOrExportDeclaration","assertExportDeclaration","assertModuleSpecifier","assertAccessor","assertPrivate","assertFlow","assertFlowType","assertFlowBaseAnnotation","assertFlowDeclaration","assertFlowPredicate","assertEnumBody","assertEnumMember","assertJSX","assertMiscellaneous","assertTypeScript","assertTSTypeElement","assertTSType","assertTSBaseType","assertNumberLiteral","deprecationWarning","assertRegexLiteral","assertRestProperty","assertSpreadProperty","assertModuleDeclaration"],"sources":["../../../src/asserts/generated/index.ts"],"sourcesContent":["/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\nimport is from \"../../validators/is.ts\";\nimport type * as t from \"../../index.ts\";\nimport deprecationWarning from \"../../utils/deprecationWarning.ts\";\n\nfunction assert(type: string, node: any, opts?: any): void {\n if (!is(type, node, opts)) {\n throw new Error(\n `Expected type \"${type}\" with option ${JSON.stringify(opts)}, ` +\n `but instead got \"${node.type}\".`,\n );\n }\n}\n\nexport function assertArrayExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ArrayExpression {\n assert(\"ArrayExpression\", node, opts);\n}\nexport function assertAssignmentExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.AssignmentExpression {\n assert(\"AssignmentExpression\", node, opts);\n}\nexport function assertBinaryExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BinaryExpression {\n assert(\"BinaryExpression\", node, opts);\n}\nexport function assertInterpreterDirective(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.InterpreterDirective {\n assert(\"InterpreterDirective\", node, opts);\n}\nexport function assertDirective(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Directive {\n assert(\"Directive\", node, opts);\n}\nexport function assertDirectiveLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DirectiveLiteral {\n assert(\"DirectiveLiteral\", node, opts);\n}\nexport function assertBlockStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BlockStatement {\n assert(\"BlockStatement\", node, opts);\n}\nexport function assertBreakStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BreakStatement {\n assert(\"BreakStatement\", node, opts);\n}\nexport function assertCallExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.CallExpression {\n assert(\"CallExpression\", node, opts);\n}\nexport function assertCatchClause(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.CatchClause {\n assert(\"CatchClause\", node, opts);\n}\nexport function assertConditionalExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ConditionalExpression {\n assert(\"ConditionalExpression\", node, opts);\n}\nexport function assertContinueStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ContinueStatement {\n assert(\"ContinueStatement\", node, opts);\n}\nexport function assertDebuggerStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DebuggerStatement {\n assert(\"DebuggerStatement\", node, opts);\n}\nexport function assertDoWhileStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DoWhileStatement {\n assert(\"DoWhileStatement\", node, opts);\n}\nexport function assertEmptyStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EmptyStatement {\n assert(\"EmptyStatement\", node, opts);\n}\nexport function assertExpressionStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExpressionStatement {\n assert(\"ExpressionStatement\", node, opts);\n}\nexport function assertFile(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.File {\n assert(\"File\", node, opts);\n}\nexport function assertForInStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ForInStatement {\n assert(\"ForInStatement\", node, opts);\n}\nexport function assertForStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ForStatement {\n assert(\"ForStatement\", node, opts);\n}\nexport function assertFunctionDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FunctionDeclaration {\n assert(\"FunctionDeclaration\", node, opts);\n}\nexport function assertFunctionExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FunctionExpression {\n assert(\"FunctionExpression\", node, opts);\n}\nexport function assertIdentifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Identifier {\n assert(\"Identifier\", node, opts);\n}\nexport function assertIfStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.IfStatement {\n assert(\"IfStatement\", node, opts);\n}\nexport function assertLabeledStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.LabeledStatement {\n assert(\"LabeledStatement\", node, opts);\n}\nexport function assertStringLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.StringLiteral {\n assert(\"StringLiteral\", node, opts);\n}\nexport function assertNumericLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NumericLiteral {\n assert(\"NumericLiteral\", node, opts);\n}\nexport function assertNullLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NullLiteral {\n assert(\"NullLiteral\", node, opts);\n}\nexport function assertBooleanLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BooleanLiteral {\n assert(\"BooleanLiteral\", node, opts);\n}\nexport function assertRegExpLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.RegExpLiteral {\n assert(\"RegExpLiteral\", node, opts);\n}\nexport function assertLogicalExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.LogicalExpression {\n assert(\"LogicalExpression\", node, opts);\n}\nexport function assertMemberExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.MemberExpression {\n assert(\"MemberExpression\", node, opts);\n}\nexport function assertNewExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NewExpression {\n assert(\"NewExpression\", node, opts);\n}\nexport function assertProgram(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Program {\n assert(\"Program\", node, opts);\n}\nexport function assertObjectExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectExpression {\n assert(\"ObjectExpression\", node, opts);\n}\nexport function assertObjectMethod(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectMethod {\n assert(\"ObjectMethod\", node, opts);\n}\nexport function assertObjectProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectProperty {\n assert(\"ObjectProperty\", node, opts);\n}\nexport function assertRestElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.RestElement {\n assert(\"RestElement\", node, opts);\n}\nexport function assertReturnStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ReturnStatement {\n assert(\"ReturnStatement\", node, opts);\n}\nexport function assertSequenceExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.SequenceExpression {\n assert(\"SequenceExpression\", node, opts);\n}\nexport function assertParenthesizedExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ParenthesizedExpression {\n assert(\"ParenthesizedExpression\", node, opts);\n}\nexport function assertSwitchCase(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.SwitchCase {\n assert(\"SwitchCase\", node, opts);\n}\nexport function assertSwitchStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.SwitchStatement {\n assert(\"SwitchStatement\", node, opts);\n}\nexport function assertThisExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ThisExpression {\n assert(\"ThisExpression\", node, opts);\n}\nexport function assertThrowStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ThrowStatement {\n assert(\"ThrowStatement\", node, opts);\n}\nexport function assertTryStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TryStatement {\n assert(\"TryStatement\", node, opts);\n}\nexport function assertUnaryExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.UnaryExpression {\n assert(\"UnaryExpression\", node, opts);\n}\nexport function assertUpdateExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.UpdateExpression {\n assert(\"UpdateExpression\", node, opts);\n}\nexport function assertVariableDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.VariableDeclaration {\n assert(\"VariableDeclaration\", node, opts);\n}\nexport function assertVariableDeclarator(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.VariableDeclarator {\n assert(\"VariableDeclarator\", node, opts);\n}\nexport function assertWhileStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.WhileStatement {\n assert(\"WhileStatement\", node, opts);\n}\nexport function assertWithStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.WithStatement {\n assert(\"WithStatement\", node, opts);\n}\nexport function assertAssignmentPattern(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.AssignmentPattern {\n assert(\"AssignmentPattern\", node, opts);\n}\nexport function assertArrayPattern(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ArrayPattern {\n assert(\"ArrayPattern\", node, opts);\n}\nexport function assertArrowFunctionExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ArrowFunctionExpression {\n assert(\"ArrowFunctionExpression\", node, opts);\n}\nexport function assertClassBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassBody {\n assert(\"ClassBody\", node, opts);\n}\nexport function assertClassExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassExpression {\n assert(\"ClassExpression\", node, opts);\n}\nexport function assertClassDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassDeclaration {\n assert(\"ClassDeclaration\", node, opts);\n}\nexport function assertExportAllDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportAllDeclaration {\n assert(\"ExportAllDeclaration\", node, opts);\n}\nexport function assertExportDefaultDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportDefaultDeclaration {\n assert(\"ExportDefaultDeclaration\", node, opts);\n}\nexport function assertExportNamedDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportNamedDeclaration {\n assert(\"ExportNamedDeclaration\", node, opts);\n}\nexport function assertExportSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportSpecifier {\n assert(\"ExportSpecifier\", node, opts);\n}\nexport function assertForOfStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ForOfStatement {\n assert(\"ForOfStatement\", node, opts);\n}\nexport function assertImportDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportDeclaration {\n assert(\"ImportDeclaration\", node, opts);\n}\nexport function assertImportDefaultSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportDefaultSpecifier {\n assert(\"ImportDefaultSpecifier\", node, opts);\n}\nexport function assertImportNamespaceSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportNamespaceSpecifier {\n assert(\"ImportNamespaceSpecifier\", node, opts);\n}\nexport function assertImportSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportSpecifier {\n assert(\"ImportSpecifier\", node, opts);\n}\nexport function assertImportExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportExpression {\n assert(\"ImportExpression\", node, opts);\n}\nexport function assertMetaProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.MetaProperty {\n assert(\"MetaProperty\", node, opts);\n}\nexport function assertClassMethod(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassMethod {\n assert(\"ClassMethod\", node, opts);\n}\nexport function assertObjectPattern(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectPattern {\n assert(\"ObjectPattern\", node, opts);\n}\nexport function assertSpreadElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.SpreadElement {\n assert(\"SpreadElement\", node, opts);\n}\nexport function assertSuper(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Super {\n assert(\"Super\", node, opts);\n}\nexport function assertTaggedTemplateExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TaggedTemplateExpression {\n assert(\"TaggedTemplateExpression\", node, opts);\n}\nexport function assertTemplateElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TemplateElement {\n assert(\"TemplateElement\", node, opts);\n}\nexport function assertTemplateLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TemplateLiteral {\n assert(\"TemplateLiteral\", node, opts);\n}\nexport function assertYieldExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.YieldExpression {\n assert(\"YieldExpression\", node, opts);\n}\nexport function assertAwaitExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.AwaitExpression {\n assert(\"AwaitExpression\", node, opts);\n}\nexport function assertImport(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Import {\n assert(\"Import\", node, opts);\n}\nexport function assertBigIntLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BigIntLiteral {\n assert(\"BigIntLiteral\", node, opts);\n}\nexport function assertExportNamespaceSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportNamespaceSpecifier {\n assert(\"ExportNamespaceSpecifier\", node, opts);\n}\nexport function assertOptionalMemberExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.OptionalMemberExpression {\n assert(\"OptionalMemberExpression\", node, opts);\n}\nexport function assertOptionalCallExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.OptionalCallExpression {\n assert(\"OptionalCallExpression\", node, opts);\n}\nexport function assertClassProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassProperty {\n assert(\"ClassProperty\", node, opts);\n}\nexport function assertClassAccessorProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassAccessorProperty {\n assert(\"ClassAccessorProperty\", node, opts);\n}\nexport function assertClassPrivateProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassPrivateProperty {\n assert(\"ClassPrivateProperty\", node, opts);\n}\nexport function assertClassPrivateMethod(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassPrivateMethod {\n assert(\"ClassPrivateMethod\", node, opts);\n}\nexport function assertPrivateName(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.PrivateName {\n assert(\"PrivateName\", node, opts);\n}\nexport function assertStaticBlock(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.StaticBlock {\n assert(\"StaticBlock\", node, opts);\n}\nexport function assertImportAttribute(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportAttribute {\n assert(\"ImportAttribute\", node, opts);\n}\nexport function assertAnyTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.AnyTypeAnnotation {\n assert(\"AnyTypeAnnotation\", node, opts);\n}\nexport function assertArrayTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ArrayTypeAnnotation {\n assert(\"ArrayTypeAnnotation\", node, opts);\n}\nexport function assertBooleanTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BooleanTypeAnnotation {\n assert(\"BooleanTypeAnnotation\", node, opts);\n}\nexport function assertBooleanLiteralTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BooleanLiteralTypeAnnotation {\n assert(\"BooleanLiteralTypeAnnotation\", node, opts);\n}\nexport function assertNullLiteralTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NullLiteralTypeAnnotation {\n assert(\"NullLiteralTypeAnnotation\", node, opts);\n}\nexport function assertClassImplements(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ClassImplements {\n assert(\"ClassImplements\", node, opts);\n}\nexport function assertDeclareClass(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareClass {\n assert(\"DeclareClass\", node, opts);\n}\nexport function assertDeclareFunction(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareFunction {\n assert(\"DeclareFunction\", node, opts);\n}\nexport function assertDeclareInterface(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareInterface {\n assert(\"DeclareInterface\", node, opts);\n}\nexport function assertDeclareModule(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareModule {\n assert(\"DeclareModule\", node, opts);\n}\nexport function assertDeclareModuleExports(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareModuleExports {\n assert(\"DeclareModuleExports\", node, opts);\n}\nexport function assertDeclareTypeAlias(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareTypeAlias {\n assert(\"DeclareTypeAlias\", node, opts);\n}\nexport function assertDeclareOpaqueType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareOpaqueType {\n assert(\"DeclareOpaqueType\", node, opts);\n}\nexport function assertDeclareVariable(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareVariable {\n assert(\"DeclareVariable\", node, opts);\n}\nexport function assertDeclareExportDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareExportDeclaration {\n assert(\"DeclareExportDeclaration\", node, opts);\n}\nexport function assertDeclareExportAllDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclareExportAllDeclaration {\n assert(\"DeclareExportAllDeclaration\", node, opts);\n}\nexport function assertDeclaredPredicate(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DeclaredPredicate {\n assert(\"DeclaredPredicate\", node, opts);\n}\nexport function assertExistsTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExistsTypeAnnotation {\n assert(\"ExistsTypeAnnotation\", node, opts);\n}\nexport function assertFunctionTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FunctionTypeAnnotation {\n assert(\"FunctionTypeAnnotation\", node, opts);\n}\nexport function assertFunctionTypeParam(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FunctionTypeParam {\n assert(\"FunctionTypeParam\", node, opts);\n}\nexport function assertGenericTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.GenericTypeAnnotation {\n assert(\"GenericTypeAnnotation\", node, opts);\n}\nexport function assertInferredPredicate(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.InferredPredicate {\n assert(\"InferredPredicate\", node, opts);\n}\nexport function assertInterfaceExtends(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.InterfaceExtends {\n assert(\"InterfaceExtends\", node, opts);\n}\nexport function assertInterfaceDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.InterfaceDeclaration {\n assert(\"InterfaceDeclaration\", node, opts);\n}\nexport function assertInterfaceTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.InterfaceTypeAnnotation {\n assert(\"InterfaceTypeAnnotation\", node, opts);\n}\nexport function assertIntersectionTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.IntersectionTypeAnnotation {\n assert(\"IntersectionTypeAnnotation\", node, opts);\n}\nexport function assertMixedTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.MixedTypeAnnotation {\n assert(\"MixedTypeAnnotation\", node, opts);\n}\nexport function assertEmptyTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EmptyTypeAnnotation {\n assert(\"EmptyTypeAnnotation\", node, opts);\n}\nexport function assertNullableTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NullableTypeAnnotation {\n assert(\"NullableTypeAnnotation\", node, opts);\n}\nexport function assertNumberLiteralTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NumberLiteralTypeAnnotation {\n assert(\"NumberLiteralTypeAnnotation\", node, opts);\n}\nexport function assertNumberTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.NumberTypeAnnotation {\n assert(\"NumberTypeAnnotation\", node, opts);\n}\nexport function assertObjectTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectTypeAnnotation {\n assert(\"ObjectTypeAnnotation\", node, opts);\n}\nexport function assertObjectTypeInternalSlot(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectTypeInternalSlot {\n assert(\"ObjectTypeInternalSlot\", node, opts);\n}\nexport function assertObjectTypeCallProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectTypeCallProperty {\n assert(\"ObjectTypeCallProperty\", node, opts);\n}\nexport function assertObjectTypeIndexer(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectTypeIndexer {\n assert(\"ObjectTypeIndexer\", node, opts);\n}\nexport function assertObjectTypeProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectTypeProperty {\n assert(\"ObjectTypeProperty\", node, opts);\n}\nexport function assertObjectTypeSpreadProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectTypeSpreadProperty {\n assert(\"ObjectTypeSpreadProperty\", node, opts);\n}\nexport function assertOpaqueType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.OpaqueType {\n assert(\"OpaqueType\", node, opts);\n}\nexport function assertQualifiedTypeIdentifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.QualifiedTypeIdentifier {\n assert(\"QualifiedTypeIdentifier\", node, opts);\n}\nexport function assertStringLiteralTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.StringLiteralTypeAnnotation {\n assert(\"StringLiteralTypeAnnotation\", node, opts);\n}\nexport function assertStringTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.StringTypeAnnotation {\n assert(\"StringTypeAnnotation\", node, opts);\n}\nexport function assertSymbolTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.SymbolTypeAnnotation {\n assert(\"SymbolTypeAnnotation\", node, opts);\n}\nexport function assertThisTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ThisTypeAnnotation {\n assert(\"ThisTypeAnnotation\", node, opts);\n}\nexport function assertTupleTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TupleTypeAnnotation {\n assert(\"TupleTypeAnnotation\", node, opts);\n}\nexport function assertTypeofTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeofTypeAnnotation {\n assert(\"TypeofTypeAnnotation\", node, opts);\n}\nexport function assertTypeAlias(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeAlias {\n assert(\"TypeAlias\", node, opts);\n}\nexport function assertTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeAnnotation {\n assert(\"TypeAnnotation\", node, opts);\n}\nexport function assertTypeCastExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeCastExpression {\n assert(\"TypeCastExpression\", node, opts);\n}\nexport function assertTypeParameter(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeParameter {\n assert(\"TypeParameter\", node, opts);\n}\nexport function assertTypeParameterDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeParameterDeclaration {\n assert(\"TypeParameterDeclaration\", node, opts);\n}\nexport function assertTypeParameterInstantiation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeParameterInstantiation {\n assert(\"TypeParameterInstantiation\", node, opts);\n}\nexport function assertUnionTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.UnionTypeAnnotation {\n assert(\"UnionTypeAnnotation\", node, opts);\n}\nexport function assertVariance(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Variance {\n assert(\"Variance\", node, opts);\n}\nexport function assertVoidTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.VoidTypeAnnotation {\n assert(\"VoidTypeAnnotation\", node, opts);\n}\nexport function assertEnumDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumDeclaration {\n assert(\"EnumDeclaration\", node, opts);\n}\nexport function assertEnumBooleanBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumBooleanBody {\n assert(\"EnumBooleanBody\", node, opts);\n}\nexport function assertEnumNumberBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumNumberBody {\n assert(\"EnumNumberBody\", node, opts);\n}\nexport function assertEnumStringBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumStringBody {\n assert(\"EnumStringBody\", node, opts);\n}\nexport function assertEnumSymbolBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumSymbolBody {\n assert(\"EnumSymbolBody\", node, opts);\n}\nexport function assertEnumBooleanMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumBooleanMember {\n assert(\"EnumBooleanMember\", node, opts);\n}\nexport function assertEnumNumberMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumNumberMember {\n assert(\"EnumNumberMember\", node, opts);\n}\nexport function assertEnumStringMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumStringMember {\n assert(\"EnumStringMember\", node, opts);\n}\nexport function assertEnumDefaultedMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumDefaultedMember {\n assert(\"EnumDefaultedMember\", node, opts);\n}\nexport function assertIndexedAccessType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.IndexedAccessType {\n assert(\"IndexedAccessType\", node, opts);\n}\nexport function assertOptionalIndexedAccessType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.OptionalIndexedAccessType {\n assert(\"OptionalIndexedAccessType\", node, opts);\n}\nexport function assertJSXAttribute(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXAttribute {\n assert(\"JSXAttribute\", node, opts);\n}\nexport function assertJSXClosingElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXClosingElement {\n assert(\"JSXClosingElement\", node, opts);\n}\nexport function assertJSXElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXElement {\n assert(\"JSXElement\", node, opts);\n}\nexport function assertJSXEmptyExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXEmptyExpression {\n assert(\"JSXEmptyExpression\", node, opts);\n}\nexport function assertJSXExpressionContainer(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXExpressionContainer {\n assert(\"JSXExpressionContainer\", node, opts);\n}\nexport function assertJSXSpreadChild(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXSpreadChild {\n assert(\"JSXSpreadChild\", node, opts);\n}\nexport function assertJSXIdentifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXIdentifier {\n assert(\"JSXIdentifier\", node, opts);\n}\nexport function assertJSXMemberExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXMemberExpression {\n assert(\"JSXMemberExpression\", node, opts);\n}\nexport function assertJSXNamespacedName(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXNamespacedName {\n assert(\"JSXNamespacedName\", node, opts);\n}\nexport function assertJSXOpeningElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXOpeningElement {\n assert(\"JSXOpeningElement\", node, opts);\n}\nexport function assertJSXSpreadAttribute(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXSpreadAttribute {\n assert(\"JSXSpreadAttribute\", node, opts);\n}\nexport function assertJSXText(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXText {\n assert(\"JSXText\", node, opts);\n}\nexport function assertJSXFragment(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXFragment {\n assert(\"JSXFragment\", node, opts);\n}\nexport function assertJSXOpeningFragment(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXOpeningFragment {\n assert(\"JSXOpeningFragment\", node, opts);\n}\nexport function assertJSXClosingFragment(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSXClosingFragment {\n assert(\"JSXClosingFragment\", node, opts);\n}\nexport function assertNoop(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Noop {\n assert(\"Noop\", node, opts);\n}\nexport function assertPlaceholder(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Placeholder {\n assert(\"Placeholder\", node, opts);\n}\nexport function assertV8IntrinsicIdentifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.V8IntrinsicIdentifier {\n assert(\"V8IntrinsicIdentifier\", node, opts);\n}\nexport function assertArgumentPlaceholder(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ArgumentPlaceholder {\n assert(\"ArgumentPlaceholder\", node, opts);\n}\nexport function assertBindExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BindExpression {\n assert(\"BindExpression\", node, opts);\n}\nexport function assertDecorator(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Decorator {\n assert(\"Decorator\", node, opts);\n}\nexport function assertDoExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DoExpression {\n assert(\"DoExpression\", node, opts);\n}\nexport function assertExportDefaultSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportDefaultSpecifier {\n assert(\"ExportDefaultSpecifier\", node, opts);\n}\nexport function assertRecordExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.RecordExpression {\n assert(\"RecordExpression\", node, opts);\n}\nexport function assertTupleExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TupleExpression {\n assert(\"TupleExpression\", node, opts);\n}\nexport function assertDecimalLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.DecimalLiteral {\n assert(\"DecimalLiteral\", node, opts);\n}\nexport function assertModuleExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ModuleExpression {\n assert(\"ModuleExpression\", node, opts);\n}\nexport function assertTopicReference(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TopicReference {\n assert(\"TopicReference\", node, opts);\n}\nexport function assertPipelineTopicExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.PipelineTopicExpression {\n assert(\"PipelineTopicExpression\", node, opts);\n}\nexport function assertPipelineBareFunction(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.PipelineBareFunction {\n assert(\"PipelineBareFunction\", node, opts);\n}\nexport function assertPipelinePrimaryTopicReference(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.PipelinePrimaryTopicReference {\n assert(\"PipelinePrimaryTopicReference\", node, opts);\n}\nexport function assertVoidPattern(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.VoidPattern {\n assert(\"VoidPattern\", node, opts);\n}\nexport function assertTSParameterProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSParameterProperty {\n assert(\"TSParameterProperty\", node, opts);\n}\nexport function assertTSDeclareFunction(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSDeclareFunction {\n assert(\"TSDeclareFunction\", node, opts);\n}\nexport function assertTSDeclareMethod(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSDeclareMethod {\n assert(\"TSDeclareMethod\", node, opts);\n}\nexport function assertTSQualifiedName(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSQualifiedName {\n assert(\"TSQualifiedName\", node, opts);\n}\nexport function assertTSCallSignatureDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSCallSignatureDeclaration {\n assert(\"TSCallSignatureDeclaration\", node, opts);\n}\nexport function assertTSConstructSignatureDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSConstructSignatureDeclaration {\n assert(\"TSConstructSignatureDeclaration\", node, opts);\n}\nexport function assertTSPropertySignature(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSPropertySignature {\n assert(\"TSPropertySignature\", node, opts);\n}\nexport function assertTSMethodSignature(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSMethodSignature {\n assert(\"TSMethodSignature\", node, opts);\n}\nexport function assertTSIndexSignature(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSIndexSignature {\n assert(\"TSIndexSignature\", node, opts);\n}\nexport function assertTSAnyKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSAnyKeyword {\n assert(\"TSAnyKeyword\", node, opts);\n}\nexport function assertTSBooleanKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSBooleanKeyword {\n assert(\"TSBooleanKeyword\", node, opts);\n}\nexport function assertTSBigIntKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSBigIntKeyword {\n assert(\"TSBigIntKeyword\", node, opts);\n}\nexport function assertTSIntrinsicKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSIntrinsicKeyword {\n assert(\"TSIntrinsicKeyword\", node, opts);\n}\nexport function assertTSNeverKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSNeverKeyword {\n assert(\"TSNeverKeyword\", node, opts);\n}\nexport function assertTSNullKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSNullKeyword {\n assert(\"TSNullKeyword\", node, opts);\n}\nexport function assertTSNumberKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSNumberKeyword {\n assert(\"TSNumberKeyword\", node, opts);\n}\nexport function assertTSObjectKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSObjectKeyword {\n assert(\"TSObjectKeyword\", node, opts);\n}\nexport function assertTSStringKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSStringKeyword {\n assert(\"TSStringKeyword\", node, opts);\n}\nexport function assertTSSymbolKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSSymbolKeyword {\n assert(\"TSSymbolKeyword\", node, opts);\n}\nexport function assertTSUndefinedKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSUndefinedKeyword {\n assert(\"TSUndefinedKeyword\", node, opts);\n}\nexport function assertTSUnknownKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSUnknownKeyword {\n assert(\"TSUnknownKeyword\", node, opts);\n}\nexport function assertTSVoidKeyword(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSVoidKeyword {\n assert(\"TSVoidKeyword\", node, opts);\n}\nexport function assertTSThisType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSThisType {\n assert(\"TSThisType\", node, opts);\n}\nexport function assertTSFunctionType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSFunctionType {\n assert(\"TSFunctionType\", node, opts);\n}\nexport function assertTSConstructorType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSConstructorType {\n assert(\"TSConstructorType\", node, opts);\n}\nexport function assertTSTypeReference(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeReference {\n assert(\"TSTypeReference\", node, opts);\n}\nexport function assertTSTypePredicate(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypePredicate {\n assert(\"TSTypePredicate\", node, opts);\n}\nexport function assertTSTypeQuery(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeQuery {\n assert(\"TSTypeQuery\", node, opts);\n}\nexport function assertTSTypeLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeLiteral {\n assert(\"TSTypeLiteral\", node, opts);\n}\nexport function assertTSArrayType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSArrayType {\n assert(\"TSArrayType\", node, opts);\n}\nexport function assertTSTupleType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTupleType {\n assert(\"TSTupleType\", node, opts);\n}\nexport function assertTSOptionalType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSOptionalType {\n assert(\"TSOptionalType\", node, opts);\n}\nexport function assertTSRestType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSRestType {\n assert(\"TSRestType\", node, opts);\n}\nexport function assertTSNamedTupleMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSNamedTupleMember {\n assert(\"TSNamedTupleMember\", node, opts);\n}\nexport function assertTSUnionType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSUnionType {\n assert(\"TSUnionType\", node, opts);\n}\nexport function assertTSIntersectionType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSIntersectionType {\n assert(\"TSIntersectionType\", node, opts);\n}\nexport function assertTSConditionalType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSConditionalType {\n assert(\"TSConditionalType\", node, opts);\n}\nexport function assertTSInferType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSInferType {\n assert(\"TSInferType\", node, opts);\n}\nexport function assertTSParenthesizedType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSParenthesizedType {\n assert(\"TSParenthesizedType\", node, opts);\n}\nexport function assertTSTypeOperator(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeOperator {\n assert(\"TSTypeOperator\", node, opts);\n}\nexport function assertTSIndexedAccessType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSIndexedAccessType {\n assert(\"TSIndexedAccessType\", node, opts);\n}\nexport function assertTSMappedType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSMappedType {\n assert(\"TSMappedType\", node, opts);\n}\nexport function assertTSTemplateLiteralType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTemplateLiteralType {\n assert(\"TSTemplateLiteralType\", node, opts);\n}\nexport function assertTSLiteralType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSLiteralType {\n assert(\"TSLiteralType\", node, opts);\n}\nexport function assertTSExpressionWithTypeArguments(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSExpressionWithTypeArguments {\n assert(\"TSExpressionWithTypeArguments\", node, opts);\n}\nexport function assertTSInterfaceDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSInterfaceDeclaration {\n assert(\"TSInterfaceDeclaration\", node, opts);\n}\nexport function assertTSInterfaceBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSInterfaceBody {\n assert(\"TSInterfaceBody\", node, opts);\n}\nexport function assertTSTypeAliasDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeAliasDeclaration {\n assert(\"TSTypeAliasDeclaration\", node, opts);\n}\nexport function assertTSInstantiationExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSInstantiationExpression {\n assert(\"TSInstantiationExpression\", node, opts);\n}\nexport function assertTSAsExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSAsExpression {\n assert(\"TSAsExpression\", node, opts);\n}\nexport function assertTSSatisfiesExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSSatisfiesExpression {\n assert(\"TSSatisfiesExpression\", node, opts);\n}\nexport function assertTSTypeAssertion(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeAssertion {\n assert(\"TSTypeAssertion\", node, opts);\n}\nexport function assertTSEnumBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSEnumBody {\n assert(\"TSEnumBody\", node, opts);\n}\nexport function assertTSEnumDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSEnumDeclaration {\n assert(\"TSEnumDeclaration\", node, opts);\n}\nexport function assertTSEnumMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSEnumMember {\n assert(\"TSEnumMember\", node, opts);\n}\nexport function assertTSModuleDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSModuleDeclaration {\n assert(\"TSModuleDeclaration\", node, opts);\n}\nexport function assertTSModuleBlock(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSModuleBlock {\n assert(\"TSModuleBlock\", node, opts);\n}\nexport function assertTSImportType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSImportType {\n assert(\"TSImportType\", node, opts);\n}\nexport function assertTSImportEqualsDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSImportEqualsDeclaration {\n assert(\"TSImportEqualsDeclaration\", node, opts);\n}\nexport function assertTSExternalModuleReference(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSExternalModuleReference {\n assert(\"TSExternalModuleReference\", node, opts);\n}\nexport function assertTSNonNullExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSNonNullExpression {\n assert(\"TSNonNullExpression\", node, opts);\n}\nexport function assertTSExportAssignment(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSExportAssignment {\n assert(\"TSExportAssignment\", node, opts);\n}\nexport function assertTSNamespaceExportDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSNamespaceExportDeclaration {\n assert(\"TSNamespaceExportDeclaration\", node, opts);\n}\nexport function assertTSTypeAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeAnnotation {\n assert(\"TSTypeAnnotation\", node, opts);\n}\nexport function assertTSTypeParameterInstantiation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeParameterInstantiation {\n assert(\"TSTypeParameterInstantiation\", node, opts);\n}\nexport function assertTSTypeParameterDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeParameterDeclaration {\n assert(\"TSTypeParameterDeclaration\", node, opts);\n}\nexport function assertTSTypeParameter(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeParameter {\n assert(\"TSTypeParameter\", node, opts);\n}\nexport function assertStandardized(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Standardized {\n assert(\"Standardized\", node, opts);\n}\nexport function assertExpression(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Expression {\n assert(\"Expression\", node, opts);\n}\nexport function assertBinary(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Binary {\n assert(\"Binary\", node, opts);\n}\nexport function assertScopable(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Scopable {\n assert(\"Scopable\", node, opts);\n}\nexport function assertBlockParent(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.BlockParent {\n assert(\"BlockParent\", node, opts);\n}\nexport function assertBlock(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Block {\n assert(\"Block\", node, opts);\n}\nexport function assertStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Statement {\n assert(\"Statement\", node, opts);\n}\nexport function assertTerminatorless(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Terminatorless {\n assert(\"Terminatorless\", node, opts);\n}\nexport function assertCompletionStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.CompletionStatement {\n assert(\"CompletionStatement\", node, opts);\n}\nexport function assertConditional(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Conditional {\n assert(\"Conditional\", node, opts);\n}\nexport function assertLoop(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Loop {\n assert(\"Loop\", node, opts);\n}\nexport function assertWhile(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.While {\n assert(\"While\", node, opts);\n}\nexport function assertExpressionWrapper(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExpressionWrapper {\n assert(\"ExpressionWrapper\", node, opts);\n}\nexport function assertFor(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.For {\n assert(\"For\", node, opts);\n}\nexport function assertForXStatement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ForXStatement {\n assert(\"ForXStatement\", node, opts);\n}\nexport function assertFunction(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Function {\n assert(\"Function\", node, opts);\n}\nexport function assertFunctionParent(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FunctionParent {\n assert(\"FunctionParent\", node, opts);\n}\nexport function assertPureish(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Pureish {\n assert(\"Pureish\", node, opts);\n}\nexport function assertDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Declaration {\n assert(\"Declaration\", node, opts);\n}\nexport function assertFunctionParameter(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FunctionParameter {\n assert(\"FunctionParameter\", node, opts);\n}\nexport function assertPatternLike(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.PatternLike {\n assert(\"PatternLike\", node, opts);\n}\nexport function assertLVal(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.LVal {\n assert(\"LVal\", node, opts);\n}\nexport function assertTSEntityName(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSEntityName {\n assert(\"TSEntityName\", node, opts);\n}\nexport function assertLiteral(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Literal {\n assert(\"Literal\", node, opts);\n}\nexport function assertImmutable(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Immutable {\n assert(\"Immutable\", node, opts);\n}\nexport function assertUserWhitespacable(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.UserWhitespacable {\n assert(\"UserWhitespacable\", node, opts);\n}\nexport function assertMethod(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Method {\n assert(\"Method\", node, opts);\n}\nexport function assertObjectMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ObjectMember {\n assert(\"ObjectMember\", node, opts);\n}\nexport function assertProperty(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Property {\n assert(\"Property\", node, opts);\n}\nexport function assertUnaryLike(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.UnaryLike {\n assert(\"UnaryLike\", node, opts);\n}\nexport function assertPattern(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Pattern {\n assert(\"Pattern\", node, opts);\n}\nexport function assertClass(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Class {\n assert(\"Class\", node, opts);\n}\nexport function assertImportOrExportDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ImportOrExportDeclaration {\n assert(\"ImportOrExportDeclaration\", node, opts);\n}\nexport function assertExportDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ExportDeclaration {\n assert(\"ExportDeclaration\", node, opts);\n}\nexport function assertModuleSpecifier(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.ModuleSpecifier {\n assert(\"ModuleSpecifier\", node, opts);\n}\nexport function assertAccessor(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Accessor {\n assert(\"Accessor\", node, opts);\n}\nexport function assertPrivate(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Private {\n assert(\"Private\", node, opts);\n}\nexport function assertFlow(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Flow {\n assert(\"Flow\", node, opts);\n}\nexport function assertFlowType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FlowType {\n assert(\"FlowType\", node, opts);\n}\nexport function assertFlowBaseAnnotation(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FlowBaseAnnotation {\n assert(\"FlowBaseAnnotation\", node, opts);\n}\nexport function assertFlowDeclaration(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FlowDeclaration {\n assert(\"FlowDeclaration\", node, opts);\n}\nexport function assertFlowPredicate(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.FlowPredicate {\n assert(\"FlowPredicate\", node, opts);\n}\nexport function assertEnumBody(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumBody {\n assert(\"EnumBody\", node, opts);\n}\nexport function assertEnumMember(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.EnumMember {\n assert(\"EnumMember\", node, opts);\n}\nexport function assertJSX(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.JSX {\n assert(\"JSX\", node, opts);\n}\nexport function assertMiscellaneous(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.Miscellaneous {\n assert(\"Miscellaneous\", node, opts);\n}\nexport function assertTypeScript(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TypeScript {\n assert(\"TypeScript\", node, opts);\n}\nexport function assertTSTypeElement(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSTypeElement {\n assert(\"TSTypeElement\", node, opts);\n}\nexport function assertTSType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSType {\n assert(\"TSType\", node, opts);\n}\nexport function assertTSBaseType(\n node: object | null | undefined,\n opts?: object | null,\n): asserts node is t.TSBaseType {\n assert(\"TSBaseType\", node, opts);\n}\nexport function assertNumberLiteral(node: any, opts: any): void {\n deprecationWarning(\"assertNumberLiteral\", \"assertNumericLiteral\");\n assert(\"NumberLiteral\", node, opts);\n}\nexport function assertRegexLiteral(node: any, opts: any): void {\n deprecationWarning(\"assertRegexLiteral\", \"assertRegExpLiteral\");\n assert(\"RegexLiteral\", node, opts);\n}\nexport function assertRestProperty(node: any, opts: any): void {\n deprecationWarning(\"assertRestProperty\", \"assertRestElement\");\n assert(\"RestProperty\", node, opts);\n}\nexport function assertSpreadProperty(node: any, opts: any): void {\n deprecationWarning(\"assertSpreadProperty\", \"assertSpreadElement\");\n assert(\"SpreadProperty\", node, opts);\n}\nexport function assertModuleDeclaration(node: any, opts: any): void {\n deprecationWarning(\n \"assertModuleDeclaration\",\n \"assertImportOrExportDeclaration\",\n );\n assert(\"ModuleDeclaration\", node, opts);\n}\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/ast-types/generated/index.js b/vanilla/node_modules/@babel/types/lib/ast-types/generated/index.js
new file mode 100644
index 0000000..f65e766
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/ast-types/generated/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+//# sourceMappingURL=index.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/ast-types/generated/index.js.map b/vanilla/node_modules/@babel/types/lib/ast-types/generated/index.js.map
new file mode 100644
index 0000000..493dce2
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/ast-types/generated/index.js.map
@@ -0,0 +1 @@
+{"version":3,"names":[],"sources":["../../../src/ast-types/generated/index.ts"],"sourcesContent":["// NOTE: This file is autogenerated. Do not modify.\n// See packages/babel-types/scripts/generators/ast-types.ts for script used.\n\ninterface BaseComment {\n value: string;\n start?: number;\n end?: number;\n loc?: SourceLocation;\n // generator will skip the comment if ignore is true\n ignore?: boolean;\n type: \"CommentBlock\" | \"CommentLine\";\n}\n\ninterface Position {\n line: number;\n column: number;\n index: number;\n}\n\nexport interface CommentBlock extends BaseComment {\n type: \"CommentBlock\";\n}\n\nexport interface CommentLine extends BaseComment {\n type: \"CommentLine\";\n}\n\nexport type Comment = CommentBlock | CommentLine;\n\nexport interface SourceLocation {\n start: Position;\n end: Position;\n filename: string;\n identifierName: string | undefined | null;\n}\n\ninterface BaseNode {\n leadingComments?: Comment[] | null;\n innerComments?: Comment[] | null;\n trailingComments?: Comment[] | null;\n start?: number | null;\n end?: number | null;\n loc?: SourceLocation | null;\n range?: [number, number];\n extra?: Record<string, unknown>;\n}\n\nexport type CommentTypeShorthand = \"leading\" | \"inner\" | \"trailing\";\n\nexport type Node =\n | AnyTypeAnnotation\n | ArgumentPlaceholder\n | ArrayExpression\n | ArrayPattern\n | ArrayTypeAnnotation\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BigIntLiteral\n | BinaryExpression\n | BindExpression\n | BlockStatement\n | BooleanLiteral\n | BooleanLiteralTypeAnnotation\n | BooleanTypeAnnotation\n | BreakStatement\n | CallExpression\n | CatchClause\n | ClassAccessorProperty\n | ClassBody\n | ClassDeclaration\n | ClassExpression\n | ClassImplements\n | ClassMethod\n | ClassPrivateMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | ContinueStatement\n | DebuggerStatement\n | DecimalLiteral\n | DeclareClass\n | DeclareExportAllDeclaration\n | DeclareExportDeclaration\n | DeclareFunction\n | DeclareInterface\n | DeclareModule\n | DeclareModuleExports\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclareVariable\n | DeclaredPredicate\n | Decorator\n | Directive\n | DirectiveLiteral\n | DoExpression\n | DoWhileStatement\n | EmptyStatement\n | EmptyTypeAnnotation\n | EnumBooleanBody\n | EnumBooleanMember\n | EnumDeclaration\n | EnumDefaultedMember\n | EnumNumberBody\n | EnumNumberMember\n | EnumStringBody\n | EnumStringMember\n | EnumSymbolBody\n | ExistsTypeAnnotation\n | ExportAllDeclaration\n | ExportDefaultDeclaration\n | ExportDefaultSpecifier\n | ExportNamedDeclaration\n | ExportNamespaceSpecifier\n | ExportSpecifier\n | ExpressionStatement\n | File\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | FunctionDeclaration\n | FunctionExpression\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | GenericTypeAnnotation\n | Identifier\n | IfStatement\n | Import\n | ImportAttribute\n | ImportDeclaration\n | ImportDefaultSpecifier\n | ImportExpression\n | ImportNamespaceSpecifier\n | ImportSpecifier\n | IndexedAccessType\n | InferredPredicate\n | InterfaceDeclaration\n | InterfaceExtends\n | InterfaceTypeAnnotation\n | InterpreterDirective\n | IntersectionTypeAnnotation\n | JSXAttribute\n | JSXClosingElement\n | JSXClosingFragment\n | JSXElement\n | JSXEmptyExpression\n | JSXExpressionContainer\n | JSXFragment\n | JSXIdentifier\n | JSXMemberExpression\n | JSXNamespacedName\n | JSXOpeningElement\n | JSXOpeningFragment\n | JSXSpreadAttribute\n | JSXSpreadChild\n | JSXText\n | LabeledStatement\n | LogicalExpression\n | MemberExpression\n | MetaProperty\n | MixedTypeAnnotation\n | ModuleExpression\n | NewExpression\n | Noop\n | NullLiteral\n | NullLiteralTypeAnnotation\n | NullableTypeAnnotation\n | NumberLiteral\n | NumberLiteralTypeAnnotation\n | NumberTypeAnnotation\n | NumericLiteral\n | ObjectExpression\n | ObjectMethod\n | ObjectPattern\n | ObjectProperty\n | ObjectTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalCallExpression\n | OptionalIndexedAccessType\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelinePrimaryTopicReference\n | PipelineTopicExpression\n | Placeholder\n | PrivateName\n | Program\n | QualifiedTypeIdentifier\n | RecordExpression\n | RegExpLiteral\n | RegexLiteral\n | RestElement\n | RestProperty\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SpreadProperty\n | StaticBlock\n | StringLiteral\n | StringLiteralTypeAnnotation\n | StringTypeAnnotation\n | Super\n | SwitchCase\n | SwitchStatement\n | SymbolTypeAnnotation\n | TSAnyKeyword\n | TSArrayType\n | TSAsExpression\n | TSBigIntKeyword\n | TSBooleanKeyword\n | TSCallSignatureDeclaration\n | TSConditionalType\n | TSConstructSignatureDeclaration\n | TSConstructorType\n | TSDeclareFunction\n | TSDeclareMethod\n | TSEnumBody\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSExpressionWithTypeArguments\n | TSExternalModuleReference\n | TSFunctionType\n | TSImportEqualsDeclaration\n | TSImportType\n | TSIndexSignature\n | TSIndexedAccessType\n | TSInferType\n | TSInstantiationExpression\n | TSInterfaceBody\n | TSInterfaceDeclaration\n | TSIntersectionType\n | TSIntrinsicKeyword\n | TSLiteralType\n | TSMappedType\n | TSMethodSignature\n | TSModuleBlock\n | TSModuleDeclaration\n | TSNamedTupleMember\n | TSNamespaceExportDeclaration\n | TSNeverKeyword\n | TSNonNullExpression\n | TSNullKeyword\n | TSNumberKeyword\n | TSObjectKeyword\n | TSOptionalType\n | TSParameterProperty\n | TSParenthesizedType\n | TSPropertySignature\n | TSQualifiedName\n | TSRestType\n | TSSatisfiesExpression\n | TSStringKeyword\n | TSSymbolKeyword\n | TSTemplateLiteralType\n | TSThisType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeLiteral\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterDeclaration\n | TSTypeParameterInstantiation\n | TSTypePredicate\n | TSTypeQuery\n | TSTypeReference\n | TSUndefinedKeyword\n | TSUnionType\n | TSUnknownKeyword\n | TSVoidKeyword\n | TaggedTemplateExpression\n | TemplateElement\n | TemplateLiteral\n | ThisExpression\n | ThisTypeAnnotation\n | ThrowStatement\n | TopicReference\n | TryStatement\n | TupleExpression\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeCastExpression\n | TypeParameter\n | TypeParameterDeclaration\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnaryExpression\n | UnionTypeAnnotation\n | UpdateExpression\n | V8IntrinsicIdentifier\n | VariableDeclaration\n | VariableDeclarator\n | Variance\n | VoidPattern\n | VoidTypeAnnotation\n | WhileStatement\n | WithStatement\n | YieldExpression;\n\nexport interface ArrayExpression extends BaseNode {\n type: \"ArrayExpression\";\n elements: (null | Expression | SpreadElement)[];\n}\n\nexport interface AssignmentExpression extends BaseNode {\n type: \"AssignmentExpression\";\n operator: string;\n left: LVal | OptionalMemberExpression;\n right: Expression;\n}\n\nexport interface BinaryExpression extends BaseNode {\n type: \"BinaryExpression\";\n operator:\n | \"+\"\n | \"-\"\n | \"/\"\n | \"%\"\n | \"*\"\n | \"**\"\n | \"&\"\n | \"|\"\n | \">>\"\n | \">>>\"\n | \"<<\"\n | \"^\"\n | \"==\"\n | \"===\"\n | \"!=\"\n | \"!==\"\n | \"in\"\n | \"instanceof\"\n | \">\"\n | \"<\"\n | \">=\"\n | \"<=\"\n | \"|>\";\n left: Expression | PrivateName;\n right: Expression;\n}\n\nexport interface InterpreterDirective extends BaseNode {\n type: \"InterpreterDirective\";\n value: string;\n}\n\nexport interface Directive extends BaseNode {\n type: \"Directive\";\n value: DirectiveLiteral;\n}\n\nexport interface DirectiveLiteral extends BaseNode {\n type: \"DirectiveLiteral\";\n value: string;\n}\n\nexport interface BlockStatement extends BaseNode {\n type: \"BlockStatement\";\n body: Statement[];\n directives: Directive[];\n}\n\nexport interface BreakStatement extends BaseNode {\n type: \"BreakStatement\";\n label?: Identifier | null;\n}\n\nexport interface CallExpression extends BaseNode {\n type: \"CallExpression\";\n callee: Expression | Super | V8IntrinsicIdentifier;\n arguments: (Expression | SpreadElement | ArgumentPlaceholder)[];\n optional?: boolean | null;\n typeArguments?: TypeParameterInstantiation | null;\n typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface CatchClause extends BaseNode {\n type: \"CatchClause\";\n param?: Identifier | ArrayPattern | ObjectPattern | null;\n body: BlockStatement;\n}\n\nexport interface ConditionalExpression extends BaseNode {\n type: \"ConditionalExpression\";\n test: Expression;\n consequent: Expression;\n alternate: Expression;\n}\n\nexport interface ContinueStatement extends BaseNode {\n type: \"ContinueStatement\";\n label?: Identifier | null;\n}\n\nexport interface DebuggerStatement extends BaseNode {\n type: \"DebuggerStatement\";\n}\n\nexport interface DoWhileStatement extends BaseNode {\n type: \"DoWhileStatement\";\n test: Expression;\n body: Statement;\n}\n\nexport interface EmptyStatement extends BaseNode {\n type: \"EmptyStatement\";\n}\n\nexport interface ExpressionStatement extends BaseNode {\n type: \"ExpressionStatement\";\n expression: Expression;\n}\n\nexport interface File extends BaseNode {\n type: \"File\";\n program: Program;\n comments?: (CommentBlock | CommentLine)[] | null;\n tokens?: any[] | null;\n}\n\nexport interface ForInStatement extends BaseNode {\n type: \"ForInStatement\";\n left: VariableDeclaration | LVal;\n right: Expression;\n body: Statement;\n}\n\nexport interface ForStatement extends BaseNode {\n type: \"ForStatement\";\n init?: VariableDeclaration | Expression | null;\n test?: Expression | null;\n update?: Expression | null;\n body: Statement;\n}\n\nexport interface FunctionDeclaration extends BaseNode {\n type: \"FunctionDeclaration\";\n id?: Identifier | null;\n params: FunctionParameter[];\n body: BlockStatement;\n generator: boolean;\n async: boolean;\n declare?: boolean | null;\n predicate?: DeclaredPredicate | InferredPredicate | null;\n returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n typeParameters?:\n | TypeParameterDeclaration\n | TSTypeParameterDeclaration\n | Noop\n | null;\n}\n\nexport interface FunctionExpression extends BaseNode {\n type: \"FunctionExpression\";\n id?: Identifier | null;\n params: FunctionParameter[];\n body: BlockStatement;\n generator: boolean;\n async: boolean;\n predicate?: DeclaredPredicate | InferredPredicate | null;\n returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n typeParameters?:\n | TypeParameterDeclaration\n | TSTypeParameterDeclaration\n | Noop\n | null;\n}\n\nexport interface Identifier extends BaseNode {\n type: \"Identifier\";\n name: string;\n decorators?: Decorator[] | null;\n optional?: boolean | null;\n typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\nexport interface IfStatement extends BaseNode {\n type: \"IfStatement\";\n test: Expression;\n consequent: Statement;\n alternate?: Statement | null;\n}\n\nexport interface LabeledStatement extends BaseNode {\n type: \"LabeledStatement\";\n label: Identifier;\n body: Statement;\n}\n\nexport interface StringLiteral extends BaseNode {\n type: \"StringLiteral\";\n value: string;\n}\n\nexport interface NumericLiteral extends BaseNode {\n type: \"NumericLiteral\";\n value: number;\n}\n\n/**\n * @deprecated Use `NumericLiteral`\n */\nexport interface NumberLiteral extends BaseNode {\n type: \"NumberLiteral\";\n value: number;\n}\n\nexport interface NullLiteral extends BaseNode {\n type: \"NullLiteral\";\n}\n\nexport interface BooleanLiteral extends BaseNode {\n type: \"BooleanLiteral\";\n value: boolean;\n}\n\nexport interface RegExpLiteral extends BaseNode {\n type: \"RegExpLiteral\";\n pattern: string;\n flags: string;\n}\n\n/**\n * @deprecated Use `RegExpLiteral`\n */\nexport interface RegexLiteral extends BaseNode {\n type: \"RegexLiteral\";\n pattern: string;\n flags: string;\n}\n\nexport interface LogicalExpression extends BaseNode {\n type: \"LogicalExpression\";\n operator: \"||\" | \"&&\" | \"??\";\n left: Expression;\n right: Expression;\n}\n\nexport interface MemberExpression extends BaseNode {\n type: \"MemberExpression\";\n object: Expression | Super;\n property: Expression | Identifier | PrivateName;\n computed: boolean;\n optional?: boolean | null;\n}\n\nexport interface NewExpression extends BaseNode {\n type: \"NewExpression\";\n callee: Expression | Super | V8IntrinsicIdentifier;\n arguments: (Expression | SpreadElement | ArgumentPlaceholder)[];\n optional?: boolean | null;\n typeArguments?: TypeParameterInstantiation | null;\n typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface Program extends BaseNode {\n type: \"Program\";\n body: Statement[];\n directives: Directive[];\n sourceType: \"script\" | \"module\";\n interpreter?: InterpreterDirective | null;\n}\n\nexport interface ObjectExpression extends BaseNode {\n type: \"ObjectExpression\";\n properties: (ObjectMethod | ObjectProperty | SpreadElement)[];\n}\n\nexport interface ObjectMethod extends BaseNode {\n type: \"ObjectMethod\";\n kind: \"method\" | \"get\" | \"set\";\n key: Expression | Identifier | StringLiteral | NumericLiteral | BigIntLiteral;\n params: FunctionParameter[];\n body: BlockStatement;\n computed: boolean;\n generator: boolean;\n async: boolean;\n decorators?: Decorator[] | null;\n returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n typeParameters?:\n | TypeParameterDeclaration\n | TSTypeParameterDeclaration\n | Noop\n | null;\n}\n\nexport interface ObjectProperty extends BaseNode {\n type: \"ObjectProperty\";\n key:\n | Expression\n | Identifier\n | StringLiteral\n | NumericLiteral\n | BigIntLiteral\n | DecimalLiteral\n | PrivateName;\n value: Expression | PatternLike;\n computed: boolean;\n shorthand: boolean;\n decorators?: Decorator[] | null;\n}\n\nexport interface RestElement extends BaseNode {\n type: \"RestElement\";\n argument:\n | Identifier\n | ArrayPattern\n | ObjectPattern\n | MemberExpression\n | TSAsExpression\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TSNonNullExpression\n | RestElement\n | AssignmentPattern;\n decorators?: Decorator[] | null;\n optional?: boolean | null;\n typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\n/**\n * @deprecated Use `RestElement`\n */\nexport interface RestProperty extends BaseNode {\n type: \"RestProperty\";\n argument:\n | Identifier\n | ArrayPattern\n | ObjectPattern\n | MemberExpression\n | TSAsExpression\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TSNonNullExpression\n | RestElement\n | AssignmentPattern;\n decorators?: Decorator[] | null;\n optional?: boolean | null;\n typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\nexport interface ReturnStatement extends BaseNode {\n type: \"ReturnStatement\";\n argument?: Expression | null;\n}\n\nexport interface SequenceExpression extends BaseNode {\n type: \"SequenceExpression\";\n expressions: Expression[];\n}\n\nexport interface ParenthesizedExpression extends BaseNode {\n type: \"ParenthesizedExpression\";\n expression: Expression;\n}\n\nexport interface SwitchCase extends BaseNode {\n type: \"SwitchCase\";\n test?: Expression | null;\n consequent: Statement[];\n}\n\nexport interface SwitchStatement extends BaseNode {\n type: \"SwitchStatement\";\n discriminant: Expression;\n cases: SwitchCase[];\n}\n\nexport interface ThisExpression extends BaseNode {\n type: \"ThisExpression\";\n}\n\nexport interface ThrowStatement extends BaseNode {\n type: \"ThrowStatement\";\n argument: Expression;\n}\n\nexport interface TryStatement extends BaseNode {\n type: \"TryStatement\";\n block: BlockStatement;\n handler?: CatchClause | null;\n finalizer?: BlockStatement | null;\n}\n\nexport interface UnaryExpression extends BaseNode {\n type: \"UnaryExpression\";\n operator: \"void\" | \"throw\" | \"delete\" | \"!\" | \"+\" | \"-\" | \"~\" | \"typeof\";\n argument: Expression;\n prefix: boolean;\n}\n\nexport interface UpdateExpression extends BaseNode {\n type: \"UpdateExpression\";\n operator: \"++\" | \"--\";\n argument: Expression;\n prefix: boolean;\n}\n\nexport interface VariableDeclaration extends BaseNode {\n type: \"VariableDeclaration\";\n kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\";\n declarations: VariableDeclarator[];\n declare?: boolean | null;\n}\n\nexport interface VariableDeclarator extends BaseNode {\n type: \"VariableDeclarator\";\n id: LVal | VoidPattern;\n init?: Expression | null;\n definite?: boolean | null;\n}\n\nexport interface WhileStatement extends BaseNode {\n type: \"WhileStatement\";\n test: Expression;\n body: Statement;\n}\n\nexport interface WithStatement extends BaseNode {\n type: \"WithStatement\";\n object: Expression;\n body: Statement;\n}\n\nexport interface AssignmentPattern extends BaseNode {\n type: \"AssignmentPattern\";\n left:\n | Identifier\n | ObjectPattern\n | ArrayPattern\n | MemberExpression\n | TSAsExpression\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TSNonNullExpression;\n right: Expression;\n decorators?: Decorator[] | null;\n optional?: boolean | null;\n typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\nexport interface ArrayPattern extends BaseNode {\n type: \"ArrayPattern\";\n elements: (null | PatternLike)[];\n decorators?: Decorator[] | null;\n optional?: boolean | null;\n typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\nexport interface ArrowFunctionExpression extends BaseNode {\n type: \"ArrowFunctionExpression\";\n params: FunctionParameter[];\n body: BlockStatement | Expression;\n async: boolean;\n expression: boolean;\n generator?: boolean;\n predicate?: DeclaredPredicate | InferredPredicate | null;\n returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n typeParameters?:\n | TypeParameterDeclaration\n | TSTypeParameterDeclaration\n | Noop\n | null;\n}\n\nexport interface ClassBody extends BaseNode {\n type: \"ClassBody\";\n body: (\n | ClassMethod\n | ClassPrivateMethod\n | ClassProperty\n | ClassPrivateProperty\n | ClassAccessorProperty\n | TSDeclareMethod\n | TSIndexSignature\n | StaticBlock\n )[];\n}\n\nexport interface ClassExpression extends BaseNode {\n type: \"ClassExpression\";\n id?: Identifier | null;\n superClass?: Expression | null;\n body: ClassBody;\n decorators?: Decorator[] | null;\n implements?: (TSExpressionWithTypeArguments | ClassImplements)[] | null;\n mixins?: InterfaceExtends | null;\n superTypeParameters?:\n | TypeParameterInstantiation\n | TSTypeParameterInstantiation\n | null;\n typeParameters?:\n | TypeParameterDeclaration\n | TSTypeParameterDeclaration\n | Noop\n | null;\n}\n\nexport interface ClassDeclaration extends BaseNode {\n type: \"ClassDeclaration\";\n id?: Identifier | null;\n superClass?: Expression | null;\n body: ClassBody;\n decorators?: Decorator[] | null;\n abstract?: boolean | null;\n declare?: boolean | null;\n implements?: (TSExpressionWithTypeArguments | ClassImplements)[] | null;\n mixins?: InterfaceExtends | null;\n superTypeParameters?:\n | TypeParameterInstantiation\n | TSTypeParameterInstantiation\n | null;\n typeParameters?:\n | TypeParameterDeclaration\n | TSTypeParameterDeclaration\n | Noop\n | null;\n}\n\nexport interface ExportAllDeclaration extends BaseNode {\n type: \"ExportAllDeclaration\";\n source: StringLiteral;\n attributes?: ImportAttribute[] | null;\n /** @deprecated */\n assertions?: ImportAttribute[] | null;\n exportKind?: \"type\" | \"value\" | null;\n}\n\nexport interface ExportDefaultDeclaration extends BaseNode {\n type: \"ExportDefaultDeclaration\";\n declaration:\n | TSDeclareFunction\n | FunctionDeclaration\n | ClassDeclaration\n | Expression;\n exportKind?: \"value\" | null;\n}\n\nexport interface ExportNamedDeclaration extends BaseNode {\n type: \"ExportNamedDeclaration\";\n declaration?: Declaration | null;\n specifiers: (\n | ExportSpecifier\n | ExportDefaultSpecifier\n | ExportNamespaceSpecifier\n )[];\n source?: StringLiteral | null;\n attributes?: ImportAttribute[] | null;\n /** @deprecated */\n assertions?: ImportAttribute[] | null;\n exportKind?: \"type\" | \"value\" | null;\n}\n\nexport interface ExportSpecifier extends BaseNode {\n type: \"ExportSpecifier\";\n local: Identifier;\n exported: Identifier | StringLiteral;\n exportKind?: \"type\" | \"value\" | null;\n}\n\nexport interface ForOfStatement extends BaseNode {\n type: \"ForOfStatement\";\n left: VariableDeclaration | LVal;\n right: Expression;\n body: Statement;\n await: boolean;\n}\n\nexport interface ImportDeclaration extends BaseNode {\n type: \"ImportDeclaration\";\n specifiers: (\n | ImportSpecifier\n | ImportDefaultSpecifier\n | ImportNamespaceSpecifier\n )[];\n source: StringLiteral;\n attributes?: ImportAttribute[] | null;\n /** @deprecated */\n assertions?: ImportAttribute[] | null;\n importKind?: \"type\" | \"typeof\" | \"value\" | null;\n module?: boolean | null;\n phase?: \"source\" | \"defer\" | null;\n}\n\nexport interface ImportDefaultSpecifier extends BaseNode {\n type: \"ImportDefaultSpecifier\";\n local: Identifier;\n}\n\nexport interface ImportNamespaceSpecifier extends BaseNode {\n type: \"ImportNamespaceSpecifier\";\n local: Identifier;\n}\n\nexport interface ImportSpecifier extends BaseNode {\n type: \"ImportSpecifier\";\n local: Identifier;\n imported: Identifier | StringLiteral;\n importKind?: \"type\" | \"typeof\" | \"value\" | null;\n}\n\nexport interface ImportExpression extends BaseNode {\n type: \"ImportExpression\";\n source: Expression;\n options?: Expression | null;\n phase?: \"source\" | \"defer\" | null;\n}\n\nexport interface MetaProperty extends BaseNode {\n type: \"MetaProperty\";\n meta: Identifier;\n property: Identifier;\n}\n\nexport interface ClassMethod extends BaseNode {\n type: \"ClassMethod\";\n kind: \"get\" | \"set\" | \"method\" | \"constructor\";\n key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression;\n params: (FunctionParameter | TSParameterProperty)[];\n body: BlockStatement;\n computed: boolean;\n static: boolean;\n generator: boolean;\n async: boolean;\n abstract?: boolean | null;\n access?: \"public\" | \"private\" | \"protected\" | null;\n accessibility?: \"public\" | \"private\" | \"protected\" | null;\n decorators?: Decorator[] | null;\n optional?: boolean | null;\n override?: boolean;\n returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n typeParameters?:\n | TypeParameterDeclaration\n | TSTypeParameterDeclaration\n | Noop\n | null;\n}\n\nexport interface ObjectPattern extends BaseNode {\n type: \"ObjectPattern\";\n properties: (RestElement | ObjectProperty)[];\n decorators?: Decorator[] | null;\n optional?: boolean | null;\n typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\nexport interface SpreadElement extends BaseNode {\n type: \"SpreadElement\";\n argument: Expression;\n}\n\n/**\n * @deprecated Use `SpreadElement`\n */\nexport interface SpreadProperty extends BaseNode {\n type: \"SpreadProperty\";\n argument: Expression;\n}\n\nexport interface Super extends BaseNode {\n type: \"Super\";\n}\n\nexport interface TaggedTemplateExpression extends BaseNode {\n type: \"TaggedTemplateExpression\";\n tag: Expression;\n quasi: TemplateLiteral;\n typeParameters?:\n | TypeParameterInstantiation\n | TSTypeParameterInstantiation\n | null;\n}\n\nexport interface TemplateElement extends BaseNode {\n type: \"TemplateElement\";\n value: { raw: string; cooked?: string };\n tail: boolean;\n}\n\nexport interface TemplateLiteral extends BaseNode {\n type: \"TemplateLiteral\";\n quasis: TemplateElement[];\n expressions: (Expression | TSType)[];\n}\n\nexport interface YieldExpression extends BaseNode {\n type: \"YieldExpression\";\n argument?: Expression | null;\n delegate: boolean;\n}\n\nexport interface AwaitExpression extends BaseNode {\n type: \"AwaitExpression\";\n argument: Expression;\n}\n\nexport interface Import extends BaseNode {\n type: \"Import\";\n}\n\nexport interface BigIntLiteral extends BaseNode {\n type: \"BigIntLiteral\";\n value: string;\n}\n\nexport interface ExportNamespaceSpecifier extends BaseNode {\n type: \"ExportNamespaceSpecifier\";\n exported: Identifier;\n}\n\nexport interface OptionalMemberExpression extends BaseNode {\n type: \"OptionalMemberExpression\";\n object: Expression;\n property: Expression | Identifier;\n computed: boolean;\n optional: boolean;\n}\n\nexport interface OptionalCallExpression extends BaseNode {\n type: \"OptionalCallExpression\";\n callee: Expression;\n arguments: (Expression | SpreadElement | ArgumentPlaceholder)[];\n optional: boolean;\n typeArguments?: TypeParameterInstantiation | null;\n typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface ClassProperty extends BaseNode {\n type: \"ClassProperty\";\n key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression;\n value?: Expression | null;\n typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n decorators?: Decorator[] | null;\n computed: boolean;\n static: boolean;\n abstract?: boolean | null;\n accessibility?: \"public\" | \"private\" | \"protected\" | null;\n declare?: boolean | null;\n definite?: boolean | null;\n optional?: boolean | null;\n override?: boolean;\n readonly?: boolean | null;\n variance?: Variance | null;\n}\n\nexport interface ClassAccessorProperty extends BaseNode {\n type: \"ClassAccessorProperty\";\n key:\n | Identifier\n | StringLiteral\n | NumericLiteral\n | BigIntLiteral\n | Expression\n | PrivateName;\n value?: Expression | null;\n typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n decorators?: Decorator[] | null;\n computed: boolean;\n static: boolean;\n abstract?: boolean | null;\n accessibility?: \"public\" | \"private\" | \"protected\" | null;\n declare?: boolean | null;\n definite?: boolean | null;\n optional?: boolean | null;\n override?: boolean;\n readonly?: boolean | null;\n variance?: Variance | null;\n}\n\nexport interface ClassPrivateProperty extends BaseNode {\n type: \"ClassPrivateProperty\";\n key: PrivateName;\n value?: Expression | null;\n decorators?: Decorator[] | null;\n static: boolean;\n definite?: boolean | null;\n optional?: boolean | null;\n readonly?: boolean | null;\n typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n variance?: Variance | null;\n}\n\nexport interface ClassPrivateMethod extends BaseNode {\n type: \"ClassPrivateMethod\";\n kind: \"get\" | \"set\" | \"method\";\n key: PrivateName;\n params: (FunctionParameter | TSParameterProperty)[];\n body: BlockStatement;\n static: boolean;\n abstract?: boolean | null;\n access?: \"public\" | \"private\" | \"protected\" | null;\n accessibility?: \"public\" | \"private\" | \"protected\" | null;\n async?: boolean;\n computed?: boolean;\n decorators?: Decorator[] | null;\n generator?: boolean;\n optional?: boolean | null;\n override?: boolean;\n returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n typeParameters?:\n | TypeParameterDeclaration\n | TSTypeParameterDeclaration\n | Noop\n | null;\n}\n\nexport interface PrivateName extends BaseNode {\n type: \"PrivateName\";\n id: Identifier;\n}\n\nexport interface StaticBlock extends BaseNode {\n type: \"StaticBlock\";\n body: Statement[];\n}\n\nexport interface ImportAttribute extends BaseNode {\n type: \"ImportAttribute\";\n key: Identifier | StringLiteral;\n value: StringLiteral;\n}\n\nexport interface AnyTypeAnnotation extends BaseNode {\n type: \"AnyTypeAnnotation\";\n}\n\nexport interface ArrayTypeAnnotation extends BaseNode {\n type: \"ArrayTypeAnnotation\";\n elementType: FlowType;\n}\n\nexport interface BooleanTypeAnnotation extends BaseNode {\n type: \"BooleanTypeAnnotation\";\n}\n\nexport interface BooleanLiteralTypeAnnotation extends BaseNode {\n type: \"BooleanLiteralTypeAnnotation\";\n value: boolean;\n}\n\nexport interface NullLiteralTypeAnnotation extends BaseNode {\n type: \"NullLiteralTypeAnnotation\";\n}\n\nexport interface ClassImplements extends BaseNode {\n type: \"ClassImplements\";\n id: Identifier;\n typeParameters?: TypeParameterInstantiation | null;\n}\n\nexport interface DeclareClass extends BaseNode {\n type: \"DeclareClass\";\n id: Identifier;\n typeParameters?: TypeParameterDeclaration | null;\n extends?: InterfaceExtends[] | null;\n body: ObjectTypeAnnotation;\n implements?: ClassImplements[] | null;\n mixins?: InterfaceExtends[] | null;\n}\n\nexport interface DeclareFunction extends BaseNode {\n type: \"DeclareFunction\";\n id: Identifier;\n predicate?: DeclaredPredicate | null;\n}\n\nexport interface DeclareInterface extends BaseNode {\n type: \"DeclareInterface\";\n id: Identifier;\n typeParameters?: TypeParameterDeclaration | null;\n extends?: InterfaceExtends[] | null;\n body: ObjectTypeAnnotation;\n}\n\nexport interface DeclareModule extends BaseNode {\n type: \"DeclareModule\";\n id: Identifier | StringLiteral;\n body: BlockStatement;\n kind?: \"CommonJS\" | \"ES\" | null;\n}\n\nexport interface DeclareModuleExports extends BaseNode {\n type: \"DeclareModuleExports\";\n typeAnnotation: TypeAnnotation;\n}\n\nexport interface DeclareTypeAlias extends BaseNode {\n type: \"DeclareTypeAlias\";\n id: Identifier;\n typeParameters?: TypeParameterDeclaration | null;\n right: FlowType;\n}\n\nexport interface DeclareOpaqueType extends BaseNode {\n type: \"DeclareOpaqueType\";\n id: Identifier;\n typeParameters?: TypeParameterDeclaration | null;\n supertype?: FlowType | null;\n impltype?: FlowType | null;\n}\n\nexport interface DeclareVariable extends BaseNode {\n type: \"DeclareVariable\";\n id: Identifier;\n}\n\nexport interface DeclareExportDeclaration extends BaseNode {\n type: \"DeclareExportDeclaration\";\n declaration?: Flow | null;\n specifiers?: (ExportSpecifier | ExportNamespaceSpecifier)[] | null;\n source?: StringLiteral | null;\n attributes?: ImportAttribute[] | null;\n /** @deprecated */\n assertions?: ImportAttribute[] | null;\n default?: boolean | null;\n}\n\nexport interface DeclareExportAllDeclaration extends BaseNode {\n type: \"DeclareExportAllDeclaration\";\n source: StringLiteral;\n attributes?: ImportAttribute[] | null;\n /** @deprecated */\n assertions?: ImportAttribute[] | null;\n exportKind?: \"type\" | \"value\" | null;\n}\n\nexport interface DeclaredPredicate extends BaseNode {\n type: \"DeclaredPredicate\";\n value: Flow;\n}\n\nexport interface ExistsTypeAnnotation extends BaseNode {\n type: \"ExistsTypeAnnotation\";\n}\n\nexport interface FunctionTypeAnnotation extends BaseNode {\n type: \"FunctionTypeAnnotation\";\n typeParameters?: TypeParameterDeclaration | null;\n params: FunctionTypeParam[];\n rest?: FunctionTypeParam | null;\n returnType: FlowType;\n this?: FunctionTypeParam | null;\n}\n\nexport interface FunctionTypeParam extends BaseNode {\n type: \"FunctionTypeParam\";\n name?: Identifier | null;\n typeAnnotation: FlowType;\n optional?: boolean | null;\n}\n\nexport interface GenericTypeAnnotation extends BaseNode {\n type: \"GenericTypeAnnotation\";\n id: Identifier | QualifiedTypeIdentifier;\n typeParameters?: TypeParameterInstantiation | null;\n}\n\nexport interface InferredPredicate extends BaseNode {\n type: \"InferredPredicate\";\n}\n\nexport interface InterfaceExtends extends BaseNode {\n type: \"InterfaceExtends\";\n id: Identifier | QualifiedTypeIdentifier;\n typeParameters?: TypeParameterInstantiation | null;\n}\n\nexport interface InterfaceDeclaration extends BaseNode {\n type: \"InterfaceDeclaration\";\n id: Identifier;\n typeParameters?: TypeParameterDeclaration | null;\n extends?: InterfaceExtends[] | null;\n body: ObjectTypeAnnotation;\n}\n\nexport interface InterfaceTypeAnnotation extends BaseNode {\n type: \"InterfaceTypeAnnotation\";\n extends?: InterfaceExtends[] | null;\n body: ObjectTypeAnnotation;\n}\n\nexport interface IntersectionTypeAnnotation extends BaseNode {\n type: \"IntersectionTypeAnnotation\";\n types: FlowType[];\n}\n\nexport interface MixedTypeAnnotation extends BaseNode {\n type: \"MixedTypeAnnotation\";\n}\n\nexport interface EmptyTypeAnnotation extends BaseNode {\n type: \"EmptyTypeAnnotation\";\n}\n\nexport interface NullableTypeAnnotation extends BaseNode {\n type: \"NullableTypeAnnotation\";\n typeAnnotation: FlowType;\n}\n\nexport interface NumberLiteralTypeAnnotation extends BaseNode {\n type: \"NumberLiteralTypeAnnotation\";\n value: number;\n}\n\nexport interface NumberTypeAnnotation extends BaseNode {\n type: \"NumberTypeAnnotation\";\n}\n\nexport interface ObjectTypeAnnotation extends BaseNode {\n type: \"ObjectTypeAnnotation\";\n properties: (ObjectTypeProperty | ObjectTypeSpreadProperty)[];\n indexers?: ObjectTypeIndexer[];\n callProperties?: ObjectTypeCallProperty[];\n internalSlots?: ObjectTypeInternalSlot[];\n exact: boolean;\n inexact?: boolean | null;\n}\n\nexport interface ObjectTypeInternalSlot extends BaseNode {\n type: \"ObjectTypeInternalSlot\";\n id: Identifier;\n value: FlowType;\n optional: boolean;\n static: boolean;\n method: boolean;\n}\n\nexport interface ObjectTypeCallProperty extends BaseNode {\n type: \"ObjectTypeCallProperty\";\n value: FlowType;\n static: boolean;\n}\n\nexport interface ObjectTypeIndexer extends BaseNode {\n type: \"ObjectTypeIndexer\";\n id?: Identifier | null;\n key: FlowType;\n value: FlowType;\n variance?: Variance | null;\n static: boolean;\n}\n\nexport interface ObjectTypeProperty extends BaseNode {\n type: \"ObjectTypeProperty\";\n key: Identifier | StringLiteral;\n value: FlowType;\n variance?: Variance | null;\n kind: \"init\" | \"get\" | \"set\";\n method: boolean;\n optional: boolean;\n proto: boolean;\n static: boolean;\n}\n\nexport interface ObjectTypeSpreadProperty extends BaseNode {\n type: \"ObjectTypeSpreadProperty\";\n argument: FlowType;\n}\n\nexport interface OpaqueType extends BaseNode {\n type: \"OpaqueType\";\n id: Identifier;\n typeParameters?: TypeParameterDeclaration | null;\n supertype?: FlowType | null;\n impltype: FlowType;\n}\n\nexport interface QualifiedTypeIdentifier extends BaseNode {\n type: \"QualifiedTypeIdentifier\";\n id: Identifier;\n qualification: Identifier | QualifiedTypeIdentifier;\n}\n\nexport interface StringLiteralTypeAnnotation extends BaseNode {\n type: \"StringLiteralTypeAnnotation\";\n value: string;\n}\n\nexport interface StringTypeAnnotation extends BaseNode {\n type: \"StringTypeAnnotation\";\n}\n\nexport interface SymbolTypeAnnotation extends BaseNode {\n type: \"SymbolTypeAnnotation\";\n}\n\nexport interface ThisTypeAnnotation extends BaseNode {\n type: \"ThisTypeAnnotation\";\n}\n\nexport interface TupleTypeAnnotation extends BaseNode {\n type: \"TupleTypeAnnotation\";\n types: FlowType[];\n}\n\nexport interface TypeofTypeAnnotation extends BaseNode {\n type: \"TypeofTypeAnnotation\";\n argument: FlowType;\n}\n\nexport interface TypeAlias extends BaseNode {\n type: \"TypeAlias\";\n id: Identifier;\n typeParameters?: TypeParameterDeclaration | null;\n right: FlowType;\n}\n\nexport interface TypeAnnotation extends BaseNode {\n type: \"TypeAnnotation\";\n typeAnnotation: FlowType;\n}\n\nexport interface TypeCastExpression extends BaseNode {\n type: \"TypeCastExpression\";\n expression: Expression;\n typeAnnotation: TypeAnnotation;\n}\n\nexport interface TypeParameter extends BaseNode {\n type: \"TypeParameter\";\n bound?: TypeAnnotation | null;\n default?: FlowType | null;\n variance?: Variance | null;\n name: string;\n}\n\nexport interface TypeParameterDeclaration extends BaseNode {\n type: \"TypeParameterDeclaration\";\n params: TypeParameter[];\n}\n\nexport interface TypeParameterInstantiation extends BaseNode {\n type: \"TypeParameterInstantiation\";\n params: FlowType[];\n}\n\nexport interface UnionTypeAnnotation extends BaseNode {\n type: \"UnionTypeAnnotation\";\n types: FlowType[];\n}\n\nexport interface Variance extends BaseNode {\n type: \"Variance\";\n kind: \"minus\" | \"plus\";\n}\n\nexport interface VoidTypeAnnotation extends BaseNode {\n type: \"VoidTypeAnnotation\";\n}\n\nexport interface EnumDeclaration extends BaseNode {\n type: \"EnumDeclaration\";\n id: Identifier;\n body: EnumBooleanBody | EnumNumberBody | EnumStringBody | EnumSymbolBody;\n}\n\nexport interface EnumBooleanBody extends BaseNode {\n type: \"EnumBooleanBody\";\n members: EnumBooleanMember[];\n explicitType: boolean;\n hasUnknownMembers: boolean;\n}\n\nexport interface EnumNumberBody extends BaseNode {\n type: \"EnumNumberBody\";\n members: EnumNumberMember[];\n explicitType: boolean;\n hasUnknownMembers: boolean;\n}\n\nexport interface EnumStringBody extends BaseNode {\n type: \"EnumStringBody\";\n members: (EnumStringMember | EnumDefaultedMember)[];\n explicitType: boolean;\n hasUnknownMembers: boolean;\n}\n\nexport interface EnumSymbolBody extends BaseNode {\n type: \"EnumSymbolBody\";\n members: EnumDefaultedMember[];\n hasUnknownMembers: boolean;\n}\n\nexport interface EnumBooleanMember extends BaseNode {\n type: \"EnumBooleanMember\";\n id: Identifier;\n init: BooleanLiteral;\n}\n\nexport interface EnumNumberMember extends BaseNode {\n type: \"EnumNumberMember\";\n id: Identifier;\n init: NumericLiteral;\n}\n\nexport interface EnumStringMember extends BaseNode {\n type: \"EnumStringMember\";\n id: Identifier;\n init: StringLiteral;\n}\n\nexport interface EnumDefaultedMember extends BaseNode {\n type: \"EnumDefaultedMember\";\n id: Identifier;\n}\n\nexport interface IndexedAccessType extends BaseNode {\n type: \"IndexedAccessType\";\n objectType: FlowType;\n indexType: FlowType;\n}\n\nexport interface OptionalIndexedAccessType extends BaseNode {\n type: \"OptionalIndexedAccessType\";\n objectType: FlowType;\n indexType: FlowType;\n optional: boolean;\n}\n\nexport interface JSXAttribute extends BaseNode {\n type: \"JSXAttribute\";\n name: JSXIdentifier | JSXNamespacedName;\n value?:\n | JSXElement\n | JSXFragment\n | StringLiteral\n | JSXExpressionContainer\n | null;\n}\n\nexport interface JSXClosingElement extends BaseNode {\n type: \"JSXClosingElement\";\n name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName;\n}\n\nexport interface JSXElement extends BaseNode {\n type: \"JSXElement\";\n openingElement: JSXOpeningElement;\n closingElement?: JSXClosingElement | null;\n children: (\n | JSXText\n | JSXExpressionContainer\n | JSXSpreadChild\n | JSXElement\n | JSXFragment\n )[];\n selfClosing?: boolean | null;\n}\n\nexport interface JSXEmptyExpression extends BaseNode {\n type: \"JSXEmptyExpression\";\n}\n\nexport interface JSXExpressionContainer extends BaseNode {\n type: \"JSXExpressionContainer\";\n expression: Expression | JSXEmptyExpression;\n}\n\nexport interface JSXSpreadChild extends BaseNode {\n type: \"JSXSpreadChild\";\n expression: Expression;\n}\n\nexport interface JSXIdentifier extends BaseNode {\n type: \"JSXIdentifier\";\n name: string;\n}\n\nexport interface JSXMemberExpression extends BaseNode {\n type: \"JSXMemberExpression\";\n object: JSXMemberExpression | JSXIdentifier;\n property: JSXIdentifier;\n}\n\nexport interface JSXNamespacedName extends BaseNode {\n type: \"JSXNamespacedName\";\n namespace: JSXIdentifier;\n name: JSXIdentifier;\n}\n\nexport interface JSXOpeningElement extends BaseNode {\n type: \"JSXOpeningElement\";\n name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName;\n attributes: (JSXAttribute | JSXSpreadAttribute)[];\n selfClosing: boolean;\n typeArguments?: TypeParameterInstantiation | null;\n typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface JSXSpreadAttribute extends BaseNode {\n type: \"JSXSpreadAttribute\";\n argument: Expression;\n}\n\nexport interface JSXText extends BaseNode {\n type: \"JSXText\";\n value: string;\n}\n\nexport interface JSXFragment extends BaseNode {\n type: \"JSXFragment\";\n openingFragment: JSXOpeningFragment;\n closingFragment: JSXClosingFragment;\n children: (\n | JSXText\n | JSXExpressionContainer\n | JSXSpreadChild\n | JSXElement\n | JSXFragment\n )[];\n}\n\nexport interface JSXOpeningFragment extends BaseNode {\n type: \"JSXOpeningFragment\";\n}\n\nexport interface JSXClosingFragment extends BaseNode {\n type: \"JSXClosingFragment\";\n}\n\nexport interface Noop extends BaseNode {\n type: \"Noop\";\n}\n\nexport interface Placeholder extends BaseNode {\n type: \"Placeholder\";\n expectedNode:\n | \"Identifier\"\n | \"StringLiteral\"\n | \"Expression\"\n | \"Statement\"\n | \"Declaration\"\n | \"BlockStatement\"\n | \"ClassBody\"\n | \"Pattern\";\n name: Identifier;\n decorators?: Decorator[] | null;\n optional?: boolean | null;\n typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\nexport interface V8IntrinsicIdentifier extends BaseNode {\n type: \"V8IntrinsicIdentifier\";\n name: string;\n}\n\nexport interface ArgumentPlaceholder extends BaseNode {\n type: \"ArgumentPlaceholder\";\n}\n\nexport interface BindExpression extends BaseNode {\n type: \"BindExpression\";\n object: Expression;\n callee: Expression;\n}\n\nexport interface Decorator extends BaseNode {\n type: \"Decorator\";\n expression: Expression;\n}\n\nexport interface DoExpression extends BaseNode {\n type: \"DoExpression\";\n body: BlockStatement;\n async: boolean;\n}\n\nexport interface ExportDefaultSpecifier extends BaseNode {\n type: \"ExportDefaultSpecifier\";\n exported: Identifier;\n}\n\nexport interface RecordExpression extends BaseNode {\n type: \"RecordExpression\";\n properties: (ObjectProperty | SpreadElement)[];\n}\n\nexport interface TupleExpression extends BaseNode {\n type: \"TupleExpression\";\n elements: (Expression | SpreadElement)[];\n}\n\nexport interface DecimalLiteral extends BaseNode {\n type: \"DecimalLiteral\";\n value: string;\n}\n\nexport interface ModuleExpression extends BaseNode {\n type: \"ModuleExpression\";\n body: Program;\n}\n\nexport interface TopicReference extends BaseNode {\n type: \"TopicReference\";\n}\n\nexport interface PipelineTopicExpression extends BaseNode {\n type: \"PipelineTopicExpression\";\n expression: Expression;\n}\n\nexport interface PipelineBareFunction extends BaseNode {\n type: \"PipelineBareFunction\";\n callee: Expression;\n}\n\nexport interface PipelinePrimaryTopicReference extends BaseNode {\n type: \"PipelinePrimaryTopicReference\";\n}\n\nexport interface VoidPattern extends BaseNode {\n type: \"VoidPattern\";\n}\n\nexport interface TSParameterProperty extends BaseNode {\n type: \"TSParameterProperty\";\n parameter: Identifier | AssignmentPattern;\n accessibility?: \"public\" | \"private\" | \"protected\" | null;\n decorators?: Decorator[] | null;\n override?: boolean | null;\n readonly?: boolean | null;\n}\n\nexport interface TSDeclareFunction extends BaseNode {\n type: \"TSDeclareFunction\";\n id?: Identifier | null;\n typeParameters?: TSTypeParameterDeclaration | Noop | null;\n params: FunctionParameter[];\n returnType?: TSTypeAnnotation | Noop | null;\n async?: boolean;\n declare?: boolean | null;\n generator?: boolean;\n}\n\nexport interface TSDeclareMethod extends BaseNode {\n type: \"TSDeclareMethod\";\n decorators?: Decorator[] | null;\n key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression;\n typeParameters?: TSTypeParameterDeclaration | Noop | null;\n params: (FunctionParameter | TSParameterProperty)[];\n returnType?: TSTypeAnnotation | Noop | null;\n abstract?: boolean | null;\n access?: \"public\" | \"private\" | \"protected\" | null;\n accessibility?: \"public\" | \"private\" | \"protected\" | null;\n async?: boolean;\n computed?: boolean;\n generator?: boolean;\n kind?: \"get\" | \"set\" | \"method\" | \"constructor\";\n optional?: boolean | null;\n override?: boolean;\n static?: boolean;\n}\n\nexport interface TSQualifiedName extends BaseNode {\n type: \"TSQualifiedName\";\n left: TSEntityName;\n right: Identifier;\n}\n\nexport interface TSCallSignatureDeclaration extends BaseNode {\n type: \"TSCallSignatureDeclaration\";\n typeParameters?: TSTypeParameterDeclaration | null;\n parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[];\n typeAnnotation?: TSTypeAnnotation | null;\n}\n\nexport interface TSConstructSignatureDeclaration extends BaseNode {\n type: \"TSConstructSignatureDeclaration\";\n typeParameters?: TSTypeParameterDeclaration | null;\n parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[];\n typeAnnotation?: TSTypeAnnotation | null;\n}\n\nexport interface TSPropertySignature extends BaseNode {\n type: \"TSPropertySignature\";\n key: Expression;\n typeAnnotation?: TSTypeAnnotation | null;\n computed?: boolean;\n kind?: \"get\" | \"set\" | null;\n optional?: boolean | null;\n readonly?: boolean | null;\n}\n\nexport interface TSMethodSignature extends BaseNode {\n type: \"TSMethodSignature\";\n key: Expression;\n typeParameters?: TSTypeParameterDeclaration | null;\n parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[];\n typeAnnotation?: TSTypeAnnotation | null;\n computed?: boolean;\n kind: \"method\" | \"get\" | \"set\";\n optional?: boolean | null;\n}\n\nexport interface TSIndexSignature extends BaseNode {\n type: \"TSIndexSignature\";\n parameters: Identifier[];\n typeAnnotation?: TSTypeAnnotation | null;\n readonly?: boolean | null;\n static?: boolean | null;\n}\n\nexport interface TSAnyKeyword extends BaseNode {\n type: \"TSAnyKeyword\";\n}\n\nexport interface TSBooleanKeyword extends BaseNode {\n type: \"TSBooleanKeyword\";\n}\n\nexport interface TSBigIntKeyword extends BaseNode {\n type: \"TSBigIntKeyword\";\n}\n\nexport interface TSIntrinsicKeyword extends BaseNode {\n type: \"TSIntrinsicKeyword\";\n}\n\nexport interface TSNeverKeyword extends BaseNode {\n type: \"TSNeverKeyword\";\n}\n\nexport interface TSNullKeyword extends BaseNode {\n type: \"TSNullKeyword\";\n}\n\nexport interface TSNumberKeyword extends BaseNode {\n type: \"TSNumberKeyword\";\n}\n\nexport interface TSObjectKeyword extends BaseNode {\n type: \"TSObjectKeyword\";\n}\n\nexport interface TSStringKeyword extends BaseNode {\n type: \"TSStringKeyword\";\n}\n\nexport interface TSSymbolKeyword extends BaseNode {\n type: \"TSSymbolKeyword\";\n}\n\nexport interface TSUndefinedKeyword extends BaseNode {\n type: \"TSUndefinedKeyword\";\n}\n\nexport interface TSUnknownKeyword extends BaseNode {\n type: \"TSUnknownKeyword\";\n}\n\nexport interface TSVoidKeyword extends BaseNode {\n type: \"TSVoidKeyword\";\n}\n\nexport interface TSThisType extends BaseNode {\n type: \"TSThisType\";\n}\n\nexport interface TSFunctionType extends BaseNode {\n type: \"TSFunctionType\";\n typeParameters?: TSTypeParameterDeclaration | null;\n parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[];\n typeAnnotation?: TSTypeAnnotation | null;\n}\n\nexport interface TSConstructorType extends BaseNode {\n type: \"TSConstructorType\";\n typeParameters?: TSTypeParameterDeclaration | null;\n parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[];\n typeAnnotation?: TSTypeAnnotation | null;\n abstract?: boolean | null;\n}\n\nexport interface TSTypeReference extends BaseNode {\n type: \"TSTypeReference\";\n typeName: TSEntityName;\n typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface TSTypePredicate extends BaseNode {\n type: \"TSTypePredicate\";\n parameterName: Identifier | TSThisType;\n typeAnnotation?: TSTypeAnnotation | null;\n asserts?: boolean | null;\n}\n\nexport interface TSTypeQuery extends BaseNode {\n type: \"TSTypeQuery\";\n exprName: TSEntityName | TSImportType;\n typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface TSTypeLiteral extends BaseNode {\n type: \"TSTypeLiteral\";\n members: TSTypeElement[];\n}\n\nexport interface TSArrayType extends BaseNode {\n type: \"TSArrayType\";\n elementType: TSType;\n}\n\nexport interface TSTupleType extends BaseNode {\n type: \"TSTupleType\";\n elementTypes: (TSType | TSNamedTupleMember)[];\n}\n\nexport interface TSOptionalType extends BaseNode {\n type: \"TSOptionalType\";\n typeAnnotation: TSType;\n}\n\nexport interface TSRestType extends BaseNode {\n type: \"TSRestType\";\n typeAnnotation: TSType;\n}\n\nexport interface TSNamedTupleMember extends BaseNode {\n type: \"TSNamedTupleMember\";\n label: Identifier;\n elementType: TSType;\n optional: boolean;\n}\n\nexport interface TSUnionType extends BaseNode {\n type: \"TSUnionType\";\n types: TSType[];\n}\n\nexport interface TSIntersectionType extends BaseNode {\n type: \"TSIntersectionType\";\n types: TSType[];\n}\n\nexport interface TSConditionalType extends BaseNode {\n type: \"TSConditionalType\";\n checkType: TSType;\n extendsType: TSType;\n trueType: TSType;\n falseType: TSType;\n}\n\nexport interface TSInferType extends BaseNode {\n type: \"TSInferType\";\n typeParameter: TSTypeParameter;\n}\n\nexport interface TSParenthesizedType extends BaseNode {\n type: \"TSParenthesizedType\";\n typeAnnotation: TSType;\n}\n\nexport interface TSTypeOperator extends BaseNode {\n type: \"TSTypeOperator\";\n typeAnnotation: TSType;\n operator: string;\n}\n\nexport interface TSIndexedAccessType extends BaseNode {\n type: \"TSIndexedAccessType\";\n objectType: TSType;\n indexType: TSType;\n}\n\nexport interface TSMappedType extends BaseNode {\n type: \"TSMappedType\";\n typeParameter: TSTypeParameter;\n typeAnnotation?: TSType | null;\n nameType?: TSType | null;\n optional?: true | false | \"+\" | \"-\" | null;\n readonly?: true | false | \"+\" | \"-\" | null;\n}\n\nexport interface TSTemplateLiteralType extends BaseNode {\n type: \"TSTemplateLiteralType\";\n quasis: TemplateElement[];\n types: TSType[];\n}\n\nexport interface TSLiteralType extends BaseNode {\n type: \"TSLiteralType\";\n literal:\n | NumericLiteral\n | StringLiteral\n | BooleanLiteral\n | BigIntLiteral\n | TemplateLiteral\n | UnaryExpression;\n}\n\nexport interface TSExpressionWithTypeArguments extends BaseNode {\n type: \"TSExpressionWithTypeArguments\";\n expression: TSEntityName;\n typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface TSInterfaceDeclaration extends BaseNode {\n type: \"TSInterfaceDeclaration\";\n id: Identifier;\n typeParameters?: TSTypeParameterDeclaration | null;\n extends?: TSExpressionWithTypeArguments[] | null;\n body: TSInterfaceBody;\n declare?: boolean | null;\n}\n\nexport interface TSInterfaceBody extends BaseNode {\n type: \"TSInterfaceBody\";\n body: TSTypeElement[];\n}\n\nexport interface TSTypeAliasDeclaration extends BaseNode {\n type: \"TSTypeAliasDeclaration\";\n id: Identifier;\n typeParameters?: TSTypeParameterDeclaration | null;\n typeAnnotation: TSType;\n declare?: boolean | null;\n}\n\nexport interface TSInstantiationExpression extends BaseNode {\n type: \"TSInstantiationExpression\";\n expression: Expression;\n typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface TSAsExpression extends BaseNode {\n type: \"TSAsExpression\";\n expression: Expression;\n typeAnnotation: TSType;\n}\n\nexport interface TSSatisfiesExpression extends BaseNode {\n type: \"TSSatisfiesExpression\";\n expression: Expression;\n typeAnnotation: TSType;\n}\n\nexport interface TSTypeAssertion extends BaseNode {\n type: \"TSTypeAssertion\";\n typeAnnotation: TSType;\n expression: Expression;\n}\n\nexport interface TSEnumBody extends BaseNode {\n type: \"TSEnumBody\";\n members: TSEnumMember[];\n}\n\nexport interface TSEnumDeclaration extends BaseNode {\n type: \"TSEnumDeclaration\";\n id: Identifier;\n members: TSEnumMember[];\n body?: TSEnumBody | null;\n const?: boolean | null;\n declare?: boolean | null;\n initializer?: Expression | null;\n}\n\nexport interface TSEnumMember extends BaseNode {\n type: \"TSEnumMember\";\n id: Identifier | StringLiteral;\n initializer?: Expression | null;\n}\n\nexport interface TSModuleDeclaration extends BaseNode {\n type: \"TSModuleDeclaration\";\n id: Identifier | StringLiteral;\n body: TSModuleBlock | TSModuleDeclaration;\n declare?: boolean | null;\n global?: boolean | null;\n kind: \"global\" | \"module\" | \"namespace\";\n}\n\nexport interface TSModuleBlock extends BaseNode {\n type: \"TSModuleBlock\";\n body: Statement[];\n}\n\nexport interface TSImportType extends BaseNode {\n type: \"TSImportType\";\n argument: StringLiteral;\n qualifier?: TSEntityName | null;\n typeParameters?: TSTypeParameterInstantiation | null;\n options?: ObjectExpression | null;\n}\n\nexport interface TSImportEqualsDeclaration extends BaseNode {\n type: \"TSImportEqualsDeclaration\";\n id: Identifier;\n moduleReference: TSEntityName | TSExternalModuleReference;\n importKind?: \"type\" | \"value\" | null;\n isExport: boolean;\n}\n\nexport interface TSExternalModuleReference extends BaseNode {\n type: \"TSExternalModuleReference\";\n expression: StringLiteral;\n}\n\nexport interface TSNonNullExpression extends BaseNode {\n type: \"TSNonNullExpression\";\n expression: Expression;\n}\n\nexport interface TSExportAssignment extends BaseNode {\n type: \"TSExportAssignment\";\n expression: Expression;\n}\n\nexport interface TSNamespaceExportDeclaration extends BaseNode {\n type: \"TSNamespaceExportDeclaration\";\n id: Identifier;\n}\n\nexport interface TSTypeAnnotation extends BaseNode {\n type: \"TSTypeAnnotation\";\n typeAnnotation: TSType;\n}\n\nexport interface TSTypeParameterInstantiation extends BaseNode {\n type: \"TSTypeParameterInstantiation\";\n params: TSType[];\n}\n\nexport interface TSTypeParameterDeclaration extends BaseNode {\n type: \"TSTypeParameterDeclaration\";\n params: TSTypeParameter[];\n}\n\nexport interface TSTypeParameter extends BaseNode {\n type: \"TSTypeParameter\";\n constraint?: TSType | null;\n default?: TSType | null;\n name: string;\n const?: boolean | null;\n in?: boolean | null;\n out?: boolean | null;\n}\n\nexport type Standardized =\n | ArrayExpression\n | AssignmentExpression\n | BinaryExpression\n | InterpreterDirective\n | Directive\n | DirectiveLiteral\n | BlockStatement\n | BreakStatement\n | CallExpression\n | CatchClause\n | ConditionalExpression\n | ContinueStatement\n | DebuggerStatement\n | DoWhileStatement\n | EmptyStatement\n | ExpressionStatement\n | File\n | ForInStatement\n | ForStatement\n | FunctionDeclaration\n | FunctionExpression\n | Identifier\n | IfStatement\n | LabeledStatement\n | StringLiteral\n | NumericLiteral\n | NullLiteral\n | BooleanLiteral\n | RegExpLiteral\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | Program\n | ObjectExpression\n | ObjectMethod\n | ObjectProperty\n | RestElement\n | ReturnStatement\n | SequenceExpression\n | ParenthesizedExpression\n | SwitchCase\n | SwitchStatement\n | ThisExpression\n | ThrowStatement\n | TryStatement\n | UnaryExpression\n | UpdateExpression\n | VariableDeclaration\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | AssignmentPattern\n | ArrayPattern\n | ArrowFunctionExpression\n | ClassBody\n | ClassExpression\n | ClassDeclaration\n | ExportAllDeclaration\n | ExportDefaultDeclaration\n | ExportNamedDeclaration\n | ExportSpecifier\n | ForOfStatement\n | ImportDeclaration\n | ImportDefaultSpecifier\n | ImportNamespaceSpecifier\n | ImportSpecifier\n | ImportExpression\n | MetaProperty\n | ClassMethod\n | ObjectPattern\n | SpreadElement\n | Super\n | TaggedTemplateExpression\n | TemplateElement\n | TemplateLiteral\n | YieldExpression\n | AwaitExpression\n | Import\n | BigIntLiteral\n | ExportNamespaceSpecifier\n | OptionalMemberExpression\n | OptionalCallExpression\n | ClassProperty\n | ClassAccessorProperty\n | ClassPrivateProperty\n | ClassPrivateMethod\n | PrivateName\n | StaticBlock\n | ImportAttribute;\nexport type Expression =\n | ArrayExpression\n | AssignmentExpression\n | BinaryExpression\n | CallExpression\n | ConditionalExpression\n | FunctionExpression\n | Identifier\n | StringLiteral\n | NumericLiteral\n | NullLiteral\n | BooleanLiteral\n | RegExpLiteral\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectExpression\n | SequenceExpression\n | ParenthesizedExpression\n | ThisExpression\n | UnaryExpression\n | UpdateExpression\n | ArrowFunctionExpression\n | ClassExpression\n | ImportExpression\n | MetaProperty\n | Super\n | TaggedTemplateExpression\n | TemplateLiteral\n | YieldExpression\n | AwaitExpression\n | Import\n | BigIntLiteral\n | OptionalMemberExpression\n | OptionalCallExpression\n | TypeCastExpression\n | JSXElement\n | JSXFragment\n | BindExpression\n | DoExpression\n | RecordExpression\n | TupleExpression\n | DecimalLiteral\n | ModuleExpression\n | TopicReference\n | PipelineTopicExpression\n | PipelineBareFunction\n | PipelinePrimaryTopicReference\n | TSInstantiationExpression\n | TSAsExpression\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TSNonNullExpression;\nexport type Binary = BinaryExpression | LogicalExpression;\nexport type Scopable =\n | BlockStatement\n | CatchClause\n | DoWhileStatement\n | ForInStatement\n | ForStatement\n | FunctionDeclaration\n | FunctionExpression\n | Program\n | ObjectMethod\n | SwitchStatement\n | WhileStatement\n | ArrowFunctionExpression\n | ClassExpression\n | ClassDeclaration\n | ForOfStatement\n | ClassMethod\n | ClassPrivateMethod\n | StaticBlock\n | TSModuleBlock;\nexport type BlockParent =\n | BlockStatement\n | CatchClause\n | DoWhileStatement\n | ForInStatement\n | ForStatement\n | FunctionDeclaration\n | FunctionExpression\n | Program\n | ObjectMethod\n | SwitchStatement\n | WhileStatement\n | ArrowFunctionExpression\n | ForOfStatement\n | ClassMethod\n | ClassPrivateMethod\n | StaticBlock\n | TSModuleBlock;\nexport type Block = BlockStatement | Program | TSModuleBlock;\nexport type Statement =\n | BlockStatement\n | BreakStatement\n | ContinueStatement\n | DebuggerStatement\n | DoWhileStatement\n | EmptyStatement\n | ExpressionStatement\n | ForInStatement\n | ForStatement\n | FunctionDeclaration\n | IfStatement\n | LabeledStatement\n | ReturnStatement\n | SwitchStatement\n | ThrowStatement\n | TryStatement\n | VariableDeclaration\n | WhileStatement\n | WithStatement\n | ClassDeclaration\n | ExportAllDeclaration\n | ExportDefaultDeclaration\n | ExportNamedDeclaration\n | ForOfStatement\n | ImportDeclaration\n | DeclareClass\n | DeclareFunction\n | DeclareInterface\n | DeclareModule\n | DeclareModuleExports\n | DeclareTypeAlias\n | DeclareOpaqueType\n | DeclareVariable\n | DeclareExportDeclaration\n | DeclareExportAllDeclaration\n | InterfaceDeclaration\n | OpaqueType\n | TypeAlias\n | EnumDeclaration\n | TSDeclareFunction\n | TSInterfaceDeclaration\n | TSTypeAliasDeclaration\n | TSEnumDeclaration\n | TSModuleDeclaration\n | TSImportEqualsDeclaration\n | TSExportAssignment\n | TSNamespaceExportDeclaration;\nexport type Terminatorless =\n | BreakStatement\n | ContinueStatement\n | ReturnStatement\n | ThrowStatement\n | YieldExpression\n | AwaitExpression;\nexport type CompletionStatement =\n | BreakStatement\n | ContinueStatement\n | ReturnStatement\n | ThrowStatement;\nexport type Conditional = ConditionalExpression | IfStatement;\nexport type Loop =\n | DoWhileStatement\n | ForInStatement\n | ForStatement\n | WhileStatement\n | ForOfStatement;\nexport type While = DoWhileStatement | WhileStatement;\nexport type ExpressionWrapper =\n | ExpressionStatement\n | ParenthesizedExpression\n | TypeCastExpression;\nexport type For = ForInStatement | ForStatement | ForOfStatement;\nexport type ForXStatement = ForInStatement | ForOfStatement;\nexport type Function =\n | FunctionDeclaration\n | FunctionExpression\n | ObjectMethod\n | ArrowFunctionExpression\n | ClassMethod\n | ClassPrivateMethod;\nexport type FunctionParent =\n | FunctionDeclaration\n | FunctionExpression\n | ObjectMethod\n | ArrowFunctionExpression\n | ClassMethod\n | ClassPrivateMethod\n | StaticBlock\n | TSModuleBlock;\nexport type Pureish =\n | FunctionDeclaration\n | FunctionExpression\n | StringLiteral\n | NumericLiteral\n | NullLiteral\n | BooleanLiteral\n | RegExpLiteral\n | ArrowFunctionExpression\n | BigIntLiteral\n | DecimalLiteral;\nexport type Declaration =\n | FunctionDeclaration\n | VariableDeclaration\n | ClassDeclaration\n | ExportAllDeclaration\n | ExportDefaultDeclaration\n | ExportNamedDeclaration\n | ImportDeclaration\n | DeclareClass\n | DeclareFunction\n | DeclareInterface\n | DeclareModule\n | DeclareModuleExports\n | DeclareTypeAlias\n | DeclareOpaqueType\n | DeclareVariable\n | DeclareExportDeclaration\n | DeclareExportAllDeclaration\n | InterfaceDeclaration\n | OpaqueType\n | TypeAlias\n | EnumDeclaration\n | TSDeclareFunction\n | TSInterfaceDeclaration\n | TSTypeAliasDeclaration\n | TSEnumDeclaration\n | TSModuleDeclaration\n | TSImportEqualsDeclaration;\nexport type FunctionParameter =\n | Identifier\n | RestElement\n | AssignmentPattern\n | ArrayPattern\n | ObjectPattern\n | VoidPattern;\nexport type PatternLike =\n | Identifier\n | MemberExpression\n | RestElement\n | AssignmentPattern\n | ArrayPattern\n | ObjectPattern\n | VoidPattern\n | TSAsExpression\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TSNonNullExpression;\nexport type LVal =\n | Identifier\n | MemberExpression\n | RestElement\n | AssignmentPattern\n | ArrayPattern\n | ObjectPattern\n | TSParameterProperty\n | TSAsExpression\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TSNonNullExpression;\nexport type TSEntityName = Identifier | TSQualifiedName;\nexport type Literal =\n | StringLiteral\n | NumericLiteral\n | NullLiteral\n | BooleanLiteral\n | RegExpLiteral\n | TemplateLiteral\n | BigIntLiteral\n | DecimalLiteral;\nexport type Immutable =\n | StringLiteral\n | NumericLiteral\n | NullLiteral\n | BooleanLiteral\n | BigIntLiteral\n | JSXAttribute\n | JSXClosingElement\n | JSXElement\n | JSXExpressionContainer\n | JSXSpreadChild\n | JSXOpeningElement\n | JSXText\n | JSXFragment\n | JSXOpeningFragment\n | JSXClosingFragment\n | DecimalLiteral;\nexport type UserWhitespacable =\n | ObjectMethod\n | ObjectProperty\n | ObjectTypeInternalSlot\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty;\nexport type Method = ObjectMethod | ClassMethod | ClassPrivateMethod;\nexport type ObjectMember = ObjectMethod | ObjectProperty;\nexport type Property =\n | ObjectProperty\n | ClassProperty\n | ClassAccessorProperty\n | ClassPrivateProperty;\nexport type UnaryLike = UnaryExpression | SpreadElement;\nexport type Pattern =\n | AssignmentPattern\n | ArrayPattern\n | ObjectPattern\n | VoidPattern;\nexport type Class = ClassExpression | ClassDeclaration;\nexport type ImportOrExportDeclaration =\n | ExportAllDeclaration\n | ExportDefaultDeclaration\n | ExportNamedDeclaration\n | ImportDeclaration;\nexport type ExportDeclaration =\n | ExportAllDeclaration\n | ExportDefaultDeclaration\n | ExportNamedDeclaration;\nexport type ModuleSpecifier =\n | ExportSpecifier\n | ImportDefaultSpecifier\n | ImportNamespaceSpecifier\n | ImportSpecifier\n | ExportNamespaceSpecifier\n | ExportDefaultSpecifier;\nexport type Accessor = ClassAccessorProperty;\nexport type Private = ClassPrivateProperty | ClassPrivateMethod | PrivateName;\nexport type Flow =\n | AnyTypeAnnotation\n | ArrayTypeAnnotation\n | BooleanTypeAnnotation\n | BooleanLiteralTypeAnnotation\n | NullLiteralTypeAnnotation\n | ClassImplements\n | DeclareClass\n | DeclareFunction\n | DeclareInterface\n | DeclareModule\n | DeclareModuleExports\n | DeclareTypeAlias\n | DeclareOpaqueType\n | DeclareVariable\n | DeclareExportDeclaration\n | DeclareExportAllDeclaration\n | DeclaredPredicate\n | ExistsTypeAnnotation\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | GenericTypeAnnotation\n | InferredPredicate\n | InterfaceExtends\n | InterfaceDeclaration\n | InterfaceTypeAnnotation\n | IntersectionTypeAnnotation\n | MixedTypeAnnotation\n | EmptyTypeAnnotation\n | NullableTypeAnnotation\n | NumberLiteralTypeAnnotation\n | NumberTypeAnnotation\n | ObjectTypeAnnotation\n | ObjectTypeInternalSlot\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | QualifiedTypeIdentifier\n | StringLiteralTypeAnnotation\n | StringTypeAnnotation\n | SymbolTypeAnnotation\n | ThisTypeAnnotation\n | TupleTypeAnnotation\n | TypeofTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeCastExpression\n | TypeParameter\n | TypeParameterDeclaration\n | TypeParameterInstantiation\n | UnionTypeAnnotation\n | Variance\n | VoidTypeAnnotation\n | EnumDeclaration\n | EnumBooleanBody\n | EnumNumberBody\n | EnumStringBody\n | EnumSymbolBody\n | EnumBooleanMember\n | EnumNumberMember\n | EnumStringMember\n | EnumDefaultedMember\n | IndexedAccessType\n | OptionalIndexedAccessType;\nexport type FlowType =\n | AnyTypeAnnotation\n | ArrayTypeAnnotation\n | BooleanTypeAnnotation\n | BooleanLiteralTypeAnnotation\n | NullLiteralTypeAnnotation\n | ExistsTypeAnnotation\n | FunctionTypeAnnotation\n | GenericTypeAnnotation\n | InterfaceTypeAnnotation\n | IntersectionTypeAnnotation\n | MixedTypeAnnotation\n | EmptyTypeAnnotation\n | NullableTypeAnnotation\n | NumberLiteralTypeAnnotation\n | NumberTypeAnnotation\n | ObjectTypeAnnotation\n | StringLiteralTypeAnnotation\n | StringTypeAnnotation\n | SymbolTypeAnnotation\n | ThisTypeAnnotation\n | TupleTypeAnnotation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation\n | VoidTypeAnnotation\n | IndexedAccessType\n | OptionalIndexedAccessType;\nexport type FlowBaseAnnotation =\n | AnyTypeAnnotation\n | BooleanTypeAnnotation\n | NullLiteralTypeAnnotation\n | MixedTypeAnnotation\n | EmptyTypeAnnotation\n | NumberTypeAnnotation\n | StringTypeAnnotation\n | SymbolTypeAnnotation\n | ThisTypeAnnotation\n | VoidTypeAnnotation;\nexport type FlowDeclaration =\n | DeclareClass\n | DeclareFunction\n | DeclareInterface\n | DeclareModule\n | DeclareModuleExports\n | DeclareTypeAlias\n | DeclareOpaqueType\n | DeclareVariable\n | DeclareExportDeclaration\n | DeclareExportAllDeclaration\n | InterfaceDeclaration\n | OpaqueType\n | TypeAlias;\nexport type FlowPredicate = DeclaredPredicate | InferredPredicate;\nexport type EnumBody =\n | EnumBooleanBody\n | EnumNumberBody\n | EnumStringBody\n | EnumSymbolBody;\nexport type EnumMember =\n | EnumBooleanMember\n | EnumNumberMember\n | EnumStringMember\n | EnumDefaultedMember;\nexport type JSX =\n | JSXAttribute\n | JSXClosingElement\n | JSXElement\n | JSXEmptyExpression\n | JSXExpressionContainer\n | JSXSpreadChild\n | JSXIdentifier\n | JSXMemberExpression\n | JSXNamespacedName\n | JSXOpeningElement\n | JSXSpreadAttribute\n | JSXText\n | JSXFragment\n | JSXOpeningFragment\n | JSXClosingFragment;\nexport type Miscellaneous = Noop | Placeholder | V8IntrinsicIdentifier;\nexport type TypeScript =\n | TSParameterProperty\n | TSDeclareFunction\n | TSDeclareMethod\n | TSQualifiedName\n | TSCallSignatureDeclaration\n | TSConstructSignatureDeclaration\n | TSPropertySignature\n | TSMethodSignature\n | TSIndexSignature\n | TSAnyKeyword\n | TSBooleanKeyword\n | TSBigIntKeyword\n | TSIntrinsicKeyword\n | TSNeverKeyword\n | TSNullKeyword\n | TSNumberKeyword\n | TSObjectKeyword\n | TSStringKeyword\n | TSSymbolKeyword\n | TSUndefinedKeyword\n | TSUnknownKeyword\n | TSVoidKeyword\n | TSThisType\n | TSFunctionType\n | TSConstructorType\n | TSTypeReference\n | TSTypePredicate\n | TSTypeQuery\n | TSTypeLiteral\n | TSArrayType\n | TSTupleType\n | TSOptionalType\n | TSRestType\n | TSNamedTupleMember\n | TSUnionType\n | TSIntersectionType\n | TSConditionalType\n | TSInferType\n | TSParenthesizedType\n | TSTypeOperator\n | TSIndexedAccessType\n | TSMappedType\n | TSTemplateLiteralType\n | TSLiteralType\n | TSExpressionWithTypeArguments\n | TSInterfaceDeclaration\n | TSInterfaceBody\n | TSTypeAliasDeclaration\n | TSInstantiationExpression\n | TSAsExpression\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TSEnumBody\n | TSEnumDeclaration\n | TSEnumMember\n | TSModuleDeclaration\n | TSModuleBlock\n | TSImportType\n | TSImportEqualsDeclaration\n | TSExternalModuleReference\n | TSNonNullExpression\n | TSExportAssignment\n | TSNamespaceExportDeclaration\n | TSTypeAnnotation\n | TSTypeParameterInstantiation\n | TSTypeParameterDeclaration\n | TSTypeParameter;\nexport type TSTypeElement =\n | TSCallSignatureDeclaration\n | TSConstructSignatureDeclaration\n | TSPropertySignature\n | TSMethodSignature\n | TSIndexSignature;\nexport type TSType =\n | TSAnyKeyword\n | TSBooleanKeyword\n | TSBigIntKeyword\n | TSIntrinsicKeyword\n | TSNeverKeyword\n | TSNullKeyword\n | TSNumberKeyword\n | TSObjectKeyword\n | TSStringKeyword\n | TSSymbolKeyword\n | TSUndefinedKeyword\n | TSUnknownKeyword\n | TSVoidKeyword\n | TSThisType\n | TSFunctionType\n | TSConstructorType\n | TSTypeReference\n | TSTypePredicate\n | TSTypeQuery\n | TSTypeLiteral\n | TSArrayType\n | TSTupleType\n | TSOptionalType\n | TSRestType\n | TSUnionType\n | TSIntersectionType\n | TSConditionalType\n | TSInferType\n | TSParenthesizedType\n | TSTypeOperator\n | TSIndexedAccessType\n | TSMappedType\n | TSTemplateLiteralType\n | TSLiteralType\n | TSExpressionWithTypeArguments\n | TSImportType;\nexport type TSBaseType =\n | TSAnyKeyword\n | TSBooleanKeyword\n | TSBigIntKeyword\n | TSIntrinsicKeyword\n | TSNeverKeyword\n | TSNullKeyword\n | TSNumberKeyword\n | TSObjectKeyword\n | TSStringKeyword\n | TSSymbolKeyword\n | TSUndefinedKeyword\n | TSUnknownKeyword\n | TSVoidKeyword\n | TSThisType\n | TSTemplateLiteralType\n | TSLiteralType;\nexport type ModuleDeclaration =\n | ExportAllDeclaration\n | ExportDefaultDeclaration\n | ExportNamedDeclaration\n | ImportDeclaration;\n\nexport interface Aliases {\n Standardized: Standardized;\n Expression: Expression;\n Binary: Binary;\n Scopable: Scopable;\n BlockParent: BlockParent;\n Block: Block;\n Statement: Statement;\n Terminatorless: Terminatorless;\n CompletionStatement: CompletionStatement;\n Conditional: Conditional;\n Loop: Loop;\n While: While;\n ExpressionWrapper: ExpressionWrapper;\n For: For;\n ForXStatement: ForXStatement;\n Function: Function;\n FunctionParent: FunctionParent;\n Pureish: Pureish;\n Declaration: Declaration;\n FunctionParameter: FunctionParameter;\n PatternLike: PatternLike;\n LVal: LVal;\n TSEntityName: TSEntityName;\n Literal: Literal;\n Immutable: Immutable;\n UserWhitespacable: UserWhitespacable;\n Method: Method;\n ObjectMember: ObjectMember;\n Property: Property;\n UnaryLike: UnaryLike;\n Pattern: Pattern;\n Class: Class;\n ImportOrExportDeclaration: ImportOrExportDeclaration;\n ExportDeclaration: ExportDeclaration;\n ModuleSpecifier: ModuleSpecifier;\n Accessor: Accessor;\n Private: Private;\n Flow: Flow;\n FlowType: FlowType;\n FlowBaseAnnotation: FlowBaseAnnotation;\n FlowDeclaration: FlowDeclaration;\n FlowPredicate: FlowPredicate;\n EnumBody: EnumBody;\n EnumMember: EnumMember;\n JSX: JSX;\n Miscellaneous: Miscellaneous;\n TypeScript: TypeScript;\n TSTypeElement: TSTypeElement;\n TSType: TSType;\n TSBaseType: TSBaseType;\n ModuleDeclaration: ModuleDeclaration;\n}\n\nexport type DeprecatedAliases =\n | NumberLiteral\n | RegexLiteral\n | RestProperty\n | SpreadProperty;\n\nexport interface ParentMaps {\n AnyTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n ArgumentPlaceholder: CallExpression | NewExpression | OptionalCallExpression;\n ArrayExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n ArrayPattern:\n | ArrayPattern\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | CatchClause\n | ClassMethod\n | ClassPrivateMethod\n | ForInStatement\n | ForOfStatement\n | FunctionDeclaration\n | FunctionExpression\n | ObjectMethod\n | ObjectProperty\n | RestElement\n | TSCallSignatureDeclaration\n | TSConstructSignatureDeclaration\n | TSConstructorType\n | TSDeclareFunction\n | TSDeclareMethod\n | TSFunctionType\n | TSMethodSignature\n | VariableDeclarator;\n ArrayTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n ArrowFunctionExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n AssignmentExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n AssignmentPattern:\n | ArrayPattern\n | ArrowFunctionExpression\n | AssignmentExpression\n | ClassMethod\n | ClassPrivateMethod\n | ForInStatement\n | ForOfStatement\n | FunctionDeclaration\n | FunctionExpression\n | ObjectMethod\n | ObjectProperty\n | RestElement\n | TSDeclareFunction\n | TSDeclareMethod\n | TSParameterProperty\n | VariableDeclarator;\n AwaitExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n BigIntLiteral:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSLiteralType\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n BinaryExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n BindExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n BlockStatement:\n | ArrowFunctionExpression\n | BlockStatement\n | CatchClause\n | ClassMethod\n | ClassPrivateMethod\n | DeclareModule\n | DoExpression\n | DoWhileStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | FunctionDeclaration\n | FunctionExpression\n | IfStatement\n | LabeledStatement\n | ObjectMethod\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | TryStatement\n | WhileStatement\n | WithStatement;\n BooleanLiteral:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | EnumBooleanMember\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSLiteralType\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n BooleanLiteralTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n BooleanTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n BreakStatement:\n | BlockStatement\n | DoWhileStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n CallExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n CatchClause: TryStatement;\n ClassAccessorProperty: ClassBody;\n ClassBody: ClassDeclaration | ClassExpression;\n ClassDeclaration:\n | BlockStatement\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n ClassExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n ClassImplements:\n | ClassDeclaration\n | ClassExpression\n | DeclareClass\n | DeclareExportDeclaration\n | DeclaredPredicate;\n ClassMethod: ClassBody;\n ClassPrivateMethod: ClassBody;\n ClassPrivateProperty: ClassBody;\n ClassProperty: ClassBody;\n CommentBlock: File;\n CommentLine: File;\n ConditionalExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n ContinueStatement:\n | BlockStatement\n | DoWhileStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n DebuggerStatement:\n | BlockStatement\n | DoWhileStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n DecimalLiteral:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n DeclareClass:\n | BlockStatement\n | DeclareExportDeclaration\n | DeclaredPredicate\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n DeclareExportAllDeclaration:\n | BlockStatement\n | DeclareExportDeclaration\n | DeclaredPredicate\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n DeclareExportDeclaration:\n | BlockStatement\n | DeclareExportDeclaration\n | DeclaredPredicate\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n DeclareFunction:\n | BlockStatement\n | DeclareExportDeclaration\n | DeclaredPredicate\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n DeclareInterface:\n | BlockStatement\n | DeclareExportDeclaration\n | DeclaredPredicate\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n DeclareModule:\n | BlockStatement\n | DeclareExportDeclaration\n | DeclaredPredicate\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n DeclareModuleExports:\n | BlockStatement\n | DeclareExportDeclaration\n | DeclaredPredicate\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n DeclareOpaqueType:\n | BlockStatement\n | DeclareExportDeclaration\n | DeclaredPredicate\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n DeclareTypeAlias:\n | BlockStatement\n | DeclareExportDeclaration\n | DeclaredPredicate\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n DeclareVariable:\n | BlockStatement\n | DeclareExportDeclaration\n | DeclaredPredicate\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n DeclaredPredicate:\n | ArrowFunctionExpression\n | DeclareExportDeclaration\n | DeclareFunction\n | DeclaredPredicate\n | FunctionDeclaration\n | FunctionExpression;\n Decorator:\n | ArrayPattern\n | AssignmentPattern\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateMethod\n | ClassPrivateProperty\n | ClassProperty\n | Identifier\n | ObjectMethod\n | ObjectPattern\n | ObjectProperty\n | Placeholder\n | RestElement\n | TSDeclareMethod\n | TSParameterProperty;\n Directive: BlockStatement | Program;\n DirectiveLiteral: Directive;\n DoExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n DoWhileStatement:\n | BlockStatement\n | DoWhileStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n EmptyStatement:\n | BlockStatement\n | DoWhileStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n EmptyTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n EnumBooleanBody:\n | DeclareExportDeclaration\n | DeclaredPredicate\n | EnumDeclaration;\n EnumBooleanMember:\n | DeclareExportDeclaration\n | DeclaredPredicate\n | EnumBooleanBody;\n EnumDeclaration:\n | BlockStatement\n | DeclareExportDeclaration\n | DeclaredPredicate\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n EnumDefaultedMember:\n | DeclareExportDeclaration\n | DeclaredPredicate\n | EnumStringBody\n | EnumSymbolBody;\n EnumNumberBody:\n | DeclareExportDeclaration\n | DeclaredPredicate\n | EnumDeclaration;\n EnumNumberMember:\n | DeclareExportDeclaration\n | DeclaredPredicate\n | EnumNumberBody;\n EnumStringBody:\n | DeclareExportDeclaration\n | DeclaredPredicate\n | EnumDeclaration;\n EnumStringMember:\n | DeclareExportDeclaration\n | DeclaredPredicate\n | EnumStringBody;\n EnumSymbolBody:\n | DeclareExportDeclaration\n | DeclaredPredicate\n | EnumDeclaration;\n ExistsTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n ExportAllDeclaration:\n | BlockStatement\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n ExportDefaultDeclaration:\n | BlockStatement\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n ExportDefaultSpecifier: ExportNamedDeclaration;\n ExportNamedDeclaration:\n | BlockStatement\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n ExportNamespaceSpecifier: DeclareExportDeclaration | ExportNamedDeclaration;\n ExportSpecifier: DeclareExportDeclaration | ExportNamedDeclaration;\n ExpressionStatement:\n | BlockStatement\n | DoWhileStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n File: null;\n ForInStatement:\n | BlockStatement\n | DoWhileStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n ForOfStatement:\n | BlockStatement\n | DoWhileStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n ForStatement:\n | BlockStatement\n | DoWhileStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n FunctionDeclaration:\n | BlockStatement\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n FunctionExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n FunctionTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n FunctionTypeParam:\n | DeclareExportDeclaration\n | DeclaredPredicate\n | FunctionTypeAnnotation;\n GenericTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n Identifier:\n | ArrayExpression\n | ArrayPattern\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | BreakStatement\n | CallExpression\n | CatchClause\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassImplements\n | ClassMethod\n | ClassPrivateMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | ContinueStatement\n | DeclareClass\n | DeclareFunction\n | DeclareInterface\n | DeclareModule\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclareVariable\n | Decorator\n | DoWhileStatement\n | EnumBooleanMember\n | EnumDeclaration\n | EnumDefaultedMember\n | EnumNumberMember\n | EnumStringMember\n | ExportDefaultDeclaration\n | ExportDefaultSpecifier\n | ExportNamespaceSpecifier\n | ExportSpecifier\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | FunctionDeclaration\n | FunctionExpression\n | FunctionTypeParam\n | GenericTypeAnnotation\n | IfStatement\n | ImportAttribute\n | ImportDefaultSpecifier\n | ImportExpression\n | ImportNamespaceSpecifier\n | ImportSpecifier\n | InterfaceDeclaration\n | InterfaceExtends\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LabeledStatement\n | LogicalExpression\n | MemberExpression\n | MetaProperty\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | OpaqueType\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | Placeholder\n | PrivateName\n | QualifiedTypeIdentifier\n | RestElement\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSCallSignatureDeclaration\n | TSConstructSignatureDeclaration\n | TSConstructorType\n | TSDeclareFunction\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSExpressionWithTypeArguments\n | TSFunctionType\n | TSImportEqualsDeclaration\n | TSImportType\n | TSIndexSignature\n | TSInstantiationExpression\n | TSInterfaceDeclaration\n | TSMethodSignature\n | TSModuleDeclaration\n | TSNamedTupleMember\n | TSNamespaceExportDeclaration\n | TSNonNullExpression\n | TSParameterProperty\n | TSPropertySignature\n | TSQualifiedName\n | TSSatisfiesExpression\n | TSTypeAliasDeclaration\n | TSTypeAssertion\n | TSTypePredicate\n | TSTypeQuery\n | TSTypeReference\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeAlias\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n IfStatement:\n | BlockStatement\n | DoWhileStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n Import:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n ImportAttribute:\n | DeclareExportAllDeclaration\n | DeclareExportDeclaration\n | ExportAllDeclaration\n | ExportNamedDeclaration\n | ImportDeclaration;\n ImportDeclaration:\n | BlockStatement\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n ImportDefaultSpecifier: ImportDeclaration;\n ImportExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n ImportNamespaceSpecifier: ImportDeclaration;\n ImportSpecifier: ImportDeclaration;\n IndexedAccessType:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n InferredPredicate:\n | ArrowFunctionExpression\n | DeclareExportDeclaration\n | DeclaredPredicate\n | FunctionDeclaration\n | FunctionExpression;\n InterfaceDeclaration:\n | BlockStatement\n | DeclareExportDeclaration\n | DeclaredPredicate\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n InterfaceExtends:\n | ClassDeclaration\n | ClassExpression\n | DeclareClass\n | DeclareExportDeclaration\n | DeclareInterface\n | DeclaredPredicate\n | InterfaceDeclaration\n | InterfaceTypeAnnotation;\n InterfaceTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n InterpreterDirective: Program;\n IntersectionTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n JSXAttribute: JSXOpeningElement;\n JSXClosingElement: JSXElement;\n JSXClosingFragment: JSXFragment;\n JSXElement:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXAttribute\n | JSXElement\n | JSXExpressionContainer\n | JSXFragment\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n JSXEmptyExpression: JSXExpressionContainer;\n JSXExpressionContainer: JSXAttribute | JSXElement | JSXFragment;\n JSXFragment:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXAttribute\n | JSXElement\n | JSXExpressionContainer\n | JSXFragment\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n JSXIdentifier:\n | JSXAttribute\n | JSXClosingElement\n | JSXMemberExpression\n | JSXNamespacedName\n | JSXOpeningElement;\n JSXMemberExpression:\n | JSXClosingElement\n | JSXMemberExpression\n | JSXOpeningElement;\n JSXNamespacedName: JSXAttribute | JSXClosingElement | JSXOpeningElement;\n JSXOpeningElement: JSXElement;\n JSXOpeningFragment: JSXFragment;\n JSXSpreadAttribute: JSXOpeningElement;\n JSXSpreadChild: JSXElement | JSXFragment;\n JSXText: JSXElement | JSXFragment;\n LabeledStatement:\n | BlockStatement\n | DoWhileStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n LogicalExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n MemberExpression:\n | ArrayExpression\n | ArrayPattern\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | RestElement\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n MetaProperty:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n MixedTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n ModuleExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n NewExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n Noop:\n | ArrayPattern\n | ArrowFunctionExpression\n | AssignmentPattern\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateMethod\n | ClassPrivateProperty\n | ClassProperty\n | FunctionDeclaration\n | FunctionExpression\n | Identifier\n | ObjectMethod\n | ObjectPattern\n | Placeholder\n | RestElement\n | TSDeclareFunction\n | TSDeclareMethod;\n NullLiteral:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n NullLiteralTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n NullableTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n NumberLiteral: null;\n NumberLiteralTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n NumberTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n NumericLiteral:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | EnumNumberMember\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSLiteralType\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n ObjectExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSImportType\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n ObjectMethod: ObjectExpression;\n ObjectPattern:\n | ArrayPattern\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | CatchClause\n | ClassMethod\n | ClassPrivateMethod\n | ForInStatement\n | ForOfStatement\n | FunctionDeclaration\n | FunctionExpression\n | ObjectMethod\n | ObjectProperty\n | RestElement\n | TSCallSignatureDeclaration\n | TSConstructSignatureDeclaration\n | TSConstructorType\n | TSDeclareFunction\n | TSDeclareMethod\n | TSFunctionType\n | TSMethodSignature\n | VariableDeclarator;\n ObjectProperty: ObjectExpression | ObjectPattern | RecordExpression;\n ObjectTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareClass\n | DeclareExportDeclaration\n | DeclareInterface\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | InterfaceDeclaration\n | InterfaceTypeAnnotation\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n ObjectTypeCallProperty:\n | DeclareExportDeclaration\n | DeclaredPredicate\n | ObjectTypeAnnotation;\n ObjectTypeIndexer:\n | DeclareExportDeclaration\n | DeclaredPredicate\n | ObjectTypeAnnotation;\n ObjectTypeInternalSlot:\n | DeclareExportDeclaration\n | DeclaredPredicate\n | ObjectTypeAnnotation;\n ObjectTypeProperty:\n | DeclareExportDeclaration\n | DeclaredPredicate\n | ObjectTypeAnnotation;\n ObjectTypeSpreadProperty:\n | DeclareExportDeclaration\n | DeclaredPredicate\n | ObjectTypeAnnotation;\n OpaqueType:\n | BlockStatement\n | DeclareExportDeclaration\n | DeclaredPredicate\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n OptionalCallExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n OptionalIndexedAccessType:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n OptionalMemberExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n ParenthesizedExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n PipelineBareFunction:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n PipelinePrimaryTopicReference:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n PipelineTopicExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n Placeholder: Node;\n PrivateName:\n | BinaryExpression\n | ClassAccessorProperty\n | ClassPrivateMethod\n | ClassPrivateProperty\n | MemberExpression\n | ObjectProperty;\n Program: File | ModuleExpression;\n QualifiedTypeIdentifier:\n | DeclareExportDeclaration\n | DeclaredPredicate\n | GenericTypeAnnotation\n | InterfaceExtends\n | QualifiedTypeIdentifier;\n RecordExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n RegExpLiteral:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n RegexLiteral: null;\n RestElement:\n | ArrayPattern\n | ArrowFunctionExpression\n | AssignmentExpression\n | ClassMethod\n | ClassPrivateMethod\n | ForInStatement\n | ForOfStatement\n | FunctionDeclaration\n | FunctionExpression\n | ObjectMethod\n | ObjectPattern\n | ObjectProperty\n | RestElement\n | TSCallSignatureDeclaration\n | TSConstructSignatureDeclaration\n | TSConstructorType\n | TSDeclareFunction\n | TSDeclareMethod\n | TSFunctionType\n | TSMethodSignature\n | VariableDeclarator;\n RestProperty: null;\n ReturnStatement:\n | BlockStatement\n | DoWhileStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n SequenceExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n SpreadElement:\n | ArrayExpression\n | CallExpression\n | NewExpression\n | ObjectExpression\n | OptionalCallExpression\n | RecordExpression\n | TupleExpression;\n SpreadProperty: null;\n StaticBlock: ClassBody;\n StringLiteral:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | DeclareExportAllDeclaration\n | DeclareExportDeclaration\n | DeclareModule\n | Decorator\n | DoWhileStatement\n | EnumStringMember\n | ExportAllDeclaration\n | ExportDefaultDeclaration\n | ExportNamedDeclaration\n | ExportSpecifier\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportAttribute\n | ImportDeclaration\n | ImportExpression\n | ImportSpecifier\n | JSXAttribute\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | ObjectTypeProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSExternalModuleReference\n | TSImportType\n | TSInstantiationExpression\n | TSLiteralType\n | TSMethodSignature\n | TSModuleDeclaration\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n StringLiteralTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n StringTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n Super:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n SwitchCase: SwitchStatement;\n SwitchStatement:\n | BlockStatement\n | DoWhileStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n SymbolTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n TSAnyKeyword:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSArrayType:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSAsExpression:\n | ArrayExpression\n | ArrayPattern\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | RestElement\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n TSBigIntKeyword:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSBooleanKeyword:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSCallSignatureDeclaration: TSInterfaceBody | TSTypeLiteral;\n TSConditionalType:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSConstructSignatureDeclaration: TSInterfaceBody | TSTypeLiteral;\n TSConstructorType:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSDeclareFunction:\n | BlockStatement\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n TSDeclareMethod: ClassBody;\n TSEnumBody: TSEnumDeclaration;\n TSEnumDeclaration:\n | BlockStatement\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n TSEnumMember: TSEnumBody | TSEnumDeclaration;\n TSExportAssignment:\n | BlockStatement\n | DoWhileStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n TSExpressionWithTypeArguments:\n | ClassDeclaration\n | ClassExpression\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSInterfaceDeclaration\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSExternalModuleReference: TSImportEqualsDeclaration;\n TSFunctionType:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSImportEqualsDeclaration:\n | BlockStatement\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n TSImportType:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSTypeQuery\n | TSUnionType\n | TemplateLiteral;\n TSIndexSignature: ClassBody | TSInterfaceBody | TSTypeLiteral;\n TSIndexedAccessType:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSInferType:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSInstantiationExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n TSInterfaceBody: TSInterfaceDeclaration;\n TSInterfaceDeclaration:\n | BlockStatement\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n TSIntersectionType:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSIntrinsicKeyword:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSLiteralType:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSMappedType:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSMethodSignature: TSInterfaceBody | TSTypeLiteral;\n TSModuleBlock: TSModuleDeclaration;\n TSModuleDeclaration:\n | BlockStatement\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | TSModuleDeclaration\n | WhileStatement\n | WithStatement;\n TSNamedTupleMember: TSTupleType;\n TSNamespaceExportDeclaration:\n | BlockStatement\n | DoWhileStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n TSNeverKeyword:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSNonNullExpression:\n | ArrayExpression\n | ArrayPattern\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | RestElement\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n TSNullKeyword:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSNumberKeyword:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSObjectKeyword:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSOptionalType:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSParameterProperty:\n | AssignmentExpression\n | ClassMethod\n | ClassPrivateMethod\n | ForInStatement\n | ForOfStatement\n | TSDeclareMethod\n | VariableDeclarator;\n TSParenthesizedType:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSPropertySignature: TSInterfaceBody | TSTypeLiteral;\n TSQualifiedName:\n | TSExpressionWithTypeArguments\n | TSImportEqualsDeclaration\n | TSImportType\n | TSQualifiedName\n | TSTypeQuery\n | TSTypeReference;\n TSRestType:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSSatisfiesExpression:\n | ArrayExpression\n | ArrayPattern\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | RestElement\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n TSStringKeyword:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSSymbolKeyword:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSTemplateLiteralType:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSThisType:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSTypePredicate\n | TSUnionType\n | TemplateLiteral;\n TSTupleType:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSTypeAliasDeclaration:\n | BlockStatement\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n TSTypeAnnotation:\n | ArrayPattern\n | ArrowFunctionExpression\n | AssignmentPattern\n | ClassAccessorProperty\n | ClassMethod\n | ClassPrivateMethod\n | ClassPrivateProperty\n | ClassProperty\n | FunctionDeclaration\n | FunctionExpression\n | Identifier\n | ObjectMethod\n | ObjectPattern\n | Placeholder\n | RestElement\n | TSCallSignatureDeclaration\n | TSConstructSignatureDeclaration\n | TSConstructorType\n | TSDeclareFunction\n | TSDeclareMethod\n | TSFunctionType\n | TSIndexSignature\n | TSMethodSignature\n | TSPropertySignature\n | TSTypePredicate;\n TSTypeAssertion:\n | ArrayExpression\n | ArrayPattern\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | RestElement\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n TSTypeLiteral:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSTypeOperator:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSTypeParameter: TSInferType | TSMappedType | TSTypeParameterDeclaration;\n TSTypeParameterDeclaration:\n | ArrowFunctionExpression\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateMethod\n | FunctionDeclaration\n | FunctionExpression\n | ObjectMethod\n | TSCallSignatureDeclaration\n | TSConstructSignatureDeclaration\n | TSConstructorType\n | TSDeclareFunction\n | TSDeclareMethod\n | TSFunctionType\n | TSInterfaceDeclaration\n | TSMethodSignature\n | TSTypeAliasDeclaration;\n TSTypeParameterInstantiation:\n | CallExpression\n | ClassDeclaration\n | ClassExpression\n | JSXOpeningElement\n | NewExpression\n | OptionalCallExpression\n | TSExpressionWithTypeArguments\n | TSImportType\n | TSInstantiationExpression\n | TSTypeQuery\n | TSTypeReference\n | TaggedTemplateExpression;\n TSTypePredicate:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSTypeQuery:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSTypeReference:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSUndefinedKeyword:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSUnionType:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSUnknownKeyword:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TSVoidKeyword:\n | TSArrayType\n | TSAsExpression\n | TSConditionalType\n | TSIndexedAccessType\n | TSIntersectionType\n | TSMappedType\n | TSNamedTupleMember\n | TSOptionalType\n | TSParenthesizedType\n | TSRestType\n | TSSatisfiesExpression\n | TSTemplateLiteralType\n | TSTupleType\n | TSTypeAliasDeclaration\n | TSTypeAnnotation\n | TSTypeAssertion\n | TSTypeOperator\n | TSTypeParameter\n | TSTypeParameterInstantiation\n | TSUnionType\n | TemplateLiteral;\n TaggedTemplateExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n TemplateElement: TSTemplateLiteralType | TemplateLiteral;\n TemplateLiteral:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSLiteralType\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n ThisExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n ThisTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n ThrowStatement:\n | BlockStatement\n | DoWhileStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n TopicReference:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n TryStatement:\n | BlockStatement\n | DoWhileStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n TupleExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n TupleTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n TypeAlias:\n | BlockStatement\n | DeclareExportDeclaration\n | DeclaredPredicate\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n TypeAnnotation:\n | ArrayPattern\n | ArrowFunctionExpression\n | AssignmentPattern\n | ClassAccessorProperty\n | ClassMethod\n | ClassPrivateMethod\n | ClassPrivateProperty\n | ClassProperty\n | DeclareExportDeclaration\n | DeclareModuleExports\n | DeclaredPredicate\n | FunctionDeclaration\n | FunctionExpression\n | Identifier\n | ObjectMethod\n | ObjectPattern\n | Placeholder\n | RestElement\n | TypeCastExpression\n | TypeParameter;\n TypeCastExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | DeclareExportDeclaration\n | DeclaredPredicate\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n TypeParameter:\n | DeclareExportDeclaration\n | DeclaredPredicate\n | TypeParameterDeclaration;\n TypeParameterDeclaration:\n | ArrowFunctionExpression\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateMethod\n | DeclareClass\n | DeclareExportDeclaration\n | DeclareInterface\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionDeclaration\n | FunctionExpression\n | FunctionTypeAnnotation\n | InterfaceDeclaration\n | ObjectMethod\n | OpaqueType\n | TypeAlias;\n TypeParameterInstantiation:\n | CallExpression\n | ClassDeclaration\n | ClassExpression\n | ClassImplements\n | DeclareExportDeclaration\n | DeclaredPredicate\n | GenericTypeAnnotation\n | InterfaceExtends\n | JSXOpeningElement\n | NewExpression\n | OptionalCallExpression\n | TaggedTemplateExpression;\n TypeofTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n UnaryExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSLiteralType\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n UnionTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n UpdateExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n V8IntrinsicIdentifier: CallExpression | NewExpression;\n VariableDeclaration:\n | BlockStatement\n | DoWhileStatement\n | ExportNamedDeclaration\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n VariableDeclarator: VariableDeclaration;\n Variance:\n | ClassAccessorProperty\n | ClassPrivateProperty\n | ClassProperty\n | DeclareExportDeclaration\n | DeclaredPredicate\n | ObjectTypeIndexer\n | ObjectTypeProperty\n | TypeParameter;\n VoidPattern:\n | ArrayPattern\n | ArrowFunctionExpression\n | ClassMethod\n | ClassPrivateMethod\n | FunctionDeclaration\n | FunctionExpression\n | ObjectMethod\n | ObjectProperty\n | TSDeclareFunction\n | TSDeclareMethod\n | VariableDeclarator;\n VoidTypeAnnotation:\n | ArrayTypeAnnotation\n | DeclareExportDeclaration\n | DeclareOpaqueType\n | DeclareTypeAlias\n | DeclaredPredicate\n | FunctionTypeAnnotation\n | FunctionTypeParam\n | IndexedAccessType\n | IntersectionTypeAnnotation\n | NullableTypeAnnotation\n | ObjectTypeCallProperty\n | ObjectTypeIndexer\n | ObjectTypeInternalSlot\n | ObjectTypeProperty\n | ObjectTypeSpreadProperty\n | OpaqueType\n | OptionalIndexedAccessType\n | TupleTypeAnnotation\n | TypeAlias\n | TypeAnnotation\n | TypeParameter\n | TypeParameterInstantiation\n | TypeofTypeAnnotation\n | UnionTypeAnnotation;\n WhileStatement:\n | BlockStatement\n | DoWhileStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n WithStatement:\n | BlockStatement\n | DoWhileStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | LabeledStatement\n | Program\n | StaticBlock\n | SwitchCase\n | TSModuleBlock\n | WhileStatement\n | WithStatement;\n YieldExpression:\n | ArrayExpression\n | ArrowFunctionExpression\n | AssignmentExpression\n | AssignmentPattern\n | AwaitExpression\n | BinaryExpression\n | BindExpression\n | CallExpression\n | ClassAccessorProperty\n | ClassDeclaration\n | ClassExpression\n | ClassMethod\n | ClassPrivateProperty\n | ClassProperty\n | ConditionalExpression\n | Decorator\n | DoWhileStatement\n | ExportDefaultDeclaration\n | ExpressionStatement\n | ForInStatement\n | ForOfStatement\n | ForStatement\n | IfStatement\n | ImportExpression\n | JSXExpressionContainer\n | JSXSpreadAttribute\n | JSXSpreadChild\n | LogicalExpression\n | MemberExpression\n | NewExpression\n | ObjectMethod\n | ObjectProperty\n | OptionalCallExpression\n | OptionalMemberExpression\n | ParenthesizedExpression\n | PipelineBareFunction\n | PipelineTopicExpression\n | ReturnStatement\n | SequenceExpression\n | SpreadElement\n | SwitchCase\n | SwitchStatement\n | TSAsExpression\n | TSDeclareMethod\n | TSEnumDeclaration\n | TSEnumMember\n | TSExportAssignment\n | TSInstantiationExpression\n | TSMethodSignature\n | TSNonNullExpression\n | TSPropertySignature\n | TSSatisfiesExpression\n | TSTypeAssertion\n | TaggedTemplateExpression\n | TemplateLiteral\n | ThrowStatement\n | TupleExpression\n | TypeCastExpression\n | UnaryExpression\n | UpdateExpression\n | VariableDeclarator\n | WhileStatement\n | WithStatement\n | YieldExpression;\n}\n"],"mappings":"","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js b/vanilla/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js
new file mode 100644
index 0000000..b6848a0
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js
@@ -0,0 +1,18 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = createFlowUnionType;
+var _index = require("../generated/index.js");
+var _removeTypeDuplicates = require("../../modifications/flow/removeTypeDuplicates.js");
+function createFlowUnionType(types) {
+ const flattened = (0, _removeTypeDuplicates.default)(types);
+ if (flattened.length === 1) {
+ return flattened[0];
+ } else {
+ return (0, _index.unionTypeAnnotation)(flattened);
+ }
+}
+
+//# sourceMappingURL=createFlowUnionType.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map b/vanilla/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map
new file mode 100644
index 0000000..9f99b80
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","_removeTypeDuplicates","createFlowUnionType","types","flattened","removeTypeDuplicates","length","unionTypeAnnotation"],"sources":["../../../src/builders/flow/createFlowUnionType.ts"],"sourcesContent":["import { unionTypeAnnotation } from \"../generated/index.ts\";\nimport removeTypeDuplicates from \"../../modifications/flow/removeTypeDuplicates.ts\";\nimport type * as t from \"../../index.ts\";\n\n/**\n * Takes an array of `types` and flattens them, removing duplicates and\n * returns a `UnionTypeAnnotation` node containing them.\n */\nexport default function createFlowUnionType<T extends t.FlowType>(\n types: [T] | T[],\n): T | t.UnionTypeAnnotation {\n const flattened = removeTypeDuplicates(types);\n\n if (flattened.length === 1) {\n return flattened[0] as T;\n } else {\n return unionTypeAnnotation(flattened);\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AAOe,SAASE,mBAAmBA,CACzCC,KAAgB,EACW;EAC3B,MAAMC,SAAS,GAAG,IAAAC,6BAAoB,EAACF,KAAK,CAAC;EAE7C,IAAIC,SAAS,CAACE,MAAM,KAAK,CAAC,EAAE;IAC1B,OAAOF,SAAS,CAAC,CAAC,CAAC;EACrB,CAAC,MAAM;IACL,OAAO,IAAAG,0BAAmB,EAACH,SAAS,CAAC;EACvC;AACF","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js b/vanilla/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js
new file mode 100644
index 0000000..79d58be
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js
@@ -0,0 +1,31 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var _index = require("../generated/index.js");
+var _default = exports.default = createTypeAnnotationBasedOnTypeof;
+function createTypeAnnotationBasedOnTypeof(type) {
+ switch (type) {
+ case "string":
+ return (0, _index.stringTypeAnnotation)();
+ case "number":
+ return (0, _index.numberTypeAnnotation)();
+ case "undefined":
+ return (0, _index.voidTypeAnnotation)();
+ case "boolean":
+ return (0, _index.booleanTypeAnnotation)();
+ case "function":
+ return (0, _index.genericTypeAnnotation)((0, _index.identifier)("Function"));
+ case "object":
+ return (0, _index.genericTypeAnnotation)((0, _index.identifier)("Object"));
+ case "symbol":
+ return (0, _index.genericTypeAnnotation)((0, _index.identifier)("Symbol"));
+ case "bigint":
+ return (0, _index.anyTypeAnnotation)();
+ }
+ throw new Error("Invalid typeof value: " + type);
+}
+
+//# sourceMappingURL=createTypeAnnotationBasedOnTypeof.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map b/vanilla/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map
new file mode 100644
index 0000000..93deeba
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","_default","exports","default","createTypeAnnotationBasedOnTypeof","type","stringTypeAnnotation","numberTypeAnnotation","voidTypeAnnotation","booleanTypeAnnotation","genericTypeAnnotation","identifier","anyTypeAnnotation","Error"],"sources":["../../../src/builders/flow/createTypeAnnotationBasedOnTypeof.ts"],"sourcesContent":["import {\n anyTypeAnnotation,\n stringTypeAnnotation,\n numberTypeAnnotation,\n voidTypeAnnotation,\n booleanTypeAnnotation,\n genericTypeAnnotation,\n identifier,\n} from \"../generated/index.ts\";\nimport type * as t from \"../../index.ts\";\n\nexport default createTypeAnnotationBasedOnTypeof as {\n (type: \"string\"): t.StringTypeAnnotation;\n (type: \"number\"): t.NumberTypeAnnotation;\n (type: \"undefined\"): t.VoidTypeAnnotation;\n (type: \"boolean\"): t.BooleanTypeAnnotation;\n (type: \"function\"): t.GenericTypeAnnotation;\n (type: \"object\"): t.GenericTypeAnnotation;\n (type: \"symbol\"): t.GenericTypeAnnotation;\n (type: \"bigint\"): t.AnyTypeAnnotation;\n};\n\n/**\n * Create a type annotation based on typeof expression.\n */\nfunction createTypeAnnotationBasedOnTypeof(type: string): t.FlowType {\n switch (type) {\n case \"string\":\n return stringTypeAnnotation();\n case \"number\":\n return numberTypeAnnotation();\n case \"undefined\":\n return voidTypeAnnotation();\n case \"boolean\":\n return booleanTypeAnnotation();\n case \"function\":\n return genericTypeAnnotation(identifier(\"Function\"));\n case \"object\":\n return genericTypeAnnotation(identifier(\"Object\"));\n case \"symbol\":\n return genericTypeAnnotation(identifier(\"Symbol\"));\n case \"bigint\":\n // todo: use BigInt annotation when Flow supports BigInt\n // https://github.com/facebook/flow/issues/6639\n return anyTypeAnnotation();\n }\n throw new Error(\"Invalid typeof value: \" + type);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAQ+B,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAGhBC,iCAAiC;AAchD,SAASA,iCAAiCA,CAACC,IAAY,EAAc;EACnE,QAAQA,IAAI;IACV,KAAK,QAAQ;MACX,OAAO,IAAAC,2BAAoB,EAAC,CAAC;IAC/B,KAAK,QAAQ;MACX,OAAO,IAAAC,2BAAoB,EAAC,CAAC;IAC/B,KAAK,WAAW;MACd,OAAO,IAAAC,yBAAkB,EAAC,CAAC;IAC7B,KAAK,SAAS;MACZ,OAAO,IAAAC,4BAAqB,EAAC,CAAC;IAChC,KAAK,UAAU;MACb,OAAO,IAAAC,4BAAqB,EAAC,IAAAC,iBAAU,EAAC,UAAU,CAAC,CAAC;IACtD,KAAK,QAAQ;MACX,OAAO,IAAAD,4BAAqB,EAAC,IAAAC,iBAAU,EAAC,QAAQ,CAAC,CAAC;IACpD,KAAK,QAAQ;MACX,OAAO,IAAAD,4BAAqB,EAAC,IAAAC,iBAAU,EAAC,QAAQ,CAAC,CAAC;IACpD,KAAK,QAAQ;MAGX,OAAO,IAAAC,wBAAiB,EAAC,CAAC;EAC9B;EACA,MAAM,IAAIC,KAAK,CAAC,wBAAwB,GAAGR,IAAI,CAAC;AAClD","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/builders/generated/index.js b/vanilla/node_modules/@babel/types/lib/builders/generated/index.js
new file mode 100644
index 0000000..ce6a687
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/builders/generated/index.js
@@ -0,0 +1,29 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+var _lowercase = require("./lowercase.js");
+Object.keys(_lowercase).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _lowercase[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _lowercase[key];
+ }
+ });
+});
+var _uppercase = require("./uppercase.js");
+Object.keys(_uppercase).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _uppercase[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _uppercase[key];
+ }
+ });
+});
+
+//# sourceMappingURL=index.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/builders/generated/index.js.map b/vanilla/node_modules/@babel/types/lib/builders/generated/index.js.map
new file mode 100644
index 0000000..ec02fc1
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/builders/generated/index.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_lowercase","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_uppercase"],"sources":["../../../src/builders/generated/index.ts"],"sourcesContent":["/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\n\nexport * from \"./lowercase.ts\";\nexport * from \"./uppercase.ts\";\n\n// Uppercase builders and AST types conflict with each other, which is\n// not allowed by TypeScript when using `export * from ...`\n// We instead explicity list the AST types here, so that:\n// - From a TypeScript perspective, the AST types win over the uppercase\n// builders (which is the standard behavior for JS when a named\n// re-export conflicts with a * re-export.)\n// - At runtime, this `export type` is removed, leaving only the uppercase\n// builders behind (which are thus visible to JavaScript code).\n// This ensures compatibility with legacy code that uses the uppercase\n// builders, while allowing TypeScript users to use the lowercase builders\n// together with the AST types.\n\n// prettier-ignore\nexport type {\n ArrayExpression, AssignmentExpression, BinaryExpression, InterpreterDirective, Directive, DirectiveLiteral, BlockStatement, BreakStatement, CallExpression, CatchClause, ConditionalExpression, ContinueStatement, DebuggerStatement, DoWhileStatement, EmptyStatement, ExpressionStatement, File, ForInStatement, ForStatement, FunctionDeclaration, FunctionExpression, Identifier, IfStatement, LabeledStatement, StringLiteral, NumericLiteral, NullLiteral, BooleanLiteral, RegExpLiteral, LogicalExpression, MemberExpression, NewExpression, Program, ObjectExpression, ObjectMethod, ObjectProperty, RestElement, ReturnStatement, SequenceExpression, ParenthesizedExpression, SwitchCase, SwitchStatement, ThisExpression, ThrowStatement, TryStatement, UnaryExpression, UpdateExpression, VariableDeclaration, VariableDeclarator, WhileStatement, WithStatement, AssignmentPattern, ArrayPattern, ArrowFunctionExpression, ClassBody, ClassExpression, ClassDeclaration, ExportAllDeclaration, ExportDefaultDeclaration, ExportNamedDeclaration, ExportSpecifier, ForOfStatement, ImportDeclaration, ImportDefaultSpecifier, ImportNamespaceSpecifier, ImportSpecifier, ImportExpression, MetaProperty, ClassMethod, ObjectPattern, SpreadElement, Super, TaggedTemplateExpression, TemplateElement, TemplateLiteral, YieldExpression, AwaitExpression, Import, BigIntLiteral, ExportNamespaceSpecifier, OptionalMemberExpression, OptionalCallExpression, ClassProperty, ClassAccessorProperty, ClassPrivateProperty, ClassPrivateMethod, PrivateName, StaticBlock, ImportAttribute, AnyTypeAnnotation, ArrayTypeAnnotation, BooleanTypeAnnotation, BooleanLiteralTypeAnnotation, NullLiteralTypeAnnotation, ClassImplements, DeclareClass, DeclareFunction, DeclareInterface, DeclareModule, DeclareModuleExports, DeclareTypeAlias, DeclareOpaqueType, DeclareVariable, DeclareExportDeclaration, DeclareExportAllDeclaration, DeclaredPredicate, ExistsTypeAnnotation, FunctionTypeAnnotation, FunctionTypeParam, GenericTypeAnnotation, InferredPredicate, InterfaceExtends, InterfaceDeclaration, InterfaceTypeAnnotation, IntersectionTypeAnnotation, MixedTypeAnnotation, EmptyTypeAnnotation, NullableTypeAnnotation, NumberLiteralTypeAnnotation, NumberTypeAnnotation, ObjectTypeAnnotation, ObjectTypeInternalSlot, ObjectTypeCallProperty, ObjectTypeIndexer, ObjectTypeProperty, ObjectTypeSpreadProperty, OpaqueType, QualifiedTypeIdentifier, StringLiteralTypeAnnotation, StringTypeAnnotation, SymbolTypeAnnotation, ThisTypeAnnotation, TupleTypeAnnotation, TypeofTypeAnnotation, TypeAlias, TypeAnnotation, TypeCastExpression, TypeParameter, TypeParameterDeclaration, TypeParameterInstantiation, UnionTypeAnnotation, Variance, VoidTypeAnnotation, EnumDeclaration, EnumBooleanBody, EnumNumberBody, EnumStringBody, EnumSymbolBody, EnumBooleanMember, EnumNumberMember, EnumStringMember, EnumDefaultedMember, IndexedAccessType, OptionalIndexedAccessType, JSXAttribute, JSXClosingElement, JSXElement, JSXEmptyExpression, JSXExpressionContainer, JSXSpreadChild, JSXIdentifier, JSXMemberExpression, JSXNamespacedName, JSXOpeningElement, JSXSpreadAttribute, JSXText, JSXFragment, JSXOpeningFragment, JSXClosingFragment, Noop, Placeholder, V8IntrinsicIdentifier, ArgumentPlaceholder, BindExpression, Decorator, DoExpression, ExportDefaultSpecifier, RecordExpression, TupleExpression, DecimalLiteral, ModuleExpression, TopicReference, PipelineTopicExpression, PipelineBareFunction, PipelinePrimaryTopicReference, VoidPattern, TSParameterProperty, TSDeclareFunction, TSDeclareMethod, TSQualifiedName, TSCallSignatureDeclaration, TSConstructSignatureDeclaration, TSPropertySignature, TSMethodSignature, TSIndexSignature, TSAnyKeyword, TSBooleanKeyword, TSBigIntKeyword, TSIntrinsicKeyword, TSNeverKeyword, TSNullKeyword, TSNumberKeyword, TSObjectKeyword, TSStringKeyword, TSSymbolKeyword, TSUndefinedKeyword, TSUnknownKeyword, TSVoidKeyword, TSThisType, TSFunctionType, TSConstructorType, TSTypeReference, TSTypePredicate, TSTypeQuery, TSTypeLiteral, TSArrayType, TSTupleType, TSOptionalType, TSRestType, TSNamedTupleMember, TSUnionType, TSIntersectionType, TSConditionalType, TSInferType, TSParenthesizedType, TSTypeOperator, TSIndexedAccessType, TSMappedType, TSTemplateLiteralType, TSLiteralType, TSExpressionWithTypeArguments, TSInterfaceDeclaration, TSInterfaceBody, TSTypeAliasDeclaration, TSInstantiationExpression, TSAsExpression, TSSatisfiesExpression, TSTypeAssertion, TSEnumBody, TSEnumDeclaration, TSEnumMember, TSModuleDeclaration, TSModuleBlock, TSImportType, TSImportEqualsDeclaration, TSExternalModuleReference, TSNonNullExpression, TSExportAssignment, TSNamespaceExportDeclaration, TSTypeAnnotation, TSTypeParameterInstantiation, TSTypeParameterDeclaration, TSTypeParameter,\n NumberLiteral, RegexLiteral, RestProperty, SpreadProperty\n} from \"../../ast-types/generated/index.ts\";\n\n// This will re-export all the type definitions that do not conflict with\n// uppercase builders, such as aliases.\nexport type * from \"../../ast-types/generated/index.ts\";\n"],"mappings":";;;;;AAKA,IAAAA,UAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,UAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,UAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,UAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,UAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,UAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,UAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,UAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/builders/generated/lowercase.js b/vanilla/node_modules/@babel/types/lib/builders/generated/lowercase.js
new file mode 100644
index 0000000..0a13bcd
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/builders/generated/lowercase.js
@@ -0,0 +1,2902 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.anyTypeAnnotation = anyTypeAnnotation;
+exports.argumentPlaceholder = argumentPlaceholder;
+exports.arrayExpression = arrayExpression;
+exports.arrayPattern = arrayPattern;
+exports.arrayTypeAnnotation = arrayTypeAnnotation;
+exports.arrowFunctionExpression = arrowFunctionExpression;
+exports.assignmentExpression = assignmentExpression;
+exports.assignmentPattern = assignmentPattern;
+exports.awaitExpression = awaitExpression;
+exports.bigIntLiteral = bigIntLiteral;
+exports.binaryExpression = binaryExpression;
+exports.bindExpression = bindExpression;
+exports.blockStatement = blockStatement;
+exports.booleanLiteral = booleanLiteral;
+exports.booleanLiteralTypeAnnotation = booleanLiteralTypeAnnotation;
+exports.booleanTypeAnnotation = booleanTypeAnnotation;
+exports.breakStatement = breakStatement;
+exports.callExpression = callExpression;
+exports.catchClause = catchClause;
+exports.classAccessorProperty = classAccessorProperty;
+exports.classBody = classBody;
+exports.classDeclaration = classDeclaration;
+exports.classExpression = classExpression;
+exports.classImplements = classImplements;
+exports.classMethod = classMethod;
+exports.classPrivateMethod = classPrivateMethod;
+exports.classPrivateProperty = classPrivateProperty;
+exports.classProperty = classProperty;
+exports.conditionalExpression = conditionalExpression;
+exports.continueStatement = continueStatement;
+exports.debuggerStatement = debuggerStatement;
+exports.decimalLiteral = decimalLiteral;
+exports.declareClass = declareClass;
+exports.declareExportAllDeclaration = declareExportAllDeclaration;
+exports.declareExportDeclaration = declareExportDeclaration;
+exports.declareFunction = declareFunction;
+exports.declareInterface = declareInterface;
+exports.declareModule = declareModule;
+exports.declareModuleExports = declareModuleExports;
+exports.declareOpaqueType = declareOpaqueType;
+exports.declareTypeAlias = declareTypeAlias;
+exports.declareVariable = declareVariable;
+exports.declaredPredicate = declaredPredicate;
+exports.decorator = decorator;
+exports.directive = directive;
+exports.directiveLiteral = directiveLiteral;
+exports.doExpression = doExpression;
+exports.doWhileStatement = doWhileStatement;
+exports.emptyStatement = emptyStatement;
+exports.emptyTypeAnnotation = emptyTypeAnnotation;
+exports.enumBooleanBody = enumBooleanBody;
+exports.enumBooleanMember = enumBooleanMember;
+exports.enumDeclaration = enumDeclaration;
+exports.enumDefaultedMember = enumDefaultedMember;
+exports.enumNumberBody = enumNumberBody;
+exports.enumNumberMember = enumNumberMember;
+exports.enumStringBody = enumStringBody;
+exports.enumStringMember = enumStringMember;
+exports.enumSymbolBody = enumSymbolBody;
+exports.existsTypeAnnotation = existsTypeAnnotation;
+exports.exportAllDeclaration = exportAllDeclaration;
+exports.exportDefaultDeclaration = exportDefaultDeclaration;
+exports.exportDefaultSpecifier = exportDefaultSpecifier;
+exports.exportNamedDeclaration = exportNamedDeclaration;
+exports.exportNamespaceSpecifier = exportNamespaceSpecifier;
+exports.exportSpecifier = exportSpecifier;
+exports.expressionStatement = expressionStatement;
+exports.file = file;
+exports.forInStatement = forInStatement;
+exports.forOfStatement = forOfStatement;
+exports.forStatement = forStatement;
+exports.functionDeclaration = functionDeclaration;
+exports.functionExpression = functionExpression;
+exports.functionTypeAnnotation = functionTypeAnnotation;
+exports.functionTypeParam = functionTypeParam;
+exports.genericTypeAnnotation = genericTypeAnnotation;
+exports.identifier = identifier;
+exports.ifStatement = ifStatement;
+exports.import = _import;
+exports.importAttribute = importAttribute;
+exports.importDeclaration = importDeclaration;
+exports.importDefaultSpecifier = importDefaultSpecifier;
+exports.importExpression = importExpression;
+exports.importNamespaceSpecifier = importNamespaceSpecifier;
+exports.importSpecifier = importSpecifier;
+exports.indexedAccessType = indexedAccessType;
+exports.inferredPredicate = inferredPredicate;
+exports.interfaceDeclaration = interfaceDeclaration;
+exports.interfaceExtends = interfaceExtends;
+exports.interfaceTypeAnnotation = interfaceTypeAnnotation;
+exports.interpreterDirective = interpreterDirective;
+exports.intersectionTypeAnnotation = intersectionTypeAnnotation;
+exports.jSXAttribute = exports.jsxAttribute = jsxAttribute;
+exports.jSXClosingElement = exports.jsxClosingElement = jsxClosingElement;
+exports.jSXClosingFragment = exports.jsxClosingFragment = jsxClosingFragment;
+exports.jSXElement = exports.jsxElement = jsxElement;
+exports.jSXEmptyExpression = exports.jsxEmptyExpression = jsxEmptyExpression;
+exports.jSXExpressionContainer = exports.jsxExpressionContainer = jsxExpressionContainer;
+exports.jSXFragment = exports.jsxFragment = jsxFragment;
+exports.jSXIdentifier = exports.jsxIdentifier = jsxIdentifier;
+exports.jSXMemberExpression = exports.jsxMemberExpression = jsxMemberExpression;
+exports.jSXNamespacedName = exports.jsxNamespacedName = jsxNamespacedName;
+exports.jSXOpeningElement = exports.jsxOpeningElement = jsxOpeningElement;
+exports.jSXOpeningFragment = exports.jsxOpeningFragment = jsxOpeningFragment;
+exports.jSXSpreadAttribute = exports.jsxSpreadAttribute = jsxSpreadAttribute;
+exports.jSXSpreadChild = exports.jsxSpreadChild = jsxSpreadChild;
+exports.jSXText = exports.jsxText = jsxText;
+exports.labeledStatement = labeledStatement;
+exports.logicalExpression = logicalExpression;
+exports.memberExpression = memberExpression;
+exports.metaProperty = metaProperty;
+exports.mixedTypeAnnotation = mixedTypeAnnotation;
+exports.moduleExpression = moduleExpression;
+exports.newExpression = newExpression;
+exports.noop = noop;
+exports.nullLiteral = nullLiteral;
+exports.nullLiteralTypeAnnotation = nullLiteralTypeAnnotation;
+exports.nullableTypeAnnotation = nullableTypeAnnotation;
+exports.numberLiteral = NumberLiteral;
+exports.numberLiteralTypeAnnotation = numberLiteralTypeAnnotation;
+exports.numberTypeAnnotation = numberTypeAnnotation;
+exports.numericLiteral = numericLiteral;
+exports.objectExpression = objectExpression;
+exports.objectMethod = objectMethod;
+exports.objectPattern = objectPattern;
+exports.objectProperty = objectProperty;
+exports.objectTypeAnnotation = objectTypeAnnotation;
+exports.objectTypeCallProperty = objectTypeCallProperty;
+exports.objectTypeIndexer = objectTypeIndexer;
+exports.objectTypeInternalSlot = objectTypeInternalSlot;
+exports.objectTypeProperty = objectTypeProperty;
+exports.objectTypeSpreadProperty = objectTypeSpreadProperty;
+exports.opaqueType = opaqueType;
+exports.optionalCallExpression = optionalCallExpression;
+exports.optionalIndexedAccessType = optionalIndexedAccessType;
+exports.optionalMemberExpression = optionalMemberExpression;
+exports.parenthesizedExpression = parenthesizedExpression;
+exports.pipelineBareFunction = pipelineBareFunction;
+exports.pipelinePrimaryTopicReference = pipelinePrimaryTopicReference;
+exports.pipelineTopicExpression = pipelineTopicExpression;
+exports.placeholder = placeholder;
+exports.privateName = privateName;
+exports.program = program;
+exports.qualifiedTypeIdentifier = qualifiedTypeIdentifier;
+exports.recordExpression = recordExpression;
+exports.regExpLiteral = regExpLiteral;
+exports.regexLiteral = RegexLiteral;
+exports.restElement = restElement;
+exports.restProperty = RestProperty;
+exports.returnStatement = returnStatement;
+exports.sequenceExpression = sequenceExpression;
+exports.spreadElement = spreadElement;
+exports.spreadProperty = SpreadProperty;
+exports.staticBlock = staticBlock;
+exports.stringLiteral = stringLiteral;
+exports.stringLiteralTypeAnnotation = stringLiteralTypeAnnotation;
+exports.stringTypeAnnotation = stringTypeAnnotation;
+exports.super = _super;
+exports.switchCase = switchCase;
+exports.switchStatement = switchStatement;
+exports.symbolTypeAnnotation = symbolTypeAnnotation;
+exports.taggedTemplateExpression = taggedTemplateExpression;
+exports.templateElement = templateElement;
+exports.templateLiteral = templateLiteral;
+exports.thisExpression = thisExpression;
+exports.thisTypeAnnotation = thisTypeAnnotation;
+exports.throwStatement = throwStatement;
+exports.topicReference = topicReference;
+exports.tryStatement = tryStatement;
+exports.tSAnyKeyword = exports.tsAnyKeyword = tsAnyKeyword;
+exports.tSArrayType = exports.tsArrayType = tsArrayType;
+exports.tSAsExpression = exports.tsAsExpression = tsAsExpression;
+exports.tSBigIntKeyword = exports.tsBigIntKeyword = tsBigIntKeyword;
+exports.tSBooleanKeyword = exports.tsBooleanKeyword = tsBooleanKeyword;
+exports.tSCallSignatureDeclaration = exports.tsCallSignatureDeclaration = tsCallSignatureDeclaration;
+exports.tSConditionalType = exports.tsConditionalType = tsConditionalType;
+exports.tSConstructSignatureDeclaration = exports.tsConstructSignatureDeclaration = tsConstructSignatureDeclaration;
+exports.tSConstructorType = exports.tsConstructorType = tsConstructorType;
+exports.tSDeclareFunction = exports.tsDeclareFunction = tsDeclareFunction;
+exports.tSDeclareMethod = exports.tsDeclareMethod = tsDeclareMethod;
+exports.tSEnumBody = exports.tsEnumBody = tsEnumBody;
+exports.tSEnumDeclaration = exports.tsEnumDeclaration = tsEnumDeclaration;
+exports.tSEnumMember = exports.tsEnumMember = tsEnumMember;
+exports.tSExportAssignment = exports.tsExportAssignment = tsExportAssignment;
+exports.tSExpressionWithTypeArguments = exports.tsExpressionWithTypeArguments = tsExpressionWithTypeArguments;
+exports.tSExternalModuleReference = exports.tsExternalModuleReference = tsExternalModuleReference;
+exports.tSFunctionType = exports.tsFunctionType = tsFunctionType;
+exports.tSImportEqualsDeclaration = exports.tsImportEqualsDeclaration = tsImportEqualsDeclaration;
+exports.tSImportType = exports.tsImportType = tsImportType;
+exports.tSIndexSignature = exports.tsIndexSignature = tsIndexSignature;
+exports.tSIndexedAccessType = exports.tsIndexedAccessType = tsIndexedAccessType;
+exports.tSInferType = exports.tsInferType = tsInferType;
+exports.tSInstantiationExpression = exports.tsInstantiationExpression = tsInstantiationExpression;
+exports.tSInterfaceBody = exports.tsInterfaceBody = tsInterfaceBody;
+exports.tSInterfaceDeclaration = exports.tsInterfaceDeclaration = tsInterfaceDeclaration;
+exports.tSIntersectionType = exports.tsIntersectionType = tsIntersectionType;
+exports.tSIntrinsicKeyword = exports.tsIntrinsicKeyword = tsIntrinsicKeyword;
+exports.tSLiteralType = exports.tsLiteralType = tsLiteralType;
+exports.tSMappedType = exports.tsMappedType = tsMappedType;
+exports.tSMethodSignature = exports.tsMethodSignature = tsMethodSignature;
+exports.tSModuleBlock = exports.tsModuleBlock = tsModuleBlock;
+exports.tSModuleDeclaration = exports.tsModuleDeclaration = tsModuleDeclaration;
+exports.tSNamedTupleMember = exports.tsNamedTupleMember = tsNamedTupleMember;
+exports.tSNamespaceExportDeclaration = exports.tsNamespaceExportDeclaration = tsNamespaceExportDeclaration;
+exports.tSNeverKeyword = exports.tsNeverKeyword = tsNeverKeyword;
+exports.tSNonNullExpression = exports.tsNonNullExpression = tsNonNullExpression;
+exports.tSNullKeyword = exports.tsNullKeyword = tsNullKeyword;
+exports.tSNumberKeyword = exports.tsNumberKeyword = tsNumberKeyword;
+exports.tSObjectKeyword = exports.tsObjectKeyword = tsObjectKeyword;
+exports.tSOptionalType = exports.tsOptionalType = tsOptionalType;
+exports.tSParameterProperty = exports.tsParameterProperty = tsParameterProperty;
+exports.tSParenthesizedType = exports.tsParenthesizedType = tsParenthesizedType;
+exports.tSPropertySignature = exports.tsPropertySignature = tsPropertySignature;
+exports.tSQualifiedName = exports.tsQualifiedName = tsQualifiedName;
+exports.tSRestType = exports.tsRestType = tsRestType;
+exports.tSSatisfiesExpression = exports.tsSatisfiesExpression = tsSatisfiesExpression;
+exports.tSStringKeyword = exports.tsStringKeyword = tsStringKeyword;
+exports.tSSymbolKeyword = exports.tsSymbolKeyword = tsSymbolKeyword;
+exports.tSTemplateLiteralType = exports.tsTemplateLiteralType = tsTemplateLiteralType;
+exports.tSThisType = exports.tsThisType = tsThisType;
+exports.tSTupleType = exports.tsTupleType = tsTupleType;
+exports.tSTypeAliasDeclaration = exports.tsTypeAliasDeclaration = tsTypeAliasDeclaration;
+exports.tSTypeAnnotation = exports.tsTypeAnnotation = tsTypeAnnotation;
+exports.tSTypeAssertion = exports.tsTypeAssertion = tsTypeAssertion;
+exports.tSTypeLiteral = exports.tsTypeLiteral = tsTypeLiteral;
+exports.tSTypeOperator = exports.tsTypeOperator = tsTypeOperator;
+exports.tSTypeParameter = exports.tsTypeParameter = tsTypeParameter;
+exports.tSTypeParameterDeclaration = exports.tsTypeParameterDeclaration = tsTypeParameterDeclaration;
+exports.tSTypeParameterInstantiation = exports.tsTypeParameterInstantiation = tsTypeParameterInstantiation;
+exports.tSTypePredicate = exports.tsTypePredicate = tsTypePredicate;
+exports.tSTypeQuery = exports.tsTypeQuery = tsTypeQuery;
+exports.tSTypeReference = exports.tsTypeReference = tsTypeReference;
+exports.tSUndefinedKeyword = exports.tsUndefinedKeyword = tsUndefinedKeyword;
+exports.tSUnionType = exports.tsUnionType = tsUnionType;
+exports.tSUnknownKeyword = exports.tsUnknownKeyword = tsUnknownKeyword;
+exports.tSVoidKeyword = exports.tsVoidKeyword = tsVoidKeyword;
+exports.tupleExpression = tupleExpression;
+exports.tupleTypeAnnotation = tupleTypeAnnotation;
+exports.typeAlias = typeAlias;
+exports.typeAnnotation = typeAnnotation;
+exports.typeCastExpression = typeCastExpression;
+exports.typeParameter = typeParameter;
+exports.typeParameterDeclaration = typeParameterDeclaration;
+exports.typeParameterInstantiation = typeParameterInstantiation;
+exports.typeofTypeAnnotation = typeofTypeAnnotation;
+exports.unaryExpression = unaryExpression;
+exports.unionTypeAnnotation = unionTypeAnnotation;
+exports.updateExpression = updateExpression;
+exports.v8IntrinsicIdentifier = v8IntrinsicIdentifier;
+exports.variableDeclaration = variableDeclaration;
+exports.variableDeclarator = variableDeclarator;
+exports.variance = variance;
+exports.voidPattern = voidPattern;
+exports.voidTypeAnnotation = voidTypeAnnotation;
+exports.whileStatement = whileStatement;
+exports.withStatement = withStatement;
+exports.yieldExpression = yieldExpression;
+var _validate = require("../../validators/validate.js");
+var _deprecationWarning = require("../../utils/deprecationWarning.js");
+var utils = require("../../definitions/utils.js");
+const {
+ validateInternal: validate
+} = _validate;
+const {
+ NODE_FIELDS
+} = utils;
+function bigIntLiteral(value) {
+ if (typeof value === "bigint") {
+ value = value.toString();
+ }
+ const node = {
+ type: "BigIntLiteral",
+ value
+ };
+ const defs = NODE_FIELDS.BigIntLiteral;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function arrayExpression(elements = []) {
+ const node = {
+ type: "ArrayExpression",
+ elements
+ };
+ const defs = NODE_FIELDS.ArrayExpression;
+ validate(defs.elements, node, "elements", elements, 1);
+ return node;
+}
+function assignmentExpression(operator, left, right) {
+ const node = {
+ type: "AssignmentExpression",
+ operator,
+ left,
+ right
+ };
+ const defs = NODE_FIELDS.AssignmentExpression;
+ validate(defs.operator, node, "operator", operator);
+ validate(defs.left, node, "left", left, 1);
+ validate(defs.right, node, "right", right, 1);
+ return node;
+}
+function binaryExpression(operator, left, right) {
+ const node = {
+ type: "BinaryExpression",
+ operator,
+ left,
+ right
+ };
+ const defs = NODE_FIELDS.BinaryExpression;
+ validate(defs.operator, node, "operator", operator);
+ validate(defs.left, node, "left", left, 1);
+ validate(defs.right, node, "right", right, 1);
+ return node;
+}
+function interpreterDirective(value) {
+ const node = {
+ type: "InterpreterDirective",
+ value
+ };
+ const defs = NODE_FIELDS.InterpreterDirective;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function directive(value) {
+ const node = {
+ type: "Directive",
+ value
+ };
+ const defs = NODE_FIELDS.Directive;
+ validate(defs.value, node, "value", value, 1);
+ return node;
+}
+function directiveLiteral(value) {
+ const node = {
+ type: "DirectiveLiteral",
+ value
+ };
+ const defs = NODE_FIELDS.DirectiveLiteral;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function blockStatement(body, directives = []) {
+ const node = {
+ type: "BlockStatement",
+ body,
+ directives
+ };
+ const defs = NODE_FIELDS.BlockStatement;
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.directives, node, "directives", directives, 1);
+ return node;
+}
+function breakStatement(label = null) {
+ const node = {
+ type: "BreakStatement",
+ label
+ };
+ const defs = NODE_FIELDS.BreakStatement;
+ validate(defs.label, node, "label", label, 1);
+ return node;
+}
+function callExpression(callee, _arguments) {
+ const node = {
+ type: "CallExpression",
+ callee,
+ arguments: _arguments
+ };
+ const defs = NODE_FIELDS.CallExpression;
+ validate(defs.callee, node, "callee", callee, 1);
+ validate(defs.arguments, node, "arguments", _arguments, 1);
+ return node;
+}
+function catchClause(param = null, body) {
+ const node = {
+ type: "CatchClause",
+ param,
+ body
+ };
+ const defs = NODE_FIELDS.CatchClause;
+ validate(defs.param, node, "param", param, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function conditionalExpression(test, consequent, alternate) {
+ const node = {
+ type: "ConditionalExpression",
+ test,
+ consequent,
+ alternate
+ };
+ const defs = NODE_FIELDS.ConditionalExpression;
+ validate(defs.test, node, "test", test, 1);
+ validate(defs.consequent, node, "consequent", consequent, 1);
+ validate(defs.alternate, node, "alternate", alternate, 1);
+ return node;
+}
+function continueStatement(label = null) {
+ const node = {
+ type: "ContinueStatement",
+ label
+ };
+ const defs = NODE_FIELDS.ContinueStatement;
+ validate(defs.label, node, "label", label, 1);
+ return node;
+}
+function debuggerStatement() {
+ return {
+ type: "DebuggerStatement"
+ };
+}
+function doWhileStatement(test, body) {
+ const node = {
+ type: "DoWhileStatement",
+ test,
+ body
+ };
+ const defs = NODE_FIELDS.DoWhileStatement;
+ validate(defs.test, node, "test", test, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function emptyStatement() {
+ return {
+ type: "EmptyStatement"
+ };
+}
+function expressionStatement(expression) {
+ const node = {
+ type: "ExpressionStatement",
+ expression
+ };
+ const defs = NODE_FIELDS.ExpressionStatement;
+ validate(defs.expression, node, "expression", expression, 1);
+ return node;
+}
+function file(program, comments = null, tokens = null) {
+ const node = {
+ type: "File",
+ program,
+ comments,
+ tokens
+ };
+ const defs = NODE_FIELDS.File;
+ validate(defs.program, node, "program", program, 1);
+ validate(defs.comments, node, "comments", comments, 1);
+ validate(defs.tokens, node, "tokens", tokens);
+ return node;
+}
+function forInStatement(left, right, body) {
+ const node = {
+ type: "ForInStatement",
+ left,
+ right,
+ body
+ };
+ const defs = NODE_FIELDS.ForInStatement;
+ validate(defs.left, node, "left", left, 1);
+ validate(defs.right, node, "right", right, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function forStatement(init = null, test = null, update = null, body) {
+ const node = {
+ type: "ForStatement",
+ init,
+ test,
+ update,
+ body
+ };
+ const defs = NODE_FIELDS.ForStatement;
+ validate(defs.init, node, "init", init, 1);
+ validate(defs.test, node, "test", test, 1);
+ validate(defs.update, node, "update", update, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function functionDeclaration(id = null, params, body, generator = false, async = false) {
+ const node = {
+ type: "FunctionDeclaration",
+ id,
+ params,
+ body,
+ generator,
+ async
+ };
+ const defs = NODE_FIELDS.FunctionDeclaration;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.params, node, "params", params, 1);
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.generator, node, "generator", generator);
+ validate(defs.async, node, "async", async);
+ return node;
+}
+function functionExpression(id = null, params, body, generator = false, async = false) {
+ const node = {
+ type: "FunctionExpression",
+ id,
+ params,
+ body,
+ generator,
+ async
+ };
+ const defs = NODE_FIELDS.FunctionExpression;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.params, node, "params", params, 1);
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.generator, node, "generator", generator);
+ validate(defs.async, node, "async", async);
+ return node;
+}
+function identifier(name) {
+ const node = {
+ type: "Identifier",
+ name
+ };
+ const defs = NODE_FIELDS.Identifier;
+ validate(defs.name, node, "name", name);
+ return node;
+}
+function ifStatement(test, consequent, alternate = null) {
+ const node = {
+ type: "IfStatement",
+ test,
+ consequent,
+ alternate
+ };
+ const defs = NODE_FIELDS.IfStatement;
+ validate(defs.test, node, "test", test, 1);
+ validate(defs.consequent, node, "consequent", consequent, 1);
+ validate(defs.alternate, node, "alternate", alternate, 1);
+ return node;
+}
+function labeledStatement(label, body) {
+ const node = {
+ type: "LabeledStatement",
+ label,
+ body
+ };
+ const defs = NODE_FIELDS.LabeledStatement;
+ validate(defs.label, node, "label", label, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function stringLiteral(value) {
+ const node = {
+ type: "StringLiteral",
+ value
+ };
+ const defs = NODE_FIELDS.StringLiteral;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function numericLiteral(value) {
+ const node = {
+ type: "NumericLiteral",
+ value
+ };
+ const defs = NODE_FIELDS.NumericLiteral;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function nullLiteral() {
+ return {
+ type: "NullLiteral"
+ };
+}
+function booleanLiteral(value) {
+ const node = {
+ type: "BooleanLiteral",
+ value
+ };
+ const defs = NODE_FIELDS.BooleanLiteral;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function regExpLiteral(pattern, flags = "") {
+ const node = {
+ type: "RegExpLiteral",
+ pattern,
+ flags
+ };
+ const defs = NODE_FIELDS.RegExpLiteral;
+ validate(defs.pattern, node, "pattern", pattern);
+ validate(defs.flags, node, "flags", flags);
+ return node;
+}
+function logicalExpression(operator, left, right) {
+ const node = {
+ type: "LogicalExpression",
+ operator,
+ left,
+ right
+ };
+ const defs = NODE_FIELDS.LogicalExpression;
+ validate(defs.operator, node, "operator", operator);
+ validate(defs.left, node, "left", left, 1);
+ validate(defs.right, node, "right", right, 1);
+ return node;
+}
+function memberExpression(object, property, computed = false, optional = null) {
+ const node = {
+ type: "MemberExpression",
+ object,
+ property,
+ computed,
+ optional
+ };
+ const defs = NODE_FIELDS.MemberExpression;
+ validate(defs.object, node, "object", object, 1);
+ validate(defs.property, node, "property", property, 1);
+ validate(defs.computed, node, "computed", computed);
+ validate(defs.optional, node, "optional", optional);
+ return node;
+}
+function newExpression(callee, _arguments) {
+ const node = {
+ type: "NewExpression",
+ callee,
+ arguments: _arguments
+ };
+ const defs = NODE_FIELDS.NewExpression;
+ validate(defs.callee, node, "callee", callee, 1);
+ validate(defs.arguments, node, "arguments", _arguments, 1);
+ return node;
+}
+function program(body, directives = [], sourceType = "script", interpreter = null) {
+ const node = {
+ type: "Program",
+ body,
+ directives,
+ sourceType,
+ interpreter
+ };
+ const defs = NODE_FIELDS.Program;
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.directives, node, "directives", directives, 1);
+ validate(defs.sourceType, node, "sourceType", sourceType);
+ validate(defs.interpreter, node, "interpreter", interpreter, 1);
+ return node;
+}
+function objectExpression(properties) {
+ const node = {
+ type: "ObjectExpression",
+ properties
+ };
+ const defs = NODE_FIELDS.ObjectExpression;
+ validate(defs.properties, node, "properties", properties, 1);
+ return node;
+}
+function objectMethod(kind = "method", key, params, body, computed = false, generator = false, async = false) {
+ const node = {
+ type: "ObjectMethod",
+ kind,
+ key,
+ params,
+ body,
+ computed,
+ generator,
+ async
+ };
+ const defs = NODE_FIELDS.ObjectMethod;
+ validate(defs.kind, node, "kind", kind);
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.params, node, "params", params, 1);
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.computed, node, "computed", computed);
+ validate(defs.generator, node, "generator", generator);
+ validate(defs.async, node, "async", async);
+ return node;
+}
+function objectProperty(key, value, computed = false, shorthand = false, decorators = null) {
+ const node = {
+ type: "ObjectProperty",
+ key,
+ value,
+ computed,
+ shorthand,
+ decorators
+ };
+ const defs = NODE_FIELDS.ObjectProperty;
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.value, node, "value", value, 1);
+ validate(defs.computed, node, "computed", computed);
+ validate(defs.shorthand, node, "shorthand", shorthand);
+ validate(defs.decorators, node, "decorators", decorators, 1);
+ return node;
+}
+function restElement(argument) {
+ const node = {
+ type: "RestElement",
+ argument
+ };
+ const defs = NODE_FIELDS.RestElement;
+ validate(defs.argument, node, "argument", argument, 1);
+ return node;
+}
+function returnStatement(argument = null) {
+ const node = {
+ type: "ReturnStatement",
+ argument
+ };
+ const defs = NODE_FIELDS.ReturnStatement;
+ validate(defs.argument, node, "argument", argument, 1);
+ return node;
+}
+function sequenceExpression(expressions) {
+ const node = {
+ type: "SequenceExpression",
+ expressions
+ };
+ const defs = NODE_FIELDS.SequenceExpression;
+ validate(defs.expressions, node, "expressions", expressions, 1);
+ return node;
+}
+function parenthesizedExpression(expression) {
+ const node = {
+ type: "ParenthesizedExpression",
+ expression
+ };
+ const defs = NODE_FIELDS.ParenthesizedExpression;
+ validate(defs.expression, node, "expression", expression, 1);
+ return node;
+}
+function switchCase(test = null, consequent) {
+ const node = {
+ type: "SwitchCase",
+ test,
+ consequent
+ };
+ const defs = NODE_FIELDS.SwitchCase;
+ validate(defs.test, node, "test", test, 1);
+ validate(defs.consequent, node, "consequent", consequent, 1);
+ return node;
+}
+function switchStatement(discriminant, cases) {
+ const node = {
+ type: "SwitchStatement",
+ discriminant,
+ cases
+ };
+ const defs = NODE_FIELDS.SwitchStatement;
+ validate(defs.discriminant, node, "discriminant", discriminant, 1);
+ validate(defs.cases, node, "cases", cases, 1);
+ return node;
+}
+function thisExpression() {
+ return {
+ type: "ThisExpression"
+ };
+}
+function throwStatement(argument) {
+ const node = {
+ type: "ThrowStatement",
+ argument
+ };
+ const defs = NODE_FIELDS.ThrowStatement;
+ validate(defs.argument, node, "argument", argument, 1);
+ return node;
+}
+function tryStatement(block, handler = null, finalizer = null) {
+ const node = {
+ type: "TryStatement",
+ block,
+ handler,
+ finalizer
+ };
+ const defs = NODE_FIELDS.TryStatement;
+ validate(defs.block, node, "block", block, 1);
+ validate(defs.handler, node, "handler", handler, 1);
+ validate(defs.finalizer, node, "finalizer", finalizer, 1);
+ return node;
+}
+function unaryExpression(operator, argument, prefix = true) {
+ const node = {
+ type: "UnaryExpression",
+ operator,
+ argument,
+ prefix
+ };
+ const defs = NODE_FIELDS.UnaryExpression;
+ validate(defs.operator, node, "operator", operator);
+ validate(defs.argument, node, "argument", argument, 1);
+ validate(defs.prefix, node, "prefix", prefix);
+ return node;
+}
+function updateExpression(operator, argument, prefix = false) {
+ const node = {
+ type: "UpdateExpression",
+ operator,
+ argument,
+ prefix
+ };
+ const defs = NODE_FIELDS.UpdateExpression;
+ validate(defs.operator, node, "operator", operator);
+ validate(defs.argument, node, "argument", argument, 1);
+ validate(defs.prefix, node, "prefix", prefix);
+ return node;
+}
+function variableDeclaration(kind, declarations) {
+ const node = {
+ type: "VariableDeclaration",
+ kind,
+ declarations
+ };
+ const defs = NODE_FIELDS.VariableDeclaration;
+ validate(defs.kind, node, "kind", kind);
+ validate(defs.declarations, node, "declarations", declarations, 1);
+ return node;
+}
+function variableDeclarator(id, init = null) {
+ const node = {
+ type: "VariableDeclarator",
+ id,
+ init
+ };
+ const defs = NODE_FIELDS.VariableDeclarator;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.init, node, "init", init, 1);
+ return node;
+}
+function whileStatement(test, body) {
+ const node = {
+ type: "WhileStatement",
+ test,
+ body
+ };
+ const defs = NODE_FIELDS.WhileStatement;
+ validate(defs.test, node, "test", test, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function withStatement(object, body) {
+ const node = {
+ type: "WithStatement",
+ object,
+ body
+ };
+ const defs = NODE_FIELDS.WithStatement;
+ validate(defs.object, node, "object", object, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function assignmentPattern(left, right) {
+ const node = {
+ type: "AssignmentPattern",
+ left,
+ right
+ };
+ const defs = NODE_FIELDS.AssignmentPattern;
+ validate(defs.left, node, "left", left, 1);
+ validate(defs.right, node, "right", right, 1);
+ return node;
+}
+function arrayPattern(elements) {
+ const node = {
+ type: "ArrayPattern",
+ elements
+ };
+ const defs = NODE_FIELDS.ArrayPattern;
+ validate(defs.elements, node, "elements", elements, 1);
+ return node;
+}
+function arrowFunctionExpression(params, body, async = false) {
+ const node = {
+ type: "ArrowFunctionExpression",
+ params,
+ body,
+ async,
+ expression: null
+ };
+ const defs = NODE_FIELDS.ArrowFunctionExpression;
+ validate(defs.params, node, "params", params, 1);
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.async, node, "async", async);
+ return node;
+}
+function classBody(body) {
+ const node = {
+ type: "ClassBody",
+ body
+ };
+ const defs = NODE_FIELDS.ClassBody;
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function classExpression(id = null, superClass = null, body, decorators = null) {
+ const node = {
+ type: "ClassExpression",
+ id,
+ superClass,
+ body,
+ decorators
+ };
+ const defs = NODE_FIELDS.ClassExpression;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.superClass, node, "superClass", superClass, 1);
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.decorators, node, "decorators", decorators, 1);
+ return node;
+}
+function classDeclaration(id = null, superClass = null, body, decorators = null) {
+ const node = {
+ type: "ClassDeclaration",
+ id,
+ superClass,
+ body,
+ decorators
+ };
+ const defs = NODE_FIELDS.ClassDeclaration;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.superClass, node, "superClass", superClass, 1);
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.decorators, node, "decorators", decorators, 1);
+ return node;
+}
+function exportAllDeclaration(source, attributes = null) {
+ const node = {
+ type: "ExportAllDeclaration",
+ source,
+ attributes
+ };
+ const defs = NODE_FIELDS.ExportAllDeclaration;
+ validate(defs.source, node, "source", source, 1);
+ validate(defs.attributes, node, "attributes", attributes, 1);
+ return node;
+}
+function exportDefaultDeclaration(declaration) {
+ const node = {
+ type: "ExportDefaultDeclaration",
+ declaration
+ };
+ const defs = NODE_FIELDS.ExportDefaultDeclaration;
+ validate(defs.declaration, node, "declaration", declaration, 1);
+ return node;
+}
+function exportNamedDeclaration(declaration = null, specifiers = [], source = null, attributes = null) {
+ const node = {
+ type: "ExportNamedDeclaration",
+ declaration,
+ specifiers,
+ source,
+ attributes
+ };
+ const defs = NODE_FIELDS.ExportNamedDeclaration;
+ validate(defs.declaration, node, "declaration", declaration, 1);
+ validate(defs.specifiers, node, "specifiers", specifiers, 1);
+ validate(defs.source, node, "source", source, 1);
+ validate(defs.attributes, node, "attributes", attributes, 1);
+ return node;
+}
+function exportSpecifier(local, exported) {
+ const node = {
+ type: "ExportSpecifier",
+ local,
+ exported
+ };
+ const defs = NODE_FIELDS.ExportSpecifier;
+ validate(defs.local, node, "local", local, 1);
+ validate(defs.exported, node, "exported", exported, 1);
+ return node;
+}
+function forOfStatement(left, right, body, _await = false) {
+ const node = {
+ type: "ForOfStatement",
+ left,
+ right,
+ body,
+ await: _await
+ };
+ const defs = NODE_FIELDS.ForOfStatement;
+ validate(defs.left, node, "left", left, 1);
+ validate(defs.right, node, "right", right, 1);
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.await, node, "await", _await);
+ return node;
+}
+function importDeclaration(specifiers, source, attributes = null) {
+ const node = {
+ type: "ImportDeclaration",
+ specifiers,
+ source,
+ attributes
+ };
+ const defs = NODE_FIELDS.ImportDeclaration;
+ validate(defs.specifiers, node, "specifiers", specifiers, 1);
+ validate(defs.source, node, "source", source, 1);
+ validate(defs.attributes, node, "attributes", attributes, 1);
+ return node;
+}
+function importDefaultSpecifier(local) {
+ const node = {
+ type: "ImportDefaultSpecifier",
+ local
+ };
+ const defs = NODE_FIELDS.ImportDefaultSpecifier;
+ validate(defs.local, node, "local", local, 1);
+ return node;
+}
+function importNamespaceSpecifier(local) {
+ const node = {
+ type: "ImportNamespaceSpecifier",
+ local
+ };
+ const defs = NODE_FIELDS.ImportNamespaceSpecifier;
+ validate(defs.local, node, "local", local, 1);
+ return node;
+}
+function importSpecifier(local, imported) {
+ const node = {
+ type: "ImportSpecifier",
+ local,
+ imported
+ };
+ const defs = NODE_FIELDS.ImportSpecifier;
+ validate(defs.local, node, "local", local, 1);
+ validate(defs.imported, node, "imported", imported, 1);
+ return node;
+}
+function importExpression(source, options = null) {
+ const node = {
+ type: "ImportExpression",
+ source,
+ options
+ };
+ const defs = NODE_FIELDS.ImportExpression;
+ validate(defs.source, node, "source", source, 1);
+ validate(defs.options, node, "options", options, 1);
+ return node;
+}
+function metaProperty(meta, property) {
+ const node = {
+ type: "MetaProperty",
+ meta,
+ property
+ };
+ const defs = NODE_FIELDS.MetaProperty;
+ validate(defs.meta, node, "meta", meta, 1);
+ validate(defs.property, node, "property", property, 1);
+ return node;
+}
+function classMethod(kind = "method", key, params, body, computed = false, _static = false, generator = false, async = false) {
+ const node = {
+ type: "ClassMethod",
+ kind,
+ key,
+ params,
+ body,
+ computed,
+ static: _static,
+ generator,
+ async
+ };
+ const defs = NODE_FIELDS.ClassMethod;
+ validate(defs.kind, node, "kind", kind);
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.params, node, "params", params, 1);
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.computed, node, "computed", computed);
+ validate(defs.static, node, "static", _static);
+ validate(defs.generator, node, "generator", generator);
+ validate(defs.async, node, "async", async);
+ return node;
+}
+function objectPattern(properties) {
+ const node = {
+ type: "ObjectPattern",
+ properties
+ };
+ const defs = NODE_FIELDS.ObjectPattern;
+ validate(defs.properties, node, "properties", properties, 1);
+ return node;
+}
+function spreadElement(argument) {
+ const node = {
+ type: "SpreadElement",
+ argument
+ };
+ const defs = NODE_FIELDS.SpreadElement;
+ validate(defs.argument, node, "argument", argument, 1);
+ return node;
+}
+function _super() {
+ return {
+ type: "Super"
+ };
+}
+function taggedTemplateExpression(tag, quasi) {
+ const node = {
+ type: "TaggedTemplateExpression",
+ tag,
+ quasi
+ };
+ const defs = NODE_FIELDS.TaggedTemplateExpression;
+ validate(defs.tag, node, "tag", tag, 1);
+ validate(defs.quasi, node, "quasi", quasi, 1);
+ return node;
+}
+function templateElement(value, tail = false) {
+ const node = {
+ type: "TemplateElement",
+ value,
+ tail
+ };
+ const defs = NODE_FIELDS.TemplateElement;
+ validate(defs.value, node, "value", value);
+ validate(defs.tail, node, "tail", tail);
+ return node;
+}
+function templateLiteral(quasis, expressions) {
+ const node = {
+ type: "TemplateLiteral",
+ quasis,
+ expressions
+ };
+ const defs = NODE_FIELDS.TemplateLiteral;
+ validate(defs.quasis, node, "quasis", quasis, 1);
+ validate(defs.expressions, node, "expressions", expressions, 1);
+ return node;
+}
+function yieldExpression(argument = null, delegate = false) {
+ const node = {
+ type: "YieldExpression",
+ argument,
+ delegate
+ };
+ const defs = NODE_FIELDS.YieldExpression;
+ validate(defs.argument, node, "argument", argument, 1);
+ validate(defs.delegate, node, "delegate", delegate);
+ return node;
+}
+function awaitExpression(argument) {
+ const node = {
+ type: "AwaitExpression",
+ argument
+ };
+ const defs = NODE_FIELDS.AwaitExpression;
+ validate(defs.argument, node, "argument", argument, 1);
+ return node;
+}
+function _import() {
+ return {
+ type: "Import"
+ };
+}
+function exportNamespaceSpecifier(exported) {
+ const node = {
+ type: "ExportNamespaceSpecifier",
+ exported
+ };
+ const defs = NODE_FIELDS.ExportNamespaceSpecifier;
+ validate(defs.exported, node, "exported", exported, 1);
+ return node;
+}
+function optionalMemberExpression(object, property, computed = false, optional) {
+ const node = {
+ type: "OptionalMemberExpression",
+ object,
+ property,
+ computed,
+ optional
+ };
+ const defs = NODE_FIELDS.OptionalMemberExpression;
+ validate(defs.object, node, "object", object, 1);
+ validate(defs.property, node, "property", property, 1);
+ validate(defs.computed, node, "computed", computed);
+ validate(defs.optional, node, "optional", optional);
+ return node;
+}
+function optionalCallExpression(callee, _arguments, optional) {
+ const node = {
+ type: "OptionalCallExpression",
+ callee,
+ arguments: _arguments,
+ optional
+ };
+ const defs = NODE_FIELDS.OptionalCallExpression;
+ validate(defs.callee, node, "callee", callee, 1);
+ validate(defs.arguments, node, "arguments", _arguments, 1);
+ validate(defs.optional, node, "optional", optional);
+ return node;
+}
+function classProperty(key, value = null, typeAnnotation = null, decorators = null, computed = false, _static = false) {
+ const node = {
+ type: "ClassProperty",
+ key,
+ value,
+ typeAnnotation,
+ decorators,
+ computed,
+ static: _static
+ };
+ const defs = NODE_FIELDS.ClassProperty;
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.value, node, "value", value, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ validate(defs.decorators, node, "decorators", decorators, 1);
+ validate(defs.computed, node, "computed", computed);
+ validate(defs.static, node, "static", _static);
+ return node;
+}
+function classAccessorProperty(key, value = null, typeAnnotation = null, decorators = null, computed = false, _static = false) {
+ const node = {
+ type: "ClassAccessorProperty",
+ key,
+ value,
+ typeAnnotation,
+ decorators,
+ computed,
+ static: _static
+ };
+ const defs = NODE_FIELDS.ClassAccessorProperty;
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.value, node, "value", value, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ validate(defs.decorators, node, "decorators", decorators, 1);
+ validate(defs.computed, node, "computed", computed);
+ validate(defs.static, node, "static", _static);
+ return node;
+}
+function classPrivateProperty(key, value = null, decorators = null, _static = false) {
+ const node = {
+ type: "ClassPrivateProperty",
+ key,
+ value,
+ decorators,
+ static: _static
+ };
+ const defs = NODE_FIELDS.ClassPrivateProperty;
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.value, node, "value", value, 1);
+ validate(defs.decorators, node, "decorators", decorators, 1);
+ validate(defs.static, node, "static", _static);
+ return node;
+}
+function classPrivateMethod(kind = "method", key, params, body, _static = false) {
+ const node = {
+ type: "ClassPrivateMethod",
+ kind,
+ key,
+ params,
+ body,
+ static: _static
+ };
+ const defs = NODE_FIELDS.ClassPrivateMethod;
+ validate(defs.kind, node, "kind", kind);
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.params, node, "params", params, 1);
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.static, node, "static", _static);
+ return node;
+}
+function privateName(id) {
+ const node = {
+ type: "PrivateName",
+ id
+ };
+ const defs = NODE_FIELDS.PrivateName;
+ validate(defs.id, node, "id", id, 1);
+ return node;
+}
+function staticBlock(body) {
+ const node = {
+ type: "StaticBlock",
+ body
+ };
+ const defs = NODE_FIELDS.StaticBlock;
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function importAttribute(key, value) {
+ const node = {
+ type: "ImportAttribute",
+ key,
+ value
+ };
+ const defs = NODE_FIELDS.ImportAttribute;
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.value, node, "value", value, 1);
+ return node;
+}
+function anyTypeAnnotation() {
+ return {
+ type: "AnyTypeAnnotation"
+ };
+}
+function arrayTypeAnnotation(elementType) {
+ const node = {
+ type: "ArrayTypeAnnotation",
+ elementType
+ };
+ const defs = NODE_FIELDS.ArrayTypeAnnotation;
+ validate(defs.elementType, node, "elementType", elementType, 1);
+ return node;
+}
+function booleanTypeAnnotation() {
+ return {
+ type: "BooleanTypeAnnotation"
+ };
+}
+function booleanLiteralTypeAnnotation(value) {
+ const node = {
+ type: "BooleanLiteralTypeAnnotation",
+ value
+ };
+ const defs = NODE_FIELDS.BooleanLiteralTypeAnnotation;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function nullLiteralTypeAnnotation() {
+ return {
+ type: "NullLiteralTypeAnnotation"
+ };
+}
+function classImplements(id, typeParameters = null) {
+ const node = {
+ type: "ClassImplements",
+ id,
+ typeParameters
+ };
+ const defs = NODE_FIELDS.ClassImplements;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ return node;
+}
+function declareClass(id, typeParameters = null, _extends = null, body) {
+ const node = {
+ type: "DeclareClass",
+ id,
+ typeParameters,
+ extends: _extends,
+ body
+ };
+ const defs = NODE_FIELDS.DeclareClass;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.extends, node, "extends", _extends, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function declareFunction(id) {
+ const node = {
+ type: "DeclareFunction",
+ id
+ };
+ const defs = NODE_FIELDS.DeclareFunction;
+ validate(defs.id, node, "id", id, 1);
+ return node;
+}
+function declareInterface(id, typeParameters = null, _extends = null, body) {
+ const node = {
+ type: "DeclareInterface",
+ id,
+ typeParameters,
+ extends: _extends,
+ body
+ };
+ const defs = NODE_FIELDS.DeclareInterface;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.extends, node, "extends", _extends, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function declareModule(id, body, kind = null) {
+ const node = {
+ type: "DeclareModule",
+ id,
+ body,
+ kind
+ };
+ const defs = NODE_FIELDS.DeclareModule;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.kind, node, "kind", kind);
+ return node;
+}
+function declareModuleExports(typeAnnotation) {
+ const node = {
+ type: "DeclareModuleExports",
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.DeclareModuleExports;
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function declareTypeAlias(id, typeParameters = null, right) {
+ const node = {
+ type: "DeclareTypeAlias",
+ id,
+ typeParameters,
+ right
+ };
+ const defs = NODE_FIELDS.DeclareTypeAlias;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.right, node, "right", right, 1);
+ return node;
+}
+function declareOpaqueType(id, typeParameters = null, supertype = null) {
+ const node = {
+ type: "DeclareOpaqueType",
+ id,
+ typeParameters,
+ supertype
+ };
+ const defs = NODE_FIELDS.DeclareOpaqueType;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.supertype, node, "supertype", supertype, 1);
+ return node;
+}
+function declareVariable(id) {
+ const node = {
+ type: "DeclareVariable",
+ id
+ };
+ const defs = NODE_FIELDS.DeclareVariable;
+ validate(defs.id, node, "id", id, 1);
+ return node;
+}
+function declareExportDeclaration(declaration = null, specifiers = null, source = null, attributes = null) {
+ const node = {
+ type: "DeclareExportDeclaration",
+ declaration,
+ specifiers,
+ source,
+ attributes
+ };
+ const defs = NODE_FIELDS.DeclareExportDeclaration;
+ validate(defs.declaration, node, "declaration", declaration, 1);
+ validate(defs.specifiers, node, "specifiers", specifiers, 1);
+ validate(defs.source, node, "source", source, 1);
+ validate(defs.attributes, node, "attributes", attributes, 1);
+ return node;
+}
+function declareExportAllDeclaration(source, attributes = null) {
+ const node = {
+ type: "DeclareExportAllDeclaration",
+ source,
+ attributes
+ };
+ const defs = NODE_FIELDS.DeclareExportAllDeclaration;
+ validate(defs.source, node, "source", source, 1);
+ validate(defs.attributes, node, "attributes", attributes, 1);
+ return node;
+}
+function declaredPredicate(value) {
+ const node = {
+ type: "DeclaredPredicate",
+ value
+ };
+ const defs = NODE_FIELDS.DeclaredPredicate;
+ validate(defs.value, node, "value", value, 1);
+ return node;
+}
+function existsTypeAnnotation() {
+ return {
+ type: "ExistsTypeAnnotation"
+ };
+}
+function functionTypeAnnotation(typeParameters = null, params, rest = null, returnType) {
+ const node = {
+ type: "FunctionTypeAnnotation",
+ typeParameters,
+ params,
+ rest,
+ returnType
+ };
+ const defs = NODE_FIELDS.FunctionTypeAnnotation;
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.params, node, "params", params, 1);
+ validate(defs.rest, node, "rest", rest, 1);
+ validate(defs.returnType, node, "returnType", returnType, 1);
+ return node;
+}
+function functionTypeParam(name = null, typeAnnotation) {
+ const node = {
+ type: "FunctionTypeParam",
+ name,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.FunctionTypeParam;
+ validate(defs.name, node, "name", name, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function genericTypeAnnotation(id, typeParameters = null) {
+ const node = {
+ type: "GenericTypeAnnotation",
+ id,
+ typeParameters
+ };
+ const defs = NODE_FIELDS.GenericTypeAnnotation;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ return node;
+}
+function inferredPredicate() {
+ return {
+ type: "InferredPredicate"
+ };
+}
+function interfaceExtends(id, typeParameters = null) {
+ const node = {
+ type: "InterfaceExtends",
+ id,
+ typeParameters
+ };
+ const defs = NODE_FIELDS.InterfaceExtends;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ return node;
+}
+function interfaceDeclaration(id, typeParameters = null, _extends = null, body) {
+ const node = {
+ type: "InterfaceDeclaration",
+ id,
+ typeParameters,
+ extends: _extends,
+ body
+ };
+ const defs = NODE_FIELDS.InterfaceDeclaration;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.extends, node, "extends", _extends, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function interfaceTypeAnnotation(_extends = null, body) {
+ const node = {
+ type: "InterfaceTypeAnnotation",
+ extends: _extends,
+ body
+ };
+ const defs = NODE_FIELDS.InterfaceTypeAnnotation;
+ validate(defs.extends, node, "extends", _extends, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function intersectionTypeAnnotation(types) {
+ const node = {
+ type: "IntersectionTypeAnnotation",
+ types
+ };
+ const defs = NODE_FIELDS.IntersectionTypeAnnotation;
+ validate(defs.types, node, "types", types, 1);
+ return node;
+}
+function mixedTypeAnnotation() {
+ return {
+ type: "MixedTypeAnnotation"
+ };
+}
+function emptyTypeAnnotation() {
+ return {
+ type: "EmptyTypeAnnotation"
+ };
+}
+function nullableTypeAnnotation(typeAnnotation) {
+ const node = {
+ type: "NullableTypeAnnotation",
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.NullableTypeAnnotation;
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function numberLiteralTypeAnnotation(value) {
+ const node = {
+ type: "NumberLiteralTypeAnnotation",
+ value
+ };
+ const defs = NODE_FIELDS.NumberLiteralTypeAnnotation;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function numberTypeAnnotation() {
+ return {
+ type: "NumberTypeAnnotation"
+ };
+}
+function objectTypeAnnotation(properties, indexers = [], callProperties = [], internalSlots = [], exact = false) {
+ const node = {
+ type: "ObjectTypeAnnotation",
+ properties,
+ indexers,
+ callProperties,
+ internalSlots,
+ exact
+ };
+ const defs = NODE_FIELDS.ObjectTypeAnnotation;
+ validate(defs.properties, node, "properties", properties, 1);
+ validate(defs.indexers, node, "indexers", indexers, 1);
+ validate(defs.callProperties, node, "callProperties", callProperties, 1);
+ validate(defs.internalSlots, node, "internalSlots", internalSlots, 1);
+ validate(defs.exact, node, "exact", exact);
+ return node;
+}
+function objectTypeInternalSlot(id, value, optional, _static, method) {
+ const node = {
+ type: "ObjectTypeInternalSlot",
+ id,
+ value,
+ optional,
+ static: _static,
+ method
+ };
+ const defs = NODE_FIELDS.ObjectTypeInternalSlot;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.value, node, "value", value, 1);
+ validate(defs.optional, node, "optional", optional);
+ validate(defs.static, node, "static", _static);
+ validate(defs.method, node, "method", method);
+ return node;
+}
+function objectTypeCallProperty(value) {
+ const node = {
+ type: "ObjectTypeCallProperty",
+ value,
+ static: null
+ };
+ const defs = NODE_FIELDS.ObjectTypeCallProperty;
+ validate(defs.value, node, "value", value, 1);
+ return node;
+}
+function objectTypeIndexer(id = null, key, value, variance = null) {
+ const node = {
+ type: "ObjectTypeIndexer",
+ id,
+ key,
+ value,
+ variance,
+ static: null
+ };
+ const defs = NODE_FIELDS.ObjectTypeIndexer;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.value, node, "value", value, 1);
+ validate(defs.variance, node, "variance", variance, 1);
+ return node;
+}
+function objectTypeProperty(key, value, variance = null) {
+ const node = {
+ type: "ObjectTypeProperty",
+ key,
+ value,
+ variance,
+ kind: null,
+ method: null,
+ optional: null,
+ proto: null,
+ static: null
+ };
+ const defs = NODE_FIELDS.ObjectTypeProperty;
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.value, node, "value", value, 1);
+ validate(defs.variance, node, "variance", variance, 1);
+ return node;
+}
+function objectTypeSpreadProperty(argument) {
+ const node = {
+ type: "ObjectTypeSpreadProperty",
+ argument
+ };
+ const defs = NODE_FIELDS.ObjectTypeSpreadProperty;
+ validate(defs.argument, node, "argument", argument, 1);
+ return node;
+}
+function opaqueType(id, typeParameters = null, supertype = null, impltype) {
+ const node = {
+ type: "OpaqueType",
+ id,
+ typeParameters,
+ supertype,
+ impltype
+ };
+ const defs = NODE_FIELDS.OpaqueType;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.supertype, node, "supertype", supertype, 1);
+ validate(defs.impltype, node, "impltype", impltype, 1);
+ return node;
+}
+function qualifiedTypeIdentifier(id, qualification) {
+ const node = {
+ type: "QualifiedTypeIdentifier",
+ id,
+ qualification
+ };
+ const defs = NODE_FIELDS.QualifiedTypeIdentifier;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.qualification, node, "qualification", qualification, 1);
+ return node;
+}
+function stringLiteralTypeAnnotation(value) {
+ const node = {
+ type: "StringLiteralTypeAnnotation",
+ value
+ };
+ const defs = NODE_FIELDS.StringLiteralTypeAnnotation;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function stringTypeAnnotation() {
+ return {
+ type: "StringTypeAnnotation"
+ };
+}
+function symbolTypeAnnotation() {
+ return {
+ type: "SymbolTypeAnnotation"
+ };
+}
+function thisTypeAnnotation() {
+ return {
+ type: "ThisTypeAnnotation"
+ };
+}
+function tupleTypeAnnotation(types) {
+ const node = {
+ type: "TupleTypeAnnotation",
+ types
+ };
+ const defs = NODE_FIELDS.TupleTypeAnnotation;
+ validate(defs.types, node, "types", types, 1);
+ return node;
+}
+function typeofTypeAnnotation(argument) {
+ const node = {
+ type: "TypeofTypeAnnotation",
+ argument
+ };
+ const defs = NODE_FIELDS.TypeofTypeAnnotation;
+ validate(defs.argument, node, "argument", argument, 1);
+ return node;
+}
+function typeAlias(id, typeParameters = null, right) {
+ const node = {
+ type: "TypeAlias",
+ id,
+ typeParameters,
+ right
+ };
+ const defs = NODE_FIELDS.TypeAlias;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.right, node, "right", right, 1);
+ return node;
+}
+function typeAnnotation(typeAnnotation) {
+ const node = {
+ type: "TypeAnnotation",
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TypeAnnotation;
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function typeCastExpression(expression, typeAnnotation) {
+ const node = {
+ type: "TypeCastExpression",
+ expression,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TypeCastExpression;
+ validate(defs.expression, node, "expression", expression, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function typeParameter(bound = null, _default = null, variance = null) {
+ const node = {
+ type: "TypeParameter",
+ bound,
+ default: _default,
+ variance,
+ name: null
+ };
+ const defs = NODE_FIELDS.TypeParameter;
+ validate(defs.bound, node, "bound", bound, 1);
+ validate(defs.default, node, "default", _default, 1);
+ validate(defs.variance, node, "variance", variance, 1);
+ return node;
+}
+function typeParameterDeclaration(params) {
+ const node = {
+ type: "TypeParameterDeclaration",
+ params
+ };
+ const defs = NODE_FIELDS.TypeParameterDeclaration;
+ validate(defs.params, node, "params", params, 1);
+ return node;
+}
+function typeParameterInstantiation(params) {
+ const node = {
+ type: "TypeParameterInstantiation",
+ params
+ };
+ const defs = NODE_FIELDS.TypeParameterInstantiation;
+ validate(defs.params, node, "params", params, 1);
+ return node;
+}
+function unionTypeAnnotation(types) {
+ const node = {
+ type: "UnionTypeAnnotation",
+ types
+ };
+ const defs = NODE_FIELDS.UnionTypeAnnotation;
+ validate(defs.types, node, "types", types, 1);
+ return node;
+}
+function variance(kind) {
+ const node = {
+ type: "Variance",
+ kind
+ };
+ const defs = NODE_FIELDS.Variance;
+ validate(defs.kind, node, "kind", kind);
+ return node;
+}
+function voidTypeAnnotation() {
+ return {
+ type: "VoidTypeAnnotation"
+ };
+}
+function enumDeclaration(id, body) {
+ const node = {
+ type: "EnumDeclaration",
+ id,
+ body
+ };
+ const defs = NODE_FIELDS.EnumDeclaration;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function enumBooleanBody(members) {
+ const node = {
+ type: "EnumBooleanBody",
+ members,
+ explicitType: null,
+ hasUnknownMembers: null
+ };
+ const defs = NODE_FIELDS.EnumBooleanBody;
+ validate(defs.members, node, "members", members, 1);
+ return node;
+}
+function enumNumberBody(members) {
+ const node = {
+ type: "EnumNumberBody",
+ members,
+ explicitType: null,
+ hasUnknownMembers: null
+ };
+ const defs = NODE_FIELDS.EnumNumberBody;
+ validate(defs.members, node, "members", members, 1);
+ return node;
+}
+function enumStringBody(members) {
+ const node = {
+ type: "EnumStringBody",
+ members,
+ explicitType: null,
+ hasUnknownMembers: null
+ };
+ const defs = NODE_FIELDS.EnumStringBody;
+ validate(defs.members, node, "members", members, 1);
+ return node;
+}
+function enumSymbolBody(members) {
+ const node = {
+ type: "EnumSymbolBody",
+ members,
+ hasUnknownMembers: null
+ };
+ const defs = NODE_FIELDS.EnumSymbolBody;
+ validate(defs.members, node, "members", members, 1);
+ return node;
+}
+function enumBooleanMember(id) {
+ const node = {
+ type: "EnumBooleanMember",
+ id,
+ init: null
+ };
+ const defs = NODE_FIELDS.EnumBooleanMember;
+ validate(defs.id, node, "id", id, 1);
+ return node;
+}
+function enumNumberMember(id, init) {
+ const node = {
+ type: "EnumNumberMember",
+ id,
+ init
+ };
+ const defs = NODE_FIELDS.EnumNumberMember;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.init, node, "init", init, 1);
+ return node;
+}
+function enumStringMember(id, init) {
+ const node = {
+ type: "EnumStringMember",
+ id,
+ init
+ };
+ const defs = NODE_FIELDS.EnumStringMember;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.init, node, "init", init, 1);
+ return node;
+}
+function enumDefaultedMember(id) {
+ const node = {
+ type: "EnumDefaultedMember",
+ id
+ };
+ const defs = NODE_FIELDS.EnumDefaultedMember;
+ validate(defs.id, node, "id", id, 1);
+ return node;
+}
+function indexedAccessType(objectType, indexType) {
+ const node = {
+ type: "IndexedAccessType",
+ objectType,
+ indexType
+ };
+ const defs = NODE_FIELDS.IndexedAccessType;
+ validate(defs.objectType, node, "objectType", objectType, 1);
+ validate(defs.indexType, node, "indexType", indexType, 1);
+ return node;
+}
+function optionalIndexedAccessType(objectType, indexType) {
+ const node = {
+ type: "OptionalIndexedAccessType",
+ objectType,
+ indexType,
+ optional: null
+ };
+ const defs = NODE_FIELDS.OptionalIndexedAccessType;
+ validate(defs.objectType, node, "objectType", objectType, 1);
+ validate(defs.indexType, node, "indexType", indexType, 1);
+ return node;
+}
+function jsxAttribute(name, value = null) {
+ const node = {
+ type: "JSXAttribute",
+ name,
+ value
+ };
+ const defs = NODE_FIELDS.JSXAttribute;
+ validate(defs.name, node, "name", name, 1);
+ validate(defs.value, node, "value", value, 1);
+ return node;
+}
+function jsxClosingElement(name) {
+ const node = {
+ type: "JSXClosingElement",
+ name
+ };
+ const defs = NODE_FIELDS.JSXClosingElement;
+ validate(defs.name, node, "name", name, 1);
+ return node;
+}
+function jsxElement(openingElement, closingElement = null, children, selfClosing = null) {
+ const node = {
+ type: "JSXElement",
+ openingElement,
+ closingElement,
+ children,
+ selfClosing
+ };
+ const defs = NODE_FIELDS.JSXElement;
+ validate(defs.openingElement, node, "openingElement", openingElement, 1);
+ validate(defs.closingElement, node, "closingElement", closingElement, 1);
+ validate(defs.children, node, "children", children, 1);
+ validate(defs.selfClosing, node, "selfClosing", selfClosing);
+ return node;
+}
+function jsxEmptyExpression() {
+ return {
+ type: "JSXEmptyExpression"
+ };
+}
+function jsxExpressionContainer(expression) {
+ const node = {
+ type: "JSXExpressionContainer",
+ expression
+ };
+ const defs = NODE_FIELDS.JSXExpressionContainer;
+ validate(defs.expression, node, "expression", expression, 1);
+ return node;
+}
+function jsxSpreadChild(expression) {
+ const node = {
+ type: "JSXSpreadChild",
+ expression
+ };
+ const defs = NODE_FIELDS.JSXSpreadChild;
+ validate(defs.expression, node, "expression", expression, 1);
+ return node;
+}
+function jsxIdentifier(name) {
+ const node = {
+ type: "JSXIdentifier",
+ name
+ };
+ const defs = NODE_FIELDS.JSXIdentifier;
+ validate(defs.name, node, "name", name);
+ return node;
+}
+function jsxMemberExpression(object, property) {
+ const node = {
+ type: "JSXMemberExpression",
+ object,
+ property
+ };
+ const defs = NODE_FIELDS.JSXMemberExpression;
+ validate(defs.object, node, "object", object, 1);
+ validate(defs.property, node, "property", property, 1);
+ return node;
+}
+function jsxNamespacedName(namespace, name) {
+ const node = {
+ type: "JSXNamespacedName",
+ namespace,
+ name
+ };
+ const defs = NODE_FIELDS.JSXNamespacedName;
+ validate(defs.namespace, node, "namespace", namespace, 1);
+ validate(defs.name, node, "name", name, 1);
+ return node;
+}
+function jsxOpeningElement(name, attributes, selfClosing = false) {
+ const node = {
+ type: "JSXOpeningElement",
+ name,
+ attributes,
+ selfClosing
+ };
+ const defs = NODE_FIELDS.JSXOpeningElement;
+ validate(defs.name, node, "name", name, 1);
+ validate(defs.attributes, node, "attributes", attributes, 1);
+ validate(defs.selfClosing, node, "selfClosing", selfClosing);
+ return node;
+}
+function jsxSpreadAttribute(argument) {
+ const node = {
+ type: "JSXSpreadAttribute",
+ argument
+ };
+ const defs = NODE_FIELDS.JSXSpreadAttribute;
+ validate(defs.argument, node, "argument", argument, 1);
+ return node;
+}
+function jsxText(value) {
+ const node = {
+ type: "JSXText",
+ value
+ };
+ const defs = NODE_FIELDS.JSXText;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function jsxFragment(openingFragment, closingFragment, children) {
+ const node = {
+ type: "JSXFragment",
+ openingFragment,
+ closingFragment,
+ children
+ };
+ const defs = NODE_FIELDS.JSXFragment;
+ validate(defs.openingFragment, node, "openingFragment", openingFragment, 1);
+ validate(defs.closingFragment, node, "closingFragment", closingFragment, 1);
+ validate(defs.children, node, "children", children, 1);
+ return node;
+}
+function jsxOpeningFragment() {
+ return {
+ type: "JSXOpeningFragment"
+ };
+}
+function jsxClosingFragment() {
+ return {
+ type: "JSXClosingFragment"
+ };
+}
+function noop() {
+ return {
+ type: "Noop"
+ };
+}
+function placeholder(expectedNode, name) {
+ const node = {
+ type: "Placeholder",
+ expectedNode,
+ name
+ };
+ const defs = NODE_FIELDS.Placeholder;
+ validate(defs.expectedNode, node, "expectedNode", expectedNode);
+ validate(defs.name, node, "name", name, 1);
+ return node;
+}
+function v8IntrinsicIdentifier(name) {
+ const node = {
+ type: "V8IntrinsicIdentifier",
+ name
+ };
+ const defs = NODE_FIELDS.V8IntrinsicIdentifier;
+ validate(defs.name, node, "name", name);
+ return node;
+}
+function argumentPlaceholder() {
+ return {
+ type: "ArgumentPlaceholder"
+ };
+}
+function bindExpression(object, callee) {
+ const node = {
+ type: "BindExpression",
+ object,
+ callee
+ };
+ const defs = NODE_FIELDS.BindExpression;
+ validate(defs.object, node, "object", object, 1);
+ validate(defs.callee, node, "callee", callee, 1);
+ return node;
+}
+function decorator(expression) {
+ const node = {
+ type: "Decorator",
+ expression
+ };
+ const defs = NODE_FIELDS.Decorator;
+ validate(defs.expression, node, "expression", expression, 1);
+ return node;
+}
+function doExpression(body, async = false) {
+ const node = {
+ type: "DoExpression",
+ body,
+ async
+ };
+ const defs = NODE_FIELDS.DoExpression;
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.async, node, "async", async);
+ return node;
+}
+function exportDefaultSpecifier(exported) {
+ const node = {
+ type: "ExportDefaultSpecifier",
+ exported
+ };
+ const defs = NODE_FIELDS.ExportDefaultSpecifier;
+ validate(defs.exported, node, "exported", exported, 1);
+ return node;
+}
+function recordExpression(properties) {
+ const node = {
+ type: "RecordExpression",
+ properties
+ };
+ const defs = NODE_FIELDS.RecordExpression;
+ validate(defs.properties, node, "properties", properties, 1);
+ return node;
+}
+function tupleExpression(elements = []) {
+ const node = {
+ type: "TupleExpression",
+ elements
+ };
+ const defs = NODE_FIELDS.TupleExpression;
+ validate(defs.elements, node, "elements", elements, 1);
+ return node;
+}
+function decimalLiteral(value) {
+ const node = {
+ type: "DecimalLiteral",
+ value
+ };
+ const defs = NODE_FIELDS.DecimalLiteral;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function moduleExpression(body) {
+ const node = {
+ type: "ModuleExpression",
+ body
+ };
+ const defs = NODE_FIELDS.ModuleExpression;
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function topicReference() {
+ return {
+ type: "TopicReference"
+ };
+}
+function pipelineTopicExpression(expression) {
+ const node = {
+ type: "PipelineTopicExpression",
+ expression
+ };
+ const defs = NODE_FIELDS.PipelineTopicExpression;
+ validate(defs.expression, node, "expression", expression, 1);
+ return node;
+}
+function pipelineBareFunction(callee) {
+ const node = {
+ type: "PipelineBareFunction",
+ callee
+ };
+ const defs = NODE_FIELDS.PipelineBareFunction;
+ validate(defs.callee, node, "callee", callee, 1);
+ return node;
+}
+function pipelinePrimaryTopicReference() {
+ return {
+ type: "PipelinePrimaryTopicReference"
+ };
+}
+function voidPattern() {
+ return {
+ type: "VoidPattern"
+ };
+}
+function tsParameterProperty(parameter) {
+ const node = {
+ type: "TSParameterProperty",
+ parameter
+ };
+ const defs = NODE_FIELDS.TSParameterProperty;
+ validate(defs.parameter, node, "parameter", parameter, 1);
+ return node;
+}
+function tsDeclareFunction(id = null, typeParameters = null, params, returnType = null) {
+ const node = {
+ type: "TSDeclareFunction",
+ id,
+ typeParameters,
+ params,
+ returnType
+ };
+ const defs = NODE_FIELDS.TSDeclareFunction;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.params, node, "params", params, 1);
+ validate(defs.returnType, node, "returnType", returnType, 1);
+ return node;
+}
+function tsDeclareMethod(decorators = null, key, typeParameters = null, params, returnType = null) {
+ const node = {
+ type: "TSDeclareMethod",
+ decorators,
+ key,
+ typeParameters,
+ params,
+ returnType
+ };
+ const defs = NODE_FIELDS.TSDeclareMethod;
+ validate(defs.decorators, node, "decorators", decorators, 1);
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.params, node, "params", params, 1);
+ validate(defs.returnType, node, "returnType", returnType, 1);
+ return node;
+}
+function tsQualifiedName(left, right) {
+ const node = {
+ type: "TSQualifiedName",
+ left,
+ right
+ };
+ const defs = NODE_FIELDS.TSQualifiedName;
+ validate(defs.left, node, "left", left, 1);
+ validate(defs.right, node, "right", right, 1);
+ return node;
+}
+function tsCallSignatureDeclaration(typeParameters = null, parameters, typeAnnotation = null) {
+ const node = {
+ type: "TSCallSignatureDeclaration",
+ typeParameters,
+ parameters,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSCallSignatureDeclaration;
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.parameters, node, "parameters", parameters, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsConstructSignatureDeclaration(typeParameters = null, parameters, typeAnnotation = null) {
+ const node = {
+ type: "TSConstructSignatureDeclaration",
+ typeParameters,
+ parameters,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSConstructSignatureDeclaration;
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.parameters, node, "parameters", parameters, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsPropertySignature(key, typeAnnotation = null) {
+ const node = {
+ type: "TSPropertySignature",
+ key,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSPropertySignature;
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsMethodSignature(key, typeParameters = null, parameters, typeAnnotation = null) {
+ const node = {
+ type: "TSMethodSignature",
+ key,
+ typeParameters,
+ parameters,
+ typeAnnotation,
+ kind: null
+ };
+ const defs = NODE_FIELDS.TSMethodSignature;
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.parameters, node, "parameters", parameters, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsIndexSignature(parameters, typeAnnotation = null) {
+ const node = {
+ type: "TSIndexSignature",
+ parameters,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSIndexSignature;
+ validate(defs.parameters, node, "parameters", parameters, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsAnyKeyword() {
+ return {
+ type: "TSAnyKeyword"
+ };
+}
+function tsBooleanKeyword() {
+ return {
+ type: "TSBooleanKeyword"
+ };
+}
+function tsBigIntKeyword() {
+ return {
+ type: "TSBigIntKeyword"
+ };
+}
+function tsIntrinsicKeyword() {
+ return {
+ type: "TSIntrinsicKeyword"
+ };
+}
+function tsNeverKeyword() {
+ return {
+ type: "TSNeverKeyword"
+ };
+}
+function tsNullKeyword() {
+ return {
+ type: "TSNullKeyword"
+ };
+}
+function tsNumberKeyword() {
+ return {
+ type: "TSNumberKeyword"
+ };
+}
+function tsObjectKeyword() {
+ return {
+ type: "TSObjectKeyword"
+ };
+}
+function tsStringKeyword() {
+ return {
+ type: "TSStringKeyword"
+ };
+}
+function tsSymbolKeyword() {
+ return {
+ type: "TSSymbolKeyword"
+ };
+}
+function tsUndefinedKeyword() {
+ return {
+ type: "TSUndefinedKeyword"
+ };
+}
+function tsUnknownKeyword() {
+ return {
+ type: "TSUnknownKeyword"
+ };
+}
+function tsVoidKeyword() {
+ return {
+ type: "TSVoidKeyword"
+ };
+}
+function tsThisType() {
+ return {
+ type: "TSThisType"
+ };
+}
+function tsFunctionType(typeParameters = null, parameters, typeAnnotation = null) {
+ const node = {
+ type: "TSFunctionType",
+ typeParameters,
+ parameters,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSFunctionType;
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.parameters, node, "parameters", parameters, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsConstructorType(typeParameters = null, parameters, typeAnnotation = null) {
+ const node = {
+ type: "TSConstructorType",
+ typeParameters,
+ parameters,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSConstructorType;
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.parameters, node, "parameters", parameters, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsTypeReference(typeName, typeParameters = null) {
+ const node = {
+ type: "TSTypeReference",
+ typeName,
+ typeParameters
+ };
+ const defs = NODE_FIELDS.TSTypeReference;
+ validate(defs.typeName, node, "typeName", typeName, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ return node;
+}
+function tsTypePredicate(parameterName, typeAnnotation = null, asserts = null) {
+ const node = {
+ type: "TSTypePredicate",
+ parameterName,
+ typeAnnotation,
+ asserts
+ };
+ const defs = NODE_FIELDS.TSTypePredicate;
+ validate(defs.parameterName, node, "parameterName", parameterName, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ validate(defs.asserts, node, "asserts", asserts);
+ return node;
+}
+function tsTypeQuery(exprName, typeParameters = null) {
+ const node = {
+ type: "TSTypeQuery",
+ exprName,
+ typeParameters
+ };
+ const defs = NODE_FIELDS.TSTypeQuery;
+ validate(defs.exprName, node, "exprName", exprName, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ return node;
+}
+function tsTypeLiteral(members) {
+ const node = {
+ type: "TSTypeLiteral",
+ members
+ };
+ const defs = NODE_FIELDS.TSTypeLiteral;
+ validate(defs.members, node, "members", members, 1);
+ return node;
+}
+function tsArrayType(elementType) {
+ const node = {
+ type: "TSArrayType",
+ elementType
+ };
+ const defs = NODE_FIELDS.TSArrayType;
+ validate(defs.elementType, node, "elementType", elementType, 1);
+ return node;
+}
+function tsTupleType(elementTypes) {
+ const node = {
+ type: "TSTupleType",
+ elementTypes
+ };
+ const defs = NODE_FIELDS.TSTupleType;
+ validate(defs.elementTypes, node, "elementTypes", elementTypes, 1);
+ return node;
+}
+function tsOptionalType(typeAnnotation) {
+ const node = {
+ type: "TSOptionalType",
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSOptionalType;
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsRestType(typeAnnotation) {
+ const node = {
+ type: "TSRestType",
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSRestType;
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsNamedTupleMember(label, elementType, optional = false) {
+ const node = {
+ type: "TSNamedTupleMember",
+ label,
+ elementType,
+ optional
+ };
+ const defs = NODE_FIELDS.TSNamedTupleMember;
+ validate(defs.label, node, "label", label, 1);
+ validate(defs.elementType, node, "elementType", elementType, 1);
+ validate(defs.optional, node, "optional", optional);
+ return node;
+}
+function tsUnionType(types) {
+ const node = {
+ type: "TSUnionType",
+ types
+ };
+ const defs = NODE_FIELDS.TSUnionType;
+ validate(defs.types, node, "types", types, 1);
+ return node;
+}
+function tsIntersectionType(types) {
+ const node = {
+ type: "TSIntersectionType",
+ types
+ };
+ const defs = NODE_FIELDS.TSIntersectionType;
+ validate(defs.types, node, "types", types, 1);
+ return node;
+}
+function tsConditionalType(checkType, extendsType, trueType, falseType) {
+ const node = {
+ type: "TSConditionalType",
+ checkType,
+ extendsType,
+ trueType,
+ falseType
+ };
+ const defs = NODE_FIELDS.TSConditionalType;
+ validate(defs.checkType, node, "checkType", checkType, 1);
+ validate(defs.extendsType, node, "extendsType", extendsType, 1);
+ validate(defs.trueType, node, "trueType", trueType, 1);
+ validate(defs.falseType, node, "falseType", falseType, 1);
+ return node;
+}
+function tsInferType(typeParameter) {
+ const node = {
+ type: "TSInferType",
+ typeParameter
+ };
+ const defs = NODE_FIELDS.TSInferType;
+ validate(defs.typeParameter, node, "typeParameter", typeParameter, 1);
+ return node;
+}
+function tsParenthesizedType(typeAnnotation) {
+ const node = {
+ type: "TSParenthesizedType",
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSParenthesizedType;
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsTypeOperator(typeAnnotation, operator = "keyof") {
+ const node = {
+ type: "TSTypeOperator",
+ typeAnnotation,
+ operator
+ };
+ const defs = NODE_FIELDS.TSTypeOperator;
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ validate(defs.operator, node, "operator", operator);
+ return node;
+}
+function tsIndexedAccessType(objectType, indexType) {
+ const node = {
+ type: "TSIndexedAccessType",
+ objectType,
+ indexType
+ };
+ const defs = NODE_FIELDS.TSIndexedAccessType;
+ validate(defs.objectType, node, "objectType", objectType, 1);
+ validate(defs.indexType, node, "indexType", indexType, 1);
+ return node;
+}
+function tsMappedType(typeParameter, typeAnnotation = null, nameType = null) {
+ const node = {
+ type: "TSMappedType",
+ typeParameter,
+ typeAnnotation,
+ nameType
+ };
+ const defs = NODE_FIELDS.TSMappedType;
+ validate(defs.typeParameter, node, "typeParameter", typeParameter, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ validate(defs.nameType, node, "nameType", nameType, 1);
+ return node;
+}
+function tsTemplateLiteralType(quasis, types) {
+ const node = {
+ type: "TSTemplateLiteralType",
+ quasis,
+ types
+ };
+ const defs = NODE_FIELDS.TSTemplateLiteralType;
+ validate(defs.quasis, node, "quasis", quasis, 1);
+ validate(defs.types, node, "types", types, 1);
+ return node;
+}
+function tsLiteralType(literal) {
+ const node = {
+ type: "TSLiteralType",
+ literal
+ };
+ const defs = NODE_FIELDS.TSLiteralType;
+ validate(defs.literal, node, "literal", literal, 1);
+ return node;
+}
+function tsExpressionWithTypeArguments(expression, typeParameters = null) {
+ const node = {
+ type: "TSExpressionWithTypeArguments",
+ expression,
+ typeParameters
+ };
+ const defs = NODE_FIELDS.TSExpressionWithTypeArguments;
+ validate(defs.expression, node, "expression", expression, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ return node;
+}
+function tsInterfaceDeclaration(id, typeParameters = null, _extends = null, body) {
+ const node = {
+ type: "TSInterfaceDeclaration",
+ id,
+ typeParameters,
+ extends: _extends,
+ body
+ };
+ const defs = NODE_FIELDS.TSInterfaceDeclaration;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.extends, node, "extends", _extends, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function tsInterfaceBody(body) {
+ const node = {
+ type: "TSInterfaceBody",
+ body
+ };
+ const defs = NODE_FIELDS.TSInterfaceBody;
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function tsTypeAliasDeclaration(id, typeParameters = null, typeAnnotation) {
+ const node = {
+ type: "TSTypeAliasDeclaration",
+ id,
+ typeParameters,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSTypeAliasDeclaration;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsInstantiationExpression(expression, typeParameters = null) {
+ const node = {
+ type: "TSInstantiationExpression",
+ expression,
+ typeParameters
+ };
+ const defs = NODE_FIELDS.TSInstantiationExpression;
+ validate(defs.expression, node, "expression", expression, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ return node;
+}
+function tsAsExpression(expression, typeAnnotation) {
+ const node = {
+ type: "TSAsExpression",
+ expression,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSAsExpression;
+ validate(defs.expression, node, "expression", expression, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsSatisfiesExpression(expression, typeAnnotation) {
+ const node = {
+ type: "TSSatisfiesExpression",
+ expression,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSSatisfiesExpression;
+ validate(defs.expression, node, "expression", expression, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsTypeAssertion(typeAnnotation, expression) {
+ const node = {
+ type: "TSTypeAssertion",
+ typeAnnotation,
+ expression
+ };
+ const defs = NODE_FIELDS.TSTypeAssertion;
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ validate(defs.expression, node, "expression", expression, 1);
+ return node;
+}
+function tsEnumBody(members) {
+ const node = {
+ type: "TSEnumBody",
+ members
+ };
+ const defs = NODE_FIELDS.TSEnumBody;
+ validate(defs.members, node, "members", members, 1);
+ return node;
+}
+function tsEnumDeclaration(id, members) {
+ const node = {
+ type: "TSEnumDeclaration",
+ id,
+ members
+ };
+ const defs = NODE_FIELDS.TSEnumDeclaration;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.members, node, "members", members, 1);
+ return node;
+}
+function tsEnumMember(id, initializer = null) {
+ const node = {
+ type: "TSEnumMember",
+ id,
+ initializer
+ };
+ const defs = NODE_FIELDS.TSEnumMember;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.initializer, node, "initializer", initializer, 1);
+ return node;
+}
+function tsModuleDeclaration(id, body) {
+ const node = {
+ type: "TSModuleDeclaration",
+ id,
+ body,
+ kind: null
+ };
+ const defs = NODE_FIELDS.TSModuleDeclaration;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function tsModuleBlock(body) {
+ const node = {
+ type: "TSModuleBlock",
+ body
+ };
+ const defs = NODE_FIELDS.TSModuleBlock;
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function tsImportType(argument, qualifier = null, typeParameters = null) {
+ const node = {
+ type: "TSImportType",
+ argument,
+ qualifier,
+ typeParameters
+ };
+ const defs = NODE_FIELDS.TSImportType;
+ validate(defs.argument, node, "argument", argument, 1);
+ validate(defs.qualifier, node, "qualifier", qualifier, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ return node;
+}
+function tsImportEqualsDeclaration(id, moduleReference) {
+ const node = {
+ type: "TSImportEqualsDeclaration",
+ id,
+ moduleReference,
+ isExport: null
+ };
+ const defs = NODE_FIELDS.TSImportEqualsDeclaration;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.moduleReference, node, "moduleReference", moduleReference, 1);
+ return node;
+}
+function tsExternalModuleReference(expression) {
+ const node = {
+ type: "TSExternalModuleReference",
+ expression
+ };
+ const defs = NODE_FIELDS.TSExternalModuleReference;
+ validate(defs.expression, node, "expression", expression, 1);
+ return node;
+}
+function tsNonNullExpression(expression) {
+ const node = {
+ type: "TSNonNullExpression",
+ expression
+ };
+ const defs = NODE_FIELDS.TSNonNullExpression;
+ validate(defs.expression, node, "expression", expression, 1);
+ return node;
+}
+function tsExportAssignment(expression) {
+ const node = {
+ type: "TSExportAssignment",
+ expression
+ };
+ const defs = NODE_FIELDS.TSExportAssignment;
+ validate(defs.expression, node, "expression", expression, 1);
+ return node;
+}
+function tsNamespaceExportDeclaration(id) {
+ const node = {
+ type: "TSNamespaceExportDeclaration",
+ id
+ };
+ const defs = NODE_FIELDS.TSNamespaceExportDeclaration;
+ validate(defs.id, node, "id", id, 1);
+ return node;
+}
+function tsTypeAnnotation(typeAnnotation) {
+ const node = {
+ type: "TSTypeAnnotation",
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSTypeAnnotation;
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsTypeParameterInstantiation(params) {
+ const node = {
+ type: "TSTypeParameterInstantiation",
+ params
+ };
+ const defs = NODE_FIELDS.TSTypeParameterInstantiation;
+ validate(defs.params, node, "params", params, 1);
+ return node;
+}
+function tsTypeParameterDeclaration(params) {
+ const node = {
+ type: "TSTypeParameterDeclaration",
+ params
+ };
+ const defs = NODE_FIELDS.TSTypeParameterDeclaration;
+ validate(defs.params, node, "params", params, 1);
+ return node;
+}
+function tsTypeParameter(constraint = null, _default = null, name) {
+ const node = {
+ type: "TSTypeParameter",
+ constraint,
+ default: _default,
+ name
+ };
+ const defs = NODE_FIELDS.TSTypeParameter;
+ validate(defs.constraint, node, "constraint", constraint, 1);
+ validate(defs.default, node, "default", _default, 1);
+ validate(defs.name, node, "name", name);
+ return node;
+}
+function NumberLiteral(value) {
+ (0, _deprecationWarning.default)("NumberLiteral", "NumericLiteral", "The node type ");
+ return numericLiteral(value);
+}
+function RegexLiteral(pattern, flags = "") {
+ (0, _deprecationWarning.default)("RegexLiteral", "RegExpLiteral", "The node type ");
+ return regExpLiteral(pattern, flags);
+}
+function RestProperty(argument) {
+ (0, _deprecationWarning.default)("RestProperty", "RestElement", "The node type ");
+ return restElement(argument);
+}
+function SpreadProperty(argument) {
+ (0, _deprecationWarning.default)("SpreadProperty", "SpreadElement", "The node type ");
+ return spreadElement(argument);
+}
+
+//# sourceMappingURL=lowercase.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/builders/generated/lowercase.js.map b/vanilla/node_modules/@babel/types/lib/builders/generated/lowercase.js.map
new file mode 100644
index 0000000..4ee64e5
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/builders/generated/lowercase.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_validate","require","_deprecationWarning","utils","validateInternal","validate","NODE_FIELDS","bigIntLiteral","value","toString","node","type","defs","BigIntLiteral","arrayExpression","elements","ArrayExpression","assignmentExpression","operator","left","right","AssignmentExpression","binaryExpression","BinaryExpression","interpreterDirective","InterpreterDirective","directive","Directive","directiveLiteral","DirectiveLiteral","blockStatement","body","directives","BlockStatement","breakStatement","label","BreakStatement","callExpression","callee","_arguments","arguments","CallExpression","catchClause","param","CatchClause","conditionalExpression","test","consequent","alternate","ConditionalExpression","continueStatement","ContinueStatement","debuggerStatement","doWhileStatement","DoWhileStatement","emptyStatement","expressionStatement","expression","ExpressionStatement","file","program","comments","tokens","File","forInStatement","ForInStatement","forStatement","init","update","ForStatement","functionDeclaration","id","params","generator","async","FunctionDeclaration","functionExpression","FunctionExpression","identifier","name","Identifier","ifStatement","IfStatement","labeledStatement","LabeledStatement","stringLiteral","StringLiteral","numericLiteral","NumericLiteral","nullLiteral","booleanLiteral","BooleanLiteral","regExpLiteral","pattern","flags","RegExpLiteral","logicalExpression","LogicalExpression","memberExpression","object","property","computed","optional","MemberExpression","newExpression","NewExpression","sourceType","interpreter","Program","objectExpression","properties","ObjectExpression","objectMethod","kind","key","ObjectMethod","objectProperty","shorthand","decorators","ObjectProperty","restElement","argument","RestElement","returnStatement","ReturnStatement","sequenceExpression","expressions","SequenceExpression","parenthesizedExpression","ParenthesizedExpression","switchCase","SwitchCase","switchStatement","discriminant","cases","SwitchStatement","thisExpression","throwStatement","ThrowStatement","tryStatement","block","handler","finalizer","TryStatement","unaryExpression","prefix","UnaryExpression","updateExpression","UpdateExpression","variableDeclaration","declarations","VariableDeclaration","variableDeclarator","VariableDeclarator","whileStatement","WhileStatement","withStatement","WithStatement","assignmentPattern","AssignmentPattern","arrayPattern","ArrayPattern","arrowFunctionExpression","ArrowFunctionExpression","classBody","ClassBody","classExpression","superClass","ClassExpression","classDeclaration","ClassDeclaration","exportAllDeclaration","source","attributes","ExportAllDeclaration","exportDefaultDeclaration","declaration","ExportDefaultDeclaration","exportNamedDeclaration","specifiers","ExportNamedDeclaration","exportSpecifier","local","exported","ExportSpecifier","forOfStatement","_await","await","ForOfStatement","importDeclaration","ImportDeclaration","importDefaultSpecifier","ImportDefaultSpecifier","importNamespaceSpecifier","ImportNamespaceSpecifier","importSpecifier","imported","ImportSpecifier","importExpression","options","ImportExpression","metaProperty","meta","MetaProperty","classMethod","_static","static","ClassMethod","objectPattern","ObjectPattern","spreadElement","SpreadElement","_super","taggedTemplateExpression","tag","quasi","TaggedTemplateExpression","templateElement","tail","TemplateElement","templateLiteral","quasis","TemplateLiteral","yieldExpression","delegate","YieldExpression","awaitExpression","AwaitExpression","_import","exportNamespaceSpecifier","ExportNamespaceSpecifier","optionalMemberExpression","OptionalMemberExpression","optionalCallExpression","OptionalCallExpression","classProperty","typeAnnotation","ClassProperty","classAccessorProperty","ClassAccessorProperty","classPrivateProperty","ClassPrivateProperty","classPrivateMethod","ClassPrivateMethod","privateName","PrivateName","staticBlock","StaticBlock","importAttribute","ImportAttribute","anyTypeAnnotation","arrayTypeAnnotation","elementType","ArrayTypeAnnotation","booleanTypeAnnotation","booleanLiteralTypeAnnotation","BooleanLiteralTypeAnnotation","nullLiteralTypeAnnotation","classImplements","typeParameters","ClassImplements","declareClass","_extends","extends","DeclareClass","declareFunction","DeclareFunction","declareInterface","DeclareInterface","declareModule","DeclareModule","declareModuleExports","DeclareModuleExports","declareTypeAlias","DeclareTypeAlias","declareOpaqueType","supertype","DeclareOpaqueType","declareVariable","DeclareVariable","declareExportDeclaration","DeclareExportDeclaration","declareExportAllDeclaration","DeclareExportAllDeclaration","declaredPredicate","DeclaredPredicate","existsTypeAnnotation","functionTypeAnnotation","rest","returnType","FunctionTypeAnnotation","functionTypeParam","FunctionTypeParam","genericTypeAnnotation","GenericTypeAnnotation","inferredPredicate","interfaceExtends","InterfaceExtends","interfaceDeclaration","InterfaceDeclaration","interfaceTypeAnnotation","InterfaceTypeAnnotation","intersectionTypeAnnotation","types","IntersectionTypeAnnotation","mixedTypeAnnotation","emptyTypeAnnotation","nullableTypeAnnotation","NullableTypeAnnotation","numberLiteralTypeAnnotation","NumberLiteralTypeAnnotation","numberTypeAnnotation","objectTypeAnnotation","indexers","callProperties","internalSlots","exact","ObjectTypeAnnotation","objectTypeInternalSlot","method","ObjectTypeInternalSlot","objectTypeCallProperty","ObjectTypeCallProperty","objectTypeIndexer","variance","ObjectTypeIndexer","objectTypeProperty","proto","ObjectTypeProperty","objectTypeSpreadProperty","ObjectTypeSpreadProperty","opaqueType","impltype","OpaqueType","qualifiedTypeIdentifier","qualification","QualifiedTypeIdentifier","stringLiteralTypeAnnotation","StringLiteralTypeAnnotation","stringTypeAnnotation","symbolTypeAnnotation","thisTypeAnnotation","tupleTypeAnnotation","TupleTypeAnnotation","typeofTypeAnnotation","TypeofTypeAnnotation","typeAlias","TypeAlias","TypeAnnotation","typeCastExpression","TypeCastExpression","typeParameter","bound","_default","default","TypeParameter","typeParameterDeclaration","TypeParameterDeclaration","typeParameterInstantiation","TypeParameterInstantiation","unionTypeAnnotation","UnionTypeAnnotation","Variance","voidTypeAnnotation","enumDeclaration","EnumDeclaration","enumBooleanBody","members","explicitType","hasUnknownMembers","EnumBooleanBody","enumNumberBody","EnumNumberBody","enumStringBody","EnumStringBody","enumSymbolBody","EnumSymbolBody","enumBooleanMember","EnumBooleanMember","enumNumberMember","EnumNumberMember","enumStringMember","EnumStringMember","enumDefaultedMember","EnumDefaultedMember","indexedAccessType","objectType","indexType","IndexedAccessType","optionalIndexedAccessType","OptionalIndexedAccessType","jsxAttribute","JSXAttribute","jsxClosingElement","JSXClosingElement","jsxElement","openingElement","closingElement","children","selfClosing","JSXElement","jsxEmptyExpression","jsxExpressionContainer","JSXExpressionContainer","jsxSpreadChild","JSXSpreadChild","jsxIdentifier","JSXIdentifier","jsxMemberExpression","JSXMemberExpression","jsxNamespacedName","namespace","JSXNamespacedName","jsxOpeningElement","JSXOpeningElement","jsxSpreadAttribute","JSXSpreadAttribute","jsxText","JSXText","jsxFragment","openingFragment","closingFragment","JSXFragment","jsxOpeningFragment","jsxClosingFragment","noop","placeholder","expectedNode","Placeholder","v8IntrinsicIdentifier","V8IntrinsicIdentifier","argumentPlaceholder","bindExpression","BindExpression","decorator","Decorator","doExpression","DoExpression","exportDefaultSpecifier","ExportDefaultSpecifier","recordExpression","RecordExpression","tupleExpression","TupleExpression","decimalLiteral","DecimalLiteral","moduleExpression","ModuleExpression","topicReference","pipelineTopicExpression","PipelineTopicExpression","pipelineBareFunction","PipelineBareFunction","pipelinePrimaryTopicReference","voidPattern","tsParameterProperty","parameter","TSParameterProperty","tsDeclareFunction","TSDeclareFunction","tsDeclareMethod","TSDeclareMethod","tsQualifiedName","TSQualifiedName","tsCallSignatureDeclaration","parameters","TSCallSignatureDeclaration","tsConstructSignatureDeclaration","TSConstructSignatureDeclaration","tsPropertySignature","TSPropertySignature","tsMethodSignature","TSMethodSignature","tsIndexSignature","TSIndexSignature","tsAnyKeyword","tsBooleanKeyword","tsBigIntKeyword","tsIntrinsicKeyword","tsNeverKeyword","tsNullKeyword","tsNumberKeyword","tsObjectKeyword","tsStringKeyword","tsSymbolKeyword","tsUndefinedKeyword","tsUnknownKeyword","tsVoidKeyword","tsThisType","tsFunctionType","TSFunctionType","tsConstructorType","TSConstructorType","tsTypeReference","typeName","TSTypeReference","tsTypePredicate","parameterName","asserts","TSTypePredicate","tsTypeQuery","exprName","TSTypeQuery","tsTypeLiteral","TSTypeLiteral","tsArrayType","TSArrayType","tsTupleType","elementTypes","TSTupleType","tsOptionalType","TSOptionalType","tsRestType","TSRestType","tsNamedTupleMember","TSNamedTupleMember","tsUnionType","TSUnionType","tsIntersectionType","TSIntersectionType","tsConditionalType","checkType","extendsType","trueType","falseType","TSConditionalType","tsInferType","TSInferType","tsParenthesizedType","TSParenthesizedType","tsTypeOperator","TSTypeOperator","tsIndexedAccessType","TSIndexedAccessType","tsMappedType","nameType","TSMappedType","tsTemplateLiteralType","TSTemplateLiteralType","tsLiteralType","literal","TSLiteralType","tsExpressionWithTypeArguments","TSExpressionWithTypeArguments","tsInterfaceDeclaration","TSInterfaceDeclaration","tsInterfaceBody","TSInterfaceBody","tsTypeAliasDeclaration","TSTypeAliasDeclaration","tsInstantiationExpression","TSInstantiationExpression","tsAsExpression","TSAsExpression","tsSatisfiesExpression","TSSatisfiesExpression","tsTypeAssertion","TSTypeAssertion","tsEnumBody","TSEnumBody","tsEnumDeclaration","TSEnumDeclaration","tsEnumMember","initializer","TSEnumMember","tsModuleDeclaration","TSModuleDeclaration","tsModuleBlock","TSModuleBlock","tsImportType","qualifier","TSImportType","tsImportEqualsDeclaration","moduleReference","isExport","TSImportEqualsDeclaration","tsExternalModuleReference","TSExternalModuleReference","tsNonNullExpression","TSNonNullExpression","tsExportAssignment","TSExportAssignment","tsNamespaceExportDeclaration","TSNamespaceExportDeclaration","tsTypeAnnotation","TSTypeAnnotation","tsTypeParameterInstantiation","TSTypeParameterInstantiation","tsTypeParameterDeclaration","TSTypeParameterDeclaration","tsTypeParameter","constraint","TSTypeParameter","NumberLiteral","deprecationWarning","RegexLiteral","RestProperty","SpreadProperty"],"sources":["../../../src/builders/generated/lowercase.ts"],"sourcesContent":["/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\nimport * as _validate from \"../../validators/validate.ts\";\nimport type * as t from \"../../ast-types/generated/index.ts\";\nimport deprecationWarning from \"../../utils/deprecationWarning.ts\";\nimport * as utils from \"../../definitions/utils.ts\";\n\nconst { validateInternal: validate } = _validate;\nconst { NODE_FIELDS } = utils;\n\n/** @deprecated */ export function bigIntLiteral(\n value: string,\n): t.BigIntLiteral;\nexport function bigIntLiteral(value: bigint): t.BigIntLiteral;\nexport function bigIntLiteral(value: bigint | string): t.BigIntLiteral {\n if (typeof value === \"bigint\") {\n value = value.toString();\n }\n const node: t.BigIntLiteral = {\n type: \"BigIntLiteral\",\n value,\n };\n const defs = NODE_FIELDS.BigIntLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function arrayExpression(\n elements: (null | t.Expression | t.SpreadElement)[] = [],\n): t.ArrayExpression {\n const node: t.ArrayExpression = {\n type: \"ArrayExpression\",\n elements,\n };\n const defs = NODE_FIELDS.ArrayExpression;\n validate(defs.elements, node, \"elements\", elements, 1);\n return node;\n}\nexport function assignmentExpression(\n operator: string,\n left: t.LVal | t.OptionalMemberExpression,\n right: t.Expression,\n): t.AssignmentExpression {\n const node: t.AssignmentExpression = {\n type: \"AssignmentExpression\",\n operator,\n left,\n right,\n };\n const defs = NODE_FIELDS.AssignmentExpression;\n validate(defs.operator, node, \"operator\", operator);\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nexport function binaryExpression(\n operator:\n | \"+\"\n | \"-\"\n | \"/\"\n | \"%\"\n | \"*\"\n | \"**\"\n | \"&\"\n | \"|\"\n | \">>\"\n | \">>>\"\n | \"<<\"\n | \"^\"\n | \"==\"\n | \"===\"\n | \"!=\"\n | \"!==\"\n | \"in\"\n | \"instanceof\"\n | \">\"\n | \"<\"\n | \">=\"\n | \"<=\"\n | \"|>\",\n left: t.Expression | t.PrivateName,\n right: t.Expression,\n): t.BinaryExpression {\n const node: t.BinaryExpression = {\n type: \"BinaryExpression\",\n operator,\n left,\n right,\n };\n const defs = NODE_FIELDS.BinaryExpression;\n validate(defs.operator, node, \"operator\", operator);\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nexport function interpreterDirective(value: string): t.InterpreterDirective {\n const node: t.InterpreterDirective = {\n type: \"InterpreterDirective\",\n value,\n };\n const defs = NODE_FIELDS.InterpreterDirective;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function directive(value: t.DirectiveLiteral): t.Directive {\n const node: t.Directive = {\n type: \"Directive\",\n value,\n };\n const defs = NODE_FIELDS.Directive;\n validate(defs.value, node, \"value\", value, 1);\n return node;\n}\nexport function directiveLiteral(value: string): t.DirectiveLiteral {\n const node: t.DirectiveLiteral = {\n type: \"DirectiveLiteral\",\n value,\n };\n const defs = NODE_FIELDS.DirectiveLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function blockStatement(\n body: t.Statement[],\n directives: t.Directive[] = [],\n): t.BlockStatement {\n const node: t.BlockStatement = {\n type: \"BlockStatement\",\n body,\n directives,\n };\n const defs = NODE_FIELDS.BlockStatement;\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.directives, node, \"directives\", directives, 1);\n return node;\n}\nexport function breakStatement(\n label: t.Identifier | null = null,\n): t.BreakStatement {\n const node: t.BreakStatement = {\n type: \"BreakStatement\",\n label,\n };\n const defs = NODE_FIELDS.BreakStatement;\n validate(defs.label, node, \"label\", label, 1);\n return node;\n}\nexport function callExpression(\n callee: t.Expression | t.Super | t.V8IntrinsicIdentifier,\n _arguments: (t.Expression | t.SpreadElement | t.ArgumentPlaceholder)[],\n): t.CallExpression {\n const node: t.CallExpression = {\n type: \"CallExpression\",\n callee,\n arguments: _arguments,\n };\n const defs = NODE_FIELDS.CallExpression;\n validate(defs.callee, node, \"callee\", callee, 1);\n validate(defs.arguments, node, \"arguments\", _arguments, 1);\n return node;\n}\nexport function catchClause(\n param:\n | t.Identifier\n | t.ArrayPattern\n | t.ObjectPattern\n | null\n | undefined = null,\n body: t.BlockStatement,\n): t.CatchClause {\n const node: t.CatchClause = {\n type: \"CatchClause\",\n param,\n body,\n };\n const defs = NODE_FIELDS.CatchClause;\n validate(defs.param, node, \"param\", param, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function conditionalExpression(\n test: t.Expression,\n consequent: t.Expression,\n alternate: t.Expression,\n): t.ConditionalExpression {\n const node: t.ConditionalExpression = {\n type: \"ConditionalExpression\",\n test,\n consequent,\n alternate,\n };\n const defs = NODE_FIELDS.ConditionalExpression;\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.consequent, node, \"consequent\", consequent, 1);\n validate(defs.alternate, node, \"alternate\", alternate, 1);\n return node;\n}\nexport function continueStatement(\n label: t.Identifier | null = null,\n): t.ContinueStatement {\n const node: t.ContinueStatement = {\n type: \"ContinueStatement\",\n label,\n };\n const defs = NODE_FIELDS.ContinueStatement;\n validate(defs.label, node, \"label\", label, 1);\n return node;\n}\nexport function debuggerStatement(): t.DebuggerStatement {\n return {\n type: \"DebuggerStatement\",\n };\n}\nexport function doWhileStatement(\n test: t.Expression,\n body: t.Statement,\n): t.DoWhileStatement {\n const node: t.DoWhileStatement = {\n type: \"DoWhileStatement\",\n test,\n body,\n };\n const defs = NODE_FIELDS.DoWhileStatement;\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function emptyStatement(): t.EmptyStatement {\n return {\n type: \"EmptyStatement\",\n };\n}\nexport function expressionStatement(\n expression: t.Expression,\n): t.ExpressionStatement {\n const node: t.ExpressionStatement = {\n type: \"ExpressionStatement\",\n expression,\n };\n const defs = NODE_FIELDS.ExpressionStatement;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nexport function file(\n program: t.Program,\n comments: (t.CommentBlock | t.CommentLine)[] | null = null,\n tokens: any[] | null = null,\n): t.File {\n const node: t.File = {\n type: \"File\",\n program,\n comments,\n tokens,\n };\n const defs = NODE_FIELDS.File;\n validate(defs.program, node, \"program\", program, 1);\n validate(defs.comments, node, \"comments\", comments, 1);\n validate(defs.tokens, node, \"tokens\", tokens);\n return node;\n}\nexport function forInStatement(\n left: t.VariableDeclaration | t.LVal,\n right: t.Expression,\n body: t.Statement,\n): t.ForInStatement {\n const node: t.ForInStatement = {\n type: \"ForInStatement\",\n left,\n right,\n body,\n };\n const defs = NODE_FIELDS.ForInStatement;\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function forStatement(\n init: t.VariableDeclaration | t.Expression | null | undefined = null,\n test: t.Expression | null | undefined = null,\n update: t.Expression | null | undefined = null,\n body: t.Statement,\n): t.ForStatement {\n const node: t.ForStatement = {\n type: \"ForStatement\",\n init,\n test,\n update,\n body,\n };\n const defs = NODE_FIELDS.ForStatement;\n validate(defs.init, node, \"init\", init, 1);\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.update, node, \"update\", update, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function functionDeclaration(\n id: t.Identifier | null | undefined = null,\n params: t.FunctionParameter[],\n body: t.BlockStatement,\n generator: boolean = false,\n async: boolean = false,\n): t.FunctionDeclaration {\n const node: t.FunctionDeclaration = {\n type: \"FunctionDeclaration\",\n id,\n params,\n body,\n generator,\n async,\n };\n const defs = NODE_FIELDS.FunctionDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.generator, node, \"generator\", generator);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nexport function functionExpression(\n id: t.Identifier | null | undefined = null,\n params: t.FunctionParameter[],\n body: t.BlockStatement,\n generator: boolean = false,\n async: boolean = false,\n): t.FunctionExpression {\n const node: t.FunctionExpression = {\n type: \"FunctionExpression\",\n id,\n params,\n body,\n generator,\n async,\n };\n const defs = NODE_FIELDS.FunctionExpression;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.generator, node, \"generator\", generator);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nexport function identifier(name: string): t.Identifier {\n const node: t.Identifier = {\n type: \"Identifier\",\n name,\n };\n const defs = NODE_FIELDS.Identifier;\n validate(defs.name, node, \"name\", name);\n return node;\n}\nexport function ifStatement(\n test: t.Expression,\n consequent: t.Statement,\n alternate: t.Statement | null = null,\n): t.IfStatement {\n const node: t.IfStatement = {\n type: \"IfStatement\",\n test,\n consequent,\n alternate,\n };\n const defs = NODE_FIELDS.IfStatement;\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.consequent, node, \"consequent\", consequent, 1);\n validate(defs.alternate, node, \"alternate\", alternate, 1);\n return node;\n}\nexport function labeledStatement(\n label: t.Identifier,\n body: t.Statement,\n): t.LabeledStatement {\n const node: t.LabeledStatement = {\n type: \"LabeledStatement\",\n label,\n body,\n };\n const defs = NODE_FIELDS.LabeledStatement;\n validate(defs.label, node, \"label\", label, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function stringLiteral(value: string): t.StringLiteral {\n const node: t.StringLiteral = {\n type: \"StringLiteral\",\n value,\n };\n const defs = NODE_FIELDS.StringLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function numericLiteral(value: number): t.NumericLiteral {\n const node: t.NumericLiteral = {\n type: \"NumericLiteral\",\n value,\n };\n const defs = NODE_FIELDS.NumericLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function nullLiteral(): t.NullLiteral {\n return {\n type: \"NullLiteral\",\n };\n}\nexport function booleanLiteral(value: boolean): t.BooleanLiteral {\n const node: t.BooleanLiteral = {\n type: \"BooleanLiteral\",\n value,\n };\n const defs = NODE_FIELDS.BooleanLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function regExpLiteral(\n pattern: string,\n flags: string = \"\",\n): t.RegExpLiteral {\n const node: t.RegExpLiteral = {\n type: \"RegExpLiteral\",\n pattern,\n flags,\n };\n const defs = NODE_FIELDS.RegExpLiteral;\n validate(defs.pattern, node, \"pattern\", pattern);\n validate(defs.flags, node, \"flags\", flags);\n return node;\n}\nexport function logicalExpression(\n operator: \"||\" | \"&&\" | \"??\",\n left: t.Expression,\n right: t.Expression,\n): t.LogicalExpression {\n const node: t.LogicalExpression = {\n type: \"LogicalExpression\",\n operator,\n left,\n right,\n };\n const defs = NODE_FIELDS.LogicalExpression;\n validate(defs.operator, node, \"operator\", operator);\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nexport function memberExpression(\n object: t.Expression | t.Super,\n property: t.Expression | t.Identifier | t.PrivateName,\n computed: boolean = false,\n optional: boolean | null = null,\n): t.MemberExpression {\n const node: t.MemberExpression = {\n type: \"MemberExpression\",\n object,\n property,\n computed,\n optional,\n };\n const defs = NODE_FIELDS.MemberExpression;\n validate(defs.object, node, \"object\", object, 1);\n validate(defs.property, node, \"property\", property, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.optional, node, \"optional\", optional);\n return node;\n}\nexport function newExpression(\n callee: t.Expression | t.Super | t.V8IntrinsicIdentifier,\n _arguments: (t.Expression | t.SpreadElement | t.ArgumentPlaceholder)[],\n): t.NewExpression {\n const node: t.NewExpression = {\n type: \"NewExpression\",\n callee,\n arguments: _arguments,\n };\n const defs = NODE_FIELDS.NewExpression;\n validate(defs.callee, node, \"callee\", callee, 1);\n validate(defs.arguments, node, \"arguments\", _arguments, 1);\n return node;\n}\nexport function program(\n body: t.Statement[],\n directives: t.Directive[] = [],\n sourceType: \"script\" | \"module\" = \"script\",\n interpreter: t.InterpreterDirective | null = null,\n): t.Program {\n const node: t.Program = {\n type: \"Program\",\n body,\n directives,\n sourceType,\n interpreter,\n };\n const defs = NODE_FIELDS.Program;\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.directives, node, \"directives\", directives, 1);\n validate(defs.sourceType, node, \"sourceType\", sourceType);\n validate(defs.interpreter, node, \"interpreter\", interpreter, 1);\n return node;\n}\nexport function objectExpression(\n properties: (t.ObjectMethod | t.ObjectProperty | t.SpreadElement)[],\n): t.ObjectExpression {\n const node: t.ObjectExpression = {\n type: \"ObjectExpression\",\n properties,\n };\n const defs = NODE_FIELDS.ObjectExpression;\n validate(defs.properties, node, \"properties\", properties, 1);\n return node;\n}\nexport function objectMethod(\n kind: \"method\" | \"get\" | \"set\" | undefined = \"method\",\n key:\n | t.Expression\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral,\n params: t.FunctionParameter[],\n body: t.BlockStatement,\n computed: boolean = false,\n generator: boolean = false,\n async: boolean = false,\n): t.ObjectMethod {\n const node: t.ObjectMethod = {\n type: \"ObjectMethod\",\n kind,\n key,\n params,\n body,\n computed,\n generator,\n async,\n };\n const defs = NODE_FIELDS.ObjectMethod;\n validate(defs.kind, node, \"kind\", kind);\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.generator, node, \"generator\", generator);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nexport function objectProperty(\n key:\n | t.Expression\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.DecimalLiteral\n | t.PrivateName,\n value: t.Expression | t.PatternLike,\n computed: boolean = false,\n shorthand: boolean = false,\n decorators: t.Decorator[] | null = null,\n): t.ObjectProperty {\n const node: t.ObjectProperty = {\n type: \"ObjectProperty\",\n key,\n value,\n computed,\n shorthand,\n decorators,\n };\n const defs = NODE_FIELDS.ObjectProperty;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.shorthand, node, \"shorthand\", shorthand);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n return node;\n}\nexport function restElement(\n argument:\n | t.Identifier\n | t.ArrayPattern\n | t.ObjectPattern\n | t.MemberExpression\n | t.TSAsExpression\n | t.TSSatisfiesExpression\n | t.TSTypeAssertion\n | t.TSNonNullExpression\n | t.RestElement\n | t.AssignmentPattern,\n): t.RestElement {\n const node: t.RestElement = {\n type: \"RestElement\",\n argument,\n };\n const defs = NODE_FIELDS.RestElement;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nexport function returnStatement(\n argument: t.Expression | null = null,\n): t.ReturnStatement {\n const node: t.ReturnStatement = {\n type: \"ReturnStatement\",\n argument,\n };\n const defs = NODE_FIELDS.ReturnStatement;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nexport function sequenceExpression(\n expressions: t.Expression[],\n): t.SequenceExpression {\n const node: t.SequenceExpression = {\n type: \"SequenceExpression\",\n expressions,\n };\n const defs = NODE_FIELDS.SequenceExpression;\n validate(defs.expressions, node, \"expressions\", expressions, 1);\n return node;\n}\nexport function parenthesizedExpression(\n expression: t.Expression,\n): t.ParenthesizedExpression {\n const node: t.ParenthesizedExpression = {\n type: \"ParenthesizedExpression\",\n expression,\n };\n const defs = NODE_FIELDS.ParenthesizedExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nexport function switchCase(\n test: t.Expression | null | undefined = null,\n consequent: t.Statement[],\n): t.SwitchCase {\n const node: t.SwitchCase = {\n type: \"SwitchCase\",\n test,\n consequent,\n };\n const defs = NODE_FIELDS.SwitchCase;\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.consequent, node, \"consequent\", consequent, 1);\n return node;\n}\nexport function switchStatement(\n discriminant: t.Expression,\n cases: t.SwitchCase[],\n): t.SwitchStatement {\n const node: t.SwitchStatement = {\n type: \"SwitchStatement\",\n discriminant,\n cases,\n };\n const defs = NODE_FIELDS.SwitchStatement;\n validate(defs.discriminant, node, \"discriminant\", discriminant, 1);\n validate(defs.cases, node, \"cases\", cases, 1);\n return node;\n}\nexport function thisExpression(): t.ThisExpression {\n return {\n type: \"ThisExpression\",\n };\n}\nexport function throwStatement(argument: t.Expression): t.ThrowStatement {\n const node: t.ThrowStatement = {\n type: \"ThrowStatement\",\n argument,\n };\n const defs = NODE_FIELDS.ThrowStatement;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nexport function tryStatement(\n block: t.BlockStatement,\n handler: t.CatchClause | null = null,\n finalizer: t.BlockStatement | null = null,\n): t.TryStatement {\n const node: t.TryStatement = {\n type: \"TryStatement\",\n block,\n handler,\n finalizer,\n };\n const defs = NODE_FIELDS.TryStatement;\n validate(defs.block, node, \"block\", block, 1);\n validate(defs.handler, node, \"handler\", handler, 1);\n validate(defs.finalizer, node, \"finalizer\", finalizer, 1);\n return node;\n}\nexport function unaryExpression(\n operator: \"void\" | \"throw\" | \"delete\" | \"!\" | \"+\" | \"-\" | \"~\" | \"typeof\",\n argument: t.Expression,\n prefix: boolean = true,\n): t.UnaryExpression {\n const node: t.UnaryExpression = {\n type: \"UnaryExpression\",\n operator,\n argument,\n prefix,\n };\n const defs = NODE_FIELDS.UnaryExpression;\n validate(defs.operator, node, \"operator\", operator);\n validate(defs.argument, node, \"argument\", argument, 1);\n validate(defs.prefix, node, \"prefix\", prefix);\n return node;\n}\nexport function updateExpression(\n operator: \"++\" | \"--\",\n argument: t.Expression,\n prefix: boolean = false,\n): t.UpdateExpression {\n const node: t.UpdateExpression = {\n type: \"UpdateExpression\",\n operator,\n argument,\n prefix,\n };\n const defs = NODE_FIELDS.UpdateExpression;\n validate(defs.operator, node, \"operator\", operator);\n validate(defs.argument, node, \"argument\", argument, 1);\n validate(defs.prefix, node, \"prefix\", prefix);\n return node;\n}\nexport function variableDeclaration(\n kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n declarations: t.VariableDeclarator[],\n): t.VariableDeclaration {\n const node: t.VariableDeclaration = {\n type: \"VariableDeclaration\",\n kind,\n declarations,\n };\n const defs = NODE_FIELDS.VariableDeclaration;\n validate(defs.kind, node, \"kind\", kind);\n validate(defs.declarations, node, \"declarations\", declarations, 1);\n return node;\n}\nexport function variableDeclarator(\n id: t.LVal | t.VoidPattern,\n init: t.Expression | null = null,\n): t.VariableDeclarator {\n const node: t.VariableDeclarator = {\n type: \"VariableDeclarator\",\n id,\n init,\n };\n const defs = NODE_FIELDS.VariableDeclarator;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.init, node, \"init\", init, 1);\n return node;\n}\nexport function whileStatement(\n test: t.Expression,\n body: t.Statement,\n): t.WhileStatement {\n const node: t.WhileStatement = {\n type: \"WhileStatement\",\n test,\n body,\n };\n const defs = NODE_FIELDS.WhileStatement;\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function withStatement(\n object: t.Expression,\n body: t.Statement,\n): t.WithStatement {\n const node: t.WithStatement = {\n type: \"WithStatement\",\n object,\n body,\n };\n const defs = NODE_FIELDS.WithStatement;\n validate(defs.object, node, \"object\", object, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function assignmentPattern(\n left:\n | t.Identifier\n | t.ObjectPattern\n | t.ArrayPattern\n | t.MemberExpression\n | t.TSAsExpression\n | t.TSSatisfiesExpression\n | t.TSTypeAssertion\n | t.TSNonNullExpression,\n right: t.Expression,\n): t.AssignmentPattern {\n const node: t.AssignmentPattern = {\n type: \"AssignmentPattern\",\n left,\n right,\n };\n const defs = NODE_FIELDS.AssignmentPattern;\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nexport function arrayPattern(\n elements: (null | t.PatternLike)[],\n): t.ArrayPattern {\n const node: t.ArrayPattern = {\n type: \"ArrayPattern\",\n elements,\n };\n const defs = NODE_FIELDS.ArrayPattern;\n validate(defs.elements, node, \"elements\", elements, 1);\n return node;\n}\nexport function arrowFunctionExpression(\n params: t.FunctionParameter[],\n body: t.BlockStatement | t.Expression,\n async: boolean = false,\n): t.ArrowFunctionExpression {\n const node: t.ArrowFunctionExpression = {\n type: \"ArrowFunctionExpression\",\n params,\n body,\n async,\n expression: null,\n };\n const defs = NODE_FIELDS.ArrowFunctionExpression;\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nexport function classBody(\n body: (\n | t.ClassMethod\n | t.ClassPrivateMethod\n | t.ClassProperty\n | t.ClassPrivateProperty\n | t.ClassAccessorProperty\n | t.TSDeclareMethod\n | t.TSIndexSignature\n | t.StaticBlock\n )[],\n): t.ClassBody {\n const node: t.ClassBody = {\n type: \"ClassBody\",\n body,\n };\n const defs = NODE_FIELDS.ClassBody;\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function classExpression(\n id: t.Identifier | null | undefined = null,\n superClass: t.Expression | null | undefined = null,\n body: t.ClassBody,\n decorators: t.Decorator[] | null = null,\n): t.ClassExpression {\n const node: t.ClassExpression = {\n type: \"ClassExpression\",\n id,\n superClass,\n body,\n decorators,\n };\n const defs = NODE_FIELDS.ClassExpression;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.superClass, node, \"superClass\", superClass, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n return node;\n}\nexport function classDeclaration(\n id: t.Identifier | null | undefined = null,\n superClass: t.Expression | null | undefined = null,\n body: t.ClassBody,\n decorators: t.Decorator[] | null = null,\n): t.ClassDeclaration {\n const node: t.ClassDeclaration = {\n type: \"ClassDeclaration\",\n id,\n superClass,\n body,\n decorators,\n };\n const defs = NODE_FIELDS.ClassDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.superClass, node, \"superClass\", superClass, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n return node;\n}\nexport function exportAllDeclaration(\n source: t.StringLiteral,\n attributes: t.ImportAttribute[] | null = null,\n): t.ExportAllDeclaration {\n const node: t.ExportAllDeclaration = {\n type: \"ExportAllDeclaration\",\n source,\n attributes,\n };\n const defs = NODE_FIELDS.ExportAllDeclaration;\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n return node;\n}\nexport function exportDefaultDeclaration(\n declaration:\n | t.TSDeclareFunction\n | t.FunctionDeclaration\n | t.ClassDeclaration\n | t.Expression,\n): t.ExportDefaultDeclaration {\n const node: t.ExportDefaultDeclaration = {\n type: \"ExportDefaultDeclaration\",\n declaration,\n };\n const defs = NODE_FIELDS.ExportDefaultDeclaration;\n validate(defs.declaration, node, \"declaration\", declaration, 1);\n return node;\n}\nexport function exportNamedDeclaration(\n declaration: t.Declaration | null = null,\n specifiers: (\n | t.ExportSpecifier\n | t.ExportDefaultSpecifier\n | t.ExportNamespaceSpecifier\n )[] = [],\n source: t.StringLiteral | null = null,\n attributes: t.ImportAttribute[] | null = null,\n): t.ExportNamedDeclaration {\n const node: t.ExportNamedDeclaration = {\n type: \"ExportNamedDeclaration\",\n declaration,\n specifiers,\n source,\n attributes,\n };\n const defs = NODE_FIELDS.ExportNamedDeclaration;\n validate(defs.declaration, node, \"declaration\", declaration, 1);\n validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n return node;\n}\nexport function exportSpecifier(\n local: t.Identifier,\n exported: t.Identifier | t.StringLiteral,\n): t.ExportSpecifier {\n const node: t.ExportSpecifier = {\n type: \"ExportSpecifier\",\n local,\n exported,\n };\n const defs = NODE_FIELDS.ExportSpecifier;\n validate(defs.local, node, \"local\", local, 1);\n validate(defs.exported, node, \"exported\", exported, 1);\n return node;\n}\nexport function forOfStatement(\n left: t.VariableDeclaration | t.LVal,\n right: t.Expression,\n body: t.Statement,\n _await: boolean = false,\n): t.ForOfStatement {\n const node: t.ForOfStatement = {\n type: \"ForOfStatement\",\n left,\n right,\n body,\n await: _await,\n };\n const defs = NODE_FIELDS.ForOfStatement;\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.await, node, \"await\", _await);\n return node;\n}\nexport function importDeclaration(\n specifiers: (\n | t.ImportSpecifier\n | t.ImportDefaultSpecifier\n | t.ImportNamespaceSpecifier\n )[],\n source: t.StringLiteral,\n attributes: t.ImportAttribute[] | null = null,\n): t.ImportDeclaration {\n const node: t.ImportDeclaration = {\n type: \"ImportDeclaration\",\n specifiers,\n source,\n attributes,\n };\n const defs = NODE_FIELDS.ImportDeclaration;\n validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n return node;\n}\nexport function importDefaultSpecifier(\n local: t.Identifier,\n): t.ImportDefaultSpecifier {\n const node: t.ImportDefaultSpecifier = {\n type: \"ImportDefaultSpecifier\",\n local,\n };\n const defs = NODE_FIELDS.ImportDefaultSpecifier;\n validate(defs.local, node, \"local\", local, 1);\n return node;\n}\nexport function importNamespaceSpecifier(\n local: t.Identifier,\n): t.ImportNamespaceSpecifier {\n const node: t.ImportNamespaceSpecifier = {\n type: \"ImportNamespaceSpecifier\",\n local,\n };\n const defs = NODE_FIELDS.ImportNamespaceSpecifier;\n validate(defs.local, node, \"local\", local, 1);\n return node;\n}\nexport function importSpecifier(\n local: t.Identifier,\n imported: t.Identifier | t.StringLiteral,\n): t.ImportSpecifier {\n const node: t.ImportSpecifier = {\n type: \"ImportSpecifier\",\n local,\n imported,\n };\n const defs = NODE_FIELDS.ImportSpecifier;\n validate(defs.local, node, \"local\", local, 1);\n validate(defs.imported, node, \"imported\", imported, 1);\n return node;\n}\nexport function importExpression(\n source: t.Expression,\n options: t.Expression | null = null,\n): t.ImportExpression {\n const node: t.ImportExpression = {\n type: \"ImportExpression\",\n source,\n options,\n };\n const defs = NODE_FIELDS.ImportExpression;\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.options, node, \"options\", options, 1);\n return node;\n}\nexport function metaProperty(\n meta: t.Identifier,\n property: t.Identifier,\n): t.MetaProperty {\n const node: t.MetaProperty = {\n type: \"MetaProperty\",\n meta,\n property,\n };\n const defs = NODE_FIELDS.MetaProperty;\n validate(defs.meta, node, \"meta\", meta, 1);\n validate(defs.property, node, \"property\", property, 1);\n return node;\n}\nexport function classMethod(\n kind: \"get\" | \"set\" | \"method\" | \"constructor\" | undefined = \"method\",\n key:\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.Expression,\n params: (t.FunctionParameter | t.TSParameterProperty)[],\n body: t.BlockStatement,\n computed: boolean = false,\n _static: boolean = false,\n generator: boolean = false,\n async: boolean = false,\n): t.ClassMethod {\n const node: t.ClassMethod = {\n type: \"ClassMethod\",\n kind,\n key,\n params,\n body,\n computed,\n static: _static,\n generator,\n async,\n };\n const defs = NODE_FIELDS.ClassMethod;\n validate(defs.kind, node, \"kind\", kind);\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.static, node, \"static\", _static);\n validate(defs.generator, node, \"generator\", generator);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nexport function objectPattern(\n properties: (t.RestElement | t.ObjectProperty)[],\n): t.ObjectPattern {\n const node: t.ObjectPattern = {\n type: \"ObjectPattern\",\n properties,\n };\n const defs = NODE_FIELDS.ObjectPattern;\n validate(defs.properties, node, \"properties\", properties, 1);\n return node;\n}\nexport function spreadElement(argument: t.Expression): t.SpreadElement {\n const node: t.SpreadElement = {\n type: \"SpreadElement\",\n argument,\n };\n const defs = NODE_FIELDS.SpreadElement;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nfunction _super(): t.Super {\n return {\n type: \"Super\",\n };\n}\nexport { _super as super };\nexport function taggedTemplateExpression(\n tag: t.Expression,\n quasi: t.TemplateLiteral,\n): t.TaggedTemplateExpression {\n const node: t.TaggedTemplateExpression = {\n type: \"TaggedTemplateExpression\",\n tag,\n quasi,\n };\n const defs = NODE_FIELDS.TaggedTemplateExpression;\n validate(defs.tag, node, \"tag\", tag, 1);\n validate(defs.quasi, node, \"quasi\", quasi, 1);\n return node;\n}\nexport function templateElement(\n value: { raw: string; cooked?: string },\n tail: boolean = false,\n): t.TemplateElement {\n const node: t.TemplateElement = {\n type: \"TemplateElement\",\n value,\n tail,\n };\n const defs = NODE_FIELDS.TemplateElement;\n validate(defs.value, node, \"value\", value);\n validate(defs.tail, node, \"tail\", tail);\n return node;\n}\nexport function templateLiteral(\n quasis: t.TemplateElement[],\n expressions: (t.Expression | t.TSType)[],\n): t.TemplateLiteral {\n const node: t.TemplateLiteral = {\n type: \"TemplateLiteral\",\n quasis,\n expressions,\n };\n const defs = NODE_FIELDS.TemplateLiteral;\n validate(defs.quasis, node, \"quasis\", quasis, 1);\n validate(defs.expressions, node, \"expressions\", expressions, 1);\n return node;\n}\nexport function yieldExpression(\n argument: t.Expression | null = null,\n delegate: boolean = false,\n): t.YieldExpression {\n const node: t.YieldExpression = {\n type: \"YieldExpression\",\n argument,\n delegate,\n };\n const defs = NODE_FIELDS.YieldExpression;\n validate(defs.argument, node, \"argument\", argument, 1);\n validate(defs.delegate, node, \"delegate\", delegate);\n return node;\n}\nexport function awaitExpression(argument: t.Expression): t.AwaitExpression {\n const node: t.AwaitExpression = {\n type: \"AwaitExpression\",\n argument,\n };\n const defs = NODE_FIELDS.AwaitExpression;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nfunction _import(): t.Import {\n return {\n type: \"Import\",\n };\n}\nexport { _import as import };\nexport function exportNamespaceSpecifier(\n exported: t.Identifier,\n): t.ExportNamespaceSpecifier {\n const node: t.ExportNamespaceSpecifier = {\n type: \"ExportNamespaceSpecifier\",\n exported,\n };\n const defs = NODE_FIELDS.ExportNamespaceSpecifier;\n validate(defs.exported, node, \"exported\", exported, 1);\n return node;\n}\nexport function optionalMemberExpression(\n object: t.Expression,\n property: t.Expression | t.Identifier,\n computed: boolean | undefined = false,\n optional: boolean,\n): t.OptionalMemberExpression {\n const node: t.OptionalMemberExpression = {\n type: \"OptionalMemberExpression\",\n object,\n property,\n computed,\n optional,\n };\n const defs = NODE_FIELDS.OptionalMemberExpression;\n validate(defs.object, node, \"object\", object, 1);\n validate(defs.property, node, \"property\", property, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.optional, node, \"optional\", optional);\n return node;\n}\nexport function optionalCallExpression(\n callee: t.Expression,\n _arguments: (t.Expression | t.SpreadElement | t.ArgumentPlaceholder)[],\n optional: boolean,\n): t.OptionalCallExpression {\n const node: t.OptionalCallExpression = {\n type: \"OptionalCallExpression\",\n callee,\n arguments: _arguments,\n optional,\n };\n const defs = NODE_FIELDS.OptionalCallExpression;\n validate(defs.callee, node, \"callee\", callee, 1);\n validate(defs.arguments, node, \"arguments\", _arguments, 1);\n validate(defs.optional, node, \"optional\", optional);\n return node;\n}\nexport function classProperty(\n key:\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.Expression,\n value: t.Expression | null = null,\n typeAnnotation: t.TypeAnnotation | t.TSTypeAnnotation | t.Noop | null = null,\n decorators: t.Decorator[] | null = null,\n computed: boolean = false,\n _static: boolean = false,\n): t.ClassProperty {\n const node: t.ClassProperty = {\n type: \"ClassProperty\",\n key,\n value,\n typeAnnotation,\n decorators,\n computed,\n static: _static,\n };\n const defs = NODE_FIELDS.ClassProperty;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.static, node, \"static\", _static);\n return node;\n}\nexport function classAccessorProperty(\n key:\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.Expression\n | t.PrivateName,\n value: t.Expression | null = null,\n typeAnnotation: t.TypeAnnotation | t.TSTypeAnnotation | t.Noop | null = null,\n decorators: t.Decorator[] | null = null,\n computed: boolean = false,\n _static: boolean = false,\n): t.ClassAccessorProperty {\n const node: t.ClassAccessorProperty = {\n type: \"ClassAccessorProperty\",\n key,\n value,\n typeAnnotation,\n decorators,\n computed,\n static: _static,\n };\n const defs = NODE_FIELDS.ClassAccessorProperty;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.static, node, \"static\", _static);\n return node;\n}\nexport function classPrivateProperty(\n key: t.PrivateName,\n value: t.Expression | null = null,\n decorators: t.Decorator[] | null = null,\n _static: boolean = false,\n): t.ClassPrivateProperty {\n const node: t.ClassPrivateProperty = {\n type: \"ClassPrivateProperty\",\n key,\n value,\n decorators,\n static: _static,\n };\n const defs = NODE_FIELDS.ClassPrivateProperty;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n validate(defs.static, node, \"static\", _static);\n return node;\n}\nexport function classPrivateMethod(\n kind: \"get\" | \"set\" | \"method\" | undefined = \"method\",\n key: t.PrivateName,\n params: (t.FunctionParameter | t.TSParameterProperty)[],\n body: t.BlockStatement,\n _static: boolean = false,\n): t.ClassPrivateMethod {\n const node: t.ClassPrivateMethod = {\n type: \"ClassPrivateMethod\",\n kind,\n key,\n params,\n body,\n static: _static,\n };\n const defs = NODE_FIELDS.ClassPrivateMethod;\n validate(defs.kind, node, \"kind\", kind);\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.static, node, \"static\", _static);\n return node;\n}\nexport function privateName(id: t.Identifier): t.PrivateName {\n const node: t.PrivateName = {\n type: \"PrivateName\",\n id,\n };\n const defs = NODE_FIELDS.PrivateName;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nexport function staticBlock(body: t.Statement[]): t.StaticBlock {\n const node: t.StaticBlock = {\n type: \"StaticBlock\",\n body,\n };\n const defs = NODE_FIELDS.StaticBlock;\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function importAttribute(\n key: t.Identifier | t.StringLiteral,\n value: t.StringLiteral,\n): t.ImportAttribute {\n const node: t.ImportAttribute = {\n type: \"ImportAttribute\",\n key,\n value,\n };\n const defs = NODE_FIELDS.ImportAttribute;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n return node;\n}\nexport function anyTypeAnnotation(): t.AnyTypeAnnotation {\n return {\n type: \"AnyTypeAnnotation\",\n };\n}\nexport function arrayTypeAnnotation(\n elementType: t.FlowType,\n): t.ArrayTypeAnnotation {\n const node: t.ArrayTypeAnnotation = {\n type: \"ArrayTypeAnnotation\",\n elementType,\n };\n const defs = NODE_FIELDS.ArrayTypeAnnotation;\n validate(defs.elementType, node, \"elementType\", elementType, 1);\n return node;\n}\nexport function booleanTypeAnnotation(): t.BooleanTypeAnnotation {\n return {\n type: \"BooleanTypeAnnotation\",\n };\n}\nexport function booleanLiteralTypeAnnotation(\n value: boolean,\n): t.BooleanLiteralTypeAnnotation {\n const node: t.BooleanLiteralTypeAnnotation = {\n type: \"BooleanLiteralTypeAnnotation\",\n value,\n };\n const defs = NODE_FIELDS.BooleanLiteralTypeAnnotation;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function nullLiteralTypeAnnotation(): t.NullLiteralTypeAnnotation {\n return {\n type: \"NullLiteralTypeAnnotation\",\n };\n}\nexport function classImplements(\n id: t.Identifier,\n typeParameters: t.TypeParameterInstantiation | null = null,\n): t.ClassImplements {\n const node: t.ClassImplements = {\n type: \"ClassImplements\",\n id,\n typeParameters,\n };\n const defs = NODE_FIELDS.ClassImplements;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nexport function declareClass(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n _extends: t.InterfaceExtends[] | null | undefined = null,\n body: t.ObjectTypeAnnotation,\n): t.DeclareClass {\n const node: t.DeclareClass = {\n type: \"DeclareClass\",\n id,\n typeParameters,\n extends: _extends,\n body,\n };\n const defs = NODE_FIELDS.DeclareClass;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.extends, node, \"extends\", _extends, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function declareFunction(id: t.Identifier): t.DeclareFunction {\n const node: t.DeclareFunction = {\n type: \"DeclareFunction\",\n id,\n };\n const defs = NODE_FIELDS.DeclareFunction;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nexport function declareInterface(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n _extends: t.InterfaceExtends[] | null | undefined = null,\n body: t.ObjectTypeAnnotation,\n): t.DeclareInterface {\n const node: t.DeclareInterface = {\n type: \"DeclareInterface\",\n id,\n typeParameters,\n extends: _extends,\n body,\n };\n const defs = NODE_FIELDS.DeclareInterface;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.extends, node, \"extends\", _extends, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function declareModule(\n id: t.Identifier | t.StringLiteral,\n body: t.BlockStatement,\n kind: \"CommonJS\" | \"ES\" | null = null,\n): t.DeclareModule {\n const node: t.DeclareModule = {\n type: \"DeclareModule\",\n id,\n body,\n kind,\n };\n const defs = NODE_FIELDS.DeclareModule;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.kind, node, \"kind\", kind);\n return node;\n}\nexport function declareModuleExports(\n typeAnnotation: t.TypeAnnotation,\n): t.DeclareModuleExports {\n const node: t.DeclareModuleExports = {\n type: \"DeclareModuleExports\",\n typeAnnotation,\n };\n const defs = NODE_FIELDS.DeclareModuleExports;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport function declareTypeAlias(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n right: t.FlowType,\n): t.DeclareTypeAlias {\n const node: t.DeclareTypeAlias = {\n type: \"DeclareTypeAlias\",\n id,\n typeParameters,\n right,\n };\n const defs = NODE_FIELDS.DeclareTypeAlias;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nexport function declareOpaqueType(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null = null,\n supertype: t.FlowType | null = null,\n): t.DeclareOpaqueType {\n const node: t.DeclareOpaqueType = {\n type: \"DeclareOpaqueType\",\n id,\n typeParameters,\n supertype,\n };\n const defs = NODE_FIELDS.DeclareOpaqueType;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.supertype, node, \"supertype\", supertype, 1);\n return node;\n}\nexport function declareVariable(id: t.Identifier): t.DeclareVariable {\n const node: t.DeclareVariable = {\n type: \"DeclareVariable\",\n id,\n };\n const defs = NODE_FIELDS.DeclareVariable;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nexport function declareExportDeclaration(\n declaration: t.Flow | null = null,\n specifiers: (t.ExportSpecifier | t.ExportNamespaceSpecifier)[] | null = null,\n source: t.StringLiteral | null = null,\n attributes: t.ImportAttribute[] | null = null,\n): t.DeclareExportDeclaration {\n const node: t.DeclareExportDeclaration = {\n type: \"DeclareExportDeclaration\",\n declaration,\n specifiers,\n source,\n attributes,\n };\n const defs = NODE_FIELDS.DeclareExportDeclaration;\n validate(defs.declaration, node, \"declaration\", declaration, 1);\n validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n return node;\n}\nexport function declareExportAllDeclaration(\n source: t.StringLiteral,\n attributes: t.ImportAttribute[] | null = null,\n): t.DeclareExportAllDeclaration {\n const node: t.DeclareExportAllDeclaration = {\n type: \"DeclareExportAllDeclaration\",\n source,\n attributes,\n };\n const defs = NODE_FIELDS.DeclareExportAllDeclaration;\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n return node;\n}\nexport function declaredPredicate(value: t.Flow): t.DeclaredPredicate {\n const node: t.DeclaredPredicate = {\n type: \"DeclaredPredicate\",\n value,\n };\n const defs = NODE_FIELDS.DeclaredPredicate;\n validate(defs.value, node, \"value\", value, 1);\n return node;\n}\nexport function existsTypeAnnotation(): t.ExistsTypeAnnotation {\n return {\n type: \"ExistsTypeAnnotation\",\n };\n}\nexport function functionTypeAnnotation(\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n params: t.FunctionTypeParam[],\n rest: t.FunctionTypeParam | null | undefined = null,\n returnType: t.FlowType,\n): t.FunctionTypeAnnotation {\n const node: t.FunctionTypeAnnotation = {\n type: \"FunctionTypeAnnotation\",\n typeParameters,\n params,\n rest,\n returnType,\n };\n const defs = NODE_FIELDS.FunctionTypeAnnotation;\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.rest, node, \"rest\", rest, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nexport function functionTypeParam(\n name: t.Identifier | null | undefined = null,\n typeAnnotation: t.FlowType,\n): t.FunctionTypeParam {\n const node: t.FunctionTypeParam = {\n type: \"FunctionTypeParam\",\n name,\n typeAnnotation,\n };\n const defs = NODE_FIELDS.FunctionTypeParam;\n validate(defs.name, node, \"name\", name, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport function genericTypeAnnotation(\n id: t.Identifier | t.QualifiedTypeIdentifier,\n typeParameters: t.TypeParameterInstantiation | null = null,\n): t.GenericTypeAnnotation {\n const node: t.GenericTypeAnnotation = {\n type: \"GenericTypeAnnotation\",\n id,\n typeParameters,\n };\n const defs = NODE_FIELDS.GenericTypeAnnotation;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nexport function inferredPredicate(): t.InferredPredicate {\n return {\n type: \"InferredPredicate\",\n };\n}\nexport function interfaceExtends(\n id: t.Identifier | t.QualifiedTypeIdentifier,\n typeParameters: t.TypeParameterInstantiation | null = null,\n): t.InterfaceExtends {\n const node: t.InterfaceExtends = {\n type: \"InterfaceExtends\",\n id,\n typeParameters,\n };\n const defs = NODE_FIELDS.InterfaceExtends;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nexport function interfaceDeclaration(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n _extends: t.InterfaceExtends[] | null | undefined = null,\n body: t.ObjectTypeAnnotation,\n): t.InterfaceDeclaration {\n const node: t.InterfaceDeclaration = {\n type: \"InterfaceDeclaration\",\n id,\n typeParameters,\n extends: _extends,\n body,\n };\n const defs = NODE_FIELDS.InterfaceDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.extends, node, \"extends\", _extends, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function interfaceTypeAnnotation(\n _extends: t.InterfaceExtends[] | null | undefined = null,\n body: t.ObjectTypeAnnotation,\n): t.InterfaceTypeAnnotation {\n const node: t.InterfaceTypeAnnotation = {\n type: \"InterfaceTypeAnnotation\",\n extends: _extends,\n body,\n };\n const defs = NODE_FIELDS.InterfaceTypeAnnotation;\n validate(defs.extends, node, \"extends\", _extends, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function intersectionTypeAnnotation(\n types: t.FlowType[],\n): t.IntersectionTypeAnnotation {\n const node: t.IntersectionTypeAnnotation = {\n type: \"IntersectionTypeAnnotation\",\n types,\n };\n const defs = NODE_FIELDS.IntersectionTypeAnnotation;\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nexport function mixedTypeAnnotation(): t.MixedTypeAnnotation {\n return {\n type: \"MixedTypeAnnotation\",\n };\n}\nexport function emptyTypeAnnotation(): t.EmptyTypeAnnotation {\n return {\n type: \"EmptyTypeAnnotation\",\n };\n}\nexport function nullableTypeAnnotation(\n typeAnnotation: t.FlowType,\n): t.NullableTypeAnnotation {\n const node: t.NullableTypeAnnotation = {\n type: \"NullableTypeAnnotation\",\n typeAnnotation,\n };\n const defs = NODE_FIELDS.NullableTypeAnnotation;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport function numberLiteralTypeAnnotation(\n value: number,\n): t.NumberLiteralTypeAnnotation {\n const node: t.NumberLiteralTypeAnnotation = {\n type: \"NumberLiteralTypeAnnotation\",\n value,\n };\n const defs = NODE_FIELDS.NumberLiteralTypeAnnotation;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function numberTypeAnnotation(): t.NumberTypeAnnotation {\n return {\n type: \"NumberTypeAnnotation\",\n };\n}\nexport function objectTypeAnnotation(\n properties: (t.ObjectTypeProperty | t.ObjectTypeSpreadProperty)[],\n indexers: t.ObjectTypeIndexer[] = [],\n callProperties: t.ObjectTypeCallProperty[] = [],\n internalSlots: t.ObjectTypeInternalSlot[] = [],\n exact: boolean = false,\n): t.ObjectTypeAnnotation {\n const node: t.ObjectTypeAnnotation = {\n type: \"ObjectTypeAnnotation\",\n properties,\n indexers,\n callProperties,\n internalSlots,\n exact,\n };\n const defs = NODE_FIELDS.ObjectTypeAnnotation;\n validate(defs.properties, node, \"properties\", properties, 1);\n validate(defs.indexers, node, \"indexers\", indexers, 1);\n validate(defs.callProperties, node, \"callProperties\", callProperties, 1);\n validate(defs.internalSlots, node, \"internalSlots\", internalSlots, 1);\n validate(defs.exact, node, \"exact\", exact);\n return node;\n}\nexport function objectTypeInternalSlot(\n id: t.Identifier,\n value: t.FlowType,\n optional: boolean,\n _static: boolean,\n method: boolean,\n): t.ObjectTypeInternalSlot {\n const node: t.ObjectTypeInternalSlot = {\n type: \"ObjectTypeInternalSlot\",\n id,\n value,\n optional,\n static: _static,\n method,\n };\n const defs = NODE_FIELDS.ObjectTypeInternalSlot;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.optional, node, \"optional\", optional);\n validate(defs.static, node, \"static\", _static);\n validate(defs.method, node, \"method\", method);\n return node;\n}\nexport function objectTypeCallProperty(\n value: t.FlowType,\n): t.ObjectTypeCallProperty {\n const node: t.ObjectTypeCallProperty = {\n type: \"ObjectTypeCallProperty\",\n value,\n static: null,\n };\n const defs = NODE_FIELDS.ObjectTypeCallProperty;\n validate(defs.value, node, \"value\", value, 1);\n return node;\n}\nexport function objectTypeIndexer(\n id: t.Identifier | null | undefined = null,\n key: t.FlowType,\n value: t.FlowType,\n variance: t.Variance | null = null,\n): t.ObjectTypeIndexer {\n const node: t.ObjectTypeIndexer = {\n type: \"ObjectTypeIndexer\",\n id,\n key,\n value,\n variance,\n static: null,\n };\n const defs = NODE_FIELDS.ObjectTypeIndexer;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.variance, node, \"variance\", variance, 1);\n return node;\n}\nexport function objectTypeProperty(\n key: t.Identifier | t.StringLiteral,\n value: t.FlowType,\n variance: t.Variance | null = null,\n): t.ObjectTypeProperty {\n const node: t.ObjectTypeProperty = {\n type: \"ObjectTypeProperty\",\n key,\n value,\n variance,\n kind: null,\n method: null,\n optional: null,\n proto: null,\n static: null,\n };\n const defs = NODE_FIELDS.ObjectTypeProperty;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.variance, node, \"variance\", variance, 1);\n return node;\n}\nexport function objectTypeSpreadProperty(\n argument: t.FlowType,\n): t.ObjectTypeSpreadProperty {\n const node: t.ObjectTypeSpreadProperty = {\n type: \"ObjectTypeSpreadProperty\",\n argument,\n };\n const defs = NODE_FIELDS.ObjectTypeSpreadProperty;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nexport function opaqueType(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n supertype: t.FlowType | null | undefined = null,\n impltype: t.FlowType,\n): t.OpaqueType {\n const node: t.OpaqueType = {\n type: \"OpaqueType\",\n id,\n typeParameters,\n supertype,\n impltype,\n };\n const defs = NODE_FIELDS.OpaqueType;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.supertype, node, \"supertype\", supertype, 1);\n validate(defs.impltype, node, \"impltype\", impltype, 1);\n return node;\n}\nexport function qualifiedTypeIdentifier(\n id: t.Identifier,\n qualification: t.Identifier | t.QualifiedTypeIdentifier,\n): t.QualifiedTypeIdentifier {\n const node: t.QualifiedTypeIdentifier = {\n type: \"QualifiedTypeIdentifier\",\n id,\n qualification,\n };\n const defs = NODE_FIELDS.QualifiedTypeIdentifier;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.qualification, node, \"qualification\", qualification, 1);\n return node;\n}\nexport function stringLiteralTypeAnnotation(\n value: string,\n): t.StringLiteralTypeAnnotation {\n const node: t.StringLiteralTypeAnnotation = {\n type: \"StringLiteralTypeAnnotation\",\n value,\n };\n const defs = NODE_FIELDS.StringLiteralTypeAnnotation;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function stringTypeAnnotation(): t.StringTypeAnnotation {\n return {\n type: \"StringTypeAnnotation\",\n };\n}\nexport function symbolTypeAnnotation(): t.SymbolTypeAnnotation {\n return {\n type: \"SymbolTypeAnnotation\",\n };\n}\nexport function thisTypeAnnotation(): t.ThisTypeAnnotation {\n return {\n type: \"ThisTypeAnnotation\",\n };\n}\nexport function tupleTypeAnnotation(\n types: t.FlowType[],\n): t.TupleTypeAnnotation {\n const node: t.TupleTypeAnnotation = {\n type: \"TupleTypeAnnotation\",\n types,\n };\n const defs = NODE_FIELDS.TupleTypeAnnotation;\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nexport function typeofTypeAnnotation(\n argument: t.FlowType,\n): t.TypeofTypeAnnotation {\n const node: t.TypeofTypeAnnotation = {\n type: \"TypeofTypeAnnotation\",\n argument,\n };\n const defs = NODE_FIELDS.TypeofTypeAnnotation;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nexport function typeAlias(\n id: t.Identifier,\n typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n right: t.FlowType,\n): t.TypeAlias {\n const node: t.TypeAlias = {\n type: \"TypeAlias\",\n id,\n typeParameters,\n right,\n };\n const defs = NODE_FIELDS.TypeAlias;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nexport function typeAnnotation(typeAnnotation: t.FlowType): t.TypeAnnotation {\n const node: t.TypeAnnotation = {\n type: \"TypeAnnotation\",\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TypeAnnotation;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport function typeCastExpression(\n expression: t.Expression,\n typeAnnotation: t.TypeAnnotation,\n): t.TypeCastExpression {\n const node: t.TypeCastExpression = {\n type: \"TypeCastExpression\",\n expression,\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TypeCastExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport function typeParameter(\n bound: t.TypeAnnotation | null = null,\n _default: t.FlowType | null = null,\n variance: t.Variance | null = null,\n): t.TypeParameter {\n const node: t.TypeParameter = {\n type: \"TypeParameter\",\n bound,\n default: _default,\n variance,\n name: null,\n };\n const defs = NODE_FIELDS.TypeParameter;\n validate(defs.bound, node, \"bound\", bound, 1);\n validate(defs.default, node, \"default\", _default, 1);\n validate(defs.variance, node, \"variance\", variance, 1);\n return node;\n}\nexport function typeParameterDeclaration(\n params: t.TypeParameter[],\n): t.TypeParameterDeclaration {\n const node: t.TypeParameterDeclaration = {\n type: \"TypeParameterDeclaration\",\n params,\n };\n const defs = NODE_FIELDS.TypeParameterDeclaration;\n validate(defs.params, node, \"params\", params, 1);\n return node;\n}\nexport function typeParameterInstantiation(\n params: t.FlowType[],\n): t.TypeParameterInstantiation {\n const node: t.TypeParameterInstantiation = {\n type: \"TypeParameterInstantiation\",\n params,\n };\n const defs = NODE_FIELDS.TypeParameterInstantiation;\n validate(defs.params, node, \"params\", params, 1);\n return node;\n}\nexport function unionTypeAnnotation(\n types: t.FlowType[],\n): t.UnionTypeAnnotation {\n const node: t.UnionTypeAnnotation = {\n type: \"UnionTypeAnnotation\",\n types,\n };\n const defs = NODE_FIELDS.UnionTypeAnnotation;\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nexport function variance(kind: \"minus\" | \"plus\"): t.Variance {\n const node: t.Variance = {\n type: \"Variance\",\n kind,\n };\n const defs = NODE_FIELDS.Variance;\n validate(defs.kind, node, \"kind\", kind);\n return node;\n}\nexport function voidTypeAnnotation(): t.VoidTypeAnnotation {\n return {\n type: \"VoidTypeAnnotation\",\n };\n}\nexport function enumDeclaration(\n id: t.Identifier,\n body:\n | t.EnumBooleanBody\n | t.EnumNumberBody\n | t.EnumStringBody\n | t.EnumSymbolBody,\n): t.EnumDeclaration {\n const node: t.EnumDeclaration = {\n type: \"EnumDeclaration\",\n id,\n body,\n };\n const defs = NODE_FIELDS.EnumDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function enumBooleanBody(\n members: t.EnumBooleanMember[],\n): t.EnumBooleanBody {\n const node: t.EnumBooleanBody = {\n type: \"EnumBooleanBody\",\n members,\n explicitType: null,\n hasUnknownMembers: null,\n };\n const defs = NODE_FIELDS.EnumBooleanBody;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nexport function enumNumberBody(\n members: t.EnumNumberMember[],\n): t.EnumNumberBody {\n const node: t.EnumNumberBody = {\n type: \"EnumNumberBody\",\n members,\n explicitType: null,\n hasUnknownMembers: null,\n };\n const defs = NODE_FIELDS.EnumNumberBody;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nexport function enumStringBody(\n members: (t.EnumStringMember | t.EnumDefaultedMember)[],\n): t.EnumStringBody {\n const node: t.EnumStringBody = {\n type: \"EnumStringBody\",\n members,\n explicitType: null,\n hasUnknownMembers: null,\n };\n const defs = NODE_FIELDS.EnumStringBody;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nexport function enumSymbolBody(\n members: t.EnumDefaultedMember[],\n): t.EnumSymbolBody {\n const node: t.EnumSymbolBody = {\n type: \"EnumSymbolBody\",\n members,\n hasUnknownMembers: null,\n };\n const defs = NODE_FIELDS.EnumSymbolBody;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nexport function enumBooleanMember(id: t.Identifier): t.EnumBooleanMember {\n const node: t.EnumBooleanMember = {\n type: \"EnumBooleanMember\",\n id,\n init: null,\n };\n const defs = NODE_FIELDS.EnumBooleanMember;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nexport function enumNumberMember(\n id: t.Identifier,\n init: t.NumericLiteral,\n): t.EnumNumberMember {\n const node: t.EnumNumberMember = {\n type: \"EnumNumberMember\",\n id,\n init,\n };\n const defs = NODE_FIELDS.EnumNumberMember;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.init, node, \"init\", init, 1);\n return node;\n}\nexport function enumStringMember(\n id: t.Identifier,\n init: t.StringLiteral,\n): t.EnumStringMember {\n const node: t.EnumStringMember = {\n type: \"EnumStringMember\",\n id,\n init,\n };\n const defs = NODE_FIELDS.EnumStringMember;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.init, node, \"init\", init, 1);\n return node;\n}\nexport function enumDefaultedMember(id: t.Identifier): t.EnumDefaultedMember {\n const node: t.EnumDefaultedMember = {\n type: \"EnumDefaultedMember\",\n id,\n };\n const defs = NODE_FIELDS.EnumDefaultedMember;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nexport function indexedAccessType(\n objectType: t.FlowType,\n indexType: t.FlowType,\n): t.IndexedAccessType {\n const node: t.IndexedAccessType = {\n type: \"IndexedAccessType\",\n objectType,\n indexType,\n };\n const defs = NODE_FIELDS.IndexedAccessType;\n validate(defs.objectType, node, \"objectType\", objectType, 1);\n validate(defs.indexType, node, \"indexType\", indexType, 1);\n return node;\n}\nexport function optionalIndexedAccessType(\n objectType: t.FlowType,\n indexType: t.FlowType,\n): t.OptionalIndexedAccessType {\n const node: t.OptionalIndexedAccessType = {\n type: \"OptionalIndexedAccessType\",\n objectType,\n indexType,\n optional: null,\n };\n const defs = NODE_FIELDS.OptionalIndexedAccessType;\n validate(defs.objectType, node, \"objectType\", objectType, 1);\n validate(defs.indexType, node, \"indexType\", indexType, 1);\n return node;\n}\nexport function jsxAttribute(\n name: t.JSXIdentifier | t.JSXNamespacedName,\n value:\n | t.JSXElement\n | t.JSXFragment\n | t.StringLiteral\n | t.JSXExpressionContainer\n | null = null,\n): t.JSXAttribute {\n const node: t.JSXAttribute = {\n type: \"JSXAttribute\",\n name,\n value,\n };\n const defs = NODE_FIELDS.JSXAttribute;\n validate(defs.name, node, \"name\", name, 1);\n validate(defs.value, node, \"value\", value, 1);\n return node;\n}\nexport { jsxAttribute as jSXAttribute };\nexport function jsxClosingElement(\n name: t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName,\n): t.JSXClosingElement {\n const node: t.JSXClosingElement = {\n type: \"JSXClosingElement\",\n name,\n };\n const defs = NODE_FIELDS.JSXClosingElement;\n validate(defs.name, node, \"name\", name, 1);\n return node;\n}\nexport { jsxClosingElement as jSXClosingElement };\nexport function jsxElement(\n openingElement: t.JSXOpeningElement,\n closingElement: t.JSXClosingElement | null | undefined = null,\n children: (\n | t.JSXText\n | t.JSXExpressionContainer\n | t.JSXSpreadChild\n | t.JSXElement\n | t.JSXFragment\n )[],\n selfClosing: boolean | null = null,\n): t.JSXElement {\n const node: t.JSXElement = {\n type: \"JSXElement\",\n openingElement,\n closingElement,\n children,\n selfClosing,\n };\n const defs = NODE_FIELDS.JSXElement;\n validate(defs.openingElement, node, \"openingElement\", openingElement, 1);\n validate(defs.closingElement, node, \"closingElement\", closingElement, 1);\n validate(defs.children, node, \"children\", children, 1);\n validate(defs.selfClosing, node, \"selfClosing\", selfClosing);\n return node;\n}\nexport { jsxElement as jSXElement };\nexport function jsxEmptyExpression(): t.JSXEmptyExpression {\n return {\n type: \"JSXEmptyExpression\",\n };\n}\nexport { jsxEmptyExpression as jSXEmptyExpression };\nexport function jsxExpressionContainer(\n expression: t.Expression | t.JSXEmptyExpression,\n): t.JSXExpressionContainer {\n const node: t.JSXExpressionContainer = {\n type: \"JSXExpressionContainer\",\n expression,\n };\n const defs = NODE_FIELDS.JSXExpressionContainer;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nexport { jsxExpressionContainer as jSXExpressionContainer };\nexport function jsxSpreadChild(expression: t.Expression): t.JSXSpreadChild {\n const node: t.JSXSpreadChild = {\n type: \"JSXSpreadChild\",\n expression,\n };\n const defs = NODE_FIELDS.JSXSpreadChild;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nexport { jsxSpreadChild as jSXSpreadChild };\nexport function jsxIdentifier(name: string): t.JSXIdentifier {\n const node: t.JSXIdentifier = {\n type: \"JSXIdentifier\",\n name,\n };\n const defs = NODE_FIELDS.JSXIdentifier;\n validate(defs.name, node, \"name\", name);\n return node;\n}\nexport { jsxIdentifier as jSXIdentifier };\nexport function jsxMemberExpression(\n object: t.JSXMemberExpression | t.JSXIdentifier,\n property: t.JSXIdentifier,\n): t.JSXMemberExpression {\n const node: t.JSXMemberExpression = {\n type: \"JSXMemberExpression\",\n object,\n property,\n };\n const defs = NODE_FIELDS.JSXMemberExpression;\n validate(defs.object, node, \"object\", object, 1);\n validate(defs.property, node, \"property\", property, 1);\n return node;\n}\nexport { jsxMemberExpression as jSXMemberExpression };\nexport function jsxNamespacedName(\n namespace: t.JSXIdentifier,\n name: t.JSXIdentifier,\n): t.JSXNamespacedName {\n const node: t.JSXNamespacedName = {\n type: \"JSXNamespacedName\",\n namespace,\n name,\n };\n const defs = NODE_FIELDS.JSXNamespacedName;\n validate(defs.namespace, node, \"namespace\", namespace, 1);\n validate(defs.name, node, \"name\", name, 1);\n return node;\n}\nexport { jsxNamespacedName as jSXNamespacedName };\nexport function jsxOpeningElement(\n name: t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName,\n attributes: (t.JSXAttribute | t.JSXSpreadAttribute)[],\n selfClosing: boolean = false,\n): t.JSXOpeningElement {\n const node: t.JSXOpeningElement = {\n type: \"JSXOpeningElement\",\n name,\n attributes,\n selfClosing,\n };\n const defs = NODE_FIELDS.JSXOpeningElement;\n validate(defs.name, node, \"name\", name, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n validate(defs.selfClosing, node, \"selfClosing\", selfClosing);\n return node;\n}\nexport { jsxOpeningElement as jSXOpeningElement };\nexport function jsxSpreadAttribute(\n argument: t.Expression,\n): t.JSXSpreadAttribute {\n const node: t.JSXSpreadAttribute = {\n type: \"JSXSpreadAttribute\",\n argument,\n };\n const defs = NODE_FIELDS.JSXSpreadAttribute;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nexport { jsxSpreadAttribute as jSXSpreadAttribute };\nexport function jsxText(value: string): t.JSXText {\n const node: t.JSXText = {\n type: \"JSXText\",\n value,\n };\n const defs = NODE_FIELDS.JSXText;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport { jsxText as jSXText };\nexport function jsxFragment(\n openingFragment: t.JSXOpeningFragment,\n closingFragment: t.JSXClosingFragment,\n children: (\n | t.JSXText\n | t.JSXExpressionContainer\n | t.JSXSpreadChild\n | t.JSXElement\n | t.JSXFragment\n )[],\n): t.JSXFragment {\n const node: t.JSXFragment = {\n type: \"JSXFragment\",\n openingFragment,\n closingFragment,\n children,\n };\n const defs = NODE_FIELDS.JSXFragment;\n validate(defs.openingFragment, node, \"openingFragment\", openingFragment, 1);\n validate(defs.closingFragment, node, \"closingFragment\", closingFragment, 1);\n validate(defs.children, node, \"children\", children, 1);\n return node;\n}\nexport { jsxFragment as jSXFragment };\nexport function jsxOpeningFragment(): t.JSXOpeningFragment {\n return {\n type: \"JSXOpeningFragment\",\n };\n}\nexport { jsxOpeningFragment as jSXOpeningFragment };\nexport function jsxClosingFragment(): t.JSXClosingFragment {\n return {\n type: \"JSXClosingFragment\",\n };\n}\nexport { jsxClosingFragment as jSXClosingFragment };\nexport function noop(): t.Noop {\n return {\n type: \"Noop\",\n };\n}\nexport function placeholder(\n expectedNode:\n | \"Identifier\"\n | \"StringLiteral\"\n | \"Expression\"\n | \"Statement\"\n | \"Declaration\"\n | \"BlockStatement\"\n | \"ClassBody\"\n | \"Pattern\",\n name: t.Identifier,\n): t.Placeholder {\n const node: t.Placeholder = {\n type: \"Placeholder\",\n expectedNode,\n name,\n };\n const defs = NODE_FIELDS.Placeholder;\n validate(defs.expectedNode, node, \"expectedNode\", expectedNode);\n validate(defs.name, node, \"name\", name, 1);\n return node;\n}\nexport function v8IntrinsicIdentifier(name: string): t.V8IntrinsicIdentifier {\n const node: t.V8IntrinsicIdentifier = {\n type: \"V8IntrinsicIdentifier\",\n name,\n };\n const defs = NODE_FIELDS.V8IntrinsicIdentifier;\n validate(defs.name, node, \"name\", name);\n return node;\n}\nexport function argumentPlaceholder(): t.ArgumentPlaceholder {\n return {\n type: \"ArgumentPlaceholder\",\n };\n}\nexport function bindExpression(\n object: t.Expression,\n callee: t.Expression,\n): t.BindExpression {\n const node: t.BindExpression = {\n type: \"BindExpression\",\n object,\n callee,\n };\n const defs = NODE_FIELDS.BindExpression;\n validate(defs.object, node, \"object\", object, 1);\n validate(defs.callee, node, \"callee\", callee, 1);\n return node;\n}\nexport function decorator(expression: t.Expression): t.Decorator {\n const node: t.Decorator = {\n type: \"Decorator\",\n expression,\n };\n const defs = NODE_FIELDS.Decorator;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nexport function doExpression(\n body: t.BlockStatement,\n async: boolean = false,\n): t.DoExpression {\n const node: t.DoExpression = {\n type: \"DoExpression\",\n body,\n async,\n };\n const defs = NODE_FIELDS.DoExpression;\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nexport function exportDefaultSpecifier(\n exported: t.Identifier,\n): t.ExportDefaultSpecifier {\n const node: t.ExportDefaultSpecifier = {\n type: \"ExportDefaultSpecifier\",\n exported,\n };\n const defs = NODE_FIELDS.ExportDefaultSpecifier;\n validate(defs.exported, node, \"exported\", exported, 1);\n return node;\n}\nexport function recordExpression(\n properties: (t.ObjectProperty | t.SpreadElement)[],\n): t.RecordExpression {\n const node: t.RecordExpression = {\n type: \"RecordExpression\",\n properties,\n };\n const defs = NODE_FIELDS.RecordExpression;\n validate(defs.properties, node, \"properties\", properties, 1);\n return node;\n}\nexport function tupleExpression(\n elements: (t.Expression | t.SpreadElement)[] = [],\n): t.TupleExpression {\n const node: t.TupleExpression = {\n type: \"TupleExpression\",\n elements,\n };\n const defs = NODE_FIELDS.TupleExpression;\n validate(defs.elements, node, \"elements\", elements, 1);\n return node;\n}\nexport function decimalLiteral(value: string): t.DecimalLiteral {\n const node: t.DecimalLiteral = {\n type: \"DecimalLiteral\",\n value,\n };\n const defs = NODE_FIELDS.DecimalLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nexport function moduleExpression(body: t.Program): t.ModuleExpression {\n const node: t.ModuleExpression = {\n type: \"ModuleExpression\",\n body,\n };\n const defs = NODE_FIELDS.ModuleExpression;\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport function topicReference(): t.TopicReference {\n return {\n type: \"TopicReference\",\n };\n}\nexport function pipelineTopicExpression(\n expression: t.Expression,\n): t.PipelineTopicExpression {\n const node: t.PipelineTopicExpression = {\n type: \"PipelineTopicExpression\",\n expression,\n };\n const defs = NODE_FIELDS.PipelineTopicExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nexport function pipelineBareFunction(\n callee: t.Expression,\n): t.PipelineBareFunction {\n const node: t.PipelineBareFunction = {\n type: \"PipelineBareFunction\",\n callee,\n };\n const defs = NODE_FIELDS.PipelineBareFunction;\n validate(defs.callee, node, \"callee\", callee, 1);\n return node;\n}\nexport function pipelinePrimaryTopicReference(): t.PipelinePrimaryTopicReference {\n return {\n type: \"PipelinePrimaryTopicReference\",\n };\n}\nexport function voidPattern(): t.VoidPattern {\n return {\n type: \"VoidPattern\",\n };\n}\nexport function tsParameterProperty(\n parameter: t.Identifier | t.AssignmentPattern,\n): t.TSParameterProperty {\n const node: t.TSParameterProperty = {\n type: \"TSParameterProperty\",\n parameter,\n };\n const defs = NODE_FIELDS.TSParameterProperty;\n validate(defs.parameter, node, \"parameter\", parameter, 1);\n return node;\n}\nexport { tsParameterProperty as tSParameterProperty };\nexport function tsDeclareFunction(\n id: t.Identifier | null | undefined = null,\n typeParameters:\n | t.TSTypeParameterDeclaration\n | t.Noop\n | null\n | undefined = null,\n params: t.FunctionParameter[],\n returnType: t.TSTypeAnnotation | t.Noop | null = null,\n): t.TSDeclareFunction {\n const node: t.TSDeclareFunction = {\n type: \"TSDeclareFunction\",\n id,\n typeParameters,\n params,\n returnType,\n };\n const defs = NODE_FIELDS.TSDeclareFunction;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nexport { tsDeclareFunction as tSDeclareFunction };\nexport function tsDeclareMethod(\n decorators: t.Decorator[] | null | undefined = null,\n key:\n | t.Identifier\n | t.StringLiteral\n | t.NumericLiteral\n | t.BigIntLiteral\n | t.Expression,\n typeParameters:\n | t.TSTypeParameterDeclaration\n | t.Noop\n | null\n | undefined = null,\n params: (t.FunctionParameter | t.TSParameterProperty)[],\n returnType: t.TSTypeAnnotation | t.Noop | null = null,\n): t.TSDeclareMethod {\n const node: t.TSDeclareMethod = {\n type: \"TSDeclareMethod\",\n decorators,\n key,\n typeParameters,\n params,\n returnType,\n };\n const defs = NODE_FIELDS.TSDeclareMethod;\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nexport { tsDeclareMethod as tSDeclareMethod };\nexport function tsQualifiedName(\n left: t.TSEntityName,\n right: t.Identifier,\n): t.TSQualifiedName {\n const node: t.TSQualifiedName = {\n type: \"TSQualifiedName\",\n left,\n right,\n };\n const defs = NODE_FIELDS.TSQualifiedName;\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nexport { tsQualifiedName as tSQualifiedName };\nexport function tsCallSignatureDeclaration(\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n parameters: (\n | t.ArrayPattern\n | t.Identifier\n | t.ObjectPattern\n | t.RestElement\n )[],\n typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSCallSignatureDeclaration {\n const node: t.TSCallSignatureDeclaration = {\n type: \"TSCallSignatureDeclaration\",\n typeParameters,\n parameters,\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSCallSignatureDeclaration;\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.parameters, node, \"parameters\", parameters, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport { tsCallSignatureDeclaration as tSCallSignatureDeclaration };\nexport function tsConstructSignatureDeclaration(\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n parameters: (\n | t.ArrayPattern\n | t.Identifier\n | t.ObjectPattern\n | t.RestElement\n )[],\n typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSConstructSignatureDeclaration {\n const node: t.TSConstructSignatureDeclaration = {\n type: \"TSConstructSignatureDeclaration\",\n typeParameters,\n parameters,\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSConstructSignatureDeclaration;\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.parameters, node, \"parameters\", parameters, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport { tsConstructSignatureDeclaration as tSConstructSignatureDeclaration };\nexport function tsPropertySignature(\n key: t.Expression,\n typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSPropertySignature {\n const node: t.TSPropertySignature = {\n type: \"TSPropertySignature\",\n key,\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSPropertySignature;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport { tsPropertySignature as tSPropertySignature };\nexport function tsMethodSignature(\n key: t.Expression,\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n parameters: (\n | t.ArrayPattern\n | t.Identifier\n | t.ObjectPattern\n | t.RestElement\n )[],\n typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSMethodSignature {\n const node: t.TSMethodSignature = {\n type: \"TSMethodSignature\",\n key,\n typeParameters,\n parameters,\n typeAnnotation,\n kind: null,\n };\n const defs = NODE_FIELDS.TSMethodSignature;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.parameters, node, \"parameters\", parameters, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport { tsMethodSignature as tSMethodSignature };\nexport function tsIndexSignature(\n parameters: t.Identifier[],\n typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSIndexSignature {\n const node: t.TSIndexSignature = {\n type: \"TSIndexSignature\",\n parameters,\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSIndexSignature;\n validate(defs.parameters, node, \"parameters\", parameters, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport { tsIndexSignature as tSIndexSignature };\nexport function tsAnyKeyword(): t.TSAnyKeyword {\n return {\n type: \"TSAnyKeyword\",\n };\n}\nexport { tsAnyKeyword as tSAnyKeyword };\nexport function tsBooleanKeyword(): t.TSBooleanKeyword {\n return {\n type: \"TSBooleanKeyword\",\n };\n}\nexport { tsBooleanKeyword as tSBooleanKeyword };\nexport function tsBigIntKeyword(): t.TSBigIntKeyword {\n return {\n type: \"TSBigIntKeyword\",\n };\n}\nexport { tsBigIntKeyword as tSBigIntKeyword };\nexport function tsIntrinsicKeyword(): t.TSIntrinsicKeyword {\n return {\n type: \"TSIntrinsicKeyword\",\n };\n}\nexport { tsIntrinsicKeyword as tSIntrinsicKeyword };\nexport function tsNeverKeyword(): t.TSNeverKeyword {\n return {\n type: \"TSNeverKeyword\",\n };\n}\nexport { tsNeverKeyword as tSNeverKeyword };\nexport function tsNullKeyword(): t.TSNullKeyword {\n return {\n type: \"TSNullKeyword\",\n };\n}\nexport { tsNullKeyword as tSNullKeyword };\nexport function tsNumberKeyword(): t.TSNumberKeyword {\n return {\n type: \"TSNumberKeyword\",\n };\n}\nexport { tsNumberKeyword as tSNumberKeyword };\nexport function tsObjectKeyword(): t.TSObjectKeyword {\n return {\n type: \"TSObjectKeyword\",\n };\n}\nexport { tsObjectKeyword as tSObjectKeyword };\nexport function tsStringKeyword(): t.TSStringKeyword {\n return {\n type: \"TSStringKeyword\",\n };\n}\nexport { tsStringKeyword as tSStringKeyword };\nexport function tsSymbolKeyword(): t.TSSymbolKeyword {\n return {\n type: \"TSSymbolKeyword\",\n };\n}\nexport { tsSymbolKeyword as tSSymbolKeyword };\nexport function tsUndefinedKeyword(): t.TSUndefinedKeyword {\n return {\n type: \"TSUndefinedKeyword\",\n };\n}\nexport { tsUndefinedKeyword as tSUndefinedKeyword };\nexport function tsUnknownKeyword(): t.TSUnknownKeyword {\n return {\n type: \"TSUnknownKeyword\",\n };\n}\nexport { tsUnknownKeyword as tSUnknownKeyword };\nexport function tsVoidKeyword(): t.TSVoidKeyword {\n return {\n type: \"TSVoidKeyword\",\n };\n}\nexport { tsVoidKeyword as tSVoidKeyword };\nexport function tsThisType(): t.TSThisType {\n return {\n type: \"TSThisType\",\n };\n}\nexport { tsThisType as tSThisType };\nexport function tsFunctionType(\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n parameters: (\n | t.ArrayPattern\n | t.Identifier\n | t.ObjectPattern\n | t.RestElement\n )[],\n typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSFunctionType {\n const node: t.TSFunctionType = {\n type: \"TSFunctionType\",\n typeParameters,\n parameters,\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSFunctionType;\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.parameters, node, \"parameters\", parameters, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport { tsFunctionType as tSFunctionType };\nexport function tsConstructorType(\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n parameters: (\n | t.ArrayPattern\n | t.Identifier\n | t.ObjectPattern\n | t.RestElement\n )[],\n typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSConstructorType {\n const node: t.TSConstructorType = {\n type: \"TSConstructorType\",\n typeParameters,\n parameters,\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSConstructorType;\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.parameters, node, \"parameters\", parameters, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport { tsConstructorType as tSConstructorType };\nexport function tsTypeReference(\n typeName: t.TSEntityName,\n typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSTypeReference {\n const node: t.TSTypeReference = {\n type: \"TSTypeReference\",\n typeName,\n typeParameters,\n };\n const defs = NODE_FIELDS.TSTypeReference;\n validate(defs.typeName, node, \"typeName\", typeName, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nexport { tsTypeReference as tSTypeReference };\nexport function tsTypePredicate(\n parameterName: t.Identifier | t.TSThisType,\n typeAnnotation: t.TSTypeAnnotation | null = null,\n asserts: boolean | null = null,\n): t.TSTypePredicate {\n const node: t.TSTypePredicate = {\n type: \"TSTypePredicate\",\n parameterName,\n typeAnnotation,\n asserts,\n };\n const defs = NODE_FIELDS.TSTypePredicate;\n validate(defs.parameterName, node, \"parameterName\", parameterName, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.asserts, node, \"asserts\", asserts);\n return node;\n}\nexport { tsTypePredicate as tSTypePredicate };\nexport function tsTypeQuery(\n exprName: t.TSEntityName | t.TSImportType,\n typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSTypeQuery {\n const node: t.TSTypeQuery = {\n type: \"TSTypeQuery\",\n exprName,\n typeParameters,\n };\n const defs = NODE_FIELDS.TSTypeQuery;\n validate(defs.exprName, node, \"exprName\", exprName, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nexport { tsTypeQuery as tSTypeQuery };\nexport function tsTypeLiteral(members: t.TSTypeElement[]): t.TSTypeLiteral {\n const node: t.TSTypeLiteral = {\n type: \"TSTypeLiteral\",\n members,\n };\n const defs = NODE_FIELDS.TSTypeLiteral;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nexport { tsTypeLiteral as tSTypeLiteral };\nexport function tsArrayType(elementType: t.TSType): t.TSArrayType {\n const node: t.TSArrayType = {\n type: \"TSArrayType\",\n elementType,\n };\n const defs = NODE_FIELDS.TSArrayType;\n validate(defs.elementType, node, \"elementType\", elementType, 1);\n return node;\n}\nexport { tsArrayType as tSArrayType };\nexport function tsTupleType(\n elementTypes: (t.TSType | t.TSNamedTupleMember)[],\n): t.TSTupleType {\n const node: t.TSTupleType = {\n type: \"TSTupleType\",\n elementTypes,\n };\n const defs = NODE_FIELDS.TSTupleType;\n validate(defs.elementTypes, node, \"elementTypes\", elementTypes, 1);\n return node;\n}\nexport { tsTupleType as tSTupleType };\nexport function tsOptionalType(typeAnnotation: t.TSType): t.TSOptionalType {\n const node: t.TSOptionalType = {\n type: \"TSOptionalType\",\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSOptionalType;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport { tsOptionalType as tSOptionalType };\nexport function tsRestType(typeAnnotation: t.TSType): t.TSRestType {\n const node: t.TSRestType = {\n type: \"TSRestType\",\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSRestType;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport { tsRestType as tSRestType };\nexport function tsNamedTupleMember(\n label: t.Identifier,\n elementType: t.TSType,\n optional: boolean = false,\n): t.TSNamedTupleMember {\n const node: t.TSNamedTupleMember = {\n type: \"TSNamedTupleMember\",\n label,\n elementType,\n optional,\n };\n const defs = NODE_FIELDS.TSNamedTupleMember;\n validate(defs.label, node, \"label\", label, 1);\n validate(defs.elementType, node, \"elementType\", elementType, 1);\n validate(defs.optional, node, \"optional\", optional);\n return node;\n}\nexport { tsNamedTupleMember as tSNamedTupleMember };\nexport function tsUnionType(types: t.TSType[]): t.TSUnionType {\n const node: t.TSUnionType = {\n type: \"TSUnionType\",\n types,\n };\n const defs = NODE_FIELDS.TSUnionType;\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nexport { tsUnionType as tSUnionType };\nexport function tsIntersectionType(types: t.TSType[]): t.TSIntersectionType {\n const node: t.TSIntersectionType = {\n type: \"TSIntersectionType\",\n types,\n };\n const defs = NODE_FIELDS.TSIntersectionType;\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nexport { tsIntersectionType as tSIntersectionType };\nexport function tsConditionalType(\n checkType: t.TSType,\n extendsType: t.TSType,\n trueType: t.TSType,\n falseType: t.TSType,\n): t.TSConditionalType {\n const node: t.TSConditionalType = {\n type: \"TSConditionalType\",\n checkType,\n extendsType,\n trueType,\n falseType,\n };\n const defs = NODE_FIELDS.TSConditionalType;\n validate(defs.checkType, node, \"checkType\", checkType, 1);\n validate(defs.extendsType, node, \"extendsType\", extendsType, 1);\n validate(defs.trueType, node, \"trueType\", trueType, 1);\n validate(defs.falseType, node, \"falseType\", falseType, 1);\n return node;\n}\nexport { tsConditionalType as tSConditionalType };\nexport function tsInferType(typeParameter: t.TSTypeParameter): t.TSInferType {\n const node: t.TSInferType = {\n type: \"TSInferType\",\n typeParameter,\n };\n const defs = NODE_FIELDS.TSInferType;\n validate(defs.typeParameter, node, \"typeParameter\", typeParameter, 1);\n return node;\n}\nexport { tsInferType as tSInferType };\nexport function tsParenthesizedType(\n typeAnnotation: t.TSType,\n): t.TSParenthesizedType {\n const node: t.TSParenthesizedType = {\n type: \"TSParenthesizedType\",\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSParenthesizedType;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport { tsParenthesizedType as tSParenthesizedType };\nexport function tsTypeOperator(\n typeAnnotation: t.TSType,\n operator: string = \"keyof\",\n): t.TSTypeOperator {\n const node: t.TSTypeOperator = {\n type: \"TSTypeOperator\",\n typeAnnotation,\n operator,\n };\n const defs = NODE_FIELDS.TSTypeOperator;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.operator, node, \"operator\", operator);\n return node;\n}\nexport { tsTypeOperator as tSTypeOperator };\nexport function tsIndexedAccessType(\n objectType: t.TSType,\n indexType: t.TSType,\n): t.TSIndexedAccessType {\n const node: t.TSIndexedAccessType = {\n type: \"TSIndexedAccessType\",\n objectType,\n indexType,\n };\n const defs = NODE_FIELDS.TSIndexedAccessType;\n validate(defs.objectType, node, \"objectType\", objectType, 1);\n validate(defs.indexType, node, \"indexType\", indexType, 1);\n return node;\n}\nexport { tsIndexedAccessType as tSIndexedAccessType };\nexport function tsMappedType(\n typeParameter: t.TSTypeParameter,\n typeAnnotation: t.TSType | null = null,\n nameType: t.TSType | null = null,\n): t.TSMappedType {\n const node: t.TSMappedType = {\n type: \"TSMappedType\",\n typeParameter,\n typeAnnotation,\n nameType,\n };\n const defs = NODE_FIELDS.TSMappedType;\n validate(defs.typeParameter, node, \"typeParameter\", typeParameter, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.nameType, node, \"nameType\", nameType, 1);\n return node;\n}\nexport { tsMappedType as tSMappedType };\nexport function tsTemplateLiteralType(\n quasis: t.TemplateElement[],\n types: t.TSType[],\n): t.TSTemplateLiteralType {\n const node: t.TSTemplateLiteralType = {\n type: \"TSTemplateLiteralType\",\n quasis,\n types,\n };\n const defs = NODE_FIELDS.TSTemplateLiteralType;\n validate(defs.quasis, node, \"quasis\", quasis, 1);\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nexport { tsTemplateLiteralType as tSTemplateLiteralType };\nexport function tsLiteralType(\n literal:\n | t.NumericLiteral\n | t.StringLiteral\n | t.BooleanLiteral\n | t.BigIntLiteral\n | t.TemplateLiteral\n | t.UnaryExpression,\n): t.TSLiteralType {\n const node: t.TSLiteralType = {\n type: \"TSLiteralType\",\n literal,\n };\n const defs = NODE_FIELDS.TSLiteralType;\n validate(defs.literal, node, \"literal\", literal, 1);\n return node;\n}\nexport { tsLiteralType as tSLiteralType };\nexport function tsExpressionWithTypeArguments(\n expression: t.TSEntityName,\n typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSExpressionWithTypeArguments {\n const node: t.TSExpressionWithTypeArguments = {\n type: \"TSExpressionWithTypeArguments\",\n expression,\n typeParameters,\n };\n const defs = NODE_FIELDS.TSExpressionWithTypeArguments;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nexport { tsExpressionWithTypeArguments as tSExpressionWithTypeArguments };\nexport function tsInterfaceDeclaration(\n id: t.Identifier,\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n _extends: t.TSExpressionWithTypeArguments[] | null | undefined = null,\n body: t.TSInterfaceBody,\n): t.TSInterfaceDeclaration {\n const node: t.TSInterfaceDeclaration = {\n type: \"TSInterfaceDeclaration\",\n id,\n typeParameters,\n extends: _extends,\n body,\n };\n const defs = NODE_FIELDS.TSInterfaceDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.extends, node, \"extends\", _extends, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport { tsInterfaceDeclaration as tSInterfaceDeclaration };\nexport function tsInterfaceBody(body: t.TSTypeElement[]): t.TSInterfaceBody {\n const node: t.TSInterfaceBody = {\n type: \"TSInterfaceBody\",\n body,\n };\n const defs = NODE_FIELDS.TSInterfaceBody;\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport { tsInterfaceBody as tSInterfaceBody };\nexport function tsTypeAliasDeclaration(\n id: t.Identifier,\n typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n typeAnnotation: t.TSType,\n): t.TSTypeAliasDeclaration {\n const node: t.TSTypeAliasDeclaration = {\n type: \"TSTypeAliasDeclaration\",\n id,\n typeParameters,\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSTypeAliasDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport { tsTypeAliasDeclaration as tSTypeAliasDeclaration };\nexport function tsInstantiationExpression(\n expression: t.Expression,\n typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSInstantiationExpression {\n const node: t.TSInstantiationExpression = {\n type: \"TSInstantiationExpression\",\n expression,\n typeParameters,\n };\n const defs = NODE_FIELDS.TSInstantiationExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nexport { tsInstantiationExpression as tSInstantiationExpression };\nexport function tsAsExpression(\n expression: t.Expression,\n typeAnnotation: t.TSType,\n): t.TSAsExpression {\n const node: t.TSAsExpression = {\n type: \"TSAsExpression\",\n expression,\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSAsExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport { tsAsExpression as tSAsExpression };\nexport function tsSatisfiesExpression(\n expression: t.Expression,\n typeAnnotation: t.TSType,\n): t.TSSatisfiesExpression {\n const node: t.TSSatisfiesExpression = {\n type: \"TSSatisfiesExpression\",\n expression,\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSSatisfiesExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport { tsSatisfiesExpression as tSSatisfiesExpression };\nexport function tsTypeAssertion(\n typeAnnotation: t.TSType,\n expression: t.Expression,\n): t.TSTypeAssertion {\n const node: t.TSTypeAssertion = {\n type: \"TSTypeAssertion\",\n typeAnnotation,\n expression,\n };\n const defs = NODE_FIELDS.TSTypeAssertion;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nexport { tsTypeAssertion as tSTypeAssertion };\nexport function tsEnumBody(members: t.TSEnumMember[]): t.TSEnumBody {\n const node: t.TSEnumBody = {\n type: \"TSEnumBody\",\n members,\n };\n const defs = NODE_FIELDS.TSEnumBody;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nexport { tsEnumBody as tSEnumBody };\nexport function tsEnumDeclaration(\n id: t.Identifier,\n members: t.TSEnumMember[],\n): t.TSEnumDeclaration {\n const node: t.TSEnumDeclaration = {\n type: \"TSEnumDeclaration\",\n id,\n members,\n };\n const defs = NODE_FIELDS.TSEnumDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nexport { tsEnumDeclaration as tSEnumDeclaration };\nexport function tsEnumMember(\n id: t.Identifier | t.StringLiteral,\n initializer: t.Expression | null = null,\n): t.TSEnumMember {\n const node: t.TSEnumMember = {\n type: \"TSEnumMember\",\n id,\n initializer,\n };\n const defs = NODE_FIELDS.TSEnumMember;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.initializer, node, \"initializer\", initializer, 1);\n return node;\n}\nexport { tsEnumMember as tSEnumMember };\nexport function tsModuleDeclaration(\n id: t.Identifier | t.StringLiteral,\n body: t.TSModuleBlock | t.TSModuleDeclaration,\n): t.TSModuleDeclaration {\n const node: t.TSModuleDeclaration = {\n type: \"TSModuleDeclaration\",\n id,\n body,\n kind: null,\n };\n const defs = NODE_FIELDS.TSModuleDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport { tsModuleDeclaration as tSModuleDeclaration };\nexport function tsModuleBlock(body: t.Statement[]): t.TSModuleBlock {\n const node: t.TSModuleBlock = {\n type: \"TSModuleBlock\",\n body,\n };\n const defs = NODE_FIELDS.TSModuleBlock;\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nexport { tsModuleBlock as tSModuleBlock };\nexport function tsImportType(\n argument: t.StringLiteral,\n qualifier: t.TSEntityName | null = null,\n typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSImportType {\n const node: t.TSImportType = {\n type: \"TSImportType\",\n argument,\n qualifier,\n typeParameters,\n };\n const defs = NODE_FIELDS.TSImportType;\n validate(defs.argument, node, \"argument\", argument, 1);\n validate(defs.qualifier, node, \"qualifier\", qualifier, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nexport { tsImportType as tSImportType };\nexport function tsImportEqualsDeclaration(\n id: t.Identifier,\n moduleReference: t.TSEntityName | t.TSExternalModuleReference,\n): t.TSImportEqualsDeclaration {\n const node: t.TSImportEqualsDeclaration = {\n type: \"TSImportEqualsDeclaration\",\n id,\n moduleReference,\n isExport: null,\n };\n const defs = NODE_FIELDS.TSImportEqualsDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.moduleReference, node, \"moduleReference\", moduleReference, 1);\n return node;\n}\nexport { tsImportEqualsDeclaration as tSImportEqualsDeclaration };\nexport function tsExternalModuleReference(\n expression: t.StringLiteral,\n): t.TSExternalModuleReference {\n const node: t.TSExternalModuleReference = {\n type: \"TSExternalModuleReference\",\n expression,\n };\n const defs = NODE_FIELDS.TSExternalModuleReference;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nexport { tsExternalModuleReference as tSExternalModuleReference };\nexport function tsNonNullExpression(\n expression: t.Expression,\n): t.TSNonNullExpression {\n const node: t.TSNonNullExpression = {\n type: \"TSNonNullExpression\",\n expression,\n };\n const defs = NODE_FIELDS.TSNonNullExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nexport { tsNonNullExpression as tSNonNullExpression };\nexport function tsExportAssignment(\n expression: t.Expression,\n): t.TSExportAssignment {\n const node: t.TSExportAssignment = {\n type: \"TSExportAssignment\",\n expression,\n };\n const defs = NODE_FIELDS.TSExportAssignment;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nexport { tsExportAssignment as tSExportAssignment };\nexport function tsNamespaceExportDeclaration(\n id: t.Identifier,\n): t.TSNamespaceExportDeclaration {\n const node: t.TSNamespaceExportDeclaration = {\n type: \"TSNamespaceExportDeclaration\",\n id,\n };\n const defs = NODE_FIELDS.TSNamespaceExportDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nexport { tsNamespaceExportDeclaration as tSNamespaceExportDeclaration };\nexport function tsTypeAnnotation(typeAnnotation: t.TSType): t.TSTypeAnnotation {\n const node: t.TSTypeAnnotation = {\n type: \"TSTypeAnnotation\",\n typeAnnotation,\n };\n const defs = NODE_FIELDS.TSTypeAnnotation;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nexport { tsTypeAnnotation as tSTypeAnnotation };\nexport function tsTypeParameterInstantiation(\n params: t.TSType[],\n): t.TSTypeParameterInstantiation {\n const node: t.TSTypeParameterInstantiation = {\n type: \"TSTypeParameterInstantiation\",\n params,\n };\n const defs = NODE_FIELDS.TSTypeParameterInstantiation;\n validate(defs.params, node, \"params\", params, 1);\n return node;\n}\nexport { tsTypeParameterInstantiation as tSTypeParameterInstantiation };\nexport function tsTypeParameterDeclaration(\n params: t.TSTypeParameter[],\n): t.TSTypeParameterDeclaration {\n const node: t.TSTypeParameterDeclaration = {\n type: \"TSTypeParameterDeclaration\",\n params,\n };\n const defs = NODE_FIELDS.TSTypeParameterDeclaration;\n validate(defs.params, node, \"params\", params, 1);\n return node;\n}\nexport { tsTypeParameterDeclaration as tSTypeParameterDeclaration };\nexport function tsTypeParameter(\n constraint: t.TSType | null | undefined = null,\n _default: t.TSType | null | undefined = null,\n name: string,\n): t.TSTypeParameter {\n const node: t.TSTypeParameter = {\n type: \"TSTypeParameter\",\n constraint,\n default: _default,\n name,\n };\n const defs = NODE_FIELDS.TSTypeParameter;\n validate(defs.constraint, node, \"constraint\", constraint, 1);\n validate(defs.default, node, \"default\", _default, 1);\n validate(defs.name, node, \"name\", name);\n return node;\n}\nexport { tsTypeParameter as tSTypeParameter };\n/** @deprecated */\nfunction NumberLiteral(value: number) {\n deprecationWarning(\"NumberLiteral\", \"NumericLiteral\", \"The node type \");\n return numericLiteral(value);\n}\nexport { NumberLiteral as numberLiteral };\n/** @deprecated */\nfunction RegexLiteral(pattern: string, flags: string = \"\") {\n deprecationWarning(\"RegexLiteral\", \"RegExpLiteral\", \"The node type \");\n return regExpLiteral(pattern, flags);\n}\nexport { RegexLiteral as regexLiteral };\n/** @deprecated */\nfunction RestProperty(\n argument:\n | t.Identifier\n | t.ArrayPattern\n | t.ObjectPattern\n | t.MemberExpression\n | t.TSAsExpression\n | t.TSSatisfiesExpression\n | t.TSTypeAssertion\n | t.TSNonNullExpression\n | t.RestElement\n | t.AssignmentPattern,\n) {\n deprecationWarning(\"RestProperty\", \"RestElement\", \"The node type \");\n return restElement(argument);\n}\nexport { RestProperty as restProperty };\n/** @deprecated */\nfunction SpreadProperty(argument: t.Expression) {\n deprecationWarning(\"SpreadProperty\", \"SpreadElement\", \"The node type \");\n return spreadElement(argument);\n}\nexport { SpreadProperty as spreadProperty };\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/builders/generated/uppercase.js b/vanilla/node_modules/@babel/types/lib/builders/generated/uppercase.js
new file mode 100644
index 0000000..b257c90
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/builders/generated/uppercase.js
@@ -0,0 +1,272 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.JSXIdentifier = exports.JSXFragment = exports.JSXExpressionContainer = exports.JSXEmptyExpression = exports.JSXElement = exports.JSXClosingFragment = exports.JSXClosingElement = exports.JSXAttribute = exports.IntersectionTypeAnnotation = exports.InterpreterDirective = exports.InterfaceTypeAnnotation = exports.InterfaceExtends = exports.InterfaceDeclaration = exports.InferredPredicate = exports.IndexedAccessType = exports.ImportSpecifier = exports.ImportNamespaceSpecifier = exports.ImportExpression = exports.ImportDefaultSpecifier = exports.ImportDeclaration = exports.ImportAttribute = exports.Import = exports.IfStatement = exports.Identifier = exports.GenericTypeAnnotation = exports.FunctionTypeParam = exports.FunctionTypeAnnotation = exports.FunctionExpression = exports.FunctionDeclaration = exports.ForStatement = exports.ForOfStatement = exports.ForInStatement = exports.File = exports.ExpressionStatement = exports.ExportSpecifier = exports.ExportNamespaceSpecifier = exports.ExportNamedDeclaration = exports.ExportDefaultSpecifier = exports.ExportDefaultDeclaration = exports.ExportAllDeclaration = exports.ExistsTypeAnnotation = exports.EnumSymbolBody = exports.EnumStringMember = exports.EnumStringBody = exports.EnumNumberMember = exports.EnumNumberBody = exports.EnumDefaultedMember = exports.EnumDeclaration = exports.EnumBooleanMember = exports.EnumBooleanBody = exports.EmptyTypeAnnotation = exports.EmptyStatement = exports.DoWhileStatement = exports.DoExpression = exports.DirectiveLiteral = exports.Directive = exports.Decorator = exports.DeclaredPredicate = exports.DeclareVariable = exports.DeclareTypeAlias = exports.DeclareOpaqueType = exports.DeclareModuleExports = exports.DeclareModule = exports.DeclareInterface = exports.DeclareFunction = exports.DeclareExportDeclaration = exports.DeclareExportAllDeclaration = exports.DeclareClass = exports.DecimalLiteral = exports.DebuggerStatement = exports.ContinueStatement = exports.ConditionalExpression = exports.ClassProperty = exports.ClassPrivateProperty = exports.ClassPrivateMethod = exports.ClassMethod = exports.ClassImplements = exports.ClassExpression = exports.ClassDeclaration = exports.ClassBody = exports.ClassAccessorProperty = exports.CatchClause = exports.CallExpression = exports.BreakStatement = exports.BooleanTypeAnnotation = exports.BooleanLiteralTypeAnnotation = exports.BooleanLiteral = exports.BlockStatement = exports.BindExpression = exports.BinaryExpression = exports.BigIntLiteral = exports.AwaitExpression = exports.AssignmentPattern = exports.AssignmentExpression = exports.ArrowFunctionExpression = exports.ArrayTypeAnnotation = exports.ArrayPattern = exports.ArrayExpression = exports.ArgumentPlaceholder = exports.AnyTypeAnnotation = void 0;
+exports.TSNumberKeyword = exports.TSNullKeyword = exports.TSNonNullExpression = exports.TSNeverKeyword = exports.TSNamespaceExportDeclaration = exports.TSNamedTupleMember = exports.TSModuleDeclaration = exports.TSModuleBlock = exports.TSMethodSignature = exports.TSMappedType = exports.TSLiteralType = exports.TSIntrinsicKeyword = exports.TSIntersectionType = exports.TSInterfaceDeclaration = exports.TSInterfaceBody = exports.TSInstantiationExpression = exports.TSInferType = exports.TSIndexedAccessType = exports.TSIndexSignature = exports.TSImportType = exports.TSImportEqualsDeclaration = exports.TSFunctionType = exports.TSExternalModuleReference = exports.TSExpressionWithTypeArguments = exports.TSExportAssignment = exports.TSEnumMember = exports.TSEnumDeclaration = exports.TSEnumBody = exports.TSDeclareMethod = exports.TSDeclareFunction = exports.TSConstructorType = exports.TSConstructSignatureDeclaration = exports.TSConditionalType = exports.TSCallSignatureDeclaration = exports.TSBooleanKeyword = exports.TSBigIntKeyword = exports.TSAsExpression = exports.TSArrayType = exports.TSAnyKeyword = exports.SymbolTypeAnnotation = exports.SwitchStatement = exports.SwitchCase = exports.Super = exports.StringTypeAnnotation = exports.StringLiteralTypeAnnotation = exports.StringLiteral = exports.StaticBlock = exports.SpreadProperty = exports.SpreadElement = exports.SequenceExpression = exports.ReturnStatement = exports.RestProperty = exports.RestElement = exports.RegexLiteral = exports.RegExpLiteral = exports.RecordExpression = exports.QualifiedTypeIdentifier = exports.Program = exports.PrivateName = exports.Placeholder = exports.PipelineTopicExpression = exports.PipelinePrimaryTopicReference = exports.PipelineBareFunction = exports.ParenthesizedExpression = exports.OptionalMemberExpression = exports.OptionalIndexedAccessType = exports.OptionalCallExpression = exports.OpaqueType = exports.ObjectTypeSpreadProperty = exports.ObjectTypeProperty = exports.ObjectTypeInternalSlot = exports.ObjectTypeIndexer = exports.ObjectTypeCallProperty = exports.ObjectTypeAnnotation = exports.ObjectProperty = exports.ObjectPattern = exports.ObjectMethod = exports.ObjectExpression = exports.NumericLiteral = exports.NumberTypeAnnotation = exports.NumberLiteralTypeAnnotation = exports.NumberLiteral = exports.NullableTypeAnnotation = exports.NullLiteralTypeAnnotation = exports.NullLiteral = exports.Noop = exports.NewExpression = exports.ModuleExpression = exports.MixedTypeAnnotation = exports.MetaProperty = exports.MemberExpression = exports.LogicalExpression = exports.LabeledStatement = exports.JSXText = exports.JSXSpreadChild = exports.JSXSpreadAttribute = exports.JSXOpeningFragment = exports.JSXOpeningElement = exports.JSXNamespacedName = exports.JSXMemberExpression = void 0;
+exports.YieldExpression = exports.WithStatement = exports.WhileStatement = exports.VoidTypeAnnotation = exports.VoidPattern = exports.Variance = exports.VariableDeclarator = exports.VariableDeclaration = exports.V8IntrinsicIdentifier = exports.UpdateExpression = exports.UnionTypeAnnotation = exports.UnaryExpression = exports.TypeofTypeAnnotation = exports.TypeParameterInstantiation = exports.TypeParameterDeclaration = exports.TypeParameter = exports.TypeCastExpression = exports.TypeAnnotation = exports.TypeAlias = exports.TupleTypeAnnotation = exports.TupleExpression = exports.TryStatement = exports.TopicReference = exports.ThrowStatement = exports.ThisTypeAnnotation = exports.ThisExpression = exports.TemplateLiteral = exports.TemplateElement = exports.TaggedTemplateExpression = exports.TSVoidKeyword = exports.TSUnknownKeyword = exports.TSUnionType = exports.TSUndefinedKeyword = exports.TSTypeReference = exports.TSTypeQuery = exports.TSTypePredicate = exports.TSTypeParameterInstantiation = exports.TSTypeParameterDeclaration = exports.TSTypeParameter = exports.TSTypeOperator = exports.TSTypeLiteral = exports.TSTypeAssertion = exports.TSTypeAnnotation = exports.TSTypeAliasDeclaration = exports.TSTupleType = exports.TSThisType = exports.TSTemplateLiteralType = exports.TSSymbolKeyword = exports.TSStringKeyword = exports.TSSatisfiesExpression = exports.TSRestType = exports.TSQualifiedName = exports.TSPropertySignature = exports.TSParenthesizedType = exports.TSParameterProperty = exports.TSOptionalType = exports.TSObjectKeyword = void 0;
+var b = require("./lowercase.js");
+var _deprecationWarning = require("../../utils/deprecationWarning.js");
+function alias(lowercase) {
+ return b[lowercase];
+}
+const ArrayExpression = exports.ArrayExpression = alias("arrayExpression"),
+ AssignmentExpression = exports.AssignmentExpression = alias("assignmentExpression"),
+ BinaryExpression = exports.BinaryExpression = alias("binaryExpression"),
+ InterpreterDirective = exports.InterpreterDirective = alias("interpreterDirective"),
+ Directive = exports.Directive = alias("directive"),
+ DirectiveLiteral = exports.DirectiveLiteral = alias("directiveLiteral"),
+ BlockStatement = exports.BlockStatement = alias("blockStatement"),
+ BreakStatement = exports.BreakStatement = alias("breakStatement"),
+ CallExpression = exports.CallExpression = alias("callExpression"),
+ CatchClause = exports.CatchClause = alias("catchClause"),
+ ConditionalExpression = exports.ConditionalExpression = alias("conditionalExpression"),
+ ContinueStatement = exports.ContinueStatement = alias("continueStatement"),
+ DebuggerStatement = exports.DebuggerStatement = alias("debuggerStatement"),
+ DoWhileStatement = exports.DoWhileStatement = alias("doWhileStatement"),
+ EmptyStatement = exports.EmptyStatement = alias("emptyStatement"),
+ ExpressionStatement = exports.ExpressionStatement = alias("expressionStatement"),
+ File = exports.File = alias("file"),
+ ForInStatement = exports.ForInStatement = alias("forInStatement"),
+ ForStatement = exports.ForStatement = alias("forStatement"),
+ FunctionDeclaration = exports.FunctionDeclaration = alias("functionDeclaration"),
+ FunctionExpression = exports.FunctionExpression = alias("functionExpression"),
+ Identifier = exports.Identifier = alias("identifier"),
+ IfStatement = exports.IfStatement = alias("ifStatement"),
+ LabeledStatement = exports.LabeledStatement = alias("labeledStatement"),
+ StringLiteral = exports.StringLiteral = alias("stringLiteral"),
+ NumericLiteral = exports.NumericLiteral = alias("numericLiteral"),
+ NullLiteral = exports.NullLiteral = alias("nullLiteral"),
+ BooleanLiteral = exports.BooleanLiteral = alias("booleanLiteral"),
+ RegExpLiteral = exports.RegExpLiteral = alias("regExpLiteral"),
+ LogicalExpression = exports.LogicalExpression = alias("logicalExpression"),
+ MemberExpression = exports.MemberExpression = alias("memberExpression"),
+ NewExpression = exports.NewExpression = alias("newExpression"),
+ Program = exports.Program = alias("program"),
+ ObjectExpression = exports.ObjectExpression = alias("objectExpression"),
+ ObjectMethod = exports.ObjectMethod = alias("objectMethod"),
+ ObjectProperty = exports.ObjectProperty = alias("objectProperty"),
+ RestElement = exports.RestElement = alias("restElement"),
+ ReturnStatement = exports.ReturnStatement = alias("returnStatement"),
+ SequenceExpression = exports.SequenceExpression = alias("sequenceExpression"),
+ ParenthesizedExpression = exports.ParenthesizedExpression = alias("parenthesizedExpression"),
+ SwitchCase = exports.SwitchCase = alias("switchCase"),
+ SwitchStatement = exports.SwitchStatement = alias("switchStatement"),
+ ThisExpression = exports.ThisExpression = alias("thisExpression"),
+ ThrowStatement = exports.ThrowStatement = alias("throwStatement"),
+ TryStatement = exports.TryStatement = alias("tryStatement"),
+ UnaryExpression = exports.UnaryExpression = alias("unaryExpression"),
+ UpdateExpression = exports.UpdateExpression = alias("updateExpression"),
+ VariableDeclaration = exports.VariableDeclaration = alias("variableDeclaration"),
+ VariableDeclarator = exports.VariableDeclarator = alias("variableDeclarator"),
+ WhileStatement = exports.WhileStatement = alias("whileStatement"),
+ WithStatement = exports.WithStatement = alias("withStatement"),
+ AssignmentPattern = exports.AssignmentPattern = alias("assignmentPattern"),
+ ArrayPattern = exports.ArrayPattern = alias("arrayPattern"),
+ ArrowFunctionExpression = exports.ArrowFunctionExpression = alias("arrowFunctionExpression"),
+ ClassBody = exports.ClassBody = alias("classBody"),
+ ClassExpression = exports.ClassExpression = alias("classExpression"),
+ ClassDeclaration = exports.ClassDeclaration = alias("classDeclaration"),
+ ExportAllDeclaration = exports.ExportAllDeclaration = alias("exportAllDeclaration"),
+ ExportDefaultDeclaration = exports.ExportDefaultDeclaration = alias("exportDefaultDeclaration"),
+ ExportNamedDeclaration = exports.ExportNamedDeclaration = alias("exportNamedDeclaration"),
+ ExportSpecifier = exports.ExportSpecifier = alias("exportSpecifier"),
+ ForOfStatement = exports.ForOfStatement = alias("forOfStatement"),
+ ImportDeclaration = exports.ImportDeclaration = alias("importDeclaration"),
+ ImportDefaultSpecifier = exports.ImportDefaultSpecifier = alias("importDefaultSpecifier"),
+ ImportNamespaceSpecifier = exports.ImportNamespaceSpecifier = alias("importNamespaceSpecifier"),
+ ImportSpecifier = exports.ImportSpecifier = alias("importSpecifier"),
+ ImportExpression = exports.ImportExpression = alias("importExpression"),
+ MetaProperty = exports.MetaProperty = alias("metaProperty"),
+ ClassMethod = exports.ClassMethod = alias("classMethod"),
+ ObjectPattern = exports.ObjectPattern = alias("objectPattern"),
+ SpreadElement = exports.SpreadElement = alias("spreadElement"),
+ Super = exports.Super = alias("super"),
+ TaggedTemplateExpression = exports.TaggedTemplateExpression = alias("taggedTemplateExpression"),
+ TemplateElement = exports.TemplateElement = alias("templateElement"),
+ TemplateLiteral = exports.TemplateLiteral = alias("templateLiteral"),
+ YieldExpression = exports.YieldExpression = alias("yieldExpression"),
+ AwaitExpression = exports.AwaitExpression = alias("awaitExpression"),
+ Import = exports.Import = alias("import"),
+ BigIntLiteral = exports.BigIntLiteral = alias("bigIntLiteral"),
+ ExportNamespaceSpecifier = exports.ExportNamespaceSpecifier = alias("exportNamespaceSpecifier"),
+ OptionalMemberExpression = exports.OptionalMemberExpression = alias("optionalMemberExpression"),
+ OptionalCallExpression = exports.OptionalCallExpression = alias("optionalCallExpression"),
+ ClassProperty = exports.ClassProperty = alias("classProperty"),
+ ClassAccessorProperty = exports.ClassAccessorProperty = alias("classAccessorProperty"),
+ ClassPrivateProperty = exports.ClassPrivateProperty = alias("classPrivateProperty"),
+ ClassPrivateMethod = exports.ClassPrivateMethod = alias("classPrivateMethod"),
+ PrivateName = exports.PrivateName = alias("privateName"),
+ StaticBlock = exports.StaticBlock = alias("staticBlock"),
+ ImportAttribute = exports.ImportAttribute = alias("importAttribute"),
+ AnyTypeAnnotation = exports.AnyTypeAnnotation = alias("anyTypeAnnotation"),
+ ArrayTypeAnnotation = exports.ArrayTypeAnnotation = alias("arrayTypeAnnotation"),
+ BooleanTypeAnnotation = exports.BooleanTypeAnnotation = alias("booleanTypeAnnotation"),
+ BooleanLiteralTypeAnnotation = exports.BooleanLiteralTypeAnnotation = alias("booleanLiteralTypeAnnotation"),
+ NullLiteralTypeAnnotation = exports.NullLiteralTypeAnnotation = alias("nullLiteralTypeAnnotation"),
+ ClassImplements = exports.ClassImplements = alias("classImplements"),
+ DeclareClass = exports.DeclareClass = alias("declareClass"),
+ DeclareFunction = exports.DeclareFunction = alias("declareFunction"),
+ DeclareInterface = exports.DeclareInterface = alias("declareInterface"),
+ DeclareModule = exports.DeclareModule = alias("declareModule"),
+ DeclareModuleExports = exports.DeclareModuleExports = alias("declareModuleExports"),
+ DeclareTypeAlias = exports.DeclareTypeAlias = alias("declareTypeAlias"),
+ DeclareOpaqueType = exports.DeclareOpaqueType = alias("declareOpaqueType"),
+ DeclareVariable = exports.DeclareVariable = alias("declareVariable"),
+ DeclareExportDeclaration = exports.DeclareExportDeclaration = alias("declareExportDeclaration"),
+ DeclareExportAllDeclaration = exports.DeclareExportAllDeclaration = alias("declareExportAllDeclaration"),
+ DeclaredPredicate = exports.DeclaredPredicate = alias("declaredPredicate"),
+ ExistsTypeAnnotation = exports.ExistsTypeAnnotation = alias("existsTypeAnnotation"),
+ FunctionTypeAnnotation = exports.FunctionTypeAnnotation = alias("functionTypeAnnotation"),
+ FunctionTypeParam = exports.FunctionTypeParam = alias("functionTypeParam"),
+ GenericTypeAnnotation = exports.GenericTypeAnnotation = alias("genericTypeAnnotation"),
+ InferredPredicate = exports.InferredPredicate = alias("inferredPredicate"),
+ InterfaceExtends = exports.InterfaceExtends = alias("interfaceExtends"),
+ InterfaceDeclaration = exports.InterfaceDeclaration = alias("interfaceDeclaration"),
+ InterfaceTypeAnnotation = exports.InterfaceTypeAnnotation = alias("interfaceTypeAnnotation"),
+ IntersectionTypeAnnotation = exports.IntersectionTypeAnnotation = alias("intersectionTypeAnnotation"),
+ MixedTypeAnnotation = exports.MixedTypeAnnotation = alias("mixedTypeAnnotation"),
+ EmptyTypeAnnotation = exports.EmptyTypeAnnotation = alias("emptyTypeAnnotation"),
+ NullableTypeAnnotation = exports.NullableTypeAnnotation = alias("nullableTypeAnnotation"),
+ NumberLiteralTypeAnnotation = exports.NumberLiteralTypeAnnotation = alias("numberLiteralTypeAnnotation"),
+ NumberTypeAnnotation = exports.NumberTypeAnnotation = alias("numberTypeAnnotation"),
+ ObjectTypeAnnotation = exports.ObjectTypeAnnotation = alias("objectTypeAnnotation"),
+ ObjectTypeInternalSlot = exports.ObjectTypeInternalSlot = alias("objectTypeInternalSlot"),
+ ObjectTypeCallProperty = exports.ObjectTypeCallProperty = alias("objectTypeCallProperty"),
+ ObjectTypeIndexer = exports.ObjectTypeIndexer = alias("objectTypeIndexer"),
+ ObjectTypeProperty = exports.ObjectTypeProperty = alias("objectTypeProperty"),
+ ObjectTypeSpreadProperty = exports.ObjectTypeSpreadProperty = alias("objectTypeSpreadProperty"),
+ OpaqueType = exports.OpaqueType = alias("opaqueType"),
+ QualifiedTypeIdentifier = exports.QualifiedTypeIdentifier = alias("qualifiedTypeIdentifier"),
+ StringLiteralTypeAnnotation = exports.StringLiteralTypeAnnotation = alias("stringLiteralTypeAnnotation"),
+ StringTypeAnnotation = exports.StringTypeAnnotation = alias("stringTypeAnnotation"),
+ SymbolTypeAnnotation = exports.SymbolTypeAnnotation = alias("symbolTypeAnnotation"),
+ ThisTypeAnnotation = exports.ThisTypeAnnotation = alias("thisTypeAnnotation"),
+ TupleTypeAnnotation = exports.TupleTypeAnnotation = alias("tupleTypeAnnotation"),
+ TypeofTypeAnnotation = exports.TypeofTypeAnnotation = alias("typeofTypeAnnotation"),
+ TypeAlias = exports.TypeAlias = alias("typeAlias"),
+ TypeAnnotation = exports.TypeAnnotation = alias("typeAnnotation"),
+ TypeCastExpression = exports.TypeCastExpression = alias("typeCastExpression"),
+ TypeParameter = exports.TypeParameter = alias("typeParameter"),
+ TypeParameterDeclaration = exports.TypeParameterDeclaration = alias("typeParameterDeclaration"),
+ TypeParameterInstantiation = exports.TypeParameterInstantiation = alias("typeParameterInstantiation"),
+ UnionTypeAnnotation = exports.UnionTypeAnnotation = alias("unionTypeAnnotation"),
+ Variance = exports.Variance = alias("variance"),
+ VoidTypeAnnotation = exports.VoidTypeAnnotation = alias("voidTypeAnnotation"),
+ EnumDeclaration = exports.EnumDeclaration = alias("enumDeclaration"),
+ EnumBooleanBody = exports.EnumBooleanBody = alias("enumBooleanBody"),
+ EnumNumberBody = exports.EnumNumberBody = alias("enumNumberBody"),
+ EnumStringBody = exports.EnumStringBody = alias("enumStringBody"),
+ EnumSymbolBody = exports.EnumSymbolBody = alias("enumSymbolBody"),
+ EnumBooleanMember = exports.EnumBooleanMember = alias("enumBooleanMember"),
+ EnumNumberMember = exports.EnumNumberMember = alias("enumNumberMember"),
+ EnumStringMember = exports.EnumStringMember = alias("enumStringMember"),
+ EnumDefaultedMember = exports.EnumDefaultedMember = alias("enumDefaultedMember"),
+ IndexedAccessType = exports.IndexedAccessType = alias("indexedAccessType"),
+ OptionalIndexedAccessType = exports.OptionalIndexedAccessType = alias("optionalIndexedAccessType"),
+ JSXAttribute = exports.JSXAttribute = alias("jsxAttribute"),
+ JSXClosingElement = exports.JSXClosingElement = alias("jsxClosingElement"),
+ JSXElement = exports.JSXElement = alias("jsxElement"),
+ JSXEmptyExpression = exports.JSXEmptyExpression = alias("jsxEmptyExpression"),
+ JSXExpressionContainer = exports.JSXExpressionContainer = alias("jsxExpressionContainer"),
+ JSXSpreadChild = exports.JSXSpreadChild = alias("jsxSpreadChild"),
+ JSXIdentifier = exports.JSXIdentifier = alias("jsxIdentifier"),
+ JSXMemberExpression = exports.JSXMemberExpression = alias("jsxMemberExpression"),
+ JSXNamespacedName = exports.JSXNamespacedName = alias("jsxNamespacedName"),
+ JSXOpeningElement = exports.JSXOpeningElement = alias("jsxOpeningElement"),
+ JSXSpreadAttribute = exports.JSXSpreadAttribute = alias("jsxSpreadAttribute"),
+ JSXText = exports.JSXText = alias("jsxText"),
+ JSXFragment = exports.JSXFragment = alias("jsxFragment"),
+ JSXOpeningFragment = exports.JSXOpeningFragment = alias("jsxOpeningFragment"),
+ JSXClosingFragment = exports.JSXClosingFragment = alias("jsxClosingFragment"),
+ Noop = exports.Noop = alias("noop"),
+ Placeholder = exports.Placeholder = alias("placeholder"),
+ V8IntrinsicIdentifier = exports.V8IntrinsicIdentifier = alias("v8IntrinsicIdentifier"),
+ ArgumentPlaceholder = exports.ArgumentPlaceholder = alias("argumentPlaceholder"),
+ BindExpression = exports.BindExpression = alias("bindExpression"),
+ Decorator = exports.Decorator = alias("decorator"),
+ DoExpression = exports.DoExpression = alias("doExpression"),
+ ExportDefaultSpecifier = exports.ExportDefaultSpecifier = alias("exportDefaultSpecifier"),
+ RecordExpression = exports.RecordExpression = alias("recordExpression"),
+ TupleExpression = exports.TupleExpression = alias("tupleExpression"),
+ DecimalLiteral = exports.DecimalLiteral = alias("decimalLiteral"),
+ ModuleExpression = exports.ModuleExpression = alias("moduleExpression"),
+ TopicReference = exports.TopicReference = alias("topicReference"),
+ PipelineTopicExpression = exports.PipelineTopicExpression = alias("pipelineTopicExpression"),
+ PipelineBareFunction = exports.PipelineBareFunction = alias("pipelineBareFunction"),
+ PipelinePrimaryTopicReference = exports.PipelinePrimaryTopicReference = alias("pipelinePrimaryTopicReference"),
+ VoidPattern = exports.VoidPattern = alias("voidPattern"),
+ TSParameterProperty = exports.TSParameterProperty = alias("tsParameterProperty"),
+ TSDeclareFunction = exports.TSDeclareFunction = alias("tsDeclareFunction"),
+ TSDeclareMethod = exports.TSDeclareMethod = alias("tsDeclareMethod"),
+ TSQualifiedName = exports.TSQualifiedName = alias("tsQualifiedName"),
+ TSCallSignatureDeclaration = exports.TSCallSignatureDeclaration = alias("tsCallSignatureDeclaration"),
+ TSConstructSignatureDeclaration = exports.TSConstructSignatureDeclaration = alias("tsConstructSignatureDeclaration"),
+ TSPropertySignature = exports.TSPropertySignature = alias("tsPropertySignature"),
+ TSMethodSignature = exports.TSMethodSignature = alias("tsMethodSignature"),
+ TSIndexSignature = exports.TSIndexSignature = alias("tsIndexSignature"),
+ TSAnyKeyword = exports.TSAnyKeyword = alias("tsAnyKeyword"),
+ TSBooleanKeyword = exports.TSBooleanKeyword = alias("tsBooleanKeyword"),
+ TSBigIntKeyword = exports.TSBigIntKeyword = alias("tsBigIntKeyword"),
+ TSIntrinsicKeyword = exports.TSIntrinsicKeyword = alias("tsIntrinsicKeyword"),
+ TSNeverKeyword = exports.TSNeverKeyword = alias("tsNeverKeyword"),
+ TSNullKeyword = exports.TSNullKeyword = alias("tsNullKeyword"),
+ TSNumberKeyword = exports.TSNumberKeyword = alias("tsNumberKeyword"),
+ TSObjectKeyword = exports.TSObjectKeyword = alias("tsObjectKeyword"),
+ TSStringKeyword = exports.TSStringKeyword = alias("tsStringKeyword"),
+ TSSymbolKeyword = exports.TSSymbolKeyword = alias("tsSymbolKeyword"),
+ TSUndefinedKeyword = exports.TSUndefinedKeyword = alias("tsUndefinedKeyword"),
+ TSUnknownKeyword = exports.TSUnknownKeyword = alias("tsUnknownKeyword"),
+ TSVoidKeyword = exports.TSVoidKeyword = alias("tsVoidKeyword"),
+ TSThisType = exports.TSThisType = alias("tsThisType"),
+ TSFunctionType = exports.TSFunctionType = alias("tsFunctionType"),
+ TSConstructorType = exports.TSConstructorType = alias("tsConstructorType"),
+ TSTypeReference = exports.TSTypeReference = alias("tsTypeReference"),
+ TSTypePredicate = exports.TSTypePredicate = alias("tsTypePredicate"),
+ TSTypeQuery = exports.TSTypeQuery = alias("tsTypeQuery"),
+ TSTypeLiteral = exports.TSTypeLiteral = alias("tsTypeLiteral"),
+ TSArrayType = exports.TSArrayType = alias("tsArrayType"),
+ TSTupleType = exports.TSTupleType = alias("tsTupleType"),
+ TSOptionalType = exports.TSOptionalType = alias("tsOptionalType"),
+ TSRestType = exports.TSRestType = alias("tsRestType"),
+ TSNamedTupleMember = exports.TSNamedTupleMember = alias("tsNamedTupleMember"),
+ TSUnionType = exports.TSUnionType = alias("tsUnionType"),
+ TSIntersectionType = exports.TSIntersectionType = alias("tsIntersectionType"),
+ TSConditionalType = exports.TSConditionalType = alias("tsConditionalType"),
+ TSInferType = exports.TSInferType = alias("tsInferType"),
+ TSParenthesizedType = exports.TSParenthesizedType = alias("tsParenthesizedType"),
+ TSTypeOperator = exports.TSTypeOperator = alias("tsTypeOperator"),
+ TSIndexedAccessType = exports.TSIndexedAccessType = alias("tsIndexedAccessType"),
+ TSMappedType = exports.TSMappedType = alias("tsMappedType"),
+ TSTemplateLiteralType = exports.TSTemplateLiteralType = alias("tsTemplateLiteralType"),
+ TSLiteralType = exports.TSLiteralType = alias("tsLiteralType"),
+ TSExpressionWithTypeArguments = exports.TSExpressionWithTypeArguments = alias("tsExpressionWithTypeArguments"),
+ TSInterfaceDeclaration = exports.TSInterfaceDeclaration = alias("tsInterfaceDeclaration"),
+ TSInterfaceBody = exports.TSInterfaceBody = alias("tsInterfaceBody"),
+ TSTypeAliasDeclaration = exports.TSTypeAliasDeclaration = alias("tsTypeAliasDeclaration"),
+ TSInstantiationExpression = exports.TSInstantiationExpression = alias("tsInstantiationExpression"),
+ TSAsExpression = exports.TSAsExpression = alias("tsAsExpression"),
+ TSSatisfiesExpression = exports.TSSatisfiesExpression = alias("tsSatisfiesExpression"),
+ TSTypeAssertion = exports.TSTypeAssertion = alias("tsTypeAssertion"),
+ TSEnumBody = exports.TSEnumBody = alias("tsEnumBody"),
+ TSEnumDeclaration = exports.TSEnumDeclaration = alias("tsEnumDeclaration"),
+ TSEnumMember = exports.TSEnumMember = alias("tsEnumMember"),
+ TSModuleDeclaration = exports.TSModuleDeclaration = alias("tsModuleDeclaration"),
+ TSModuleBlock = exports.TSModuleBlock = alias("tsModuleBlock"),
+ TSImportType = exports.TSImportType = alias("tsImportType"),
+ TSImportEqualsDeclaration = exports.TSImportEqualsDeclaration = alias("tsImportEqualsDeclaration"),
+ TSExternalModuleReference = exports.TSExternalModuleReference = alias("tsExternalModuleReference"),
+ TSNonNullExpression = exports.TSNonNullExpression = alias("tsNonNullExpression"),
+ TSExportAssignment = exports.TSExportAssignment = alias("tsExportAssignment"),
+ TSNamespaceExportDeclaration = exports.TSNamespaceExportDeclaration = alias("tsNamespaceExportDeclaration"),
+ TSTypeAnnotation = exports.TSTypeAnnotation = alias("tsTypeAnnotation"),
+ TSTypeParameterInstantiation = exports.TSTypeParameterInstantiation = alias("tsTypeParameterInstantiation"),
+ TSTypeParameterDeclaration = exports.TSTypeParameterDeclaration = alias("tsTypeParameterDeclaration"),
+ TSTypeParameter = exports.TSTypeParameter = alias("tsTypeParameter");
+const NumberLiteral = exports.NumberLiteral = b.numberLiteral,
+ RegexLiteral = exports.RegexLiteral = b.regexLiteral,
+ RestProperty = exports.RestProperty = b.restProperty,
+ SpreadProperty = exports.SpreadProperty = b.spreadProperty;
+
+//# sourceMappingURL=uppercase.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/builders/generated/uppercase.js.map b/vanilla/node_modules/@babel/types/lib/builders/generated/uppercase.js.map
new file mode 100644
index 0000000..9a7654c
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/builders/generated/uppercase.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["b","require","_deprecationWarning","alias","lowercase","ArrayExpression","exports","AssignmentExpression","BinaryExpression","InterpreterDirective","Directive","DirectiveLiteral","BlockStatement","BreakStatement","CallExpression","CatchClause","ConditionalExpression","ContinueStatement","DebuggerStatement","DoWhileStatement","EmptyStatement","ExpressionStatement","File","ForInStatement","ForStatement","FunctionDeclaration","FunctionExpression","Identifier","IfStatement","LabeledStatement","StringLiteral","NumericLiteral","NullLiteral","BooleanLiteral","RegExpLiteral","LogicalExpression","MemberExpression","NewExpression","Program","ObjectExpression","ObjectMethod","ObjectProperty","RestElement","ReturnStatement","SequenceExpression","ParenthesizedExpression","SwitchCase","SwitchStatement","ThisExpression","ThrowStatement","TryStatement","UnaryExpression","UpdateExpression","VariableDeclaration","VariableDeclarator","WhileStatement","WithStatement","AssignmentPattern","ArrayPattern","ArrowFunctionExpression","ClassBody","ClassExpression","ClassDeclaration","ExportAllDeclaration","ExportDefaultDeclaration","ExportNamedDeclaration","ExportSpecifier","ForOfStatement","ImportDeclaration","ImportDefaultSpecifier","ImportNamespaceSpecifier","ImportSpecifier","ImportExpression","MetaProperty","ClassMethod","ObjectPattern","SpreadElement","Super","TaggedTemplateExpression","TemplateElement","TemplateLiteral","YieldExpression","AwaitExpression","Import","BigIntLiteral","ExportNamespaceSpecifier","OptionalMemberExpression","OptionalCallExpression","ClassProperty","ClassAccessorProperty","ClassPrivateProperty","ClassPrivateMethod","PrivateName","StaticBlock","ImportAttribute","AnyTypeAnnotation","ArrayTypeAnnotation","BooleanTypeAnnotation","BooleanLiteralTypeAnnotation","NullLiteralTypeAnnotation","ClassImplements","DeclareClass","DeclareFunction","DeclareInterface","DeclareModule","DeclareModuleExports","DeclareTypeAlias","DeclareOpaqueType","DeclareVariable","DeclareExportDeclaration","DeclareExportAllDeclaration","DeclaredPredicate","ExistsTypeAnnotation","FunctionTypeAnnotation","FunctionTypeParam","GenericTypeAnnotation","InferredPredicate","InterfaceExtends","InterfaceDeclaration","InterfaceTypeAnnotation","IntersectionTypeAnnotation","MixedTypeAnnotation","EmptyTypeAnnotation","NullableTypeAnnotation","NumberLiteralTypeAnnotation","NumberTypeAnnotation","ObjectTypeAnnotation","ObjectTypeInternalSlot","ObjectTypeCallProperty","ObjectTypeIndexer","ObjectTypeProperty","ObjectTypeSpreadProperty","OpaqueType","QualifiedTypeIdentifier","StringLiteralTypeAnnotation","StringTypeAnnotation","SymbolTypeAnnotation","ThisTypeAnnotation","TupleTypeAnnotation","TypeofTypeAnnotation","TypeAlias","TypeAnnotation","TypeCastExpression","TypeParameter","TypeParameterDeclaration","TypeParameterInstantiation","UnionTypeAnnotation","Variance","VoidTypeAnnotation","EnumDeclaration","EnumBooleanBody","EnumNumberBody","EnumStringBody","EnumSymbolBody","EnumBooleanMember","EnumNumberMember","EnumStringMember","EnumDefaultedMember","IndexedAccessType","OptionalIndexedAccessType","JSXAttribute","JSXClosingElement","JSXElement","JSXEmptyExpression","JSXExpressionContainer","JSXSpreadChild","JSXIdentifier","JSXMemberExpression","JSXNamespacedName","JSXOpeningElement","JSXSpreadAttribute","JSXText","JSXFragment","JSXOpeningFragment","JSXClosingFragment","Noop","Placeholder","V8IntrinsicIdentifier","ArgumentPlaceholder","BindExpression","Decorator","DoExpression","ExportDefaultSpecifier","RecordExpression","TupleExpression","DecimalLiteral","ModuleExpression","TopicReference","PipelineTopicExpression","PipelineBareFunction","PipelinePrimaryTopicReference","VoidPattern","TSParameterProperty","TSDeclareFunction","TSDeclareMethod","TSQualifiedName","TSCallSignatureDeclaration","TSConstructSignatureDeclaration","TSPropertySignature","TSMethodSignature","TSIndexSignature","TSAnyKeyword","TSBooleanKeyword","TSBigIntKeyword","TSIntrinsicKeyword","TSNeverKeyword","TSNullKeyword","TSNumberKeyword","TSObjectKeyword","TSStringKeyword","TSSymbolKeyword","TSUndefinedKeyword","TSUnknownKeyword","TSVoidKeyword","TSThisType","TSFunctionType","TSConstructorType","TSTypeReference","TSTypePredicate","TSTypeQuery","TSTypeLiteral","TSArrayType","TSTupleType","TSOptionalType","TSRestType","TSNamedTupleMember","TSUnionType","TSIntersectionType","TSConditionalType","TSInferType","TSParenthesizedType","TSTypeOperator","TSIndexedAccessType","TSMappedType","TSTemplateLiteralType","TSLiteralType","TSExpressionWithTypeArguments","TSInterfaceDeclaration","TSInterfaceBody","TSTypeAliasDeclaration","TSInstantiationExpression","TSAsExpression","TSSatisfiesExpression","TSTypeAssertion","TSEnumBody","TSEnumDeclaration","TSEnumMember","TSModuleDeclaration","TSModuleBlock","TSImportType","TSImportEqualsDeclaration","TSExternalModuleReference","TSNonNullExpression","TSExportAssignment","TSNamespaceExportDeclaration","TSTypeAnnotation","TSTypeParameterInstantiation","TSTypeParameterDeclaration","TSTypeParameter","NumberLiteral","numberLiteral","RegexLiteral","regexLiteral","RestProperty","restProperty","SpreadProperty","spreadProperty"],"sources":["../../../src/builders/generated/uppercase.ts"],"sourcesContent":["/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\n\nimport * as b from \"./lowercase.ts\";\nimport deprecationWarning from \"../../utils/deprecationWarning.ts\";\n\nfunction alias<const N extends keyof typeof b>(lowercase: N): (typeof b)[N] {\n if (process.env.BABEL_8_BREAKING) {\n return function () {\n deprecationWarning(\n lowercase.replace(/^(?:ts|jsx|[a-z])/, x => x.toUpperCase()),\n lowercase,\n \"Usage of builders starting with an uppercase letter such as \",\n \"uppercase builders\",\n );\n return (b[lowercase] as any)(...arguments);\n } as any;\n } else {\n return b[lowercase];\n }\n}\n\nexport const ArrayExpression = alias(\"arrayExpression\"),\n AssignmentExpression = alias(\"assignmentExpression\"),\n BinaryExpression = alias(\"binaryExpression\"),\n InterpreterDirective = alias(\"interpreterDirective\"),\n Directive = alias(\"directive\"),\n DirectiveLiteral = alias(\"directiveLiteral\"),\n BlockStatement = alias(\"blockStatement\"),\n BreakStatement = alias(\"breakStatement\"),\n CallExpression = alias(\"callExpression\"),\n CatchClause = alias(\"catchClause\"),\n ConditionalExpression = alias(\"conditionalExpression\"),\n ContinueStatement = alias(\"continueStatement\"),\n DebuggerStatement = alias(\"debuggerStatement\"),\n DoWhileStatement = alias(\"doWhileStatement\"),\n EmptyStatement = alias(\"emptyStatement\"),\n ExpressionStatement = alias(\"expressionStatement\"),\n File = alias(\"file\"),\n ForInStatement = alias(\"forInStatement\"),\n ForStatement = alias(\"forStatement\"),\n FunctionDeclaration = alias(\"functionDeclaration\"),\n FunctionExpression = alias(\"functionExpression\"),\n Identifier = alias(\"identifier\"),\n IfStatement = alias(\"ifStatement\"),\n LabeledStatement = alias(\"labeledStatement\"),\n StringLiteral = alias(\"stringLiteral\"),\n NumericLiteral = alias(\"numericLiteral\"),\n NullLiteral = alias(\"nullLiteral\"),\n BooleanLiteral = alias(\"booleanLiteral\"),\n RegExpLiteral = alias(\"regExpLiteral\"),\n LogicalExpression = alias(\"logicalExpression\"),\n MemberExpression = alias(\"memberExpression\"),\n NewExpression = alias(\"newExpression\"),\n Program = alias(\"program\"),\n ObjectExpression = alias(\"objectExpression\"),\n ObjectMethod = alias(\"objectMethod\"),\n ObjectProperty = alias(\"objectProperty\"),\n RestElement = alias(\"restElement\"),\n ReturnStatement = alias(\"returnStatement\"),\n SequenceExpression = alias(\"sequenceExpression\"),\n ParenthesizedExpression = alias(\"parenthesizedExpression\"),\n SwitchCase = alias(\"switchCase\"),\n SwitchStatement = alias(\"switchStatement\"),\n ThisExpression = alias(\"thisExpression\"),\n ThrowStatement = alias(\"throwStatement\"),\n TryStatement = alias(\"tryStatement\"),\n UnaryExpression = alias(\"unaryExpression\"),\n UpdateExpression = alias(\"updateExpression\"),\n VariableDeclaration = alias(\"variableDeclaration\"),\n VariableDeclarator = alias(\"variableDeclarator\"),\n WhileStatement = alias(\"whileStatement\"),\n WithStatement = alias(\"withStatement\"),\n AssignmentPattern = alias(\"assignmentPattern\"),\n ArrayPattern = alias(\"arrayPattern\"),\n ArrowFunctionExpression = alias(\"arrowFunctionExpression\"),\n ClassBody = alias(\"classBody\"),\n ClassExpression = alias(\"classExpression\"),\n ClassDeclaration = alias(\"classDeclaration\"),\n ExportAllDeclaration = alias(\"exportAllDeclaration\"),\n ExportDefaultDeclaration = alias(\"exportDefaultDeclaration\"),\n ExportNamedDeclaration = alias(\"exportNamedDeclaration\"),\n ExportSpecifier = alias(\"exportSpecifier\"),\n ForOfStatement = alias(\"forOfStatement\"),\n ImportDeclaration = alias(\"importDeclaration\"),\n ImportDefaultSpecifier = alias(\"importDefaultSpecifier\"),\n ImportNamespaceSpecifier = alias(\"importNamespaceSpecifier\"),\n ImportSpecifier = alias(\"importSpecifier\"),\n ImportExpression = alias(\"importExpression\"),\n MetaProperty = alias(\"metaProperty\"),\n ClassMethod = alias(\"classMethod\"),\n ObjectPattern = alias(\"objectPattern\"),\n SpreadElement = alias(\"spreadElement\"),\n Super = alias(\"super\"),\n TaggedTemplateExpression = alias(\"taggedTemplateExpression\"),\n TemplateElement = alias(\"templateElement\"),\n TemplateLiteral = alias(\"templateLiteral\"),\n YieldExpression = alias(\"yieldExpression\"),\n AwaitExpression = alias(\"awaitExpression\"),\n Import = alias(\"import\"),\n BigIntLiteral = alias(\"bigIntLiteral\"),\n ExportNamespaceSpecifier = alias(\"exportNamespaceSpecifier\"),\n OptionalMemberExpression = alias(\"optionalMemberExpression\"),\n OptionalCallExpression = alias(\"optionalCallExpression\"),\n ClassProperty = alias(\"classProperty\"),\n ClassAccessorProperty = alias(\"classAccessorProperty\"),\n ClassPrivateProperty = alias(\"classPrivateProperty\"),\n ClassPrivateMethod = alias(\"classPrivateMethod\"),\n PrivateName = alias(\"privateName\"),\n StaticBlock = alias(\"staticBlock\"),\n ImportAttribute = alias(\"importAttribute\"),\n AnyTypeAnnotation = alias(\"anyTypeAnnotation\"),\n ArrayTypeAnnotation = alias(\"arrayTypeAnnotation\"),\n BooleanTypeAnnotation = alias(\"booleanTypeAnnotation\"),\n BooleanLiteralTypeAnnotation = alias(\"booleanLiteralTypeAnnotation\"),\n NullLiteralTypeAnnotation = alias(\"nullLiteralTypeAnnotation\"),\n ClassImplements = alias(\"classImplements\"),\n DeclareClass = alias(\"declareClass\"),\n DeclareFunction = alias(\"declareFunction\"),\n DeclareInterface = alias(\"declareInterface\"),\n DeclareModule = alias(\"declareModule\"),\n DeclareModuleExports = alias(\"declareModuleExports\"),\n DeclareTypeAlias = alias(\"declareTypeAlias\"),\n DeclareOpaqueType = alias(\"declareOpaqueType\"),\n DeclareVariable = alias(\"declareVariable\"),\n DeclareExportDeclaration = alias(\"declareExportDeclaration\"),\n DeclareExportAllDeclaration = alias(\"declareExportAllDeclaration\"),\n DeclaredPredicate = alias(\"declaredPredicate\"),\n ExistsTypeAnnotation = alias(\"existsTypeAnnotation\"),\n FunctionTypeAnnotation = alias(\"functionTypeAnnotation\"),\n FunctionTypeParam = alias(\"functionTypeParam\"),\n GenericTypeAnnotation = alias(\"genericTypeAnnotation\"),\n InferredPredicate = alias(\"inferredPredicate\"),\n InterfaceExtends = alias(\"interfaceExtends\"),\n InterfaceDeclaration = alias(\"interfaceDeclaration\"),\n InterfaceTypeAnnotation = alias(\"interfaceTypeAnnotation\"),\n IntersectionTypeAnnotation = alias(\"intersectionTypeAnnotation\"),\n MixedTypeAnnotation = alias(\"mixedTypeAnnotation\"),\n EmptyTypeAnnotation = alias(\"emptyTypeAnnotation\"),\n NullableTypeAnnotation = alias(\"nullableTypeAnnotation\"),\n NumberLiteralTypeAnnotation = alias(\"numberLiteralTypeAnnotation\"),\n NumberTypeAnnotation = alias(\"numberTypeAnnotation\"),\n ObjectTypeAnnotation = alias(\"objectTypeAnnotation\"),\n ObjectTypeInternalSlot = alias(\"objectTypeInternalSlot\"),\n ObjectTypeCallProperty = alias(\"objectTypeCallProperty\"),\n ObjectTypeIndexer = alias(\"objectTypeIndexer\"),\n ObjectTypeProperty = alias(\"objectTypeProperty\"),\n ObjectTypeSpreadProperty = alias(\"objectTypeSpreadProperty\"),\n OpaqueType = alias(\"opaqueType\"),\n QualifiedTypeIdentifier = alias(\"qualifiedTypeIdentifier\"),\n StringLiteralTypeAnnotation = alias(\"stringLiteralTypeAnnotation\"),\n StringTypeAnnotation = alias(\"stringTypeAnnotation\"),\n SymbolTypeAnnotation = alias(\"symbolTypeAnnotation\"),\n ThisTypeAnnotation = alias(\"thisTypeAnnotation\"),\n TupleTypeAnnotation = alias(\"tupleTypeAnnotation\"),\n TypeofTypeAnnotation = alias(\"typeofTypeAnnotation\"),\n TypeAlias = alias(\"typeAlias\"),\n TypeAnnotation = alias(\"typeAnnotation\"),\n TypeCastExpression = alias(\"typeCastExpression\"),\n TypeParameter = alias(\"typeParameter\"),\n TypeParameterDeclaration = alias(\"typeParameterDeclaration\"),\n TypeParameterInstantiation = alias(\"typeParameterInstantiation\"),\n UnionTypeAnnotation = alias(\"unionTypeAnnotation\"),\n Variance = alias(\"variance\"),\n VoidTypeAnnotation = alias(\"voidTypeAnnotation\"),\n EnumDeclaration = alias(\"enumDeclaration\"),\n EnumBooleanBody = alias(\"enumBooleanBody\"),\n EnumNumberBody = alias(\"enumNumberBody\"),\n EnumStringBody = alias(\"enumStringBody\"),\n EnumSymbolBody = alias(\"enumSymbolBody\"),\n EnumBooleanMember = alias(\"enumBooleanMember\"),\n EnumNumberMember = alias(\"enumNumberMember\"),\n EnumStringMember = alias(\"enumStringMember\"),\n EnumDefaultedMember = alias(\"enumDefaultedMember\"),\n IndexedAccessType = alias(\"indexedAccessType\"),\n OptionalIndexedAccessType = alias(\"optionalIndexedAccessType\"),\n JSXAttribute = alias(\"jsxAttribute\"),\n JSXClosingElement = alias(\"jsxClosingElement\"),\n JSXElement = alias(\"jsxElement\"),\n JSXEmptyExpression = alias(\"jsxEmptyExpression\"),\n JSXExpressionContainer = alias(\"jsxExpressionContainer\"),\n JSXSpreadChild = alias(\"jsxSpreadChild\"),\n JSXIdentifier = alias(\"jsxIdentifier\"),\n JSXMemberExpression = alias(\"jsxMemberExpression\"),\n JSXNamespacedName = alias(\"jsxNamespacedName\"),\n JSXOpeningElement = alias(\"jsxOpeningElement\"),\n JSXSpreadAttribute = alias(\"jsxSpreadAttribute\"),\n JSXText = alias(\"jsxText\"),\n JSXFragment = alias(\"jsxFragment\"),\n JSXOpeningFragment = alias(\"jsxOpeningFragment\"),\n JSXClosingFragment = alias(\"jsxClosingFragment\"),\n Noop = alias(\"noop\"),\n Placeholder = alias(\"placeholder\"),\n V8IntrinsicIdentifier = alias(\"v8IntrinsicIdentifier\"),\n ArgumentPlaceholder = alias(\"argumentPlaceholder\"),\n BindExpression = alias(\"bindExpression\"),\n Decorator = alias(\"decorator\"),\n DoExpression = alias(\"doExpression\"),\n ExportDefaultSpecifier = alias(\"exportDefaultSpecifier\"),\n RecordExpression = alias(\"recordExpression\"),\n TupleExpression = alias(\"tupleExpression\"),\n DecimalLiteral = alias(\"decimalLiteral\"),\n ModuleExpression = alias(\"moduleExpression\"),\n TopicReference = alias(\"topicReference\"),\n PipelineTopicExpression = alias(\"pipelineTopicExpression\"),\n PipelineBareFunction = alias(\"pipelineBareFunction\"),\n PipelinePrimaryTopicReference = alias(\"pipelinePrimaryTopicReference\"),\n VoidPattern = alias(\"voidPattern\"),\n TSParameterProperty = alias(\"tsParameterProperty\"),\n TSDeclareFunction = alias(\"tsDeclareFunction\"),\n TSDeclareMethod = alias(\"tsDeclareMethod\"),\n TSQualifiedName = alias(\"tsQualifiedName\"),\n TSCallSignatureDeclaration = alias(\"tsCallSignatureDeclaration\"),\n TSConstructSignatureDeclaration = alias(\"tsConstructSignatureDeclaration\"),\n TSPropertySignature = alias(\"tsPropertySignature\"),\n TSMethodSignature = alias(\"tsMethodSignature\"),\n TSIndexSignature = alias(\"tsIndexSignature\"),\n TSAnyKeyword = alias(\"tsAnyKeyword\"),\n TSBooleanKeyword = alias(\"tsBooleanKeyword\"),\n TSBigIntKeyword = alias(\"tsBigIntKeyword\"),\n TSIntrinsicKeyword = alias(\"tsIntrinsicKeyword\"),\n TSNeverKeyword = alias(\"tsNeverKeyword\"),\n TSNullKeyword = alias(\"tsNullKeyword\"),\n TSNumberKeyword = alias(\"tsNumberKeyword\"),\n TSObjectKeyword = alias(\"tsObjectKeyword\"),\n TSStringKeyword = alias(\"tsStringKeyword\"),\n TSSymbolKeyword = alias(\"tsSymbolKeyword\"),\n TSUndefinedKeyword = alias(\"tsUndefinedKeyword\"),\n TSUnknownKeyword = alias(\"tsUnknownKeyword\"),\n TSVoidKeyword = alias(\"tsVoidKeyword\"),\n TSThisType = alias(\"tsThisType\"),\n TSFunctionType = alias(\"tsFunctionType\"),\n TSConstructorType = alias(\"tsConstructorType\"),\n TSTypeReference = alias(\"tsTypeReference\"),\n TSTypePredicate = alias(\"tsTypePredicate\"),\n TSTypeQuery = alias(\"tsTypeQuery\"),\n TSTypeLiteral = alias(\"tsTypeLiteral\"),\n TSArrayType = alias(\"tsArrayType\"),\n TSTupleType = alias(\"tsTupleType\"),\n TSOptionalType = alias(\"tsOptionalType\"),\n TSRestType = alias(\"tsRestType\"),\n TSNamedTupleMember = alias(\"tsNamedTupleMember\"),\n TSUnionType = alias(\"tsUnionType\"),\n TSIntersectionType = alias(\"tsIntersectionType\"),\n TSConditionalType = alias(\"tsConditionalType\"),\n TSInferType = alias(\"tsInferType\"),\n TSParenthesizedType = alias(\"tsParenthesizedType\"),\n TSTypeOperator = alias(\"tsTypeOperator\"),\n TSIndexedAccessType = alias(\"tsIndexedAccessType\"),\n TSMappedType = alias(\"tsMappedType\"),\n TSTemplateLiteralType = alias(\"tsTemplateLiteralType\"),\n TSLiteralType = alias(\"tsLiteralType\"),\n TSExpressionWithTypeArguments = alias(\"tsExpressionWithTypeArguments\"),\n TSInterfaceDeclaration = alias(\"tsInterfaceDeclaration\"),\n TSInterfaceBody = alias(\"tsInterfaceBody\"),\n TSTypeAliasDeclaration = alias(\"tsTypeAliasDeclaration\"),\n TSInstantiationExpression = alias(\"tsInstantiationExpression\"),\n TSAsExpression = alias(\"tsAsExpression\"),\n TSSatisfiesExpression = alias(\"tsSatisfiesExpression\"),\n TSTypeAssertion = alias(\"tsTypeAssertion\"),\n TSEnumBody = alias(\"tsEnumBody\"),\n TSEnumDeclaration = alias(\"tsEnumDeclaration\"),\n TSEnumMember = alias(\"tsEnumMember\"),\n TSModuleDeclaration = alias(\"tsModuleDeclaration\"),\n TSModuleBlock = alias(\"tsModuleBlock\"),\n TSImportType = alias(\"tsImportType\"),\n TSImportEqualsDeclaration = alias(\"tsImportEqualsDeclaration\"),\n TSExternalModuleReference = alias(\"tsExternalModuleReference\"),\n TSNonNullExpression = alias(\"tsNonNullExpression\"),\n TSExportAssignment = alias(\"tsExportAssignment\"),\n TSNamespaceExportDeclaration = alias(\"tsNamespaceExportDeclaration\"),\n TSTypeAnnotation = alias(\"tsTypeAnnotation\"),\n TSTypeParameterInstantiation = alias(\"tsTypeParameterInstantiation\"),\n TSTypeParameterDeclaration = alias(\"tsTypeParameterDeclaration\"),\n TSTypeParameter = alias(\"tsTypeParameter\");\nexport const NumberLiteral = b.numberLiteral,\n RegexLiteral = b.regexLiteral,\n RestProperty = b.restProperty,\n SpreadProperty = b.spreadProperty;\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/builders/productions.js b/vanilla/node_modules/@babel/types/lib/builders/productions.js
new file mode 100644
index 0000000..6e64717
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/builders/productions.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.buildUndefinedNode = buildUndefinedNode;
+var _index = require("./generated/index.js");
+function buildUndefinedNode() {
+ return (0, _index.unaryExpression)("void", (0, _index.numericLiteral)(0), true);
+}
+
+//# sourceMappingURL=productions.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/builders/productions.js.map b/vanilla/node_modules/@babel/types/lib/builders/productions.js.map
new file mode 100644
index 0000000..8bf7dbd
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/builders/productions.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","buildUndefinedNode","unaryExpression","numericLiteral"],"sources":["../../src/builders/productions.ts"],"sourcesContent":["import { numericLiteral, unaryExpression } from \"./generated/index.ts\";\n\nexport function buildUndefinedNode() {\n return unaryExpression(\"void\", numericLiteral(0), true);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEO,SAASC,kBAAkBA,CAAA,EAAG;EACnC,OAAO,IAAAC,sBAAe,EAAC,MAAM,EAAE,IAAAC,qBAAc,EAAC,CAAC,CAAC,EAAE,IAAI,CAAC;AACzD","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/builders/react/buildChildren.js b/vanilla/node_modules/@babel/types/lib/builders/react/buildChildren.js
new file mode 100644
index 0000000..22dd953
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/builders/react/buildChildren.js
@@ -0,0 +1,24 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = buildChildren;
+var _index = require("../../validators/generated/index.js");
+var _cleanJSXElementLiteralChild = require("../../utils/react/cleanJSXElementLiteralChild.js");
+function buildChildren(node) {
+ const elements = [];
+ for (let i = 0; i < node.children.length; i++) {
+ let child = node.children[i];
+ if ((0, _index.isJSXText)(child)) {
+ (0, _cleanJSXElementLiteralChild.default)(child, elements);
+ continue;
+ }
+ if ((0, _index.isJSXExpressionContainer)(child)) child = child.expression;
+ if ((0, _index.isJSXEmptyExpression)(child)) continue;
+ elements.push(child);
+ }
+ return elements;
+}
+
+//# sourceMappingURL=buildChildren.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/builders/react/buildChildren.js.map b/vanilla/node_modules/@babel/types/lib/builders/react/buildChildren.js.map
new file mode 100644
index 0000000..f33e2b4
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/builders/react/buildChildren.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","_cleanJSXElementLiteralChild","buildChildren","node","elements","i","children","length","child","isJSXText","cleanJSXElementLiteralChild","isJSXExpressionContainer","expression","isJSXEmptyExpression","push"],"sources":["../../../src/builders/react/buildChildren.ts"],"sourcesContent":["import {\n isJSXText,\n isJSXExpressionContainer,\n isJSXEmptyExpression,\n} from \"../../validators/generated/index.ts\";\nimport cleanJSXElementLiteralChild from \"../../utils/react/cleanJSXElementLiteralChild.ts\";\nimport type * as t from \"../../index.ts\";\n\ntype ReturnedChild =\n | t.JSXSpreadChild\n | t.JSXElement\n | t.JSXFragment\n | t.Expression;\n\nexport default function buildChildren(\n node: t.JSXElement | t.JSXFragment,\n): ReturnedChild[] {\n const elements = [];\n\n for (let i = 0; i < node.children.length; i++) {\n let child: any = node.children[i];\n\n if (isJSXText(child)) {\n cleanJSXElementLiteralChild(child, elements);\n continue;\n }\n\n if (isJSXExpressionContainer(child)) child = child.expression;\n if (isJSXEmptyExpression(child)) continue;\n\n elements.push(child);\n }\n\n return elements;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAKA,IAAAC,4BAAA,GAAAD,OAAA;AASe,SAASE,aAAaA,CACnCC,IAAkC,EACjB;EACjB,MAAMC,QAAQ,GAAG,EAAE;EAEnB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,IAAI,CAACG,QAAQ,CAACC,MAAM,EAAEF,CAAC,EAAE,EAAE;IAC7C,IAAIG,KAAU,GAAGL,IAAI,CAACG,QAAQ,CAACD,CAAC,CAAC;IAEjC,IAAI,IAAAI,gBAAS,EAACD,KAAK,CAAC,EAAE;MACpB,IAAAE,oCAA2B,EAACF,KAAK,EAAEJ,QAAQ,CAAC;MAC5C;IACF;IAEA,IAAI,IAAAO,+BAAwB,EAACH,KAAK,CAAC,EAAEA,KAAK,GAAGA,KAAK,CAACI,UAAU;IAC7D,IAAI,IAAAC,2BAAoB,EAACL,KAAK,CAAC,EAAE;IAEjCJ,QAAQ,CAACU,IAAI,CAACN,KAAK,CAAC;EACtB;EAEA,OAAOJ,QAAQ;AACjB","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js b/vanilla/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js
new file mode 100644
index 0000000..6a38530
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js
@@ -0,0 +1,22 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = createTSUnionType;
+var _index = require("../generated/index.js");
+var _removeTypeDuplicates = require("../../modifications/typescript/removeTypeDuplicates.js");
+var _index2 = require("../../validators/generated/index.js");
+function createTSUnionType(typeAnnotations) {
+ const types = typeAnnotations.map(type => {
+ return (0, _index2.isTSTypeAnnotation)(type) ? type.typeAnnotation : type;
+ });
+ const flattened = (0, _removeTypeDuplicates.default)(types);
+ if (flattened.length === 1) {
+ return flattened[0];
+ } else {
+ return (0, _index.tsUnionType)(flattened);
+ }
+}
+
+//# sourceMappingURL=createTSUnionType.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map b/vanilla/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map
new file mode 100644
index 0000000..f98a178
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","_removeTypeDuplicates","_index2","createTSUnionType","typeAnnotations","types","map","type","isTSTypeAnnotation","typeAnnotation","flattened","removeTypeDuplicates","length","tsUnionType"],"sources":["../../../src/builders/typescript/createTSUnionType.ts"],"sourcesContent":["import { tsUnionType } from \"../generated/index.ts\";\nimport removeTypeDuplicates from \"../../modifications/typescript/removeTypeDuplicates.ts\";\nimport { isTSTypeAnnotation } from \"../../validators/generated/index.ts\";\nimport type * as t from \"../../index.ts\";\n\n/**\n * Takes an array of `types` and flattens them, removing duplicates and\n * returns a `UnionTypeAnnotation` node containing them.\n */\nexport default function createTSUnionType(\n typeAnnotations: (t.TSTypeAnnotation | t.TSType)[],\n): t.TSType {\n const types = typeAnnotations.map(type => {\n return isTSTypeAnnotation(type) ? type.typeAnnotation : type;\n });\n const flattened = removeTypeDuplicates(types);\n\n if (flattened.length === 1) {\n return flattened[0];\n } else {\n return tsUnionType(flattened);\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAOe,SAASG,iBAAiBA,CACvCC,eAAkD,EACxC;EACV,MAAMC,KAAK,GAAGD,eAAe,CAACE,GAAG,CAACC,IAAI,IAAI;IACxC,OAAO,IAAAC,0BAAkB,EAACD,IAAI,CAAC,GAAGA,IAAI,CAACE,cAAc,GAAGF,IAAI;EAC9D,CAAC,CAAC;EACF,MAAMG,SAAS,GAAG,IAAAC,6BAAoB,EAACN,KAAK,CAAC;EAE7C,IAAIK,SAAS,CAACE,MAAM,KAAK,CAAC,EAAE;IAC1B,OAAOF,SAAS,CAAC,CAAC,CAAC;EACrB,CAAC,MAAM;IACL,OAAO,IAAAG,kBAAW,EAACH,SAAS,CAAC;EAC/B;AACF","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/builders/validateNode.js b/vanilla/node_modules/@babel/types/lib/builders/validateNode.js
new file mode 100644
index 0000000..1f44894
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/builders/validateNode.js
@@ -0,0 +1,21 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = validateNode;
+var _validate = require("../validators/validate.js");
+var _index = require("../index.js");
+function validateNode(node) {
+ if (node == null || typeof node !== "object") return;
+ const fields = _index.NODE_FIELDS[node.type];
+ if (!fields) return;
+ const keys = _index.BUILDER_KEYS[node.type];
+ for (const key of keys) {
+ const field = fields[key];
+ if (field != null) (0, _validate.validateInternal)(field, node, key, node[key]);
+ }
+ return node;
+}
+
+//# sourceMappingURL=validateNode.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/builders/validateNode.js.map b/vanilla/node_modules/@babel/types/lib/builders/validateNode.js.map
new file mode 100644
index 0000000..990d09a
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/builders/validateNode.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_validate","require","_index","validateNode","node","fields","NODE_FIELDS","type","keys","BUILDER_KEYS","key","field","validateInternal"],"sources":["../../src/builders/validateNode.ts"],"sourcesContent":["import { validateInternal } from \"../validators/validate.ts\";\nimport type * as t from \"../index.ts\";\nimport { BUILDER_KEYS, NODE_FIELDS } from \"../index.ts\";\n\nexport default function validateNode<N extends t.Node>(node: N) {\n if (node == null || typeof node !== \"object\") return;\n const fields = NODE_FIELDS[node.type];\n if (!fields) return;\n\n // todo: because keys not in BUILDER_KEYS are not validated - this actually allows invalid nodes in some cases\n const keys = BUILDER_KEYS[node.type] as (keyof N & string)[];\n for (const key of keys) {\n const field = fields[key];\n if (field != null) validateInternal(field, node, key, node[key]);\n }\n return node;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAEe,SAASE,YAAYA,CAAmBC,IAAO,EAAE;EAC9D,IAAIA,IAAI,IAAI,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;EAC9C,MAAMC,MAAM,GAAGC,kBAAW,CAACF,IAAI,CAACG,IAAI,CAAC;EACrC,IAAI,CAACF,MAAM,EAAE;EAGb,MAAMG,IAAI,GAAGC,mBAAY,CAACL,IAAI,CAACG,IAAI,CAAyB;EAC5D,KAAK,MAAMG,GAAG,IAAIF,IAAI,EAAE;IACtB,MAAMG,KAAK,GAAGN,MAAM,CAACK,GAAG,CAAC;IACzB,IAAIC,KAAK,IAAI,IAAI,EAAE,IAAAC,0BAAgB,EAACD,KAAK,EAAEP,IAAI,EAAEM,GAAG,EAAEN,IAAI,CAACM,GAAG,CAAC,CAAC;EAClE;EACA,OAAON,IAAI;AACb","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/clone/clone.js b/vanilla/node_modules/@babel/types/lib/clone/clone.js
new file mode 100644
index 0000000..f6a31dc
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/clone/clone.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = clone;
+var _cloneNode = require("./cloneNode.js");
+function clone(node) {
+ return (0, _cloneNode.default)(node, false);
+}
+
+//# sourceMappingURL=clone.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/clone/clone.js.map b/vanilla/node_modules/@babel/types/lib/clone/clone.js.map
new file mode 100644
index 0000000..855f533
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/clone/clone.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_cloneNode","require","clone","node","cloneNode"],"sources":["../../src/clone/clone.ts"],"sourcesContent":["import cloneNode from \"./cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Create a shallow clone of a `node`, including only\n * properties belonging to the node.\n * @deprecated Use t.cloneNode instead.\n */\nexport default function clone<T extends t.Node>(node: T): T {\n return cloneNode(node, /* deep */ false);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAQe,SAASC,KAAKA,CAAmBC,IAAO,EAAK;EAC1D,OAAO,IAAAC,kBAAS,EAACD,IAAI,EAAa,KAAK,CAAC;AAC1C","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/clone/cloneDeep.js b/vanilla/node_modules/@babel/types/lib/clone/cloneDeep.js
new file mode 100644
index 0000000..a30a6e8
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/clone/cloneDeep.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = cloneDeep;
+var _cloneNode = require("./cloneNode.js");
+function cloneDeep(node) {
+ return (0, _cloneNode.default)(node);
+}
+
+//# sourceMappingURL=cloneDeep.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/clone/cloneDeep.js.map b/vanilla/node_modules/@babel/types/lib/clone/cloneDeep.js.map
new file mode 100644
index 0000000..caf98bd
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/clone/cloneDeep.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_cloneNode","require","cloneDeep","node","cloneNode"],"sources":["../../src/clone/cloneDeep.ts"],"sourcesContent":["import cloneNode from \"./cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Create a deep clone of a `node` and all of it's child nodes\n * including only properties belonging to the node.\n * @deprecated Use t.cloneNode instead.\n */\nexport default function cloneDeep<T extends t.Node>(node: T): T {\n return cloneNode(node);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAQe,SAASC,SAASA,CAAmBC,IAAO,EAAK;EAC9D,OAAO,IAAAC,kBAAS,EAACD,IAAI,CAAC;AACxB","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js b/vanilla/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js
new file mode 100644
index 0000000..e2dfd75
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = cloneDeepWithoutLoc;
+var _cloneNode = require("./cloneNode.js");
+function cloneDeepWithoutLoc(node) {
+ return (0, _cloneNode.default)(node, true, true);
+}
+
+//# sourceMappingURL=cloneDeepWithoutLoc.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map b/vanilla/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map
new file mode 100644
index 0000000..16f3053
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_cloneNode","require","cloneDeepWithoutLoc","node","cloneNode"],"sources":["../../src/clone/cloneDeepWithoutLoc.ts"],"sourcesContent":["import cloneNode from \"./cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n/**\n * Create a deep clone of a `node` and all of it's child nodes\n * including only properties belonging to the node.\n * excluding `_private` and location properties.\n */\nexport default function cloneDeepWithoutLoc<T extends t.Node>(node: T): T {\n return cloneNode(node, /* deep */ true, /* withoutLoc */ true);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAOe,SAASC,mBAAmBA,CAAmBC,IAAO,EAAK;EACxE,OAAO,IAAAC,kBAAS,EAACD,IAAI,EAAa,IAAI,EAAmB,IAAI,CAAC;AAChE","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/clone/cloneNode.js b/vanilla/node_modules/@babel/types/lib/clone/cloneNode.js
new file mode 100644
index 0000000..f4686ff
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/clone/cloneNode.js
@@ -0,0 +1,107 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = cloneNode;
+var _index = require("../definitions/index.js");
+var _index2 = require("../validators/generated/index.js");
+const {
+ hasOwn
+} = {
+ hasOwn: Function.call.bind(Object.prototype.hasOwnProperty)
+};
+function cloneIfNode(obj, deep, withoutLoc, commentsCache) {
+ if (obj && typeof obj.type === "string") {
+ return cloneNodeInternal(obj, deep, withoutLoc, commentsCache);
+ }
+ return obj;
+}
+function cloneIfNodeOrArray(obj, deep, withoutLoc, commentsCache) {
+ if (Array.isArray(obj)) {
+ return obj.map(node => cloneIfNode(node, deep, withoutLoc, commentsCache));
+ }
+ return cloneIfNode(obj, deep, withoutLoc, commentsCache);
+}
+function cloneNode(node, deep = true, withoutLoc = false) {
+ return cloneNodeInternal(node, deep, withoutLoc, new Map());
+}
+function cloneNodeInternal(node, deep = true, withoutLoc = false, commentsCache) {
+ if (!node) return node;
+ const {
+ type
+ } = node;
+ const newNode = {
+ type: node.type
+ };
+ if ((0, _index2.isIdentifier)(node)) {
+ newNode.name = node.name;
+ if (hasOwn(node, "optional") && typeof node.optional === "boolean") {
+ newNode.optional = node.optional;
+ }
+ if (hasOwn(node, "typeAnnotation")) {
+ newNode.typeAnnotation = deep ? cloneIfNodeOrArray(node.typeAnnotation, true, withoutLoc, commentsCache) : node.typeAnnotation;
+ }
+ if (hasOwn(node, "decorators")) {
+ newNode.decorators = deep ? cloneIfNodeOrArray(node.decorators, true, withoutLoc, commentsCache) : node.decorators;
+ }
+ } else if (!hasOwn(_index.NODE_FIELDS, type)) {
+ throw new Error(`Unknown node type: "${type}"`);
+ } else {
+ for (const field of Object.keys(_index.NODE_FIELDS[type])) {
+ if (hasOwn(node, field)) {
+ if (deep) {
+ newNode[field] = (0, _index2.isFile)(node) && field === "comments" ? maybeCloneComments(node.comments, deep, withoutLoc, commentsCache) : cloneIfNodeOrArray(node[field], true, withoutLoc, commentsCache);
+ } else {
+ newNode[field] = node[field];
+ }
+ }
+ }
+ }
+ if (hasOwn(node, "loc")) {
+ if (withoutLoc) {
+ newNode.loc = null;
+ } else {
+ newNode.loc = node.loc;
+ }
+ }
+ if (hasOwn(node, "leadingComments")) {
+ newNode.leadingComments = maybeCloneComments(node.leadingComments, deep, withoutLoc, commentsCache);
+ }
+ if (hasOwn(node, "innerComments")) {
+ newNode.innerComments = maybeCloneComments(node.innerComments, deep, withoutLoc, commentsCache);
+ }
+ if (hasOwn(node, "trailingComments")) {
+ newNode.trailingComments = maybeCloneComments(node.trailingComments, deep, withoutLoc, commentsCache);
+ }
+ if (hasOwn(node, "extra")) {
+ newNode.extra = Object.assign({}, node.extra);
+ }
+ return newNode;
+}
+function maybeCloneComments(comments, deep, withoutLoc, commentsCache) {
+ if (!comments || !deep) {
+ return comments;
+ }
+ return comments.map(comment => {
+ const cache = commentsCache.get(comment);
+ if (cache) return cache;
+ const {
+ type,
+ value,
+ loc
+ } = comment;
+ const ret = {
+ type,
+ value,
+ loc
+ };
+ if (withoutLoc) {
+ ret.loc = null;
+ }
+ commentsCache.set(comment, ret);
+ return ret;
+ });
+}
+
+//# sourceMappingURL=cloneNode.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/clone/cloneNode.js.map b/vanilla/node_modules/@babel/types/lib/clone/cloneNode.js.map
new file mode 100644
index 0000000..316e448
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/clone/cloneNode.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","_index2","hasOwn","Function","call","bind","Object","prototype","hasOwnProperty","cloneIfNode","obj","deep","withoutLoc","commentsCache","type","cloneNodeInternal","cloneIfNodeOrArray","Array","isArray","map","node","cloneNode","Map","newNode","isIdentifier","name","optional","typeAnnotation","decorators","NODE_FIELDS","Error","field","keys","isFile","maybeCloneComments","comments","loc","leadingComments","innerComments","trailingComments","extra","assign","comment","cache","get","value","ret","set"],"sources":["../../src/clone/cloneNode.ts"],"sourcesContent":["import { NODE_FIELDS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\nimport { isFile, isIdentifier } from \"../validators/generated/index.ts\";\n\nconst { hasOwn } = process.env.BABEL_8_BREAKING\n ? Object\n : { hasOwn: Function.call.bind(Object.prototype.hasOwnProperty) };\n\ntype CommentCache = Map<t.Comment, t.Comment>;\n\n// This function will never be called for comments, only for real nodes.\nfunction cloneIfNode(\n obj: t.Node | undefined | null,\n deep: boolean,\n withoutLoc: boolean,\n commentsCache: CommentCache,\n) {\n if (obj && typeof obj.type === \"string\") {\n return cloneNodeInternal(obj, deep, withoutLoc, commentsCache);\n }\n\n return obj;\n}\n\nfunction cloneIfNodeOrArray(\n obj: t.Node | undefined | null | (t.Node | undefined | null)[],\n deep: boolean,\n withoutLoc: boolean,\n commentsCache: CommentCache,\n) {\n if (Array.isArray(obj)) {\n return obj.map(node => cloneIfNode(node, deep, withoutLoc, commentsCache));\n }\n return cloneIfNode(obj, deep, withoutLoc, commentsCache);\n}\n\n/**\n * Create a clone of a `node` including only properties belonging to the node.\n * If the second parameter is `false`, cloneNode performs a shallow clone.\n * If the third parameter is true, the cloned nodes exclude location properties.\n */\nexport default function cloneNode<T extends t.Node>(\n node: T,\n deep: boolean = true,\n withoutLoc: boolean = false,\n): T {\n return cloneNodeInternal(node, deep, withoutLoc, new Map());\n}\n\nfunction cloneNodeInternal<T extends t.Node>(\n node: T,\n deep: boolean = true,\n withoutLoc: boolean = false,\n commentsCache: CommentCache,\n): T {\n if (!node) return node;\n\n const { type } = node;\n const newNode: any = { type: node.type };\n\n // Special-case identifiers since they are the most cloned nodes.\n if (isIdentifier(node)) {\n newNode.name = node.name;\n\n if (hasOwn(node, \"optional\") && typeof node.optional === \"boolean\") {\n newNode.optional = node.optional;\n }\n\n if (hasOwn(node, \"typeAnnotation\")) {\n newNode.typeAnnotation = deep\n ? cloneIfNodeOrArray(\n node.typeAnnotation,\n true,\n withoutLoc,\n commentsCache,\n )\n : node.typeAnnotation;\n }\n\n if (hasOwn(node, \"decorators\")) {\n newNode.decorators = deep\n ? cloneIfNodeOrArray(node.decorators, true, withoutLoc, commentsCache)\n : node.decorators;\n }\n } else if (!hasOwn(NODE_FIELDS, type)) {\n throw new Error(`Unknown node type: \"${type}\"`);\n } else {\n for (const field of Object.keys(NODE_FIELDS[type])) {\n if (hasOwn(node, field)) {\n if (deep) {\n newNode[field] =\n isFile(node) && field === \"comments\"\n ? maybeCloneComments(\n node.comments,\n deep,\n withoutLoc,\n commentsCache,\n )\n : cloneIfNodeOrArray(\n // @ts-expect-error node[field] has been guarded by has check\n node[field],\n true,\n withoutLoc,\n commentsCache,\n );\n } else {\n newNode[field] =\n // @ts-expect-error node[field] has been guarded by has check\n node[field];\n }\n }\n }\n }\n\n if (hasOwn(node, \"loc\")) {\n if (withoutLoc) {\n newNode.loc = null;\n } else {\n newNode.loc = node.loc;\n }\n }\n if (hasOwn(node, \"leadingComments\")) {\n newNode.leadingComments = maybeCloneComments(\n node.leadingComments,\n deep,\n withoutLoc,\n commentsCache,\n );\n }\n if (hasOwn(node, \"innerComments\")) {\n newNode.innerComments = maybeCloneComments(\n node.innerComments,\n deep,\n withoutLoc,\n commentsCache,\n );\n }\n if (hasOwn(node, \"trailingComments\")) {\n newNode.trailingComments = maybeCloneComments(\n node.trailingComments,\n deep,\n withoutLoc,\n commentsCache,\n );\n }\n if (hasOwn(node, \"extra\")) {\n newNode.extra = {\n ...node.extra,\n };\n }\n\n return newNode;\n}\n\nfunction maybeCloneComments<T extends t.Comment>(\n comments: readonly T[] | null,\n deep: boolean,\n withoutLoc: boolean,\n commentsCache: Map<T, T>,\n): readonly T[] | null {\n if (!comments || !deep) {\n return comments;\n }\n return comments.map(comment => {\n const cache = commentsCache.get(comment);\n if (cache) return cache;\n\n const { type, value, loc } = comment;\n\n const ret = { type, value, loc } as T;\n if (withoutLoc) {\n ret.loc = null;\n }\n\n commentsCache.set(comment, ret);\n\n return ret;\n });\n}\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js b/vanilla/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js
new file mode 100644
index 0000000..95aeddc
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = cloneWithoutLoc;
+var _cloneNode = require("./cloneNode.js");
+function cloneWithoutLoc(node) {
+ return (0, _cloneNode.default)(node, false, true);
+}
+
+//# sourceMappingURL=cloneWithoutLoc.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map b/vanilla/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map
new file mode 100644
index 0000000..4473970
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_cloneNode","require","cloneWithoutLoc","node","cloneNode"],"sources":["../../src/clone/cloneWithoutLoc.ts"],"sourcesContent":["import cloneNode from \"./cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Create a shallow clone of a `node` excluding `_private` and location properties.\n */\nexport default function cloneWithoutLoc<T extends t.Node>(node: T): T {\n return cloneNode(node, /* deep */ false, /* withoutLoc */ true);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAMe,SAASC,eAAeA,CAAmBC,IAAO,EAAK;EACpE,OAAO,IAAAC,kBAAS,EAACD,IAAI,EAAa,KAAK,EAAmB,IAAI,CAAC;AACjE","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/comments/addComment.js b/vanilla/node_modules/@babel/types/lib/comments/addComment.js
new file mode 100644
index 0000000..4e4eb48
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/comments/addComment.js
@@ -0,0 +1,15 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = addComment;
+var _addComments = require("./addComments.js");
+function addComment(node, type, content, line) {
+ return (0, _addComments.default)(node, type, [{
+ type: line ? "CommentLine" : "CommentBlock",
+ value: content
+ }]);
+}
+
+//# sourceMappingURL=addComment.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/comments/addComment.js.map b/vanilla/node_modules/@babel/types/lib/comments/addComment.js.map
new file mode 100644
index 0000000..275167d
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/comments/addComment.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_addComments","require","addComment","node","type","content","line","addComments","value"],"sources":["../../src/comments/addComment.ts"],"sourcesContent":["import addComments from \"./addComments.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Add comment of certain type to a node.\n */\nexport default function addComment<T extends t.Node>(\n node: T,\n type: t.CommentTypeShorthand,\n content: string,\n line?: boolean,\n): T {\n return addComments(node, type, [\n {\n type: line ? \"CommentLine\" : \"CommentBlock\",\n value: content,\n } as t.Comment,\n ]);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAMe,SAASC,UAAUA,CAChCC,IAAO,EACPC,IAA4B,EAC5BC,OAAe,EACfC,IAAc,EACX;EACH,OAAO,IAAAC,oBAAW,EAACJ,IAAI,EAAEC,IAAI,EAAE,CAC7B;IACEA,IAAI,EAAEE,IAAI,GAAG,aAAa,GAAG,cAAc;IAC3CE,KAAK,EAAEH;EACT,CAAC,CACF,CAAC;AACJ","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/comments/addComments.js b/vanilla/node_modules/@babel/types/lib/comments/addComments.js
new file mode 100644
index 0000000..fce0bda
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/comments/addComments.js
@@ -0,0 +1,22 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = addComments;
+function addComments(node, type, comments) {
+ if (!comments || !node) return node;
+ const key = `${type}Comments`;
+ if (node[key]) {
+ if (type === "leading") {
+ node[key] = comments.concat(node[key]);
+ } else {
+ node[key].push(...comments);
+ }
+ } else {
+ node[key] = comments;
+ }
+ return node;
+}
+
+//# sourceMappingURL=addComments.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/comments/addComments.js.map b/vanilla/node_modules/@babel/types/lib/comments/addComments.js.map
new file mode 100644
index 0000000..259c434
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/comments/addComments.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["addComments","node","type","comments","key","concat","push"],"sources":["../../src/comments/addComments.ts"],"sourcesContent":["import type * as t from \"../index.ts\";\n\n/**\n * Add comments of certain type to a node.\n */\nexport default function addComments<T extends t.Node>(\n node: T,\n type: t.CommentTypeShorthand,\n comments: t.Comment[],\n): T {\n if (!comments || !node) return node;\n\n const key = `${type}Comments` as const;\n\n if (node[key]) {\n if (type === \"leading\") {\n node[key] = comments.concat(node[key]);\n } else {\n node[key].push(...comments);\n }\n } else {\n node[key] = comments;\n }\n\n return node;\n}\n"],"mappings":";;;;;;AAKe,SAASA,WAAWA,CACjCC,IAAO,EACPC,IAA4B,EAC5BC,QAAqB,EAClB;EACH,IAAI,CAACA,QAAQ,IAAI,CAACF,IAAI,EAAE,OAAOA,IAAI;EAEnC,MAAMG,GAAG,GAAG,GAAGF,IAAI,UAAmB;EAEtC,IAAID,IAAI,CAACG,GAAG,CAAC,EAAE;IACb,IAAIF,IAAI,KAAK,SAAS,EAAE;MACtBD,IAAI,CAACG,GAAG,CAAC,GAAGD,QAAQ,CAACE,MAAM,CAACJ,IAAI,CAACG,GAAG,CAAC,CAAC;IACxC,CAAC,MAAM;MACLH,IAAI,CAACG,GAAG,CAAC,CAACE,IAAI,CAAC,GAAGH,QAAQ,CAAC;IAC7B;EACF,CAAC,MAAM;IACLF,IAAI,CAACG,GAAG,CAAC,GAAGD,QAAQ;EACtB;EAEA,OAAOF,IAAI;AACb","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/comments/inheritInnerComments.js b/vanilla/node_modules/@babel/types/lib/comments/inheritInnerComments.js
new file mode 100644
index 0000000..76f1d68
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/comments/inheritInnerComments.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = inheritInnerComments;
+var _inherit = require("../utils/inherit.js");
+function inheritInnerComments(child, parent) {
+ (0, _inherit.default)("innerComments", child, parent);
+}
+
+//# sourceMappingURL=inheritInnerComments.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/comments/inheritInnerComments.js.map b/vanilla/node_modules/@babel/types/lib/comments/inheritInnerComments.js.map
new file mode 100644
index 0000000..f433aba
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/comments/inheritInnerComments.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_inherit","require","inheritInnerComments","child","parent","inherit"],"sources":["../../src/comments/inheritInnerComments.ts"],"sourcesContent":["import inherit from \"../utils/inherit.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function inheritInnerComments(\n child: t.Node,\n parent: t.Node,\n): void {\n inherit(\"innerComments\", child, parent);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAGe,SAASC,oBAAoBA,CAC1CC,KAAa,EACbC,MAAc,EACR;EACN,IAAAC,gBAAO,EAAC,eAAe,EAAEF,KAAK,EAAEC,MAAM,CAAC;AACzC","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/comments/inheritLeadingComments.js b/vanilla/node_modules/@babel/types/lib/comments/inheritLeadingComments.js
new file mode 100644
index 0000000..8b476ba
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/comments/inheritLeadingComments.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = inheritLeadingComments;
+var _inherit = require("../utils/inherit.js");
+function inheritLeadingComments(child, parent) {
+ (0, _inherit.default)("leadingComments", child, parent);
+}
+
+//# sourceMappingURL=inheritLeadingComments.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map b/vanilla/node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map
new file mode 100644
index 0000000..ed51825
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_inherit","require","inheritLeadingComments","child","parent","inherit"],"sources":["../../src/comments/inheritLeadingComments.ts"],"sourcesContent":["import inherit from \"../utils/inherit.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function inheritLeadingComments(\n child: t.Node,\n parent: t.Node,\n): void {\n inherit(\"leadingComments\", child, parent);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAGe,SAASC,sBAAsBA,CAC5CC,KAAa,EACbC,MAAc,EACR;EACN,IAAAC,gBAAO,EAAC,iBAAiB,EAAEF,KAAK,EAAEC,MAAM,CAAC;AAC3C","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/comments/inheritTrailingComments.js b/vanilla/node_modules/@babel/types/lib/comments/inheritTrailingComments.js
new file mode 100644
index 0000000..23574d4
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/comments/inheritTrailingComments.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = inheritTrailingComments;
+var _inherit = require("../utils/inherit.js");
+function inheritTrailingComments(child, parent) {
+ (0, _inherit.default)("trailingComments", child, parent);
+}
+
+//# sourceMappingURL=inheritTrailingComments.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map b/vanilla/node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map
new file mode 100644
index 0000000..32137f2
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_inherit","require","inheritTrailingComments","child","parent","inherit"],"sources":["../../src/comments/inheritTrailingComments.ts"],"sourcesContent":["import inherit from \"../utils/inherit.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function inheritTrailingComments(\n child: t.Node,\n parent: t.Node,\n): void {\n inherit(\"trailingComments\", child, parent);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAGe,SAASC,uBAAuBA,CAC7CC,KAAa,EACbC,MAAc,EACR;EACN,IAAAC,gBAAO,EAAC,kBAAkB,EAAEF,KAAK,EAAEC,MAAM,CAAC;AAC5C","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/comments/inheritsComments.js b/vanilla/node_modules/@babel/types/lib/comments/inheritsComments.js
new file mode 100644
index 0000000..6c9c61c
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/comments/inheritsComments.js
@@ -0,0 +1,17 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = inheritsComments;
+var _inheritTrailingComments = require("./inheritTrailingComments.js");
+var _inheritLeadingComments = require("./inheritLeadingComments.js");
+var _inheritInnerComments = require("./inheritInnerComments.js");
+function inheritsComments(child, parent) {
+ (0, _inheritTrailingComments.default)(child, parent);
+ (0, _inheritLeadingComments.default)(child, parent);
+ (0, _inheritInnerComments.default)(child, parent);
+ return child;
+}
+
+//# sourceMappingURL=inheritsComments.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/comments/inheritsComments.js.map b/vanilla/node_modules/@babel/types/lib/comments/inheritsComments.js.map
new file mode 100644
index 0000000..860b52e
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/comments/inheritsComments.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_inheritTrailingComments","require","_inheritLeadingComments","_inheritInnerComments","inheritsComments","child","parent","inheritTrailingComments","inheritLeadingComments","inheritInnerComments"],"sources":["../../src/comments/inheritsComments.ts"],"sourcesContent":["import inheritTrailingComments from \"./inheritTrailingComments.ts\";\nimport inheritLeadingComments from \"./inheritLeadingComments.ts\";\nimport inheritInnerComments from \"./inheritInnerComments.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Inherit all unique comments from `parent` node to `child` node.\n */\nexport default function inheritsComments<T extends t.Node>(\n child: T,\n parent: t.Node,\n): T {\n inheritTrailingComments(child, parent);\n inheritLeadingComments(child, parent);\n inheritInnerComments(child, parent);\n\n return child;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,wBAAA,GAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AAMe,SAASG,gBAAgBA,CACtCC,KAAQ,EACRC,MAAc,EACX;EACH,IAAAC,gCAAuB,EAACF,KAAK,EAAEC,MAAM,CAAC;EACtC,IAAAE,+BAAsB,EAACH,KAAK,EAAEC,MAAM,CAAC;EACrC,IAAAG,6BAAoB,EAACJ,KAAK,EAAEC,MAAM,CAAC;EAEnC,OAAOD,KAAK;AACd","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/comments/removeComments.js b/vanilla/node_modules/@babel/types/lib/comments/removeComments.js
new file mode 100644
index 0000000..3604411
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/comments/removeComments.js
@@ -0,0 +1,15 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = removeComments;
+var _index = require("../constants/index.js");
+function removeComments(node) {
+ _index.COMMENT_KEYS.forEach(key => {
+ node[key] = null;
+ });
+ return node;
+}
+
+//# sourceMappingURL=removeComments.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/comments/removeComments.js.map b/vanilla/node_modules/@babel/types/lib/comments/removeComments.js.map
new file mode 100644
index 0000000..d12bb18
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/comments/removeComments.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","removeComments","node","COMMENT_KEYS","forEach","key"],"sources":["../../src/comments/removeComments.ts"],"sourcesContent":["import { COMMENT_KEYS } from \"../constants/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Remove comment properties from a node.\n */\nexport default function removeComments<T extends t.Node>(node: T): T {\n COMMENT_KEYS.forEach(key => {\n node[key] = null;\n });\n\n return node;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAMe,SAASC,cAAcA,CAAmBC,IAAO,EAAK;EACnEC,mBAAY,CAACC,OAAO,CAACC,GAAG,IAAI;IAC1BH,IAAI,CAACG,GAAG,CAAC,GAAG,IAAI;EAClB,CAAC,CAAC;EAEF,OAAOH,IAAI;AACb","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/constants/generated/index.js b/vanilla/node_modules/@babel/types/lib/constants/generated/index.js
new file mode 100644
index 0000000..92cd58b
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/constants/generated/index.js
@@ -0,0 +1,60 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.WHILE_TYPES = exports.USERWHITESPACABLE_TYPES = exports.UNARYLIKE_TYPES = exports.TYPESCRIPT_TYPES = exports.TSTYPE_TYPES = exports.TSTYPEELEMENT_TYPES = exports.TSENTITYNAME_TYPES = exports.TSBASETYPE_TYPES = exports.TERMINATORLESS_TYPES = exports.STATEMENT_TYPES = exports.STANDARDIZED_TYPES = exports.SCOPABLE_TYPES = exports.PUREISH_TYPES = exports.PROPERTY_TYPES = exports.PRIVATE_TYPES = exports.PATTERN_TYPES = exports.PATTERNLIKE_TYPES = exports.OBJECTMEMBER_TYPES = exports.MODULESPECIFIER_TYPES = exports.MODULEDECLARATION_TYPES = exports.MISCELLANEOUS_TYPES = exports.METHOD_TYPES = exports.LVAL_TYPES = exports.LOOP_TYPES = exports.LITERAL_TYPES = exports.JSX_TYPES = exports.IMPORTOREXPORTDECLARATION_TYPES = exports.IMMUTABLE_TYPES = exports.FUNCTION_TYPES = exports.FUNCTIONPARENT_TYPES = exports.FUNCTIONPARAMETER_TYPES = exports.FOR_TYPES = exports.FORXSTATEMENT_TYPES = exports.FLOW_TYPES = exports.FLOWTYPE_TYPES = exports.FLOWPREDICATE_TYPES = exports.FLOWDECLARATION_TYPES = exports.FLOWBASEANNOTATION_TYPES = exports.EXPRESSION_TYPES = exports.EXPRESSIONWRAPPER_TYPES = exports.EXPORTDECLARATION_TYPES = exports.ENUMMEMBER_TYPES = exports.ENUMBODY_TYPES = exports.DECLARATION_TYPES = exports.CONDITIONAL_TYPES = exports.COMPLETIONSTATEMENT_TYPES = exports.CLASS_TYPES = exports.BLOCK_TYPES = exports.BLOCKPARENT_TYPES = exports.BINARY_TYPES = exports.ACCESSOR_TYPES = void 0;
+var _index = require("../../definitions/index.js");
+const STANDARDIZED_TYPES = exports.STANDARDIZED_TYPES = _index.FLIPPED_ALIAS_KEYS["Standardized"];
+const EXPRESSION_TYPES = exports.EXPRESSION_TYPES = _index.FLIPPED_ALIAS_KEYS["Expression"];
+const BINARY_TYPES = exports.BINARY_TYPES = _index.FLIPPED_ALIAS_KEYS["Binary"];
+const SCOPABLE_TYPES = exports.SCOPABLE_TYPES = _index.FLIPPED_ALIAS_KEYS["Scopable"];
+const BLOCKPARENT_TYPES = exports.BLOCKPARENT_TYPES = _index.FLIPPED_ALIAS_KEYS["BlockParent"];
+const BLOCK_TYPES = exports.BLOCK_TYPES = _index.FLIPPED_ALIAS_KEYS["Block"];
+const STATEMENT_TYPES = exports.STATEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS["Statement"];
+const TERMINATORLESS_TYPES = exports.TERMINATORLESS_TYPES = _index.FLIPPED_ALIAS_KEYS["Terminatorless"];
+const COMPLETIONSTATEMENT_TYPES = exports.COMPLETIONSTATEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS["CompletionStatement"];
+const CONDITIONAL_TYPES = exports.CONDITIONAL_TYPES = _index.FLIPPED_ALIAS_KEYS["Conditional"];
+const LOOP_TYPES = exports.LOOP_TYPES = _index.FLIPPED_ALIAS_KEYS["Loop"];
+const WHILE_TYPES = exports.WHILE_TYPES = _index.FLIPPED_ALIAS_KEYS["While"];
+const EXPRESSIONWRAPPER_TYPES = exports.EXPRESSIONWRAPPER_TYPES = _index.FLIPPED_ALIAS_KEYS["ExpressionWrapper"];
+const FOR_TYPES = exports.FOR_TYPES = _index.FLIPPED_ALIAS_KEYS["For"];
+const FORXSTATEMENT_TYPES = exports.FORXSTATEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS["ForXStatement"];
+const FUNCTION_TYPES = exports.FUNCTION_TYPES = _index.FLIPPED_ALIAS_KEYS["Function"];
+const FUNCTIONPARENT_TYPES = exports.FUNCTIONPARENT_TYPES = _index.FLIPPED_ALIAS_KEYS["FunctionParent"];
+const PUREISH_TYPES = exports.PUREISH_TYPES = _index.FLIPPED_ALIAS_KEYS["Pureish"];
+const DECLARATION_TYPES = exports.DECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS["Declaration"];
+const FUNCTIONPARAMETER_TYPES = exports.FUNCTIONPARAMETER_TYPES = _index.FLIPPED_ALIAS_KEYS["FunctionParameter"];
+const PATTERNLIKE_TYPES = exports.PATTERNLIKE_TYPES = _index.FLIPPED_ALIAS_KEYS["PatternLike"];
+const LVAL_TYPES = exports.LVAL_TYPES = _index.FLIPPED_ALIAS_KEYS["LVal"];
+const TSENTITYNAME_TYPES = exports.TSENTITYNAME_TYPES = _index.FLIPPED_ALIAS_KEYS["TSEntityName"];
+const LITERAL_TYPES = exports.LITERAL_TYPES = _index.FLIPPED_ALIAS_KEYS["Literal"];
+const IMMUTABLE_TYPES = exports.IMMUTABLE_TYPES = _index.FLIPPED_ALIAS_KEYS["Immutable"];
+const USERWHITESPACABLE_TYPES = exports.USERWHITESPACABLE_TYPES = _index.FLIPPED_ALIAS_KEYS["UserWhitespacable"];
+const METHOD_TYPES = exports.METHOD_TYPES = _index.FLIPPED_ALIAS_KEYS["Method"];
+const OBJECTMEMBER_TYPES = exports.OBJECTMEMBER_TYPES = _index.FLIPPED_ALIAS_KEYS["ObjectMember"];
+const PROPERTY_TYPES = exports.PROPERTY_TYPES = _index.FLIPPED_ALIAS_KEYS["Property"];
+const UNARYLIKE_TYPES = exports.UNARYLIKE_TYPES = _index.FLIPPED_ALIAS_KEYS["UnaryLike"];
+const PATTERN_TYPES = exports.PATTERN_TYPES = _index.FLIPPED_ALIAS_KEYS["Pattern"];
+const CLASS_TYPES = exports.CLASS_TYPES = _index.FLIPPED_ALIAS_KEYS["Class"];
+const IMPORTOREXPORTDECLARATION_TYPES = exports.IMPORTOREXPORTDECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS["ImportOrExportDeclaration"];
+const EXPORTDECLARATION_TYPES = exports.EXPORTDECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS["ExportDeclaration"];
+const MODULESPECIFIER_TYPES = exports.MODULESPECIFIER_TYPES = _index.FLIPPED_ALIAS_KEYS["ModuleSpecifier"];
+const ACCESSOR_TYPES = exports.ACCESSOR_TYPES = _index.FLIPPED_ALIAS_KEYS["Accessor"];
+const PRIVATE_TYPES = exports.PRIVATE_TYPES = _index.FLIPPED_ALIAS_KEYS["Private"];
+const FLOW_TYPES = exports.FLOW_TYPES = _index.FLIPPED_ALIAS_KEYS["Flow"];
+const FLOWTYPE_TYPES = exports.FLOWTYPE_TYPES = _index.FLIPPED_ALIAS_KEYS["FlowType"];
+const FLOWBASEANNOTATION_TYPES = exports.FLOWBASEANNOTATION_TYPES = _index.FLIPPED_ALIAS_KEYS["FlowBaseAnnotation"];
+const FLOWDECLARATION_TYPES = exports.FLOWDECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS["FlowDeclaration"];
+const FLOWPREDICATE_TYPES = exports.FLOWPREDICATE_TYPES = _index.FLIPPED_ALIAS_KEYS["FlowPredicate"];
+const ENUMBODY_TYPES = exports.ENUMBODY_TYPES = _index.FLIPPED_ALIAS_KEYS["EnumBody"];
+const ENUMMEMBER_TYPES = exports.ENUMMEMBER_TYPES = _index.FLIPPED_ALIAS_KEYS["EnumMember"];
+const JSX_TYPES = exports.JSX_TYPES = _index.FLIPPED_ALIAS_KEYS["JSX"];
+const MISCELLANEOUS_TYPES = exports.MISCELLANEOUS_TYPES = _index.FLIPPED_ALIAS_KEYS["Miscellaneous"];
+const TYPESCRIPT_TYPES = exports.TYPESCRIPT_TYPES = _index.FLIPPED_ALIAS_KEYS["TypeScript"];
+const TSTYPEELEMENT_TYPES = exports.TSTYPEELEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS["TSTypeElement"];
+const TSTYPE_TYPES = exports.TSTYPE_TYPES = _index.FLIPPED_ALIAS_KEYS["TSType"];
+const TSBASETYPE_TYPES = exports.TSBASETYPE_TYPES = _index.FLIPPED_ALIAS_KEYS["TSBaseType"];
+const MODULEDECLARATION_TYPES = exports.MODULEDECLARATION_TYPES = IMPORTOREXPORTDECLARATION_TYPES;
+
+//# sourceMappingURL=index.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/constants/generated/index.js.map b/vanilla/node_modules/@babel/types/lib/constants/generated/index.js.map
new file mode 100644
index 0000000..1bb6130
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/constants/generated/index.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","STANDARDIZED_TYPES","exports","FLIPPED_ALIAS_KEYS","EXPRESSION_TYPES","BINARY_TYPES","SCOPABLE_TYPES","BLOCKPARENT_TYPES","BLOCK_TYPES","STATEMENT_TYPES","TERMINATORLESS_TYPES","COMPLETIONSTATEMENT_TYPES","CONDITIONAL_TYPES","LOOP_TYPES","WHILE_TYPES","EXPRESSIONWRAPPER_TYPES","FOR_TYPES","FORXSTATEMENT_TYPES","FUNCTION_TYPES","FUNCTIONPARENT_TYPES","PUREISH_TYPES","DECLARATION_TYPES","FUNCTIONPARAMETER_TYPES","PATTERNLIKE_TYPES","LVAL_TYPES","TSENTITYNAME_TYPES","LITERAL_TYPES","IMMUTABLE_TYPES","USERWHITESPACABLE_TYPES","METHOD_TYPES","OBJECTMEMBER_TYPES","PROPERTY_TYPES","UNARYLIKE_TYPES","PATTERN_TYPES","CLASS_TYPES","IMPORTOREXPORTDECLARATION_TYPES","EXPORTDECLARATION_TYPES","MODULESPECIFIER_TYPES","ACCESSOR_TYPES","PRIVATE_TYPES","FLOW_TYPES","FLOWTYPE_TYPES","FLOWBASEANNOTATION_TYPES","FLOWDECLARATION_TYPES","FLOWPREDICATE_TYPES","ENUMBODY_TYPES","ENUMMEMBER_TYPES","JSX_TYPES","MISCELLANEOUS_TYPES","TYPESCRIPT_TYPES","TSTYPEELEMENT_TYPES","TSTYPE_TYPES","TSBASETYPE_TYPES","MODULEDECLARATION_TYPES"],"sources":["../../../src/constants/generated/index.ts"],"sourcesContent":["/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\nimport { FLIPPED_ALIAS_KEYS } from \"../../definitions/index.ts\";\n\nexport const STANDARDIZED_TYPES = FLIPPED_ALIAS_KEYS[\"Standardized\"];\nexport const EXPRESSION_TYPES = FLIPPED_ALIAS_KEYS[\"Expression\"];\nexport const BINARY_TYPES = FLIPPED_ALIAS_KEYS[\"Binary\"];\nexport const SCOPABLE_TYPES = FLIPPED_ALIAS_KEYS[\"Scopable\"];\nexport const BLOCKPARENT_TYPES = FLIPPED_ALIAS_KEYS[\"BlockParent\"];\nexport const BLOCK_TYPES = FLIPPED_ALIAS_KEYS[\"Block\"];\nexport const STATEMENT_TYPES = FLIPPED_ALIAS_KEYS[\"Statement\"];\nexport const TERMINATORLESS_TYPES = FLIPPED_ALIAS_KEYS[\"Terminatorless\"];\nexport const COMPLETIONSTATEMENT_TYPES =\n FLIPPED_ALIAS_KEYS[\"CompletionStatement\"];\nexport const CONDITIONAL_TYPES = FLIPPED_ALIAS_KEYS[\"Conditional\"];\nexport const LOOP_TYPES = FLIPPED_ALIAS_KEYS[\"Loop\"];\nexport const WHILE_TYPES = FLIPPED_ALIAS_KEYS[\"While\"];\nexport const EXPRESSIONWRAPPER_TYPES = FLIPPED_ALIAS_KEYS[\"ExpressionWrapper\"];\nexport const FOR_TYPES = FLIPPED_ALIAS_KEYS[\"For\"];\nexport const FORXSTATEMENT_TYPES = FLIPPED_ALIAS_KEYS[\"ForXStatement\"];\nexport const FUNCTION_TYPES = FLIPPED_ALIAS_KEYS[\"Function\"];\nexport const FUNCTIONPARENT_TYPES = FLIPPED_ALIAS_KEYS[\"FunctionParent\"];\nexport const PUREISH_TYPES = FLIPPED_ALIAS_KEYS[\"Pureish\"];\nexport const DECLARATION_TYPES = FLIPPED_ALIAS_KEYS[\"Declaration\"];\nexport const FUNCTIONPARAMETER_TYPES = FLIPPED_ALIAS_KEYS[\"FunctionParameter\"];\nexport const PATTERNLIKE_TYPES = FLIPPED_ALIAS_KEYS[\"PatternLike\"];\nexport const LVAL_TYPES = FLIPPED_ALIAS_KEYS[\"LVal\"];\nexport const TSENTITYNAME_TYPES = FLIPPED_ALIAS_KEYS[\"TSEntityName\"];\nexport const LITERAL_TYPES = FLIPPED_ALIAS_KEYS[\"Literal\"];\nexport const IMMUTABLE_TYPES = FLIPPED_ALIAS_KEYS[\"Immutable\"];\nexport const USERWHITESPACABLE_TYPES = FLIPPED_ALIAS_KEYS[\"UserWhitespacable\"];\nexport const METHOD_TYPES = FLIPPED_ALIAS_KEYS[\"Method\"];\nexport const OBJECTMEMBER_TYPES = FLIPPED_ALIAS_KEYS[\"ObjectMember\"];\nexport const PROPERTY_TYPES = FLIPPED_ALIAS_KEYS[\"Property\"];\nexport const UNARYLIKE_TYPES = FLIPPED_ALIAS_KEYS[\"UnaryLike\"];\nexport const PATTERN_TYPES = FLIPPED_ALIAS_KEYS[\"Pattern\"];\nexport const CLASS_TYPES = FLIPPED_ALIAS_KEYS[\"Class\"];\nexport const IMPORTOREXPORTDECLARATION_TYPES =\n FLIPPED_ALIAS_KEYS[\"ImportOrExportDeclaration\"];\nexport const EXPORTDECLARATION_TYPES = FLIPPED_ALIAS_KEYS[\"ExportDeclaration\"];\nexport const MODULESPECIFIER_TYPES = FLIPPED_ALIAS_KEYS[\"ModuleSpecifier\"];\nexport const ACCESSOR_TYPES = FLIPPED_ALIAS_KEYS[\"Accessor\"];\nexport const PRIVATE_TYPES = FLIPPED_ALIAS_KEYS[\"Private\"];\nexport const FLOW_TYPES = FLIPPED_ALIAS_KEYS[\"Flow\"];\nexport const FLOWTYPE_TYPES = FLIPPED_ALIAS_KEYS[\"FlowType\"];\nexport const FLOWBASEANNOTATION_TYPES =\n FLIPPED_ALIAS_KEYS[\"FlowBaseAnnotation\"];\nexport const FLOWDECLARATION_TYPES = FLIPPED_ALIAS_KEYS[\"FlowDeclaration\"];\nexport const FLOWPREDICATE_TYPES = FLIPPED_ALIAS_KEYS[\"FlowPredicate\"];\nexport const ENUMBODY_TYPES = FLIPPED_ALIAS_KEYS[\"EnumBody\"];\nexport const ENUMMEMBER_TYPES = FLIPPED_ALIAS_KEYS[\"EnumMember\"];\nexport const JSX_TYPES = FLIPPED_ALIAS_KEYS[\"JSX\"];\nexport const MISCELLANEOUS_TYPES = FLIPPED_ALIAS_KEYS[\"Miscellaneous\"];\nexport const TYPESCRIPT_TYPES = FLIPPED_ALIAS_KEYS[\"TypeScript\"];\nexport const TSTYPEELEMENT_TYPES = FLIPPED_ALIAS_KEYS[\"TSTypeElement\"];\nexport const TSTYPE_TYPES = FLIPPED_ALIAS_KEYS[\"TSType\"];\nexport const TSBASETYPE_TYPES = FLIPPED_ALIAS_KEYS[\"TSBaseType\"];\n/**\n * @deprecated migrate to IMPORTOREXPORTDECLARATION_TYPES.\n */\nexport const MODULEDECLARATION_TYPES = IMPORTOREXPORTDECLARATION_TYPES;\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/constants/index.js b/vanilla/node_modules/@babel/types/lib/constants/index.js
new file mode 100644
index 0000000..1424473
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/constants/index.js
@@ -0,0 +1,31 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.UPDATE_OPERATORS = exports.UNARY_OPERATORS = exports.STRING_UNARY_OPERATORS = exports.STATEMENT_OR_BLOCK_KEYS = exports.NUMBER_UNARY_OPERATORS = exports.NUMBER_BINARY_OPERATORS = exports.LOGICAL_OPERATORS = exports.INHERIT_KEYS = exports.FOR_INIT_KEYS = exports.FLATTENABLE_KEYS = exports.EQUALITY_BINARY_OPERATORS = exports.COMPARISON_BINARY_OPERATORS = exports.COMMENT_KEYS = exports.BOOLEAN_UNARY_OPERATORS = exports.BOOLEAN_NUMBER_BINARY_OPERATORS = exports.BOOLEAN_BINARY_OPERATORS = exports.BINARY_OPERATORS = exports.ASSIGNMENT_OPERATORS = void 0;
+const STATEMENT_OR_BLOCK_KEYS = exports.STATEMENT_OR_BLOCK_KEYS = ["consequent", "body", "alternate"];
+const FLATTENABLE_KEYS = exports.FLATTENABLE_KEYS = ["body", "expressions"];
+const FOR_INIT_KEYS = exports.FOR_INIT_KEYS = ["left", "init"];
+const COMMENT_KEYS = exports.COMMENT_KEYS = ["leadingComments", "trailingComments", "innerComments"];
+const LOGICAL_OPERATORS = exports.LOGICAL_OPERATORS = ["||", "&&", "??"];
+const UPDATE_OPERATORS = exports.UPDATE_OPERATORS = ["++", "--"];
+const BOOLEAN_NUMBER_BINARY_OPERATORS = exports.BOOLEAN_NUMBER_BINARY_OPERATORS = [">", "<", ">=", "<="];
+const EQUALITY_BINARY_OPERATORS = exports.EQUALITY_BINARY_OPERATORS = ["==", "===", "!=", "!=="];
+const COMPARISON_BINARY_OPERATORS = exports.COMPARISON_BINARY_OPERATORS = [...EQUALITY_BINARY_OPERATORS, "in", "instanceof"];
+const BOOLEAN_BINARY_OPERATORS = exports.BOOLEAN_BINARY_OPERATORS = [...COMPARISON_BINARY_OPERATORS, ...BOOLEAN_NUMBER_BINARY_OPERATORS];
+const NUMBER_BINARY_OPERATORS = exports.NUMBER_BINARY_OPERATORS = ["-", "/", "%", "*", "**", "&", "|", ">>", ">>>", "<<", "^"];
+const BINARY_OPERATORS = exports.BINARY_OPERATORS = ["+", ...NUMBER_BINARY_OPERATORS, ...BOOLEAN_BINARY_OPERATORS, "|>"];
+const ASSIGNMENT_OPERATORS = exports.ASSIGNMENT_OPERATORS = ["=", "+=", ...NUMBER_BINARY_OPERATORS.map(op => op + "="), ...LOGICAL_OPERATORS.map(op => op + "=")];
+const BOOLEAN_UNARY_OPERATORS = exports.BOOLEAN_UNARY_OPERATORS = ["delete", "!"];
+const NUMBER_UNARY_OPERATORS = exports.NUMBER_UNARY_OPERATORS = ["+", "-", "~"];
+const STRING_UNARY_OPERATORS = exports.STRING_UNARY_OPERATORS = ["typeof"];
+const UNARY_OPERATORS = exports.UNARY_OPERATORS = ["void", "throw", ...BOOLEAN_UNARY_OPERATORS, ...NUMBER_UNARY_OPERATORS, ...STRING_UNARY_OPERATORS];
+const INHERIT_KEYS = exports.INHERIT_KEYS = {
+ optional: ["typeAnnotation", "typeParameters", "returnType"],
+ force: ["start", "loc", "end"]
+};
+exports.BLOCK_SCOPED_SYMBOL = Symbol.for("var used to be block scoped");
+exports.NOT_LOCAL_BINDING = Symbol.for("should not be considered a local binding");
+
+//# sourceMappingURL=index.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/constants/index.js.map b/vanilla/node_modules/@babel/types/lib/constants/index.js.map
new file mode 100644
index 0000000..c50c5c8
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/constants/index.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["STATEMENT_OR_BLOCK_KEYS","exports","FLATTENABLE_KEYS","FOR_INIT_KEYS","COMMENT_KEYS","LOGICAL_OPERATORS","UPDATE_OPERATORS","BOOLEAN_NUMBER_BINARY_OPERATORS","EQUALITY_BINARY_OPERATORS","COMPARISON_BINARY_OPERATORS","BOOLEAN_BINARY_OPERATORS","NUMBER_BINARY_OPERATORS","BINARY_OPERATORS","ASSIGNMENT_OPERATORS","map","op","BOOLEAN_UNARY_OPERATORS","NUMBER_UNARY_OPERATORS","STRING_UNARY_OPERATORS","UNARY_OPERATORS","INHERIT_KEYS","optional","force","BLOCK_SCOPED_SYMBOL","Symbol","for","NOT_LOCAL_BINDING"],"sources":["../../src/constants/index.ts"],"sourcesContent":["export const STATEMENT_OR_BLOCK_KEYS = [\"consequent\", \"body\", \"alternate\"];\nexport const FLATTENABLE_KEYS = [\"body\", \"expressions\"];\nexport const FOR_INIT_KEYS = [\"left\", \"init\"];\nexport const COMMENT_KEYS = [\n \"leadingComments\",\n \"trailingComments\",\n \"innerComments\",\n] as const;\n\nexport const LOGICAL_OPERATORS = [\"||\", \"&&\", \"??\"];\nexport const UPDATE_OPERATORS = [\"++\", \"--\"];\n\nexport const BOOLEAN_NUMBER_BINARY_OPERATORS = [\">\", \"<\", \">=\", \"<=\"];\nexport const EQUALITY_BINARY_OPERATORS = [\"==\", \"===\", \"!=\", \"!==\"];\nexport const COMPARISON_BINARY_OPERATORS = [\n ...EQUALITY_BINARY_OPERATORS,\n \"in\",\n \"instanceof\",\n];\nexport const BOOLEAN_BINARY_OPERATORS = [\n ...COMPARISON_BINARY_OPERATORS,\n ...BOOLEAN_NUMBER_BINARY_OPERATORS,\n];\nexport const NUMBER_BINARY_OPERATORS = [\n \"-\",\n \"/\",\n \"%\",\n \"*\",\n \"**\",\n \"&\",\n \"|\",\n \">>\",\n \">>>\",\n \"<<\",\n \"^\",\n];\nexport const BINARY_OPERATORS = [\n \"+\",\n ...NUMBER_BINARY_OPERATORS,\n ...BOOLEAN_BINARY_OPERATORS,\n \"|>\",\n];\n\nexport const ASSIGNMENT_OPERATORS = [\n \"=\",\n \"+=\",\n ...NUMBER_BINARY_OPERATORS.map(op => op + \"=\"),\n ...LOGICAL_OPERATORS.map(op => op + \"=\"),\n];\n\nexport const BOOLEAN_UNARY_OPERATORS = [\"delete\", \"!\"];\nexport const NUMBER_UNARY_OPERATORS = [\"+\", \"-\", \"~\"];\nexport const STRING_UNARY_OPERATORS = [\"typeof\"];\nexport const UNARY_OPERATORS = [\n \"void\",\n \"throw\",\n ...BOOLEAN_UNARY_OPERATORS,\n ...NUMBER_UNARY_OPERATORS,\n ...STRING_UNARY_OPERATORS,\n];\n\nexport const INHERIT_KEYS = {\n optional: [\"typeAnnotation\", \"typeParameters\", \"returnType\"],\n force: [\"start\", \"loc\", \"end\"],\n} as const;\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n // eslint-disable-next-line no-restricted-globals\n exports.BLOCK_SCOPED_SYMBOL = Symbol.for(\"var used to be block scoped\");\n // eslint-disable-next-line no-restricted-globals\n exports.NOT_LOCAL_BINDING = Symbol.for(\n \"should not be considered a local binding\",\n );\n}\n"],"mappings":";;;;;;AAAO,MAAMA,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC;AACnE,MAAME,gBAAgB,GAAAD,OAAA,CAAAC,gBAAA,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC;AAChD,MAAMC,aAAa,GAAAF,OAAA,CAAAE,aAAA,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;AACtC,MAAMC,YAAY,GAAAH,OAAA,CAAAG,YAAA,GAAG,CAC1B,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,CACP;AAEH,MAAMC,iBAAiB,GAAAJ,OAAA,CAAAI,iBAAA,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AAC5C,MAAMC,gBAAgB,GAAAL,OAAA,CAAAK,gBAAA,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;AAErC,MAAMC,+BAA+B,GAAAN,OAAA,CAAAM,+BAAA,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;AAC9D,MAAMC,yBAAyB,GAAAP,OAAA,CAAAO,yBAAA,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;AAC5D,MAAMC,2BAA2B,GAAAR,OAAA,CAAAQ,2BAAA,GAAG,CACzC,GAAGD,yBAAyB,EAC5B,IAAI,EACJ,YAAY,CACb;AACM,MAAME,wBAAwB,GAAAT,OAAA,CAAAS,wBAAA,GAAG,CACtC,GAAGD,2BAA2B,EAC9B,GAAGF,+BAA+B,CACnC;AACM,MAAMI,uBAAuB,GAAAV,OAAA,CAAAU,uBAAA,GAAG,CACrC,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,IAAI,EACJ,GAAG,EACH,GAAG,EACH,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,GAAG,CACJ;AACM,MAAMC,gBAAgB,GAAAX,OAAA,CAAAW,gBAAA,GAAG,CAC9B,GAAG,EACH,GAAGD,uBAAuB,EAC1B,GAAGD,wBAAwB,EAC3B,IAAI,CACL;AAEM,MAAMG,oBAAoB,GAAAZ,OAAA,CAAAY,oBAAA,GAAG,CAClC,GAAG,EACH,IAAI,EACJ,GAAGF,uBAAuB,CAACG,GAAG,CAACC,EAAE,IAAIA,EAAE,GAAG,GAAG,CAAC,EAC9C,GAAGV,iBAAiB,CAACS,GAAG,CAACC,EAAE,IAAIA,EAAE,GAAG,GAAG,CAAC,CACzC;AAEM,MAAMC,uBAAuB,GAAAf,OAAA,CAAAe,uBAAA,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC;AAC/C,MAAMC,sBAAsB,GAAAhB,OAAA,CAAAgB,sBAAA,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC9C,MAAMC,sBAAsB,GAAAjB,OAAA,CAAAiB,sBAAA,GAAG,CAAC,QAAQ,CAAC;AACzC,MAAMC,eAAe,GAAAlB,OAAA,CAAAkB,eAAA,GAAG,CAC7B,MAAM,EACN,OAAO,EACP,GAAGH,uBAAuB,EAC1B,GAAGC,sBAAsB,EACzB,GAAGC,sBAAsB,CAC1B;AAEM,MAAME,YAAY,GAAAnB,OAAA,CAAAmB,YAAA,GAAG;EAC1BC,QAAQ,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,CAAC;EAC5DC,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK;AAC/B,CAAU;AAIRrB,OAAO,CAACsB,mBAAmB,GAAGC,MAAM,CAACC,GAAG,CAAC,6BAA6B,CAAC;AAEvExB,OAAO,CAACyB,iBAAiB,GAAGF,MAAM,CAACC,GAAG,CACpC,0CACF,CAAC","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/converters/ensureBlock.js b/vanilla/node_modules/@babel/types/lib/converters/ensureBlock.js
new file mode 100644
index 0000000..8e64134
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/ensureBlock.js
@@ -0,0 +1,14 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = ensureBlock;
+var _toBlock = require("./toBlock.js");
+function ensureBlock(node, key = "body") {
+ const result = (0, _toBlock.default)(node[key], node);
+ node[key] = result;
+ return result;
+}
+
+//# sourceMappingURL=ensureBlock.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/converters/ensureBlock.js.map b/vanilla/node_modules/@babel/types/lib/converters/ensureBlock.js.map
new file mode 100644
index 0000000..572b0ed
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/ensureBlock.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_toBlock","require","ensureBlock","node","key","result","toBlock"],"sources":["../../src/converters/ensureBlock.ts"],"sourcesContent":["import toBlock from \"./toBlock.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Ensure the `key` (defaults to \"body\") of a `node` is a block.\n * Casting it to a block if it is not.\n *\n * Returns the BlockStatement\n */\nexport default function ensureBlock(\n node: t.Node,\n key: string = \"body\",\n): t.BlockStatement {\n // @ts-expect-error Fixme: key may not exist in node, consider remove key = \"body\"\n const result = toBlock(node[key], node);\n // @ts-expect-error Fixme: key may not exist in node, consider remove key = \"body\"\n node[key] = result;\n return result;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AASe,SAASC,WAAWA,CACjCC,IAAY,EACZC,GAAW,GAAG,MAAM,EACF;EAElB,MAAMC,MAAM,GAAG,IAAAC,gBAAO,EAACH,IAAI,CAACC,GAAG,CAAC,EAAED,IAAI,CAAC;EAEvCA,IAAI,CAACC,GAAG,CAAC,GAAGC,MAAM;EAClB,OAAOA,MAAM;AACf","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js b/vanilla/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js
new file mode 100644
index 0000000..9c2f0df
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js
@@ -0,0 +1,65 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = gatherSequenceExpressions;
+var _getBindingIdentifiers = require("../retrievers/getBindingIdentifiers.js");
+var _index = require("../validators/generated/index.js");
+var _index2 = require("../builders/generated/index.js");
+var _productions = require("../builders/productions.js");
+var _cloneNode = require("../clone/cloneNode.js");
+function gatherSequenceExpressions(nodes, declars) {
+ const exprs = [];
+ let ensureLastUndefined = true;
+ for (const node of nodes) {
+ if (!(0, _index.isEmptyStatement)(node)) {
+ ensureLastUndefined = false;
+ }
+ if ((0, _index.isExpression)(node)) {
+ exprs.push(node);
+ } else if ((0, _index.isExpressionStatement)(node)) {
+ exprs.push(node.expression);
+ } else if ((0, _index.isVariableDeclaration)(node)) {
+ if (node.kind !== "var") return;
+ for (const declar of node.declarations) {
+ const bindings = (0, _getBindingIdentifiers.default)(declar);
+ for (const key of Object.keys(bindings)) {
+ declars.push({
+ kind: node.kind,
+ id: (0, _cloneNode.default)(bindings[key])
+ });
+ }
+ if (declar.init) {
+ exprs.push((0, _index2.assignmentExpression)("=", declar.id, declar.init));
+ }
+ }
+ ensureLastUndefined = true;
+ } else if ((0, _index.isIfStatement)(node)) {
+ const consequent = node.consequent ? gatherSequenceExpressions([node.consequent], declars) : (0, _productions.buildUndefinedNode)();
+ const alternate = node.alternate ? gatherSequenceExpressions([node.alternate], declars) : (0, _productions.buildUndefinedNode)();
+ if (!consequent || !alternate) return;
+ exprs.push((0, _index2.conditionalExpression)(node.test, consequent, alternate));
+ } else if ((0, _index.isBlockStatement)(node)) {
+ const body = gatherSequenceExpressions(node.body, declars);
+ if (!body) return;
+ exprs.push(body);
+ } else if ((0, _index.isEmptyStatement)(node)) {
+ if (nodes.indexOf(node) === 0) {
+ ensureLastUndefined = true;
+ }
+ } else {
+ return;
+ }
+ }
+ if (ensureLastUndefined) {
+ exprs.push((0, _productions.buildUndefinedNode)());
+ }
+ if (exprs.length === 1) {
+ return exprs[0];
+ } else {
+ return (0, _index2.sequenceExpression)(exprs);
+ }
+}
+
+//# sourceMappingURL=gatherSequenceExpressions.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map b/vanilla/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map
new file mode 100644
index 0000000..c330894
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_getBindingIdentifiers","require","_index","_index2","_productions","_cloneNode","gatherSequenceExpressions","nodes","declars","exprs","ensureLastUndefined","node","isEmptyStatement","isExpression","push","isExpressionStatement","expression","isVariableDeclaration","kind","declar","declarations","bindings","getBindingIdentifiers","key","Object","keys","id","cloneNode","init","assignmentExpression","isIfStatement","consequent","buildUndefinedNode","alternate","conditionalExpression","test","isBlockStatement","body","indexOf","length","sequenceExpression"],"sources":["../../src/converters/gatherSequenceExpressions.ts"],"sourcesContent":["// TODO(Babel 8) Remove this file\nif (process.env.BABEL_8_BREAKING && process.env.IS_PUBLISH) {\n throw new Error(\n \"Internal Babel error: This file should only be loaded in Babel 7\",\n );\n}\n\nimport getBindingIdentifiers from \"../retrievers/getBindingIdentifiers.ts\";\nimport {\n isExpression,\n isExpressionStatement,\n isVariableDeclaration,\n isIfStatement,\n isBlockStatement,\n isEmptyStatement,\n} from \"../validators/generated/index.ts\";\nimport {\n sequenceExpression,\n assignmentExpression,\n conditionalExpression,\n} from \"../builders/generated/index.ts\";\nimport { buildUndefinedNode } from \"../builders/productions.ts\";\nimport cloneNode from \"../clone/cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n\nexport type DeclarationInfo = {\n kind: t.VariableDeclaration[\"kind\"];\n id: t.Identifier;\n};\n\nexport default function gatherSequenceExpressions(\n nodes: readonly t.Node[],\n declars: DeclarationInfo[],\n) {\n const exprs: t.Expression[] = [];\n let ensureLastUndefined = true;\n\n for (const node of nodes) {\n // if we encounter emptyStatement before a non-emptyStatement\n // we want to disregard that\n if (!isEmptyStatement(node)) {\n ensureLastUndefined = false;\n }\n\n if (isExpression(node)) {\n exprs.push(node);\n } else if (isExpressionStatement(node)) {\n exprs.push(node.expression);\n } else if (isVariableDeclaration(node)) {\n if (node.kind !== \"var\") return; // bailed\n\n for (const declar of node.declarations) {\n const bindings = getBindingIdentifiers(declar);\n for (const key of Object.keys(bindings)) {\n declars.push({\n kind: node.kind,\n id: cloneNode(bindings[key]),\n });\n }\n\n if (declar.init) {\n exprs.push(\n assignmentExpression(\n \"=\",\n // var declarator must not be a void pattern\n declar.id as Exclude<t.VariableDeclarator[\"id\"], t.VoidPattern>,\n declar.init,\n ),\n );\n }\n }\n\n ensureLastUndefined = true;\n } else if (isIfStatement(node)) {\n const consequent = node.consequent\n ? gatherSequenceExpressions([node.consequent], declars)\n : buildUndefinedNode();\n const alternate = node.alternate\n ? gatherSequenceExpressions([node.alternate], declars)\n : buildUndefinedNode();\n if (!consequent || !alternate) return; // bailed\n\n exprs.push(conditionalExpression(node.test, consequent, alternate));\n } else if (isBlockStatement(node)) {\n const body = gatherSequenceExpressions(node.body, declars);\n if (!body) return; // bailed\n\n exprs.push(body);\n } else if (isEmptyStatement(node)) {\n // empty statement so ensure the last item is undefined if we're last\n // checks if emptyStatement is first\n if (nodes.indexOf(node) === 0) {\n ensureLastUndefined = true;\n }\n } else {\n // bailed, we can't turn this statement into an expression\n return;\n }\n }\n\n if (ensureLastUndefined) {\n exprs.push(buildUndefinedNode());\n }\n\n if (exprs.length === 1) {\n return exprs[0];\n } else {\n return sequenceExpression(exprs);\n }\n}\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js b/vanilla/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js
new file mode 100644
index 0000000..c4cc176
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js
@@ -0,0 +1,14 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = toBindingIdentifierName;
+var _toIdentifier = require("./toIdentifier.js");
+function toBindingIdentifierName(name) {
+ name = (0, _toIdentifier.default)(name);
+ if (name === "eval" || name === "arguments") name = "_" + name;
+ return name;
+}
+
+//# sourceMappingURL=toBindingIdentifierName.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map b/vanilla/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map
new file mode 100644
index 0000000..7387a83
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_toIdentifier","require","toBindingIdentifierName","name","toIdentifier"],"sources":["../../src/converters/toBindingIdentifierName.ts"],"sourcesContent":["import toIdentifier from \"./toIdentifier.ts\";\n\nexport default function toBindingIdentifierName(name: string): string {\n name = toIdentifier(name);\n if (name === \"eval\" || name === \"arguments\") name = \"_\" + name;\n\n return name;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAEe,SAASC,uBAAuBA,CAACC,IAAY,EAAU;EACpEA,IAAI,GAAG,IAAAC,qBAAY,EAACD,IAAI,CAAC;EACzB,IAAIA,IAAI,KAAK,MAAM,IAAIA,IAAI,KAAK,WAAW,EAAEA,IAAI,GAAG,GAAG,GAAGA,IAAI;EAE9D,OAAOA,IAAI;AACb","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/converters/toBlock.js b/vanilla/node_modules/@babel/types/lib/converters/toBlock.js
new file mode 100644
index 0000000..d884b1e
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/toBlock.js
@@ -0,0 +1,29 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = toBlock;
+var _index = require("../validators/generated/index.js");
+var _index2 = require("../builders/generated/index.js");
+function toBlock(node, parent) {
+ if ((0, _index.isBlockStatement)(node)) {
+ return node;
+ }
+ let blockNodes = [];
+ if ((0, _index.isEmptyStatement)(node)) {
+ blockNodes = [];
+ } else {
+ if (!(0, _index.isStatement)(node)) {
+ if ((0, _index.isFunction)(parent)) {
+ node = (0, _index2.returnStatement)(node);
+ } else {
+ node = (0, _index2.expressionStatement)(node);
+ }
+ }
+ blockNodes = [node];
+ }
+ return (0, _index2.blockStatement)(blockNodes);
+}
+
+//# sourceMappingURL=toBlock.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/converters/toBlock.js.map b/vanilla/node_modules/@babel/types/lib/converters/toBlock.js.map
new file mode 100644
index 0000000..af53dea
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/toBlock.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","_index2","toBlock","node","parent","isBlockStatement","blockNodes","isEmptyStatement","isStatement","isFunction","returnStatement","expressionStatement","blockStatement"],"sources":["../../src/converters/toBlock.ts"],"sourcesContent":["import {\n isBlockStatement,\n isFunction,\n isEmptyStatement,\n isStatement,\n} from \"../validators/generated/index.ts\";\nimport {\n returnStatement,\n expressionStatement,\n blockStatement,\n} from \"../builders/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function toBlock(\n node: t.Statement | t.Expression,\n parent?: t.Node,\n): t.BlockStatement {\n if (isBlockStatement(node)) {\n return node;\n }\n\n let blockNodes: t.Statement[] = [];\n\n if (isEmptyStatement(node)) {\n blockNodes = [];\n } else {\n if (!isStatement(node)) {\n if (isFunction(parent)) {\n node = returnStatement(node);\n } else {\n node = expressionStatement(node);\n }\n }\n\n blockNodes = [node];\n }\n\n return blockStatement(blockNodes);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAMA,IAAAC,OAAA,GAAAD,OAAA;AAOe,SAASE,OAAOA,CAC7BC,IAAgC,EAChCC,MAAe,EACG;EAClB,IAAI,IAAAC,uBAAgB,EAACF,IAAI,CAAC,EAAE;IAC1B,OAAOA,IAAI;EACb;EAEA,IAAIG,UAAyB,GAAG,EAAE;EAElC,IAAI,IAAAC,uBAAgB,EAACJ,IAAI,CAAC,EAAE;IAC1BG,UAAU,GAAG,EAAE;EACjB,CAAC,MAAM;IACL,IAAI,CAAC,IAAAE,kBAAW,EAACL,IAAI,CAAC,EAAE;MACtB,IAAI,IAAAM,iBAAU,EAACL,MAAM,CAAC,EAAE;QACtBD,IAAI,GAAG,IAAAO,uBAAe,EAACP,IAAI,CAAC;MAC9B,CAAC,MAAM;QACLA,IAAI,GAAG,IAAAQ,2BAAmB,EAACR,IAAI,CAAC;MAClC;IACF;IAEAG,UAAU,GAAG,CAACH,IAAI,CAAC;EACrB;EAEA,OAAO,IAAAS,sBAAc,EAACN,UAAU,CAAC;AACnC","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/converters/toComputedKey.js b/vanilla/node_modules/@babel/types/lib/converters/toComputedKey.js
new file mode 100644
index 0000000..41ed1ca
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/toComputedKey.js
@@ -0,0 +1,14 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = toComputedKey;
+var _index = require("../validators/generated/index.js");
+var _index2 = require("../builders/generated/index.js");
+function toComputedKey(node, key = node.key || node.property) {
+ if (!node.computed && (0, _index.isIdentifier)(key)) key = (0, _index2.stringLiteral)(key.name);
+ return key;
+}
+
+//# sourceMappingURL=toComputedKey.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/converters/toComputedKey.js.map b/vanilla/node_modules/@babel/types/lib/converters/toComputedKey.js.map
new file mode 100644
index 0000000..f664c87
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/toComputedKey.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","_index2","toComputedKey","node","key","property","computed","isIdentifier","stringLiteral","name"],"sources":["../../src/converters/toComputedKey.ts"],"sourcesContent":["import { isIdentifier } from \"../validators/generated/index.ts\";\nimport { stringLiteral } from \"../builders/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function toComputedKey(\n node:\n | t.ObjectMember\n | t.ObjectProperty\n | t.ClassMethod\n | t.ClassProperty\n | t.ClassAccessorProperty\n | t.MemberExpression\n | t.OptionalMemberExpression,\n // @ts-expect-error todo(flow->ts): maybe check the type of node before accessing .key and .property\n key: t.Expression | t.PrivateName = node.key || node.property,\n) {\n if (!node.computed && isIdentifier(key)) key = stringLiteral(key.name);\n\n return key;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAGe,SAASE,aAAaA,CACnCC,IAO8B,EAE9BC,GAAiC,GAAGD,IAAI,CAACC,GAAG,IAAID,IAAI,CAACE,QAAQ,EAC7D;EACA,IAAI,CAACF,IAAI,CAACG,QAAQ,IAAI,IAAAC,mBAAY,EAACH,GAAG,CAAC,EAAEA,GAAG,GAAG,IAAAI,qBAAa,EAACJ,GAAG,CAACK,IAAI,CAAC;EAEtE,OAAOL,GAAG;AACZ","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/converters/toExpression.js b/vanilla/node_modules/@babel/types/lib/converters/toExpression.js
new file mode 100644
index 0000000..f121677
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/toExpression.js
@@ -0,0 +1,28 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var _index = require("../validators/generated/index.js");
+var _default = exports.default = toExpression;
+function toExpression(node) {
+ if ((0, _index.isExpressionStatement)(node)) {
+ node = node.expression;
+ }
+ if ((0, _index.isExpression)(node)) {
+ return node;
+ }
+ if ((0, _index.isClass)(node)) {
+ node.type = "ClassExpression";
+ node.abstract = false;
+ } else if ((0, _index.isFunction)(node)) {
+ node.type = "FunctionExpression";
+ }
+ if (!(0, _index.isExpression)(node)) {
+ throw new Error(`cannot turn ${node.type} to an expression`);
+ }
+ return node;
+}
+
+//# sourceMappingURL=toExpression.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/converters/toExpression.js.map b/vanilla/node_modules/@babel/types/lib/converters/toExpression.js.map
new file mode 100644
index 0000000..6b58e2a
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/toExpression.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","_default","exports","default","toExpression","node","isExpressionStatement","expression","isExpression","isClass","type","abstract","isFunction","Error"],"sources":["../../src/converters/toExpression.ts"],"sourcesContent":["import {\n isExpression,\n isFunction,\n isClass,\n isExpressionStatement,\n} from \"../validators/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default toExpression as {\n (node: t.Function): t.FunctionExpression;\n (node: t.Class): t.ClassExpression;\n (\n node: t.ExpressionStatement | t.Expression | t.Class | t.Function,\n ): t.Expression;\n};\n\nfunction toExpression(\n node: t.ExpressionStatement | t.Expression | t.Class | t.Function,\n): t.Expression {\n if (isExpressionStatement(node)) {\n node = node.expression;\n }\n\n // return unmodified node\n // important for things like ArrowFunctions where\n // type change from ArrowFunction to FunctionExpression\n // produces bugs like -> `()=>a` to `function () a`\n // without generating a BlockStatement for it\n // ref: https://github.com/babel/babili/issues/130\n if (isExpression(node)) {\n return node;\n }\n\n // convert all classes and functions\n // ClassDeclaration -> ClassExpression\n // FunctionDeclaration, ObjectMethod, ClassMethod -> FunctionExpression\n if (isClass(node)) {\n // @ts-expect-error todo(flow->ts): avoid type unsafe mutations\n node.type = \"ClassExpression\";\n // abstract modifiers are only allowed on class declarations\n node.abstract = false;\n } else if (isFunction(node)) {\n // @ts-expect-error todo(flow->ts): avoid type unsafe mutations\n node.type = \"FunctionExpression\";\n }\n\n // if it's still not an expression\n if (!isExpression(node)) {\n throw new Error(`cannot turn ${node.type} to an expression`);\n }\n\n return node;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAK0C,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAG3BC,YAAY;AAQ3B,SAASA,YAAYA,CACnBC,IAAiE,EACnD;EACd,IAAI,IAAAC,4BAAqB,EAACD,IAAI,CAAC,EAAE;IAC/BA,IAAI,GAAGA,IAAI,CAACE,UAAU;EACxB;EAQA,IAAI,IAAAC,mBAAY,EAACH,IAAI,CAAC,EAAE;IACtB,OAAOA,IAAI;EACb;EAKA,IAAI,IAAAI,cAAO,EAACJ,IAAI,CAAC,EAAE;IAEjBA,IAAI,CAACK,IAAI,GAAG,iBAAiB;IAE7BL,IAAI,CAACM,QAAQ,GAAG,KAAK;EACvB,CAAC,MAAM,IAAI,IAAAC,iBAAU,EAACP,IAAI,CAAC,EAAE;IAE3BA,IAAI,CAACK,IAAI,GAAG,oBAAoB;EAClC;EAGA,IAAI,CAAC,IAAAF,mBAAY,EAACH,IAAI,CAAC,EAAE;IACvB,MAAM,IAAIQ,KAAK,CAAC,eAAeR,IAAI,CAACK,IAAI,mBAAmB,CAAC;EAC9D;EAEA,OAAOL,IAAI;AACb","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/converters/toIdentifier.js b/vanilla/node_modules/@babel/types/lib/converters/toIdentifier.js
new file mode 100644
index 0000000..8803785
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/toIdentifier.js
@@ -0,0 +1,25 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = toIdentifier;
+var _isValidIdentifier = require("../validators/isValidIdentifier.js");
+var _helperValidatorIdentifier = require("@babel/helper-validator-identifier");
+function toIdentifier(input) {
+ input = input + "";
+ let name = "";
+ for (const c of input) {
+ name += (0, _helperValidatorIdentifier.isIdentifierChar)(c.codePointAt(0)) ? c : "-";
+ }
+ name = name.replace(/^[-0-9]+/, "");
+ name = name.replace(/[-\s]+(.)?/g, function (match, c) {
+ return c ? c.toUpperCase() : "";
+ });
+ if (!(0, _isValidIdentifier.default)(name)) {
+ name = `_${name}`;
+ }
+ return name || "_";
+}
+
+//# sourceMappingURL=toIdentifier.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/converters/toIdentifier.js.map b/vanilla/node_modules/@babel/types/lib/converters/toIdentifier.js.map
new file mode 100644
index 0000000..d62fa18
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/toIdentifier.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_isValidIdentifier","require","_helperValidatorIdentifier","toIdentifier","input","name","c","isIdentifierChar","codePointAt","replace","match","toUpperCase","isValidIdentifier"],"sources":["../../src/converters/toIdentifier.ts"],"sourcesContent":["import isValidIdentifier from \"../validators/isValidIdentifier.ts\";\nimport { isIdentifierChar } from \"@babel/helper-validator-identifier\";\n\nexport default function toIdentifier(input: string): string {\n input = input + \"\";\n\n // replace all non-valid identifiers with dashes\n let name = \"\";\n for (const c of input) {\n name += isIdentifierChar(c.codePointAt(0)) ? c : \"-\";\n }\n\n // remove all dashes and numbers from start of name\n name = name.replace(/^[-0-9]+/, \"\");\n\n // camel case\n name = name.replace(/[-\\s]+(.)?/g, function (match, c) {\n return c ? c.toUpperCase() : \"\";\n });\n\n if (!isValidIdentifier(name)) {\n name = `_${name}`;\n }\n\n return name || \"_\";\n}\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,0BAAA,GAAAD,OAAA;AAEe,SAASE,YAAYA,CAACC,KAAa,EAAU;EAC1DA,KAAK,GAAGA,KAAK,GAAG,EAAE;EAGlB,IAAIC,IAAI,GAAG,EAAE;EACb,KAAK,MAAMC,CAAC,IAAIF,KAAK,EAAE;IACrBC,IAAI,IAAI,IAAAE,2CAAgB,EAACD,CAAC,CAACE,WAAW,CAAC,CAAC,CAAC,CAAC,GAAGF,CAAC,GAAG,GAAG;EACtD;EAGAD,IAAI,GAAGA,IAAI,CAACI,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;EAGnCJ,IAAI,GAAGA,IAAI,CAACI,OAAO,CAAC,aAAa,EAAE,UAAUC,KAAK,EAAEJ,CAAC,EAAE;IACrD,OAAOA,CAAC,GAAGA,CAAC,CAACK,WAAW,CAAC,CAAC,GAAG,EAAE;EACjC,CAAC,CAAC;EAEF,IAAI,CAAC,IAAAC,0BAAiB,EAACP,IAAI,CAAC,EAAE;IAC5BA,IAAI,GAAG,IAAIA,IAAI,EAAE;EACnB;EAEA,OAAOA,IAAI,IAAI,GAAG;AACpB","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/converters/toKeyAlias.js b/vanilla/node_modules/@babel/types/lib/converters/toKeyAlias.js
new file mode 100644
index 0000000..ee73a0e
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/toKeyAlias.js
@@ -0,0 +1,38 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = toKeyAlias;
+var _index = require("../validators/generated/index.js");
+var _cloneNode = require("../clone/cloneNode.js");
+var _removePropertiesDeep = require("../modifications/removePropertiesDeep.js");
+function toKeyAlias(node, key = node.key) {
+ let alias;
+ if (node.kind === "method") {
+ return toKeyAlias.increment() + "";
+ } else if ((0, _index.isIdentifier)(key)) {
+ alias = key.name;
+ } else if ((0, _index.isStringLiteral)(key)) {
+ alias = JSON.stringify(key.value);
+ } else {
+ alias = JSON.stringify((0, _removePropertiesDeep.default)((0, _cloneNode.default)(key)));
+ }
+ if (node.computed) {
+ alias = `[${alias}]`;
+ }
+ if (node.static) {
+ alias = `static:${alias}`;
+ }
+ return alias;
+}
+toKeyAlias.uid = 0;
+toKeyAlias.increment = function () {
+ if (toKeyAlias.uid >= Number.MAX_SAFE_INTEGER) {
+ return toKeyAlias.uid = 0;
+ } else {
+ return toKeyAlias.uid++;
+ }
+};
+
+//# sourceMappingURL=toKeyAlias.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/converters/toKeyAlias.js.map b/vanilla/node_modules/@babel/types/lib/converters/toKeyAlias.js.map
new file mode 100644
index 0000000..8dc225a
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/toKeyAlias.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","_cloneNode","_removePropertiesDeep","toKeyAlias","node","key","alias","kind","increment","isIdentifier","name","isStringLiteral","JSON","stringify","value","removePropertiesDeep","cloneNode","computed","static","uid","Number","MAX_SAFE_INTEGER"],"sources":["../../src/converters/toKeyAlias.ts"],"sourcesContent":["import {\n isIdentifier,\n isStringLiteral,\n} from \"../validators/generated/index.ts\";\nimport cloneNode from \"../clone/cloneNode.ts\";\nimport removePropertiesDeep from \"../modifications/removePropertiesDeep.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function toKeyAlias(\n node: t.Method | t.Property,\n key: t.Node = node.key,\n): string {\n let alias;\n\n // @ts-expect-error todo(flow->ts): maybe add node type check before checking `.kind`\n if (node.kind === \"method\") {\n return toKeyAlias.increment() + \"\";\n } else if (isIdentifier(key)) {\n alias = key.name;\n } else if (isStringLiteral(key)) {\n alias = JSON.stringify(key.value);\n } else {\n alias = JSON.stringify(removePropertiesDeep(cloneNode(key)));\n }\n\n // @ts-expect-error todo(flow->ts): maybe add node type check before checking `.computed`\n if (node.computed) {\n alias = `[${alias}]`;\n }\n\n // @ts-expect-error todo(flow->ts): maybe add node type check before checking `.static`\n if (node.static) {\n alias = `static:${alias}`;\n }\n\n return alias;\n}\n\ntoKeyAlias.uid = 0;\n\ntoKeyAlias.increment = function () {\n if (toKeyAlias.uid >= Number.MAX_SAFE_INTEGER) {\n return (toKeyAlias.uid = 0);\n } else {\n return toKeyAlias.uid++;\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAIA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AAGe,SAASG,UAAUA,CAChCC,IAA2B,EAC3BC,GAAW,GAAGD,IAAI,CAACC,GAAG,EACd;EACR,IAAIC,KAAK;EAGT,IAAIF,IAAI,CAACG,IAAI,KAAK,QAAQ,EAAE;IAC1B,OAAOJ,UAAU,CAACK,SAAS,CAAC,CAAC,GAAG,EAAE;EACpC,CAAC,MAAM,IAAI,IAAAC,mBAAY,EAACJ,GAAG,CAAC,EAAE;IAC5BC,KAAK,GAAGD,GAAG,CAACK,IAAI;EAClB,CAAC,MAAM,IAAI,IAAAC,sBAAe,EAACN,GAAG,CAAC,EAAE;IAC/BC,KAAK,GAAGM,IAAI,CAACC,SAAS,CAACR,GAAG,CAACS,KAAK,CAAC;EACnC,CAAC,MAAM;IACLR,KAAK,GAAGM,IAAI,CAACC,SAAS,CAAC,IAAAE,6BAAoB,EAAC,IAAAC,kBAAS,EAACX,GAAG,CAAC,CAAC,CAAC;EAC9D;EAGA,IAAID,IAAI,CAACa,QAAQ,EAAE;IACjBX,KAAK,GAAG,IAAIA,KAAK,GAAG;EACtB;EAGA,IAAIF,IAAI,CAACc,MAAM,EAAE;IACfZ,KAAK,GAAG,UAAUA,KAAK,EAAE;EAC3B;EAEA,OAAOA,KAAK;AACd;AAEAH,UAAU,CAACgB,GAAG,GAAG,CAAC;AAElBhB,UAAU,CAACK,SAAS,GAAG,YAAY;EACjC,IAAIL,UAAU,CAACgB,GAAG,IAAIC,MAAM,CAACC,gBAAgB,EAAE;IAC7C,OAAQlB,UAAU,CAACgB,GAAG,GAAG,CAAC;EAC5B,CAAC,MAAM;IACL,OAAOhB,UAAU,CAACgB,GAAG,EAAE;EACzB;AACF,CAAC","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/converters/toSequenceExpression.js b/vanilla/node_modules/@babel/types/lib/converters/toSequenceExpression.js
new file mode 100644
index 0000000..d0210bc
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/toSequenceExpression.js
@@ -0,0 +1,19 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = toSequenceExpression;
+var _gatherSequenceExpressions = require("./gatherSequenceExpressions.js");
+function toSequenceExpression(nodes, scope) {
+ if (!(nodes != null && nodes.length)) return;
+ const declars = [];
+ const result = (0, _gatherSequenceExpressions.default)(nodes, declars);
+ if (!result) return;
+ for (const declar of declars) {
+ scope.push(declar);
+ }
+ return result;
+}
+
+//# sourceMappingURL=toSequenceExpression.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/converters/toSequenceExpression.js.map b/vanilla/node_modules/@babel/types/lib/converters/toSequenceExpression.js.map
new file mode 100644
index 0000000..1eab72e
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/toSequenceExpression.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_gatherSequenceExpressions","require","toSequenceExpression","nodes","scope","length","declars","result","gatherSequenceExpressions","declar","push"],"sources":["../../src/converters/toSequenceExpression.ts"],"sourcesContent":["// TODO(Babel 8) Remove this file\nif (process.env.BABEL_8_BREAKING && process.env.IS_PUBLISH) {\n throw new Error(\n \"Internal Babel error: This file should only be loaded in Babel 7\",\n );\n}\n\nimport gatherSequenceExpressions from \"./gatherSequenceExpressions.ts\";\nimport type * as t from \"../index.ts\";\nimport type { DeclarationInfo } from \"./gatherSequenceExpressions.ts\";\n\n/**\n * Turn an array of statement `nodes` into a `SequenceExpression`.\n *\n * Variable declarations are turned into simple assignments and their\n * declarations hoisted to the top of the current scope.\n *\n * Expression statements are just resolved to their expression.\n */\nexport default function toSequenceExpression(\n nodes: readonly t.Node[],\n scope: any,\n): t.SequenceExpression | undefined {\n if (!nodes?.length) return;\n\n const declars: DeclarationInfo[] = [];\n const result = gatherSequenceExpressions(nodes, declars);\n if (!result) return;\n\n for (const declar of declars) {\n scope.push(declar);\n }\n\n // @ts-expect-error fixme: gatherSequenceExpressions will return an Expression when there are only one element\n return result;\n}\n"],"mappings":";;;;;;AAOA,IAAAA,0BAAA,GAAAC,OAAA;AAYe,SAASC,oBAAoBA,CAC1CC,KAAwB,EACxBC,KAAU,EACwB;EAClC,IAAI,EAACD,KAAK,YAALA,KAAK,CAAEE,MAAM,GAAE;EAEpB,MAAMC,OAA0B,GAAG,EAAE;EACrC,MAAMC,MAAM,GAAG,IAAAC,kCAAyB,EAACL,KAAK,EAAEG,OAAO,CAAC;EACxD,IAAI,CAACC,MAAM,EAAE;EAEb,KAAK,MAAME,MAAM,IAAIH,OAAO,EAAE;IAC5BF,KAAK,CAACM,IAAI,CAACD,MAAM,CAAC;EACpB;EAGA,OAAOF,MAAM;AACf","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/converters/toStatement.js b/vanilla/node_modules/@babel/types/lib/converters/toStatement.js
new file mode 100644
index 0000000..92cfd96
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/toStatement.js
@@ -0,0 +1,39 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var _index = require("../validators/generated/index.js");
+var _index2 = require("../builders/generated/index.js");
+var _default = exports.default = toStatement;
+function toStatement(node, ignore) {
+ if ((0, _index.isStatement)(node)) {
+ return node;
+ }
+ let mustHaveId = false;
+ let newType;
+ if ((0, _index.isClass)(node)) {
+ mustHaveId = true;
+ newType = "ClassDeclaration";
+ } else if ((0, _index.isFunction)(node)) {
+ mustHaveId = true;
+ newType = "FunctionDeclaration";
+ } else if ((0, _index.isAssignmentExpression)(node)) {
+ return (0, _index2.expressionStatement)(node);
+ }
+ if (mustHaveId && !node.id) {
+ newType = false;
+ }
+ if (!newType) {
+ if (ignore) {
+ return false;
+ } else {
+ throw new Error(`cannot turn ${node.type} to a statement`);
+ }
+ }
+ node.type = newType;
+ return node;
+}
+
+//# sourceMappingURL=toStatement.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/converters/toStatement.js.map b/vanilla/node_modules/@babel/types/lib/converters/toStatement.js.map
new file mode 100644
index 0000000..5314f17
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/toStatement.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","_index2","_default","exports","default","toStatement","node","ignore","isStatement","mustHaveId","newType","isClass","isFunction","isAssignmentExpression","expressionStatement","id","Error","type"],"sources":["../../src/converters/toStatement.ts"],"sourcesContent":["import {\n isStatement,\n isFunction,\n isClass,\n isAssignmentExpression,\n} from \"../validators/generated/index.ts\";\nimport { expressionStatement } from \"../builders/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default toStatement as {\n (node: t.AssignmentExpression, ignore?: boolean): t.ExpressionStatement;\n\n <T extends t.Statement>(node: T, ignore: false): T;\n <T extends t.Statement>(node: T, ignore?: boolean): T | false;\n\n (node: t.Class, ignore: false): t.ClassDeclaration;\n (node: t.Class, ignore?: boolean): t.ClassDeclaration | false;\n\n (node: t.Function, ignore: false): t.FunctionDeclaration;\n (node: t.Function, ignore?: boolean): t.FunctionDeclaration | false;\n\n (node: t.Node, ignore: false): t.Statement;\n (node: t.Node, ignore?: boolean): t.Statement | false;\n};\n\nfunction toStatement(node: t.Node, ignore?: boolean): t.Statement | false {\n if (isStatement(node)) {\n return node;\n }\n\n let mustHaveId = false;\n let newType;\n\n if (isClass(node)) {\n mustHaveId = true;\n newType = \"ClassDeclaration\" as const;\n } else if (isFunction(node)) {\n mustHaveId = true;\n newType = \"FunctionDeclaration\" as const;\n } else if (isAssignmentExpression(node)) {\n return expressionStatement(node);\n }\n\n // @ts-expect-error todo(flow->ts): node.id might be missing\n if (mustHaveId && !node.id) {\n newType = false;\n }\n\n if (!newType) {\n if (ignore) {\n return false;\n } else {\n throw new Error(`cannot turn ${node.type} to a statement`);\n }\n }\n\n // @ts-expect-error manipulating node.type\n node.type = newType;\n\n // @ts-expect-error todo(flow->ts) refactor to avoid type unsafe mutations like reassigning node type above\n return node;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAMA,IAAAC,OAAA,GAAAD,OAAA;AAAqE,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAGtDC,WAAW;AAgB1B,SAASA,WAAWA,CAACC,IAAY,EAAEC,MAAgB,EAAuB;EACxE,IAAI,IAAAC,kBAAW,EAACF,IAAI,CAAC,EAAE;IACrB,OAAOA,IAAI;EACb;EAEA,IAAIG,UAAU,GAAG,KAAK;EACtB,IAAIC,OAAO;EAEX,IAAI,IAAAC,cAAO,EAACL,IAAI,CAAC,EAAE;IACjBG,UAAU,GAAG,IAAI;IACjBC,OAAO,GAAG,kBAA2B;EACvC,CAAC,MAAM,IAAI,IAAAE,iBAAU,EAACN,IAAI,CAAC,EAAE;IAC3BG,UAAU,GAAG,IAAI;IACjBC,OAAO,GAAG,qBAA8B;EAC1C,CAAC,MAAM,IAAI,IAAAG,6BAAsB,EAACP,IAAI,CAAC,EAAE;IACvC,OAAO,IAAAQ,2BAAmB,EAACR,IAAI,CAAC;EAClC;EAGA,IAAIG,UAAU,IAAI,CAACH,IAAI,CAACS,EAAE,EAAE;IAC1BL,OAAO,GAAG,KAAK;EACjB;EAEA,IAAI,CAACA,OAAO,EAAE;IACZ,IAAIH,MAAM,EAAE;MACV,OAAO,KAAK;IACd,CAAC,MAAM;MACL,MAAM,IAAIS,KAAK,CAAC,eAAeV,IAAI,CAACW,IAAI,iBAAiB,CAAC;IAC5D;EACF;EAGAX,IAAI,CAACW,IAAI,GAAGP,OAAO;EAGnB,OAAOJ,IAAI;AACb","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/converters/valueToNode.js b/vanilla/node_modules/@babel/types/lib/converters/valueToNode.js
new file mode 100644
index 0000000..eda82a6
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/valueToNode.js
@@ -0,0 +1,89 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var _isValidIdentifier = require("../validators/isValidIdentifier.js");
+var _index = require("../builders/generated/index.js");
+var _default = exports.default = valueToNode;
+const objectToString = Function.call.bind(Object.prototype.toString);
+function isRegExp(value) {
+ return objectToString(value) === "[object RegExp]";
+}
+function isPlainObject(value) {
+ if (typeof value !== "object" || value === null || Object.prototype.toString.call(value) !== "[object Object]") {
+ return false;
+ }
+ const proto = Object.getPrototypeOf(value);
+ return proto === null || Object.getPrototypeOf(proto) === null;
+}
+function valueToNode(value) {
+ if (value === undefined) {
+ return (0, _index.identifier)("undefined");
+ }
+ if (value === true || value === false) {
+ return (0, _index.booleanLiteral)(value);
+ }
+ if (value === null) {
+ return (0, _index.nullLiteral)();
+ }
+ if (typeof value === "string") {
+ return (0, _index.stringLiteral)(value);
+ }
+ if (typeof value === "number") {
+ let result;
+ if (Number.isFinite(value)) {
+ result = (0, _index.numericLiteral)(Math.abs(value));
+ } else {
+ let numerator;
+ if (Number.isNaN(value)) {
+ numerator = (0, _index.numericLiteral)(0);
+ } else {
+ numerator = (0, _index.numericLiteral)(1);
+ }
+ result = (0, _index.binaryExpression)("/", numerator, (0, _index.numericLiteral)(0));
+ }
+ if (value < 0 || Object.is(value, -0)) {
+ result = (0, _index.unaryExpression)("-", result);
+ }
+ return result;
+ }
+ if (typeof value === "bigint") {
+ if (value < 0) {
+ return (0, _index.unaryExpression)("-", (0, _index.bigIntLiteral)(-value));
+ } else {
+ return (0, _index.bigIntLiteral)(value);
+ }
+ }
+ if (isRegExp(value)) {
+ const pattern = value.source;
+ const flags = /\/([a-z]*)$/.exec(value.toString())[1];
+ return (0, _index.regExpLiteral)(pattern, flags);
+ }
+ if (Array.isArray(value)) {
+ return (0, _index.arrayExpression)(value.map(valueToNode));
+ }
+ if (isPlainObject(value)) {
+ const props = [];
+ for (const key of Object.keys(value)) {
+ let nodeKey,
+ computed = false;
+ if ((0, _isValidIdentifier.default)(key)) {
+ if (key === "__proto__") {
+ computed = true;
+ nodeKey = (0, _index.stringLiteral)(key);
+ } else {
+ nodeKey = (0, _index.identifier)(key);
+ }
+ } else {
+ nodeKey = (0, _index.stringLiteral)(key);
+ }
+ props.push((0, _index.objectProperty)(nodeKey, valueToNode(value[key]), computed));
+ }
+ return (0, _index.objectExpression)(props);
+ }
+ throw new Error("don't know how to turn this value into a node");
+}
+
+//# sourceMappingURL=valueToNode.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/converters/valueToNode.js.map b/vanilla/node_modules/@babel/types/lib/converters/valueToNode.js.map
new file mode 100644
index 0000000..8a11b8d
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/converters/valueToNode.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_isValidIdentifier","require","_index","_default","exports","default","valueToNode","objectToString","Function","call","bind","Object","prototype","toString","isRegExp","value","isPlainObject","proto","getPrototypeOf","undefined","identifier","booleanLiteral","nullLiteral","stringLiteral","result","Number","isFinite","numericLiteral","Math","abs","numerator","isNaN","binaryExpression","is","unaryExpression","bigIntLiteral","pattern","source","flags","exec","regExpLiteral","Array","isArray","arrayExpression","map","props","key","keys","nodeKey","computed","isValidIdentifier","push","objectProperty","objectExpression","Error"],"sources":["../../src/converters/valueToNode.ts"],"sourcesContent":["import isValidIdentifier from \"../validators/isValidIdentifier.ts\";\nimport {\n identifier,\n booleanLiteral,\n nullLiteral,\n stringLiteral,\n numericLiteral,\n bigIntLiteral,\n regExpLiteral,\n arrayExpression,\n objectProperty,\n objectExpression,\n unaryExpression,\n binaryExpression,\n} from \"../builders/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default valueToNode as {\n (value: undefined): t.Identifier; // TODO: This should return \"void 0\"\n (value: boolean): t.BooleanLiteral;\n (value: null): t.NullLiteral;\n (value: string): t.StringLiteral;\n // Infinities and NaN need to use a BinaryExpression; negative values must be wrapped in UnaryExpression\n (value: number): t.NumericLiteral | t.BinaryExpression | t.UnaryExpression;\n (value: bigint): t.BigIntLiteral;\n (value: RegExp): t.RegExpLiteral;\n (value: readonly unknown[]): t.ArrayExpression;\n\n // this throws with objects that are not plain objects,\n // or if there are non-valueToNode-able values\n (value: object): t.ObjectExpression;\n\n (value: unknown): t.Expression;\n};\n\n// @ts-expect-error: Object.prototype.toString must return a string\nconst objectToString: (value: unknown) => string = Function.call.bind(\n Object.prototype.toString,\n);\n\nfunction isRegExp(value: unknown): value is RegExp {\n return objectToString(value) === \"[object RegExp]\";\n}\n\nfunction isPlainObject(value: unknown): value is object {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Object.prototype.toString.call(value) !== \"[object Object]\"\n ) {\n return false;\n }\n const proto = Object.getPrototypeOf(value);\n // Object.prototype's __proto__ is null. Every other class's __proto__.__proto__ is\n // not null by default. We cannot check if proto === Object.prototype because it\n // could come from another realm.\n return proto === null || Object.getPrototypeOf(proto) === null;\n}\n\nfunction valueToNode(value: unknown): t.Expression {\n // undefined\n if (value === undefined) {\n return identifier(\"undefined\");\n }\n\n // boolean\n if (value === true || value === false) {\n return booleanLiteral(value);\n }\n\n // null\n if (value === null) {\n return nullLiteral();\n }\n\n // strings\n if (typeof value === \"string\") {\n return stringLiteral(value);\n }\n\n // numbers\n if (typeof value === \"number\") {\n let result;\n if (Number.isFinite(value)) {\n result = numericLiteral(Math.abs(value));\n } else {\n let numerator;\n if (Number.isNaN(value)) {\n // NaN\n numerator = numericLiteral(0);\n } else {\n // Infinity / -Infinity\n numerator = numericLiteral(1);\n }\n\n result = binaryExpression(\"/\", numerator, numericLiteral(0));\n }\n\n if (value < 0 || Object.is(value, -0)) {\n result = unaryExpression(\"-\", result);\n }\n\n return result;\n }\n\n // bigints\n if (typeof value === \"bigint\") {\n if (value < 0) {\n return unaryExpression(\"-\", bigIntLiteral(-value));\n } else {\n return bigIntLiteral(value);\n }\n }\n\n // regexes\n if (isRegExp(value)) {\n const pattern = value.source;\n const flags = /\\/([a-z]*)$/.exec(value.toString())[1];\n return regExpLiteral(pattern, flags);\n }\n\n // array\n if (Array.isArray(value)) {\n return arrayExpression(value.map(valueToNode));\n }\n\n // object\n if (isPlainObject(value)) {\n const props = [];\n for (const key of Object.keys(value)) {\n let nodeKey,\n computed = false;\n if (isValidIdentifier(key)) {\n if (key === \"__proto__\") {\n computed = true;\n nodeKey = stringLiteral(key);\n } else {\n nodeKey = identifier(key);\n }\n } else {\n nodeKey = stringLiteral(key);\n }\n props.push(\n objectProperty(\n nodeKey,\n valueToNode(\n // @ts-expect-error key must present in value\n value[key],\n ),\n computed,\n ),\n );\n }\n return objectExpression(props);\n }\n\n throw new Error(\"don't know how to turn this value into a node\");\n}\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/definitions/core.js b/vanilla/node_modules/@babel/types/lib/definitions/core.js
new file mode 100644
index 0000000..a642fbe
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/definitions/core.js
@@ -0,0 +1,1725 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.patternLikeCommon = exports.importAttributes = exports.functionTypeAnnotationCommon = exports.functionDeclarationCommon = exports.functionCommon = exports.classMethodOrPropertyUnionShapeCommon = exports.classMethodOrPropertyCommon = exports.classMethodOrDeclareMethodCommon = void 0;
+var _is = require("../validators/is.js");
+var _isValidIdentifier = require("../validators/isValidIdentifier.js");
+var _helperValidatorIdentifier = require("@babel/helper-validator-identifier");
+var _helperStringParser = require("@babel/helper-string-parser");
+var _index = require("../constants/index.js");
+var _utils = require("./utils.js");
+const classMethodOrPropertyUnionShapeCommon = (allowPrivateName = false) => ({
+ unionShape: {
+ discriminator: "computed",
+ shapes: [{
+ name: "computed",
+ value: [true],
+ properties: {
+ key: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+ }, {
+ name: "nonComputed",
+ value: [false],
+ properties: {
+ key: {
+ validate: allowPrivateName ? (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "PrivateName") : (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral")
+ }
+ }
+ }]
+ }
+});
+exports.classMethodOrPropertyUnionShapeCommon = classMethodOrPropertyUnionShapeCommon;
+const defineType = (0, _utils.defineAliasedType)("Standardized");
+defineType("ArrayExpression", {
+ fields: {
+ elements: {
+ validate: (0, _utils.arrayOf)((0, _utils.assertNodeOrValueType)("null", "Expression", "SpreadElement")),
+ default: !process.env.BABEL_TYPES_8_BREAKING ? [] : undefined
+ }
+ },
+ visitor: ["elements"],
+ aliases: ["Expression"]
+});
+defineType("AssignmentExpression", {
+ fields: {
+ operator: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)("string") : Object.assign(function () {
+ const identifier = (0, _utils.assertOneOf)(..._index.ASSIGNMENT_OPERATORS);
+ const pattern = (0, _utils.assertOneOf)("=");
+ return function (node, key, val) {
+ const validator = (0, _is.default)("Pattern", node.left) ? pattern : identifier;
+ validator(node, key, val);
+ };
+ }(), {
+ oneOf: _index.ASSIGNMENT_OPERATORS
+ })
+ },
+ left: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("LVal", "OptionalMemberExpression") : (0, _utils.assertNodeType)("Identifier", "MemberExpression", "OptionalMemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression")
+ },
+ right: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ },
+ builder: ["operator", "left", "right"],
+ visitor: ["left", "right"],
+ aliases: ["Expression"]
+});
+defineType("BinaryExpression", {
+ builder: ["operator", "left", "right"],
+ fields: {
+ operator: {
+ validate: (0, _utils.assertOneOf)(..._index.BINARY_OPERATORS)
+ },
+ left: {
+ validate: function () {
+ const expression = (0, _utils.assertNodeType)("Expression");
+ const inOp = (0, _utils.assertNodeType)("Expression", "PrivateName");
+ const validator = Object.assign(function (node, key, val) {
+ const validator = node.operator === "in" ? inOp : expression;
+ validator(node, key, val);
+ }, {
+ oneOfNodeTypes: ["Expression", "PrivateName"]
+ });
+ return validator;
+ }()
+ },
+ right: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ },
+ visitor: ["left", "right"],
+ aliases: ["Binary", "Expression"]
+});
+defineType("InterpreterDirective", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ }
+});
+defineType("Directive", {
+ visitor: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertNodeType)("DirectiveLiteral")
+ }
+ }
+});
+defineType("DirectiveLiteral", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ }
+});
+defineType("BlockStatement", {
+ builder: ["body", "directives"],
+ visitor: ["directives", "body"],
+ fields: {
+ directives: {
+ validate: (0, _utils.arrayOfType)("Directive"),
+ default: []
+ },
+ body: (0, _utils.validateArrayOfType)("Statement")
+ },
+ aliases: ["Scopable", "BlockParent", "Block", "Statement"]
+});
+defineType("BreakStatement", {
+ visitor: ["label"],
+ fields: {
+ label: {
+ validate: (0, _utils.assertNodeType)("Identifier"),
+ optional: true
+ }
+ },
+ aliases: ["Statement", "Terminatorless", "CompletionStatement"]
+});
+defineType("CallExpression", {
+ visitor: ["callee", "typeParameters", "typeArguments", "arguments"],
+ builder: ["callee", "arguments"],
+ aliases: ["Expression"],
+ fields: Object.assign({
+ callee: {
+ validate: (0, _utils.assertNodeType)("Expression", "Super", "V8IntrinsicIdentifier")
+ },
+ arguments: (0, _utils.validateArrayOfType)("Expression", "SpreadElement", "ArgumentPlaceholder"),
+ typeArguments: {
+ validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"),
+ optional: true
+ }
+ }, process.env.BABEL_TYPES_8_BREAKING ? {} : {
+ optional: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"),
+ optional: true
+ }
+ })
+});
+defineType("CatchClause", {
+ visitor: ["param", "body"],
+ fields: {
+ param: {
+ validate: (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern"),
+ optional: true
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ }
+ },
+ aliases: ["Scopable", "BlockParent"]
+});
+defineType("ConditionalExpression", {
+ visitor: ["test", "consequent", "alternate"],
+ fields: {
+ test: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ consequent: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ alternate: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ },
+ aliases: ["Expression", "Conditional"]
+});
+defineType("ContinueStatement", {
+ visitor: ["label"],
+ fields: {
+ label: {
+ validate: (0, _utils.assertNodeType)("Identifier"),
+ optional: true
+ }
+ },
+ aliases: ["Statement", "Terminatorless", "CompletionStatement"]
+});
+defineType("DebuggerStatement", {
+ aliases: ["Statement"]
+});
+defineType("DoWhileStatement", {
+ builder: ["test", "body"],
+ visitor: ["body", "test"],
+ fields: {
+ test: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ },
+ aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"]
+});
+defineType("EmptyStatement", {
+ aliases: ["Statement"]
+});
+defineType("ExpressionStatement", {
+ visitor: ["expression"],
+ fields: {
+ expression: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ },
+ aliases: ["Statement", "ExpressionWrapper"]
+});
+defineType("File", {
+ builder: ["program", "comments", "tokens"],
+ visitor: ["program"],
+ fields: {
+ program: {
+ validate: (0, _utils.assertNodeType)("Program")
+ },
+ comments: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? Object.assign(() => {}, {
+ each: {
+ oneOfNodeTypes: ["CommentBlock", "CommentLine"]
+ }
+ }) : (0, _utils.assertEach)((0, _utils.assertNodeType)("CommentBlock", "CommentLine")),
+ optional: true
+ },
+ tokens: {
+ validate: (0, _utils.assertEach)(Object.assign(() => {}, {
+ type: "any"
+ })),
+ optional: true
+ }
+ }
+});
+defineType("ForInStatement", {
+ visitor: ["left", "right", "body"],
+ aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"],
+ fields: {
+ left: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("VariableDeclaration", "LVal") : (0, _utils.assertNodeType)("VariableDeclaration", "Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression")
+ },
+ right: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ }
+});
+defineType("ForStatement", {
+ visitor: ["init", "test", "update", "body"],
+ aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop"],
+ fields: {
+ init: {
+ validate: (0, _utils.assertNodeType)("VariableDeclaration", "Expression"),
+ optional: true
+ },
+ test: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ },
+ update: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ }
+});
+const functionCommon = () => ({
+ params: (0, _utils.validateArrayOfType)("FunctionParameter"),
+ generator: {
+ default: false
+ },
+ async: {
+ default: false
+ }
+});
+exports.functionCommon = functionCommon;
+const functionTypeAnnotationCommon = () => ({
+ returnType: {
+ validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"),
+ optional: true
+ },
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"),
+ optional: true
+ }
+});
+exports.functionTypeAnnotationCommon = functionTypeAnnotationCommon;
+const functionDeclarationCommon = () => Object.assign({}, functionCommon(), {
+ declare: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ id: {
+ validate: (0, _utils.assertNodeType)("Identifier"),
+ optional: true
+ }
+});
+exports.functionDeclarationCommon = functionDeclarationCommon;
+defineType("FunctionDeclaration", {
+ builder: ["id", "params", "body", "generator", "async"],
+ visitor: ["id", "typeParameters", "params", "predicate", "returnType", "body"],
+ fields: Object.assign({}, functionDeclarationCommon(), functionTypeAnnotationCommon(), {
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ },
+ predicate: {
+ validate: (0, _utils.assertNodeType)("DeclaredPredicate", "InferredPredicate"),
+ optional: true
+ }
+ }),
+ aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Statement", "Pureish", "Declaration"],
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? undefined : function () {
+ const identifier = (0, _utils.assertNodeType)("Identifier");
+ return function (parent, key, node) {
+ if (!(0, _is.default)("ExportDefaultDeclaration", parent)) {
+ identifier(node, "id", node.id);
+ }
+ };
+ }()
+});
+defineType("FunctionExpression", {
+ inherits: "FunctionDeclaration",
+ aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"],
+ fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), {
+ id: {
+ validate: (0, _utils.assertNodeType)("Identifier"),
+ optional: true
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ },
+ predicate: {
+ validate: (0, _utils.assertNodeType)("DeclaredPredicate", "InferredPredicate"),
+ optional: true
+ }
+ })
+});
+const patternLikeCommon = () => ({
+ typeAnnotation: {
+ validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"),
+ optional: true
+ },
+ optional: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ }
+});
+exports.patternLikeCommon = patternLikeCommon;
+defineType("Identifier", {
+ builder: ["name"],
+ visitor: ["typeAnnotation", "decorators"],
+ aliases: ["Expression", "FunctionParameter", "PatternLike", "LVal", "TSEntityName"],
+ fields: Object.assign({}, patternLikeCommon(), {
+ name: {
+ validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertValueType)("string"), Object.assign(function (node, key, val) {
+ if (!(0, _isValidIdentifier.default)(val, false)) {
+ throw new TypeError(`"${val}" is not a valid identifier name`);
+ }
+ }, {
+ type: "string"
+ })) : (0, _utils.assertValueType)("string")
+ }
+ }),
+ validate: process.env.BABEL_TYPES_8_BREAKING ? function (parent, key, node) {
+ const match = /\.(\w+)$/.exec(key.toString());
+ if (!match) return;
+ const [, parentKey] = match;
+ const nonComp = {
+ computed: false
+ };
+ if (parentKey === "property") {
+ if ((0, _is.default)("MemberExpression", parent, nonComp)) return;
+ if ((0, _is.default)("OptionalMemberExpression", parent, nonComp)) return;
+ } else if (parentKey === "key") {
+ if ((0, _is.default)("Property", parent, nonComp)) return;
+ if ((0, _is.default)("Method", parent, nonComp)) return;
+ } else if (parentKey === "exported") {
+ if ((0, _is.default)("ExportSpecifier", parent)) return;
+ } else if (parentKey === "imported") {
+ if ((0, _is.default)("ImportSpecifier", parent, {
+ imported: node
+ })) return;
+ } else if (parentKey === "meta") {
+ if ((0, _is.default)("MetaProperty", parent, {
+ meta: node
+ })) return;
+ }
+ if (((0, _helperValidatorIdentifier.isKeyword)(node.name) || (0, _helperValidatorIdentifier.isReservedWord)(node.name, false)) && node.name !== "this") {
+ throw new TypeError(`"${node.name}" is not a valid identifier`);
+ }
+ } : undefined
+});
+defineType("IfStatement", {
+ visitor: ["test", "consequent", "alternate"],
+ aliases: ["Statement", "Conditional"],
+ fields: {
+ test: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ consequent: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ },
+ alternate: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ }
+});
+defineType("LabeledStatement", {
+ visitor: ["label", "body"],
+ aliases: ["Statement"],
+ fields: {
+ label: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ }
+});
+defineType("StringLiteral", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ },
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+defineType("NumericLiteral", {
+ builder: ["value"],
+ deprecatedAlias: "NumberLiteral",
+ fields: {
+ value: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("number"), Object.assign(function (node, key, val) {
+ if (1 / val < 0 || !Number.isFinite(val)) {
+ const error = new Error("NumericLiterals must be non-negative finite numbers. " + `You can use t.valueToNode(${val}) instead.`);
+ }
+ }, {
+ type: "number"
+ }))
+ }
+ },
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+defineType("NullLiteral", {
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+defineType("BooleanLiteral", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("boolean")
+ }
+ },
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+defineType("RegExpLiteral", {
+ builder: ["pattern", "flags"],
+ deprecatedAlias: "RegexLiteral",
+ aliases: ["Expression", "Pureish", "Literal"],
+ fields: {
+ pattern: {
+ validate: (0, _utils.assertValueType)("string")
+ },
+ flags: {
+ validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertValueType)("string"), Object.assign(function (node, key, val) {
+ const invalid = /[^dgimsuvy]/.exec(val);
+ if (invalid) {
+ throw new TypeError(`"${invalid[0]}" is not a valid RegExp flag`);
+ }
+ }, {
+ type: "string"
+ })) : (0, _utils.assertValueType)("string"),
+ default: ""
+ }
+ }
+});
+defineType("LogicalExpression", {
+ builder: ["operator", "left", "right"],
+ visitor: ["left", "right"],
+ aliases: ["Binary", "Expression"],
+ fields: {
+ operator: {
+ validate: (0, _utils.assertOneOf)(..._index.LOGICAL_OPERATORS)
+ },
+ left: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ right: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("MemberExpression", {
+ builder: ["object", "property", "computed", ...(!process.env.BABEL_TYPES_8_BREAKING ? ["optional"] : [])],
+ visitor: ["object", "property"],
+ aliases: ["Expression", "LVal", "PatternLike"],
+ unionShape: {
+ discriminator: "computed",
+ shapes: [{
+ name: "computed",
+ value: [true],
+ properties: {
+ property: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+ }, {
+ name: "nonComputed",
+ value: [false],
+ properties: {
+ property: {
+ validate: (0, _utils.assertNodeType)("Identifier", "PrivateName")
+ }
+ }
+ }]
+ },
+ fields: Object.assign({
+ object: {
+ validate: (0, _utils.assertNodeType)("Expression", "Super")
+ },
+ property: {
+ validate: function () {
+ const normal = (0, _utils.assertNodeType)("Identifier", "PrivateName");
+ const computed = (0, _utils.assertNodeType)("Expression");
+ const validator = function (node, key, val) {
+ const validator = node.computed ? computed : normal;
+ validator(node, key, val);
+ };
+ validator.oneOfNodeTypes = ["Expression", "Identifier", "PrivateName"];
+ return validator;
+ }()
+ },
+ computed: {
+ default: false
+ }
+ }, !process.env.BABEL_TYPES_8_BREAKING ? {
+ optional: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ }
+ } : {})
+});
+defineType("NewExpression", {
+ inherits: "CallExpression"
+});
+defineType("Program", {
+ visitor: ["directives", "body"],
+ builder: ["body", "directives", "sourceType", "interpreter"],
+ fields: {
+ sourceType: {
+ validate: (0, _utils.assertOneOf)("script", "module"),
+ default: "script"
+ },
+ interpreter: {
+ validate: (0, _utils.assertNodeType)("InterpreterDirective"),
+ default: null,
+ optional: true
+ },
+ directives: {
+ validate: (0, _utils.arrayOfType)("Directive"),
+ default: []
+ },
+ body: (0, _utils.validateArrayOfType)("Statement")
+ },
+ aliases: ["Scopable", "BlockParent", "Block"]
+});
+defineType("ObjectExpression", {
+ visitor: ["properties"],
+ aliases: ["Expression"],
+ fields: {
+ properties: (0, _utils.validateArrayOfType)("ObjectMethod", "ObjectProperty", "SpreadElement")
+ }
+});
+defineType("ObjectMethod", Object.assign({
+ builder: ["kind", "key", "params", "body", "computed", "generator", "async"],
+ visitor: ["decorators", "key", "typeParameters", "params", "returnType", "body"]
+}, classMethodOrPropertyUnionShapeCommon(), {
+ fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), {
+ kind: Object.assign({
+ validate: (0, _utils.assertOneOf)("method", "get", "set")
+ }, !process.env.BABEL_TYPES_8_BREAKING ? {
+ default: "method"
+ } : {}),
+ computed: {
+ default: false
+ },
+ key: {
+ validate: function () {
+ const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral");
+ const computed = (0, _utils.assertNodeType)("Expression");
+ const validator = function (node, key, val) {
+ const validator = node.computed ? computed : normal;
+ validator(node, key, val);
+ };
+ validator.oneOfNodeTypes = ["Expression", "Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral"];
+ return validator;
+ }()
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ }
+ }),
+ aliases: ["UserWhitespacable", "Function", "Scopable", "BlockParent", "FunctionParent", "Method", "ObjectMember"]
+}));
+defineType("ObjectProperty", {
+ builder: ["key", "value", "computed", "shorthand", ...(!process.env.BABEL_TYPES_8_BREAKING ? ["decorators"] : [])],
+ unionShape: {
+ discriminator: "computed",
+ shapes: [{
+ name: "computed",
+ value: [true],
+ properties: {
+ key: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+ }, {
+ name: "nonComputed",
+ value: [false],
+ properties: {
+ key: {
+ validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "DecimalLiteral", "PrivateName")
+ }
+ }
+ }]
+ },
+ fields: {
+ computed: {
+ default: false
+ },
+ key: {
+ validate: function () {
+ const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "DecimalLiteral", "PrivateName");
+ const computed = (0, _utils.assertNodeType)("Expression");
+ const validator = Object.assign(function (node, key, val) {
+ const validator = node.computed ? computed : normal;
+ validator(node, key, val);
+ }, {
+ oneOfNodeTypes: ["Expression", "Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "DecimalLiteral", "PrivateName"]
+ });
+ return validator;
+ }()
+ },
+ value: {
+ validate: (0, _utils.assertNodeType)("Expression", "PatternLike")
+ },
+ shorthand: {
+ validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertValueType)("boolean"), Object.assign(function (node, key, shorthand) {
+ if (!shorthand) return;
+ if (node.computed) {
+ throw new TypeError("Property shorthand of ObjectProperty cannot be true if computed is true");
+ }
+ if (!(0, _is.default)("Identifier", node.key)) {
+ throw new TypeError("Property shorthand of ObjectProperty cannot be true if key is not an Identifier");
+ }
+ }, {
+ type: "boolean"
+ })) : (0, _utils.assertValueType)("boolean"),
+ default: false
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ }
+ },
+ visitor: ["decorators", "key", "value"],
+ aliases: ["UserWhitespacable", "Property", "ObjectMember"],
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? undefined : function () {
+ const pattern = (0, _utils.assertNodeType)("Identifier", "Pattern", "TSAsExpression", "TSSatisfiesExpression", "TSNonNullExpression", "TSTypeAssertion");
+ const expression = (0, _utils.assertNodeType)("Expression");
+ return function (parent, key, node) {
+ const validator = (0, _is.default)("ObjectPattern", parent) ? pattern : expression;
+ validator(node, "value", node.value);
+ };
+ }()
+});
+defineType("RestElement", {
+ visitor: ["argument", "typeAnnotation"],
+ builder: ["argument"],
+ aliases: ["FunctionParameter", "PatternLike", "LVal"],
+ deprecatedAlias: "RestProperty",
+ fields: Object.assign({}, patternLikeCommon(), {
+ argument: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern", "MemberExpression", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression", "RestElement", "AssignmentPattern") : (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern", "MemberExpression", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression")
+ }
+ }),
+ validate: process.env.BABEL_TYPES_8_BREAKING ? function (parent, key) {
+ const match = /(\w+)\[(\d+)\]/.exec(key.toString());
+ if (!match) throw new Error("Internal Babel error: malformed key.");
+ const [, listKey, index] = match;
+ if (parent[listKey].length > +index + 1) {
+ throw new TypeError(`RestElement must be last element of ${listKey}`);
+ }
+ } : undefined
+});
+defineType("ReturnStatement", {
+ visitor: ["argument"],
+ aliases: ["Statement", "Terminatorless", "CompletionStatement"],
+ fields: {
+ argument: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ }
+ }
+});
+defineType("SequenceExpression", {
+ visitor: ["expressions"],
+ fields: {
+ expressions: (0, _utils.validateArrayOfType)("Expression")
+ },
+ aliases: ["Expression"]
+});
+defineType("ParenthesizedExpression", {
+ visitor: ["expression"],
+ aliases: ["Expression", "ExpressionWrapper"],
+ fields: {
+ expression: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("SwitchCase", {
+ visitor: ["test", "consequent"],
+ fields: {
+ test: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ },
+ consequent: (0, _utils.validateArrayOfType)("Statement")
+ }
+});
+defineType("SwitchStatement", {
+ visitor: ["discriminant", "cases"],
+ aliases: ["Statement", "BlockParent", "Scopable"],
+ fields: {
+ discriminant: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ cases: (0, _utils.validateArrayOfType)("SwitchCase")
+ }
+});
+defineType("ThisExpression", {
+ aliases: ["Expression"]
+});
+defineType("ThrowStatement", {
+ visitor: ["argument"],
+ aliases: ["Statement", "Terminatorless", "CompletionStatement"],
+ fields: {
+ argument: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("TryStatement", {
+ visitor: ["block", "handler", "finalizer"],
+ aliases: ["Statement"],
+ fields: {
+ block: {
+ validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertNodeType)("BlockStatement"), Object.assign(function (node) {
+ if (!node.handler && !node.finalizer) {
+ throw new TypeError("TryStatement expects either a handler or finalizer, or both");
+ }
+ }, {
+ oneOfNodeTypes: ["BlockStatement"]
+ })) : (0, _utils.assertNodeType)("BlockStatement")
+ },
+ handler: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("CatchClause")
+ },
+ finalizer: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ }
+ }
+});
+defineType("UnaryExpression", {
+ builder: ["operator", "argument", "prefix"],
+ fields: {
+ prefix: {
+ default: true
+ },
+ argument: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ operator: {
+ validate: (0, _utils.assertOneOf)(..._index.UNARY_OPERATORS)
+ }
+ },
+ visitor: ["argument"],
+ aliases: ["UnaryLike", "Expression"]
+});
+defineType("UpdateExpression", {
+ builder: ["operator", "argument", "prefix"],
+ fields: {
+ prefix: {
+ default: false
+ },
+ argument: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("Expression") : (0, _utils.assertNodeType)("Identifier", "MemberExpression")
+ },
+ operator: {
+ validate: (0, _utils.assertOneOf)(..._index.UPDATE_OPERATORS)
+ }
+ },
+ visitor: ["argument"],
+ aliases: ["Expression"]
+});
+defineType("VariableDeclaration", {
+ builder: ["kind", "declarations"],
+ visitor: ["declarations"],
+ aliases: ["Statement", "Declaration"],
+ fields: {
+ declare: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ kind: {
+ validate: (0, _utils.assertOneOf)("var", "let", "const", "using", "await using")
+ },
+ declarations: (0, _utils.validateArrayOfType)("VariableDeclarator")
+ },
+ validate: process.env.BABEL_TYPES_8_BREAKING ? (() => {
+ const withoutInit = (0, _utils.assertNodeType)("Identifier", "Placeholder");
+ const constOrLetOrVar = (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern", "Placeholder");
+ const usingOrAwaitUsing = (0, _utils.assertNodeType)("Identifier", "VoidPattern", "Placeholder");
+ return function (parent, key, node) {
+ const {
+ kind,
+ declarations
+ } = node;
+ const parentIsForX = (0, _is.default)("ForXStatement", parent, {
+ left: node
+ });
+ if (parentIsForX) {
+ if (declarations.length !== 1) {
+ throw new TypeError(`Exactly one VariableDeclarator is required in the VariableDeclaration of a ${parent.type}`);
+ }
+ }
+ for (const decl of declarations) {
+ if (kind === "const" || kind === "let" || kind === "var") {
+ if (!parentIsForX && !decl.init) {
+ withoutInit(decl, "id", decl.id);
+ } else {
+ constOrLetOrVar(decl, "id", decl.id);
+ }
+ } else {
+ usingOrAwaitUsing(decl, "id", decl.id);
+ }
+ }
+ };
+ })() : undefined
+});
+defineType("VariableDeclarator", {
+ visitor: ["id", "init"],
+ fields: {
+ id: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("LVal", "VoidPattern") : (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern", "VoidPattern")
+ },
+ definite: {
+ optional: true,
+ validate: (0, _utils.assertValueType)("boolean")
+ },
+ init: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("WhileStatement", {
+ visitor: ["test", "body"],
+ aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"],
+ fields: {
+ test: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ }
+});
+defineType("WithStatement", {
+ visitor: ["object", "body"],
+ aliases: ["Statement"],
+ fields: {
+ object: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ }
+});
+defineType("AssignmentPattern", {
+ visitor: ["left", "right", "decorators"],
+ builder: ["left", "right"],
+ aliases: ["FunctionParameter", "Pattern", "PatternLike", "LVal"],
+ fields: Object.assign({}, patternLikeCommon(), {
+ left: {
+ validate: (0, _utils.assertNodeType)("Identifier", "ObjectPattern", "ArrayPattern", "MemberExpression", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression")
+ },
+ right: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ }
+ })
+});
+defineType("ArrayPattern", {
+ visitor: ["elements", "typeAnnotation"],
+ builder: ["elements"],
+ aliases: ["FunctionParameter", "Pattern", "PatternLike", "LVal"],
+ fields: Object.assign({}, patternLikeCommon(), {
+ elements: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeOrValueType)("null", "PatternLike")))
+ }
+ })
+});
+defineType("ArrowFunctionExpression", {
+ builder: ["params", "body", "async"],
+ visitor: ["typeParameters", "params", "predicate", "returnType", "body"],
+ aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"],
+ fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), {
+ expression: {
+ validate: (0, _utils.assertValueType)("boolean")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement", "Expression")
+ },
+ predicate: {
+ validate: (0, _utils.assertNodeType)("DeclaredPredicate", "InferredPredicate"),
+ optional: true
+ }
+ })
+});
+defineType("ClassBody", {
+ visitor: ["body"],
+ fields: {
+ body: (0, _utils.validateArrayOfType)("ClassMethod", "ClassPrivateMethod", "ClassProperty", "ClassPrivateProperty", "ClassAccessorProperty", "TSDeclareMethod", "TSIndexSignature", "StaticBlock")
+ }
+});
+defineType("ClassExpression", {
+ builder: ["id", "superClass", "body", "decorators"],
+ visitor: ["decorators", "id", "typeParameters", "superClass", "superTypeParameters", "mixins", "implements", "body"],
+ aliases: ["Scopable", "Class", "Expression"],
+ fields: {
+ id: {
+ validate: (0, _utils.assertNodeType)("Identifier"),
+ optional: true
+ },
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"),
+ optional: true
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("ClassBody")
+ },
+ superClass: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ ["superTypeParameters"]: {
+ validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
+ optional: true
+ },
+ implements: {
+ validate: (0, _utils.arrayOfType)("TSExpressionWithTypeArguments", "ClassImplements"),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ },
+ mixins: {
+ validate: (0, _utils.assertNodeType)("InterfaceExtends"),
+ optional: true
+ }
+ }
+});
+defineType("ClassDeclaration", {
+ inherits: "ClassExpression",
+ aliases: ["Scopable", "Class", "Statement", "Declaration"],
+ fields: {
+ id: {
+ validate: (0, _utils.assertNodeType)("Identifier"),
+ optional: true
+ },
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"),
+ optional: true
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("ClassBody")
+ },
+ superClass: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ ["superTypeParameters"]: {
+ validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
+ optional: true
+ },
+ implements: {
+ validate: (0, _utils.arrayOfType)("TSExpressionWithTypeArguments", "ClassImplements"),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ },
+ mixins: {
+ validate: (0, _utils.assertNodeType)("InterfaceExtends"),
+ optional: true
+ },
+ declare: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ abstract: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ }
+ },
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? undefined : function () {
+ const identifier = (0, _utils.assertNodeType)("Identifier");
+ return function (parent, key, node) {
+ if (!(0, _is.default)("ExportDefaultDeclaration", parent)) {
+ identifier(node, "id", node.id);
+ }
+ };
+ }()
+});
+const importAttributes = exports.importAttributes = {
+ attributes: {
+ optional: true,
+ validate: (0, _utils.arrayOfType)("ImportAttribute")
+ }
+};
+importAttributes.assertions = {
+ deprecated: true,
+ optional: true,
+ validate: (0, _utils.arrayOfType)("ImportAttribute")
+};
+defineType("ExportAllDeclaration", {
+ builder: ["source", "attributes"],
+ visitor: ["source", "attributes", "assertions"],
+ aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"],
+ fields: Object.assign({
+ source: {
+ validate: (0, _utils.assertNodeType)("StringLiteral")
+ },
+ exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value"))
+ }, importAttributes)
+});
+defineType("ExportDefaultDeclaration", {
+ visitor: ["declaration"],
+ aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"],
+ fields: {
+ declaration: (0, _utils.validateType)("TSDeclareFunction", "FunctionDeclaration", "ClassDeclaration", "Expression"),
+ exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("value"))
+ }
+});
+defineType("ExportNamedDeclaration", {
+ builder: ["declaration", "specifiers", "source", "attributes"],
+ visitor: ["declaration", "specifiers", "source", "attributes", "assertions"],
+ aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"],
+ fields: Object.assign({
+ declaration: {
+ optional: true,
+ validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertNodeType)("Declaration"), Object.assign(function (node, key, val) {
+ if (val && node.specifiers.length) {
+ throw new TypeError("Only declaration or specifiers is allowed on ExportNamedDeclaration");
+ }
+ if (val && node.source) {
+ throw new TypeError("Cannot export a declaration from a source");
+ }
+ }, {
+ oneOfNodeTypes: ["Declaration"]
+ })) : (0, _utils.assertNodeType)("Declaration")
+ }
+ }, importAttributes, {
+ specifiers: {
+ default: [],
+ validate: (0, _utils.arrayOf)(function () {
+ const sourced = (0, _utils.assertNodeType)("ExportSpecifier", "ExportDefaultSpecifier", "ExportNamespaceSpecifier");
+ const sourceless = (0, _utils.assertNodeType)("ExportSpecifier");
+ if (!process.env.BABEL_TYPES_8_BREAKING) return sourced;
+ return Object.assign(function (node, key, val) {
+ const validator = node.source ? sourced : sourceless;
+ validator(node, key, val);
+ }, {
+ oneOfNodeTypes: ["ExportSpecifier", "ExportDefaultSpecifier", "ExportNamespaceSpecifier"]
+ });
+ }())
+ },
+ source: {
+ validate: (0, _utils.assertNodeType)("StringLiteral"),
+ optional: true
+ },
+ exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value"))
+ })
+});
+defineType("ExportSpecifier", {
+ visitor: ["local", "exported"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ local: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ },
+ exported: {
+ validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral")
+ },
+ exportKind: {
+ validate: (0, _utils.assertOneOf)("type", "value"),
+ optional: true
+ }
+ }
+});
+defineType("ForOfStatement", {
+ visitor: ["left", "right", "body"],
+ builder: ["left", "right", "body", "await"],
+ aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"],
+ fields: {
+ left: {
+ validate: function () {
+ if (!process.env.BABEL_TYPES_8_BREAKING) {
+ return (0, _utils.assertNodeType)("VariableDeclaration", "LVal");
+ }
+ const declaration = (0, _utils.assertNodeType)("VariableDeclaration");
+ const lval = (0, _utils.assertNodeType)("Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression");
+ return Object.assign(function (node, key, val) {
+ if ((0, _is.default)("VariableDeclaration", val)) {
+ declaration(node, key, val);
+ } else {
+ lval(node, key, val);
+ }
+ }, {
+ oneOfNodeTypes: ["VariableDeclaration", "Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression"]
+ });
+ }()
+ },
+ right: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ },
+ await: {
+ default: false
+ }
+ }
+});
+defineType("ImportDeclaration", {
+ builder: ["specifiers", "source", "attributes"],
+ visitor: ["specifiers", "source", "attributes", "assertions"],
+ aliases: ["Statement", "Declaration", "ImportOrExportDeclaration"],
+ fields: Object.assign({}, importAttributes, {
+ module: {
+ optional: true,
+ validate: (0, _utils.assertValueType)("boolean")
+ },
+ phase: {
+ default: null,
+ validate: (0, _utils.assertOneOf)("source", "defer")
+ },
+ specifiers: (0, _utils.validateArrayOfType)("ImportSpecifier", "ImportDefaultSpecifier", "ImportNamespaceSpecifier"),
+ source: {
+ validate: (0, _utils.assertNodeType)("StringLiteral")
+ },
+ importKind: {
+ validate: (0, _utils.assertOneOf)("type", "typeof", "value"),
+ optional: true
+ }
+ })
+});
+defineType("ImportDefaultSpecifier", {
+ visitor: ["local"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ local: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ }
+ }
+});
+defineType("ImportNamespaceSpecifier", {
+ visitor: ["local"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ local: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ }
+ }
+});
+defineType("ImportSpecifier", {
+ visitor: ["imported", "local"],
+ builder: ["local", "imported"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ local: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ },
+ imported: {
+ validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral")
+ },
+ importKind: {
+ validate: (0, _utils.assertOneOf)("type", "typeof", "value"),
+ optional: true
+ }
+ }
+});
+defineType("ImportExpression", {
+ visitor: ["source", "options"],
+ aliases: ["Expression"],
+ fields: {
+ phase: {
+ default: null,
+ validate: (0, _utils.assertOneOf)("source", "defer")
+ },
+ source: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ options: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ }
+ }
+});
+defineType("MetaProperty", {
+ visitor: ["meta", "property"],
+ aliases: ["Expression"],
+ fields: {
+ meta: {
+ validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertNodeType)("Identifier"), Object.assign(function (node, key, val) {
+ let property;
+ switch (val.name) {
+ case "function":
+ property = "sent";
+ break;
+ case "new":
+ property = "target";
+ break;
+ case "import":
+ property = "meta";
+ break;
+ }
+ if (!(0, _is.default)("Identifier", node.property, {
+ name: property
+ })) {
+ throw new TypeError("Unrecognised MetaProperty");
+ }
+ }, {
+ oneOfNodeTypes: ["Identifier"]
+ })) : (0, _utils.assertNodeType)("Identifier")
+ },
+ property: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ }
+ }
+});
+const classMethodOrPropertyCommon = () => ({
+ abstract: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ accessibility: {
+ validate: (0, _utils.assertOneOf)("public", "private", "protected"),
+ optional: true
+ },
+ static: {
+ default: false
+ },
+ override: {
+ default: false
+ },
+ computed: {
+ default: false
+ },
+ optional: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ key: {
+ validate: (0, _utils.chain)(function () {
+ const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral");
+ const computed = (0, _utils.assertNodeType)("Expression");
+ return function (node, key, val) {
+ const validator = node.computed ? computed : normal;
+ validator(node, key, val);
+ };
+ }(), (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "Expression"))
+ }
+});
+exports.classMethodOrPropertyCommon = classMethodOrPropertyCommon;
+const classMethodOrDeclareMethodCommon = () => Object.assign({}, functionCommon(), classMethodOrPropertyCommon(), {
+ params: (0, _utils.validateArrayOfType)("FunctionParameter", "TSParameterProperty"),
+ kind: {
+ validate: (0, _utils.assertOneOf)("get", "set", "method", "constructor"),
+ default: "method"
+ },
+ access: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), (0, _utils.assertOneOf)("public", "private", "protected")),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ }
+});
+exports.classMethodOrDeclareMethodCommon = classMethodOrDeclareMethodCommon;
+defineType("ClassMethod", Object.assign({
+ aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method"],
+ builder: ["kind", "key", "params", "body", "computed", "static", "generator", "async"],
+ visitor: ["decorators", "key", "typeParameters", "params", "returnType", "body"]
+}, classMethodOrPropertyUnionShapeCommon(), {
+ fields: Object.assign({}, classMethodOrDeclareMethodCommon(), functionTypeAnnotationCommon(), {
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ }
+ })
+}));
+defineType("ObjectPattern", {
+ visitor: ["decorators", "properties", "typeAnnotation"],
+ builder: ["properties"],
+ aliases: ["FunctionParameter", "Pattern", "PatternLike", "LVal"],
+ fields: Object.assign({}, patternLikeCommon(), {
+ properties: (0, _utils.validateArrayOfType)("RestElement", "ObjectProperty")
+ })
+});
+defineType("SpreadElement", {
+ visitor: ["argument"],
+ aliases: ["UnaryLike"],
+ deprecatedAlias: "SpreadProperty",
+ fields: {
+ argument: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("Super", {
+ aliases: ["Expression"]
+});
+defineType("TaggedTemplateExpression", {
+ visitor: ["tag", "typeParameters", "quasi"],
+ builder: ["tag", "quasi"],
+ aliases: ["Expression"],
+ fields: {
+ tag: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ quasi: {
+ validate: (0, _utils.assertNodeType)("TemplateLiteral")
+ },
+ ["typeParameters"]: {
+ validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
+ optional: true
+ }
+ }
+});
+defineType("TemplateElement", {
+ builder: ["value", "tail"],
+ fields: {
+ value: {
+ validate: (0, _utils.chain)((0, _utils.assertShape)({
+ raw: {
+ validate: (0, _utils.assertValueType)("string")
+ },
+ cooked: {
+ validate: (0, _utils.assertValueType)("string"),
+ optional: true
+ }
+ }), function templateElementCookedValidator(node) {
+ const raw = node.value.raw;
+ let unterminatedCalled = false;
+ const error = () => {
+ throw new Error("Internal @babel/types error.");
+ };
+ const {
+ str,
+ firstInvalidLoc
+ } = (0, _helperStringParser.readStringContents)("template", raw, 0, 0, 0, {
+ unterminated() {
+ unterminatedCalled = true;
+ },
+ strictNumericEscape: error,
+ invalidEscapeSequence: error,
+ numericSeparatorInEscapeSequence: error,
+ unexpectedNumericSeparator: error,
+ invalidDigit: error,
+ invalidCodePoint: error
+ });
+ if (!unterminatedCalled) throw new Error("Invalid raw");
+ node.value.cooked = firstInvalidLoc ? null : str;
+ })
+ },
+ tail: {
+ default: false
+ }
+ }
+});
+defineType("TemplateLiteral", {
+ visitor: ["quasis", "expressions"],
+ aliases: ["Expression", "Literal"],
+ fields: {
+ quasis: (0, _utils.validateArrayOfType)("TemplateElement"),
+ expressions: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression", "TSType")), function (node, key, val) {
+ if (node.quasis.length !== val.length + 1) {
+ throw new TypeError(`Number of ${node.type} quasis should be exactly one more than the number of expressions.\nExpected ${val.length + 1} quasis but got ${node.quasis.length}`);
+ }
+ })
+ }
+ }
+});
+defineType("YieldExpression", {
+ builder: ["argument", "delegate"],
+ visitor: ["argument"],
+ aliases: ["Expression", "Terminatorless"],
+ fields: {
+ delegate: {
+ validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertValueType)("boolean"), Object.assign(function (node, key, val) {
+ if (val && !node.argument) {
+ throw new TypeError("Property delegate of YieldExpression cannot be true if there is no argument");
+ }
+ }, {
+ type: "boolean"
+ })) : (0, _utils.assertValueType)("boolean"),
+ default: false
+ },
+ argument: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("AwaitExpression", {
+ builder: ["argument"],
+ visitor: ["argument"],
+ aliases: ["Expression", "Terminatorless"],
+ fields: {
+ argument: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("Import", {
+ aliases: ["Expression"]
+});
+defineType("BigIntLiteral", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ },
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+defineType("ExportNamespaceSpecifier", {
+ visitor: ["exported"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ exported: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ }
+ }
+});
+defineType("OptionalMemberExpression", {
+ builder: ["object", "property", "computed", "optional"],
+ visitor: ["object", "property"],
+ aliases: ["Expression"],
+ fields: {
+ object: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ property: {
+ validate: function () {
+ const normal = (0, _utils.assertNodeType)("Identifier");
+ const computed = (0, _utils.assertNodeType)("Expression");
+ const validator = Object.assign(function (node, key, val) {
+ const validator = node.computed ? computed : normal;
+ validator(node, key, val);
+ }, {
+ oneOfNodeTypes: ["Expression", "Identifier"]
+ });
+ return validator;
+ }()
+ },
+ computed: {
+ default: false
+ },
+ optional: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)("boolean") : (0, _utils.chain)((0, _utils.assertValueType)("boolean"), (0, _utils.assertOptionalChainStart)())
+ }
+ }
+});
+defineType("OptionalCallExpression", {
+ visitor: ["callee", "typeParameters", "typeArguments", "arguments"],
+ builder: ["callee", "arguments", "optional"],
+ aliases: ["Expression"],
+ fields: Object.assign({
+ callee: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ arguments: (0, _utils.validateArrayOfType)("Expression", "SpreadElement", "ArgumentPlaceholder"),
+ optional: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)("boolean") : (0, _utils.chain)((0, _utils.assertValueType)("boolean"), (0, _utils.assertOptionalChainStart)())
+ },
+ typeArguments: {
+ validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"),
+ optional: true
+ }
+ }, {
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"),
+ optional: true
+ }
+ })
+});
+defineType("ClassProperty", Object.assign({
+ visitor: ["decorators", "variance", "key", "typeAnnotation", "value"],
+ builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"],
+ aliases: ["Property"]
+}, classMethodOrPropertyUnionShapeCommon(), {
+ fields: Object.assign({}, classMethodOrPropertyCommon(), {
+ value: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ },
+ definite: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ typeAnnotation: {
+ validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ },
+ readonly: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ declare: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ variance: {
+ validate: (0, _utils.assertNodeType)("Variance"),
+ optional: true
+ }
+ })
+}));
+defineType("ClassAccessorProperty", Object.assign({
+ visitor: ["decorators", "key", "typeAnnotation", "value"],
+ builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"],
+ aliases: ["Property", "Accessor"]
+}, classMethodOrPropertyUnionShapeCommon(true), {
+ fields: Object.assign({}, classMethodOrPropertyCommon(), {
+ key: {
+ validate: (0, _utils.chain)(function () {
+ const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "PrivateName");
+ const computed = (0, _utils.assertNodeType)("Expression");
+ return function (node, key, val) {
+ const validator = node.computed ? computed : normal;
+ validator(node, key, val);
+ };
+ }(), (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "Expression", "PrivateName"))
+ },
+ value: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ },
+ definite: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ typeAnnotation: {
+ validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ },
+ readonly: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ declare: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ variance: {
+ validate: (0, _utils.assertNodeType)("Variance"),
+ optional: true
+ }
+ })
+}));
+defineType("ClassPrivateProperty", {
+ visitor: ["decorators", "variance", "key", "typeAnnotation", "value"],
+ builder: ["key", "value", "decorators", "static"],
+ aliases: ["Property", "Private"],
+ fields: {
+ key: {
+ validate: (0, _utils.assertNodeType)("PrivateName")
+ },
+ value: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ },
+ typeAnnotation: {
+ validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ },
+ static: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ default: false
+ },
+ readonly: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ optional: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ definite: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ variance: {
+ validate: (0, _utils.assertNodeType)("Variance"),
+ optional: true
+ }
+ }
+});
+defineType("ClassPrivateMethod", {
+ builder: ["kind", "key", "params", "body", "static"],
+ visitor: ["decorators", "key", "typeParameters", "params", "returnType", "body"],
+ aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method", "Private"],
+ fields: Object.assign({}, classMethodOrDeclareMethodCommon(), functionTypeAnnotationCommon(), {
+ kind: {
+ validate: (0, _utils.assertOneOf)("get", "set", "method"),
+ default: "method"
+ },
+ key: {
+ validate: (0, _utils.assertNodeType)("PrivateName")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ }
+ })
+});
+defineType("PrivateName", {
+ visitor: ["id"],
+ aliases: ["Private"],
+ fields: {
+ id: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ }
+ }
+});
+defineType("StaticBlock", {
+ visitor: ["body"],
+ fields: {
+ body: (0, _utils.validateArrayOfType)("Statement")
+ },
+ aliases: ["Scopable", "BlockParent", "FunctionParent"]
+});
+defineType("ImportAttribute", {
+ visitor: ["key", "value"],
+ fields: {
+ key: {
+ validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral")
+ },
+ value: {
+ validate: (0, _utils.assertNodeType)("StringLiteral")
+ }
+ }
+});
+
+//# sourceMappingURL=core.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/definitions/core.js.map b/vanilla/node_modules/@babel/types/lib/definitions/core.js.map
new file mode 100644
index 0000000..795af98
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/definitions/core.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_is","require","_isValidIdentifier","_helperValidatorIdentifier","_helperStringParser","_index","_utils","classMethodOrPropertyUnionShapeCommon","allowPrivateName","unionShape","discriminator","shapes","name","value","properties","key","validate","assertNodeType","exports","defineType","defineAliasedType","fields","elements","arrayOf","assertNodeOrValueType","default","process","env","BABEL_TYPES_8_BREAKING","undefined","visitor","aliases","operator","assertValueType","Object","assign","identifier","assertOneOf","ASSIGNMENT_OPERATORS","pattern","node","val","validator","is","left","oneOf","right","builder","BINARY_OPERATORS","expression","inOp","oneOfNodeTypes","directives","arrayOfType","body","validateArrayOfType","label","optional","callee","arguments","typeArguments","typeParameters","param","test","consequent","alternate","program","comments","each","assertEach","tokens","type","init","update","functionCommon","params","generator","async","functionTypeAnnotationCommon","returnType","functionDeclarationCommon","declare","id","predicate","parent","inherits","patternLikeCommon","typeAnnotation","decorators","chain","isValidIdentifier","TypeError","match","exec","toString","parentKey","nonComp","computed","imported","meta","isKeyword","isReservedWord","deprecatedAlias","Number","isFinite","error","Error","flags","invalid","LOGICAL_OPERATORS","property","object","normal","sourceType","interpreter","kind","shorthand","argument","listKey","index","length","expressions","discriminant","cases","block","handler","finalizer","prefix","UNARY_OPERATORS","UPDATE_OPERATORS","declarations","withoutInit","constOrLetOrVar","usingOrAwaitUsing","parentIsForX","decl","definite","superClass","implements","mixins","abstract","importAttributes","attributes","assertions","deprecated","source","exportKind","validateOptional","declaration","validateType","specifiers","sourced","sourceless","local","exported","lval","await","module","phase","importKind","options","classMethodOrPropertyCommon","accessibility","static","override","classMethodOrDeclareMethodCommon","access","tag","quasi","assertShape","raw","cooked","templateElementCookedValidator","unterminatedCalled","str","firstInvalidLoc","readStringContents","unterminated","strictNumericEscape","invalidEscapeSequence","numericSeparatorInEscapeSequence","unexpectedNumericSeparator","invalidDigit","invalidCodePoint","tail","quasis","delegate","assertOptionalChainStart","readonly","variance"],"sources":["../../src/definitions/core.ts"],"sourcesContent":["import is from \"../validators/is.ts\";\nimport isValidIdentifier from \"../validators/isValidIdentifier.ts\";\nimport { isKeyword, isReservedWord } from \"@babel/helper-validator-identifier\";\nimport type * as t from \"../index.ts\";\nimport { readStringContents } from \"@babel/helper-string-parser\";\n\nimport {\n BINARY_OPERATORS,\n LOGICAL_OPERATORS,\n ASSIGNMENT_OPERATORS,\n UNARY_OPERATORS,\n UPDATE_OPERATORS,\n} from \"../constants/index.ts\";\n\nimport {\n defineAliasedType,\n assertShape,\n assertOptionalChainStart,\n assertValueType,\n assertNodeType,\n assertNodeOrValueType,\n assertEach,\n chain,\n assertOneOf,\n validateOptional,\n arrayOf,\n arrayOfType,\n validateArrayOfType,\n validateType,\n type Validator,\n type ValidatorImpl,\n type ValidatorOneOfNodeTypes,\n type ValidatorType,\n} from \"./utils.ts\";\n\nexport const classMethodOrPropertyUnionShapeCommon = (\n allowPrivateName = false,\n) => ({\n unionShape: {\n discriminator: \"computed\",\n shapes: [\n {\n name: \"computed\",\n value: [true],\n properties: {\n key: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n },\n {\n name: \"nonComputed\",\n value: [false],\n properties: {\n key: {\n validate: allowPrivateName\n ? assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n \"PrivateName\",\n )\n : assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n ),\n },\n },\n },\n ],\n },\n});\n\nconst defineType = defineAliasedType(\"Standardized\");\n\ndefineType(\"ArrayExpression\", {\n fields: {\n elements: {\n validate: arrayOf(\n assertNodeOrValueType(\"null\", \"Expression\", \"SpreadElement\"),\n ),\n default:\n !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n ? []\n : undefined,\n },\n },\n visitor: [\"elements\"],\n aliases: [\"Expression\"],\n});\n\ndefineType(\"AssignmentExpression\", {\n fields: {\n operator: {\n validate:\n !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n ? assertValueType(\"string\")\n : Object.assign(\n (function () {\n const identifier = assertOneOf(...ASSIGNMENT_OPERATORS);\n const pattern = assertOneOf(\"=\");\n\n return function (node: t.AssignmentExpression, key, val) {\n const validator = is(\"Pattern\", node.left)\n ? pattern\n : identifier;\n validator(node, key, val);\n } satisfies ValidatorImpl;\n })(),\n { oneOf: ASSIGNMENT_OPERATORS },\n ),\n },\n left: {\n validate:\n !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n ? assertNodeType(\"LVal\", \"OptionalMemberExpression\")\n : assertNodeType(\n \"Identifier\",\n \"MemberExpression\",\n \"OptionalMemberExpression\",\n \"ArrayPattern\",\n \"ObjectPattern\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSTypeAssertion\",\n \"TSNonNullExpression\",\n ),\n },\n right: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n builder: [\"operator\", \"left\", \"right\"],\n visitor: [\"left\", \"right\"],\n aliases: [\"Expression\"],\n});\n\ndefineType(\"BinaryExpression\", {\n builder: [\"operator\", \"left\", \"right\"],\n fields: {\n operator: {\n validate: assertOneOf(...BINARY_OPERATORS),\n },\n left: {\n validate: (function () {\n const expression = assertNodeType(\"Expression\");\n const inOp = assertNodeType(\"Expression\", \"PrivateName\");\n\n const validator: ValidatorOneOfNodeTypes = Object.assign(\n function (node: t.BinaryExpression, key, val) {\n const validator = node.operator === \"in\" ? inOp : expression;\n validator(node, key, val);\n } satisfies ValidatorImpl,\n // todo(ts): can be discriminated union by `operator` property\n { oneOfNodeTypes: [\"Expression\", \"PrivateName\"] as const },\n );\n return validator;\n })(),\n },\n right: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n visitor: [\"left\", \"right\"],\n aliases: [\"Binary\", \"Expression\"],\n});\n\ndefineType(\"InterpreterDirective\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"string\"),\n },\n },\n});\n\ndefineType(\"Directive\", {\n visitor: [\"value\"],\n fields: {\n value: {\n validate: assertNodeType(\"DirectiveLiteral\"),\n },\n },\n});\n\ndefineType(\"DirectiveLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"string\"),\n },\n },\n});\n\ndefineType(\"BlockStatement\", {\n builder: [\"body\", \"directives\"],\n visitor: [\"directives\", \"body\"],\n fields: {\n directives: {\n validate: arrayOfType(\"Directive\"),\n default: [],\n },\n body: validateArrayOfType(\"Statement\"),\n },\n aliases: [\"Scopable\", \"BlockParent\", \"Block\", \"Statement\"],\n});\n\ndefineType(\"BreakStatement\", {\n visitor: [\"label\"],\n fields: {\n label: {\n validate: assertNodeType(\"Identifier\"),\n optional: true,\n },\n },\n aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n});\n\ndefineType(\"CallExpression\", {\n visitor: process.env.BABEL_8_BREAKING\n ? [\"callee\", \"typeArguments\", \"arguments\"]\n : [\"callee\", \"typeParameters\", \"typeArguments\", \"arguments\"],\n builder: [\"callee\", \"arguments\"],\n aliases: [\"Expression\"],\n fields: {\n callee: {\n validate: assertNodeType(\"Expression\", \"Super\", \"V8IntrinsicIdentifier\"),\n },\n arguments: validateArrayOfType(\n \"Expression\",\n \"SpreadElement\",\n \"ArgumentPlaceholder\",\n ),\n typeArguments: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\n \"TypeParameterInstantiation\",\n \"TSTypeParameterInstantiation\",\n )\n : assertNodeType(\"TypeParameterInstantiation\"),\n optional: true,\n },\n ...(process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n ? {}\n : {\n optional: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n typeParameters: {\n validate: assertNodeType(\"TSTypeParameterInstantiation\"),\n optional: true,\n },\n }),\n },\n});\n\ndefineType(\"CatchClause\", {\n visitor: [\"param\", \"body\"],\n fields: {\n param: {\n validate: assertNodeType(\"Identifier\", \"ArrayPattern\", \"ObjectPattern\"),\n optional: true,\n },\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n },\n aliases: [\"Scopable\", \"BlockParent\"],\n});\n\ndefineType(\"ConditionalExpression\", {\n visitor: [\"test\", \"consequent\", \"alternate\"],\n fields: {\n test: {\n validate: assertNodeType(\"Expression\"),\n },\n consequent: {\n validate: assertNodeType(\"Expression\"),\n },\n alternate: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n aliases: [\"Expression\", \"Conditional\"],\n});\n\ndefineType(\"ContinueStatement\", {\n visitor: [\"label\"],\n fields: {\n label: {\n validate: assertNodeType(\"Identifier\"),\n optional: true,\n },\n },\n aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n});\n\ndefineType(\"DebuggerStatement\", {\n aliases: [\"Statement\"],\n});\n\ndefineType(\"DoWhileStatement\", {\n builder: [\"test\", \"body\"],\n visitor: [\"body\", \"test\"],\n fields: {\n test: {\n validate: assertNodeType(\"Expression\"),\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n },\n aliases: [\"Statement\", \"BlockParent\", \"Loop\", \"While\", \"Scopable\"],\n});\n\ndefineType(\"EmptyStatement\", {\n aliases: [\"Statement\"],\n});\n\ndefineType(\"ExpressionStatement\", {\n visitor: [\"expression\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n aliases: [\"Statement\", \"ExpressionWrapper\"],\n});\n\ndefineType(\"File\", {\n builder: [\"program\", \"comments\", \"tokens\"],\n visitor: [\"program\"],\n fields: {\n program: {\n validate: assertNodeType(\"Program\"),\n },\n comments: {\n validate:\n !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n ? Object.assign(() => {}, {\n each: { oneOfNodeTypes: [\"CommentBlock\", \"CommentLine\"] },\n })\n : assertEach(assertNodeType(\"CommentBlock\", \"CommentLine\")),\n optional: true,\n },\n tokens: {\n // todo(ts): add Token type\n validate: assertEach(Object.assign(() => {}, { type: \"any\" })),\n optional: true,\n },\n },\n});\n\ndefineType(\"ForInStatement\", {\n visitor: [\"left\", \"right\", \"body\"],\n aliases: [\n \"Scopable\",\n \"Statement\",\n \"For\",\n \"BlockParent\",\n \"Loop\",\n \"ForXStatement\",\n ],\n fields: {\n left: {\n validate:\n !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n ? assertNodeType(\"VariableDeclaration\", \"LVal\")\n : assertNodeType(\n \"VariableDeclaration\",\n \"Identifier\",\n \"MemberExpression\",\n \"ArrayPattern\",\n \"ObjectPattern\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSTypeAssertion\",\n \"TSNonNullExpression\",\n ),\n },\n right: {\n validate: assertNodeType(\"Expression\"),\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n },\n});\n\ndefineType(\"ForStatement\", {\n visitor: [\"init\", \"test\", \"update\", \"body\"],\n aliases: [\"Scopable\", \"Statement\", \"For\", \"BlockParent\", \"Loop\"],\n fields: {\n init: {\n validate: assertNodeType(\"VariableDeclaration\", \"Expression\"),\n optional: true,\n },\n test: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n update: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n },\n});\n\nexport const functionCommon = () => ({\n params: validateArrayOfType(\"FunctionParameter\"),\n generator: {\n default: false,\n },\n async: {\n default: false,\n },\n});\n\nexport const functionTypeAnnotationCommon = () => ({\n returnType: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n : assertNodeType(\n \"TypeAnnotation\",\n \"TSTypeAnnotation\",\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n \"Noop\",\n ),\n optional: true,\n },\n typeParameters: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\"TypeParameterDeclaration\", \"TSTypeParameterDeclaration\")\n : assertNodeType(\n \"TypeParameterDeclaration\",\n \"TSTypeParameterDeclaration\",\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n \"Noop\",\n ),\n optional: true,\n },\n});\n\nexport const functionDeclarationCommon = () => ({\n ...functionCommon(),\n declare: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n id: {\n validate: assertNodeType(\"Identifier\"),\n optional: true, // May be null for `export default function`\n },\n});\n\ndefineType(\"FunctionDeclaration\", {\n builder: [\"id\", \"params\", \"body\", \"generator\", \"async\"],\n visitor: [\n \"id\",\n \"typeParameters\",\n \"params\",\n \"predicate\",\n \"returnType\",\n \"body\",\n ],\n fields: {\n ...functionDeclarationCommon(),\n ...functionTypeAnnotationCommon(),\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n predicate: {\n validate: assertNodeType(\"DeclaredPredicate\", \"InferredPredicate\"),\n optional: true,\n },\n },\n aliases: [\n \"Scopable\",\n \"Function\",\n \"BlockParent\",\n \"FunctionParent\",\n \"Statement\",\n \"Pureish\",\n \"Declaration\",\n ],\n validate:\n !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n ? undefined\n : (function () {\n const identifier = assertNodeType(\"Identifier\");\n\n return function (parent, key, node) {\n if (!is(\"ExportDefaultDeclaration\", parent)) {\n identifier(node, \"id\", node.id);\n }\n };\n })(),\n});\n\ndefineType(\"FunctionExpression\", {\n inherits: \"FunctionDeclaration\",\n aliases: [\n \"Scopable\",\n \"Function\",\n \"BlockParent\",\n \"FunctionParent\",\n \"Expression\",\n \"Pureish\",\n ],\n fields: {\n ...functionCommon(),\n ...functionTypeAnnotationCommon(),\n id: {\n validate: assertNodeType(\"Identifier\"),\n optional: true,\n },\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n predicate: {\n validate: assertNodeType(\"DeclaredPredicate\", \"InferredPredicate\"),\n optional: true,\n },\n },\n});\n\nexport const patternLikeCommon = () => ({\n typeAnnotation: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n : assertNodeType(\n \"TypeAnnotation\",\n \"TSTypeAnnotation\",\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n \"Noop\",\n ),\n optional: true,\n },\n optional: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n});\n\ndefineType(\"Identifier\", {\n builder: [\"name\"],\n visitor: [\"typeAnnotation\", \"decorators\" /* for legacy param decorators */],\n aliases: [\n \"Expression\",\n \"FunctionParameter\",\n \"PatternLike\",\n \"LVal\",\n \"TSEntityName\",\n ],\n fields: {\n ...patternLikeCommon(),\n name: {\n validate:\n process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n ? chain(\n assertValueType(\"string\"),\n Object.assign(\n function (node, key, val) {\n if (!isValidIdentifier(val, false)) {\n throw new TypeError(\n `\"${val}\" is not a valid identifier name`,\n );\n }\n } satisfies ValidatorImpl,\n { type: \"string\" as const },\n ) satisfies ValidatorType,\n )\n : assertValueType(\"string\"),\n },\n },\n validate:\n process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n ? function (parent, key, node) {\n const match = /\\.(\\w+)$/.exec(key.toString());\n if (!match) return;\n\n const [, parentKey] = match;\n const nonComp = { computed: false };\n\n // We can't check if `parent.property === node`, because nodes are validated\n // before replacing them in the AST.\n if (parentKey === \"property\") {\n if (is(\"MemberExpression\", parent, nonComp)) return;\n if (is(\"OptionalMemberExpression\", parent, nonComp)) return;\n } else if (parentKey === \"key\") {\n if (is(\"Property\", parent, nonComp)) return;\n if (is(\"Method\", parent, nonComp)) return;\n } else if (parentKey === \"exported\") {\n if (is(\"ExportSpecifier\", parent)) return;\n } else if (parentKey === \"imported\") {\n if (is(\"ImportSpecifier\", parent, { imported: node })) return;\n } else if (parentKey === \"meta\") {\n if (is(\"MetaProperty\", parent, { meta: node })) return;\n }\n\n if (\n // Ideally we should call isStrictReservedWord if this node is a descendant\n // of a block in strict mode. Also, we should pass the inModule option so\n // we can disable \"await\" in module.\n (isKeyword(node.name) || isReservedWord(node.name, false)) &&\n // Even if \"this\" is a keyword, we are using the Identifier\n // node to represent it.\n node.name !== \"this\"\n ) {\n throw new TypeError(`\"${node.name}\" is not a valid identifier`);\n }\n }\n : undefined,\n});\n\ndefineType(\"IfStatement\", {\n visitor: [\"test\", \"consequent\", \"alternate\"],\n aliases: [\"Statement\", \"Conditional\"],\n fields: {\n test: {\n validate: assertNodeType(\"Expression\"),\n },\n consequent: {\n validate: assertNodeType(\"Statement\"),\n },\n alternate: {\n optional: true,\n validate: assertNodeType(\"Statement\"),\n },\n },\n});\n\ndefineType(\"LabeledStatement\", {\n visitor: [\"label\", \"body\"],\n aliases: [\"Statement\"],\n fields: {\n label: {\n validate: assertNodeType(\"Identifier\"),\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n },\n});\n\ndefineType(\"StringLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"string\"),\n },\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"NumericLiteral\", {\n builder: [\"value\"],\n deprecatedAlias: \"NumberLiteral\",\n fields: {\n value: {\n validate: chain(\n assertValueType(\"number\"),\n Object.assign(\n function (node, key, val) {\n if (1 / val < 0 || !Number.isFinite(val)) {\n const error = new Error(\n \"NumericLiterals must be non-negative finite numbers. \" +\n `You can use t.valueToNode(${val}) instead.`,\n );\n if (process.env.BABEL_8_BREAKING) {\n // TODO(@nicolo-ribaudo) Fix regenerator to not pass negative\n // numbers here.\n if (!IS_STANDALONE) {\n if (!new Error().stack.includes(\"regenerator\")) {\n throw error;\n }\n }\n } else {\n // TODO: Enable this warning once regenerator is fixed.\n // https://github.com/facebook/regenerator/pull/680\n // console.warn(error);\n }\n }\n } satisfies ValidatorImpl,\n { type: \"number\" as const },\n ) satisfies ValidatorType,\n ),\n },\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"NullLiteral\", {\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"BooleanLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"boolean\"),\n },\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"RegExpLiteral\", {\n builder: [\"pattern\", \"flags\"],\n deprecatedAlias: \"RegexLiteral\",\n aliases: [\"Expression\", \"Pureish\", \"Literal\"],\n fields: {\n pattern: {\n validate: assertValueType(\"string\"),\n },\n flags: {\n validate:\n process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n ? chain(\n assertValueType(\"string\"),\n Object.assign(\n function (node, key, val) {\n const invalid = /[^dgimsuvy]/.exec(val);\n if (invalid) {\n throw new TypeError(\n `\"${invalid[0]}\" is not a valid RegExp flag`,\n );\n }\n } satisfies ValidatorImpl,\n { type: \"string\" as const },\n ) satisfies ValidatorType,\n )\n : assertValueType(\"string\"),\n default: \"\",\n },\n },\n});\n\ndefineType(\"LogicalExpression\", {\n builder: [\"operator\", \"left\", \"right\"],\n visitor: [\"left\", \"right\"],\n aliases: [\"Binary\", \"Expression\"],\n fields: {\n operator: {\n validate: assertOneOf(...LOGICAL_OPERATORS),\n },\n left: {\n validate: assertNodeType(\"Expression\"),\n },\n right: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"MemberExpression\", {\n builder: [\n \"object\",\n \"property\",\n \"computed\",\n ...(!process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n ? [\"optional\"]\n : []),\n ],\n visitor: [\"object\", \"property\"],\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n unionShape: {\n discriminator: \"computed\",\n shapes: [\n {\n name: \"computed\",\n value: [true],\n properties: {\n property: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n },\n {\n name: \"nonComputed\",\n value: [false],\n properties: {\n property: {\n validate: assertNodeType(\"Identifier\", \"PrivateName\"),\n },\n },\n },\n ],\n },\n fields: {\n object: {\n validate: assertNodeType(\"Expression\", \"Super\"),\n },\n property: {\n validate: (function () {\n const normal = assertNodeType(\"Identifier\", \"PrivateName\");\n const computed = assertNodeType(\"Expression\");\n\n const validator: ValidatorOneOfNodeTypes = function (\n node: t.MemberExpression,\n key,\n val,\n ) {\n const validator: Validator = node.computed ? computed : normal;\n validator(node, key, val);\n };\n // todo(ts): can be discriminated union by `computed` property\n validator.oneOfNodeTypes = [\"Expression\", \"Identifier\", \"PrivateName\"];\n return validator;\n })(),\n },\n computed: {\n default: false,\n },\n ...(!process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n ? {\n optional: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n }\n : {}),\n },\n});\n\ndefineType(\"NewExpression\", { inherits: \"CallExpression\" });\n\ndefineType(\"Program\", {\n // Note: We explicitly leave 'interpreter' out here because it is\n // conceptually comment-like, and Babel does not traverse comments either.\n visitor: [\"directives\", \"body\"],\n builder: [\"body\", \"directives\", \"sourceType\", \"interpreter\"],\n fields: {\n sourceType: {\n validate: assertOneOf(\"script\", \"module\"),\n default: \"script\",\n },\n interpreter: {\n validate: assertNodeType(\"InterpreterDirective\"),\n default: null,\n optional: true,\n },\n directives: {\n validate: arrayOfType(\"Directive\"),\n default: [],\n },\n body: validateArrayOfType(\"Statement\"),\n },\n aliases: [\"Scopable\", \"BlockParent\", \"Block\"],\n});\n\ndefineType(\"ObjectExpression\", {\n visitor: [\"properties\"],\n aliases: [\"Expression\"],\n fields: {\n properties: validateArrayOfType(\n \"ObjectMethod\",\n \"ObjectProperty\",\n \"SpreadElement\",\n ),\n },\n});\n\ndefineType(\"ObjectMethod\", {\n builder: [\"kind\", \"key\", \"params\", \"body\", \"computed\", \"generator\", \"async\"],\n visitor: [\n \"decorators\",\n \"key\",\n \"typeParameters\",\n \"params\",\n \"returnType\",\n \"body\",\n ],\n ...classMethodOrPropertyUnionShapeCommon(),\n fields: {\n ...functionCommon(),\n ...functionTypeAnnotationCommon(),\n kind: {\n validate: assertOneOf(\"method\", \"get\", \"set\"),\n ...(!process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n ? { default: \"method\" }\n : {}),\n },\n computed: {\n default: false,\n },\n key: {\n validate: (function () {\n const normal = assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n );\n const computed = assertNodeType(\"Expression\");\n\n const validator: ValidatorOneOfNodeTypes = function (\n node: t.ObjectMethod,\n key,\n val,\n ) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n };\n // todo(ts): can be discriminated union by `computed` property\n validator.oneOfNodeTypes = [\n \"Expression\",\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n ];\n return validator;\n })(),\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n },\n aliases: [\n \"UserWhitespacable\",\n \"Function\",\n \"Scopable\",\n \"BlockParent\",\n \"FunctionParent\",\n \"Method\",\n \"ObjectMember\",\n ],\n});\n\ndefineType(\"ObjectProperty\", {\n builder: [\n \"key\",\n \"value\",\n \"computed\",\n \"shorthand\",\n ...(!process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n ? [\"decorators\"]\n : []),\n ],\n unionShape: {\n discriminator: \"computed\",\n shapes: [\n {\n name: \"computed\",\n value: [true],\n properties: {\n key: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n },\n {\n name: \"nonComputed\",\n value: [false],\n properties: {\n key: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n \"PrivateName\",\n )\n : assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n \"DecimalLiteral\",\n \"PrivateName\",\n ),\n },\n },\n },\n ],\n },\n fields: {\n computed: {\n default: false,\n },\n key: {\n validate: (function () {\n const normal = process.env.BABEL_8_BREAKING\n ? assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n \"PrivateName\",\n )\n : assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n \"DecimalLiteral\",\n \"PrivateName\",\n );\n const computed = assertNodeType(\"Expression\");\n\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST allows DecimalLiteral\n const validator: ValidatorOneOfNodeTypes = Object.assign(\n function (node: t.ObjectProperty, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n } satisfies ValidatorImpl,\n {\n // todo(ts): can be discriminated union by `computed` property\n oneOfNodeTypes: process.env.BABEL_8_BREAKING\n ? ([\n \"Expression\",\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n \"PrivateName\",\n ] as const)\n : ([\n \"Expression\",\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n \"DecimalLiteral\",\n \"PrivateName\",\n ] as const),\n },\n );\n return validator;\n })(),\n },\n value: {\n // Value may be PatternLike if this is an AssignmentProperty\n // https://github.com/babel/babylon/issues/434\n validate: assertNodeType(\"Expression\", \"PatternLike\"),\n },\n shorthand: {\n validate:\n process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n ? chain(\n assertValueType(\"boolean\"),\n Object.assign(\n function (node: t.ObjectProperty, key, shorthand) {\n if (!shorthand) return;\n\n if (node.computed) {\n throw new TypeError(\n \"Property shorthand of ObjectProperty cannot be true if computed is true\",\n );\n }\n\n if (!is(\"Identifier\", node.key)) {\n throw new TypeError(\n \"Property shorthand of ObjectProperty cannot be true if key is not an Identifier\",\n );\n }\n } satisfies ValidatorImpl,\n { type: \"boolean\" as const },\n ) satisfies ValidatorType,\n )\n : assertValueType(\"boolean\"),\n default: false,\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n },\n visitor: [\"decorators\", \"key\", \"value\"],\n aliases: [\"UserWhitespacable\", \"Property\", \"ObjectMember\"],\n validate:\n !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n ? undefined\n : (function () {\n const pattern = assertNodeType(\n \"Identifier\",\n \"Pattern\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSNonNullExpression\",\n \"TSTypeAssertion\",\n );\n const expression = assertNodeType(\"Expression\");\n\n return function (parent, key, node) {\n const validator = is(\"ObjectPattern\", parent)\n ? pattern\n : expression;\n validator(node, \"value\", node.value);\n };\n })(),\n});\n\ndefineType(\"RestElement\", {\n visitor: [\"argument\", \"typeAnnotation\"],\n builder: [\"argument\"],\n aliases: process.env.BABEL_8_BREAKING\n ? [\"FunctionParameter\", \"PatternLike\"]\n : [\"FunctionParameter\", \"PatternLike\", \"LVal\"],\n deprecatedAlias: \"RestProperty\",\n fields: {\n ...patternLikeCommon(),\n argument: {\n validate:\n !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n ? assertNodeType(\n \"Identifier\",\n \"ArrayPattern\",\n \"ObjectPattern\",\n \"MemberExpression\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSTypeAssertion\",\n \"TSNonNullExpression\",\n // These are not valid in RestElement, but we allow them for backwards compatibility.\n \"RestElement\",\n \"AssignmentPattern\",\n )\n : assertNodeType(\n \"Identifier\",\n \"ArrayPattern\",\n \"ObjectPattern\",\n \"MemberExpression\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSTypeAssertion\",\n \"TSNonNullExpression\",\n ),\n },\n },\n validate:\n process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n ? (function (parent: t.ArrayPattern | t.ObjectPattern, key) {\n const match = /(\\w+)\\[(\\d+)\\]/.exec(key.toString());\n if (!match) throw new Error(\"Internal Babel error: malformed key.\");\n\n const [, listKey, index] = match as unknown as [\n string,\n keyof typeof parent,\n string,\n ];\n if ((parent[listKey] as t.Node[]).length > +index + 1) {\n throw new TypeError(\n `RestElement must be last element of ${listKey}`,\n );\n }\n } satisfies ValidatorImpl)\n : undefined,\n});\n\ndefineType(\"ReturnStatement\", {\n visitor: [\"argument\"],\n aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n fields: {\n argument: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"SequenceExpression\", {\n visitor: [\"expressions\"],\n fields: {\n expressions: validateArrayOfType(\"Expression\"),\n },\n aliases: [\"Expression\"],\n});\n\ndefineType(\"ParenthesizedExpression\", {\n visitor: [\"expression\"],\n aliases: [\"Expression\", \"ExpressionWrapper\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"SwitchCase\", {\n visitor: [\"test\", \"consequent\"],\n fields: {\n test: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n consequent: validateArrayOfType(\"Statement\"),\n },\n});\n\ndefineType(\"SwitchStatement\", {\n visitor: [\"discriminant\", \"cases\"],\n aliases: [\"Statement\", \"BlockParent\", \"Scopable\"],\n fields: {\n discriminant: {\n validate: assertNodeType(\"Expression\"),\n },\n cases: validateArrayOfType(\"SwitchCase\"),\n },\n});\n\ndefineType(\"ThisExpression\", {\n aliases: process.env.BABEL_8_BREAKING\n ? [\"Expression\", \"TSEntityName\"]\n : [\"Expression\"],\n});\n\ndefineType(\"ThrowStatement\", {\n visitor: [\"argument\"],\n aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n fields: {\n argument: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"TryStatement\", {\n visitor: [\"block\", \"handler\", \"finalizer\"],\n aliases: [\"Statement\"],\n fields: {\n block: {\n validate:\n process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n ? chain(\n assertNodeType(\"BlockStatement\"),\n Object.assign(\n function (node: t.TryStatement) {\n // This validator isn't put at the top level because we can run it\n // even if this node doesn't have a parent.\n\n if (!node.handler && !node.finalizer) {\n throw new TypeError(\n \"TryStatement expects either a handler or finalizer, or both\",\n );\n }\n } satisfies ValidatorImpl,\n { oneOfNodeTypes: [\"BlockStatement\"] as const },\n ) satisfies ValidatorOneOfNodeTypes,\n )\n : assertNodeType(\"BlockStatement\"),\n },\n handler: {\n optional: true,\n validate: assertNodeType(\"CatchClause\"),\n },\n finalizer: {\n optional: true,\n validate: assertNodeType(\"BlockStatement\"),\n },\n },\n});\n\ndefineType(\"UnaryExpression\", {\n builder: [\"operator\", \"argument\", \"prefix\"],\n fields: {\n prefix: {\n default: true,\n },\n argument: {\n validate: assertNodeType(\"Expression\"),\n },\n operator: {\n validate: assertOneOf(...UNARY_OPERATORS),\n },\n },\n visitor: [\"argument\"],\n aliases: [\"UnaryLike\", \"Expression\"],\n});\n\ndefineType(\"UpdateExpression\", {\n builder: [\"operator\", \"argument\", \"prefix\"],\n fields: {\n prefix: {\n default: false,\n },\n argument: {\n validate:\n !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n ? assertNodeType(\"Expression\")\n : assertNodeType(\"Identifier\", \"MemberExpression\"),\n },\n operator: {\n validate: assertOneOf(...UPDATE_OPERATORS),\n },\n },\n visitor: [\"argument\"],\n aliases: [\"Expression\"],\n});\n\ndefineType(\"VariableDeclaration\", {\n builder: [\"kind\", \"declarations\"],\n visitor: [\"declarations\"],\n aliases: [\"Statement\", \"Declaration\"],\n fields: {\n declare: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n kind: {\n validate: assertOneOf(\n \"var\",\n \"let\",\n \"const\",\n // https://github.com/tc39/proposal-explicit-resource-management\n \"using\",\n // https://github.com/tc39/proposal-async-explicit-resource-management\n \"await using\",\n ),\n },\n declarations: validateArrayOfType(\"VariableDeclarator\"),\n },\n validate:\n process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n ? (() => {\n const withoutInit = assertNodeType(\"Identifier\", \"Placeholder\");\n const constOrLetOrVar = assertNodeType(\n \"Identifier\",\n \"ArrayPattern\",\n \"ObjectPattern\",\n \"Placeholder\",\n );\n const usingOrAwaitUsing = assertNodeType(\n \"Identifier\",\n \"VoidPattern\",\n \"Placeholder\",\n );\n\n return function (parent, key, node: t.VariableDeclaration) {\n const { kind, declarations } = node;\n const parentIsForX = is(\"ForXStatement\", parent, { left: node });\n if (parentIsForX) {\n if (declarations.length !== 1) {\n throw new TypeError(\n `Exactly one VariableDeclarator is required in the VariableDeclaration of a ${parent.type}`,\n );\n }\n }\n for (const decl of declarations) {\n if (kind === \"const\" || kind === \"let\" || kind === \"var\") {\n if (!parentIsForX && !decl.init) {\n withoutInit(decl, \"id\", decl.id);\n } else {\n constOrLetOrVar(decl, \"id\", decl.id);\n }\n } else {\n usingOrAwaitUsing(decl, \"id\", decl.id);\n }\n }\n };\n })()\n : undefined,\n});\n\ndefineType(\"VariableDeclarator\", {\n visitor: [\"id\", \"init\"],\n fields: {\n id: {\n validate:\n !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n ? assertNodeType(\"LVal\", \"VoidPattern\")\n : assertNodeType(\n \"Identifier\",\n \"ArrayPattern\",\n \"ObjectPattern\",\n \"VoidPattern\",\n ),\n },\n definite: {\n optional: true,\n validate: assertValueType(\"boolean\"),\n },\n init: {\n optional: true,\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"WhileStatement\", {\n visitor: [\"test\", \"body\"],\n aliases: [\"Statement\", \"BlockParent\", \"Loop\", \"While\", \"Scopable\"],\n fields: {\n test: {\n validate: assertNodeType(\"Expression\"),\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n },\n});\n\ndefineType(\"WithStatement\", {\n visitor: [\"object\", \"body\"],\n aliases: [\"Statement\"],\n fields: {\n object: {\n validate: assertNodeType(\"Expression\"),\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n },\n});\n\n// --- ES2015 ---\ndefineType(\"AssignmentPattern\", {\n visitor: [\"left\", \"right\", \"decorators\" /* for legacy param decorators */],\n builder: [\"left\", \"right\"],\n aliases: process.env.BABEL_8_BREAKING\n ? [\"FunctionParameter\", \"Pattern\", \"PatternLike\"]\n : [\"FunctionParameter\", \"Pattern\", \"PatternLike\", \"LVal\"],\n fields: {\n ...patternLikeCommon(),\n left: {\n validate: assertNodeType(\n \"Identifier\",\n \"ObjectPattern\",\n \"ArrayPattern\",\n \"MemberExpression\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSTypeAssertion\",\n \"TSNonNullExpression\",\n ),\n },\n right: {\n validate: assertNodeType(\"Expression\"),\n },\n // For TypeScript\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ArrayPattern\", {\n visitor: [\"elements\", \"typeAnnotation\"],\n builder: [\"elements\"],\n aliases: [\"FunctionParameter\", \"Pattern\", \"PatternLike\", \"LVal\"],\n fields: {\n ...patternLikeCommon(),\n elements: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeOrValueType(\"null\", \"PatternLike\")),\n ),\n },\n },\n});\n\ndefineType(\"ArrowFunctionExpression\", {\n builder: [\"params\", \"body\", \"async\"],\n visitor: [\"typeParameters\", \"params\", \"predicate\", \"returnType\", \"body\"],\n aliases: [\n \"Scopable\",\n \"Function\",\n \"BlockParent\",\n \"FunctionParent\",\n \"Expression\",\n \"Pureish\",\n ],\n fields: {\n ...functionCommon(),\n ...functionTypeAnnotationCommon(),\n expression: {\n // https://github.com/babel/babylon/issues/505\n validate: assertValueType(\"boolean\"),\n },\n body: {\n validate: assertNodeType(\"BlockStatement\", \"Expression\"),\n },\n predicate: {\n validate: assertNodeType(\"DeclaredPredicate\", \"InferredPredicate\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ClassBody\", {\n visitor: [\"body\"],\n fields: {\n body: validateArrayOfType(\n \"ClassMethod\",\n \"ClassPrivateMethod\",\n \"ClassProperty\",\n \"ClassPrivateProperty\",\n \"ClassAccessorProperty\",\n \"TSDeclareMethod\",\n \"TSIndexSignature\",\n \"StaticBlock\",\n ),\n },\n});\n\ndefineType(\"ClassExpression\", {\n builder: [\"id\", \"superClass\", \"body\", \"decorators\"],\n visitor: [\n \"decorators\",\n \"id\",\n \"typeParameters\",\n \"superClass\",\n process.env.BABEL_8_BREAKING ? \"superTypeArguments\" : \"superTypeParameters\",\n \"mixins\",\n \"implements\",\n \"body\",\n ],\n aliases: [\"Scopable\", \"Class\", \"Expression\"],\n fields: {\n id: {\n validate: assertNodeType(\"Identifier\"),\n optional: true,\n },\n typeParameters: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\n \"TypeParameterDeclaration\",\n \"TSTypeParameterDeclaration\",\n )\n : assertNodeType(\n \"TypeParameterDeclaration\",\n \"TSTypeParameterDeclaration\",\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n \"Noop\",\n ),\n optional: true,\n },\n body: {\n validate: assertNodeType(\"ClassBody\"),\n },\n superClass: {\n optional: true,\n validate: assertNodeType(\"Expression\"),\n },\n [process.env.BABEL_8_BREAKING\n ? \"superTypeArguments\"\n : \"superTypeParameters\"]: {\n validate: assertNodeType(\n \"TypeParameterInstantiation\",\n \"TSTypeParameterInstantiation\",\n ),\n optional: true,\n },\n implements: {\n validate: arrayOfType(\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n process.env.BABEL_8_BREAKING\n ? \"TSClassImplements\"\n : \"TSExpressionWithTypeArguments\",\n \"ClassImplements\",\n ),\n optional: true,\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n mixins: {\n validate: assertNodeType(\"InterfaceExtends\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ClassDeclaration\", {\n inherits: \"ClassExpression\",\n aliases: [\"Scopable\", \"Class\", \"Statement\", \"Declaration\"],\n fields: {\n id: {\n validate: assertNodeType(\"Identifier\"),\n // The id may be omitted if this is the child of an\n // ExportDefaultDeclaration.\n optional: true,\n },\n typeParameters: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\n \"TypeParameterDeclaration\",\n \"TSTypeParameterDeclaration\",\n )\n : assertNodeType(\n \"TypeParameterDeclaration\",\n \"TSTypeParameterDeclaration\",\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n \"Noop\",\n ),\n optional: true,\n },\n body: {\n validate: assertNodeType(\"ClassBody\"),\n },\n superClass: {\n optional: true,\n validate: assertNodeType(\"Expression\"),\n },\n [process.env.BABEL_8_BREAKING\n ? \"superTypeArguments\"\n : \"superTypeParameters\"]: {\n validate: assertNodeType(\n \"TypeParameterInstantiation\",\n \"TSTypeParameterInstantiation\",\n ),\n optional: true,\n },\n implements: {\n validate: arrayOfType(\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n process.env.BABEL_8_BREAKING\n ? \"TSClassImplements\"\n : \"TSExpressionWithTypeArguments\",\n \"ClassImplements\",\n ),\n optional: true,\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n mixins: {\n validate: assertNodeType(\"InterfaceExtends\"),\n optional: true,\n },\n declare: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n abstract: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n },\n validate:\n !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n ? undefined\n : (function () {\n const identifier = assertNodeType(\"Identifier\");\n return function (parent, key, node) {\n if (!is(\"ExportDefaultDeclaration\", parent)) {\n identifier(node, \"id\", node.id);\n }\n };\n })(),\n});\n\nexport const importAttributes = {\n attributes: {\n optional: true,\n validate: arrayOfType(\"ImportAttribute\"),\n },\n};\nif (!process.env.BABEL_8_BREAKING) {\n // @ts-expect-error (Babel 7 only)\n importAttributes.assertions = {\n deprecated: true,\n optional: true,\n validate: arrayOfType(\"ImportAttribute\"),\n };\n}\n\ndefineType(\"ExportAllDeclaration\", {\n builder: [\"source\", \"attributes\"],\n visitor: [\"source\", \"attributes\", \"assertions\"],\n aliases: [\n \"Statement\",\n \"Declaration\",\n \"ImportOrExportDeclaration\",\n \"ExportDeclaration\",\n ],\n fields: {\n source: {\n validate: assertNodeType(\"StringLiteral\"),\n },\n exportKind: validateOptional(assertOneOf(\"type\", \"value\")),\n ...importAttributes,\n },\n});\n\ndefineType(\"ExportDefaultDeclaration\", {\n visitor: [\"declaration\"],\n aliases: [\n \"Statement\",\n \"Declaration\",\n \"ImportOrExportDeclaration\",\n \"ExportDeclaration\",\n ],\n fields: {\n declaration: validateType(\n \"TSDeclareFunction\",\n \"FunctionDeclaration\",\n \"ClassDeclaration\",\n \"Expression\",\n ),\n exportKind: validateOptional(assertOneOf(\"value\")),\n },\n});\n\ndefineType(\"ExportNamedDeclaration\", {\n builder: [\"declaration\", \"specifiers\", \"source\", \"attributes\"],\n visitor: process.env.BABEL_8_BREAKING\n ? [\"declaration\", \"specifiers\", \"source\", \"attributes\"]\n : [\"declaration\", \"specifiers\", \"source\", \"attributes\", \"assertions\"],\n aliases: [\n \"Statement\",\n \"Declaration\",\n \"ImportOrExportDeclaration\",\n \"ExportDeclaration\",\n ],\n fields: {\n declaration: {\n optional: true,\n validate:\n process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n ? chain(\n assertNodeType(\"Declaration\"),\n Object.assign(\n function (node: t.ExportNamedDeclaration, key, val) {\n // This validator isn't put at the top level because we can run it\n // even if this node doesn't have a parent.\n\n if (val && node.specifiers.length) {\n throw new TypeError(\n \"Only declaration or specifiers is allowed on ExportNamedDeclaration\",\n );\n }\n\n // This validator isn't put at the top level because we can run it\n // even if this node doesn't have a parent.\n\n if (val && node.source) {\n throw new TypeError(\n \"Cannot export a declaration from a source\",\n );\n }\n } satisfies ValidatorImpl,\n { oneOfNodeTypes: [\"Declaration\"] as const },\n ) satisfies ValidatorOneOfNodeTypes,\n )\n : assertNodeType(\"Declaration\"),\n },\n ...importAttributes,\n specifiers: {\n default: [],\n validate: arrayOf(\n (function () {\n const sourced = assertNodeType(\n \"ExportSpecifier\",\n \"ExportDefaultSpecifier\",\n \"ExportNamespaceSpecifier\",\n );\n const sourceless = assertNodeType(\"ExportSpecifier\");\n\n if (\n !process.env.BABEL_8_BREAKING &&\n !process.env.BABEL_TYPES_8_BREAKING\n )\n return sourced;\n\n return Object.assign(\n function (node: t.ExportNamedDeclaration, key, val) {\n const validator = node.source ? sourced : sourceless;\n validator(node, key, val);\n } satisfies ValidatorImpl,\n {\n oneOfNodeTypes: [\n \"ExportSpecifier\",\n \"ExportDefaultSpecifier\",\n \"ExportNamespaceSpecifier\",\n ] as const,\n },\n ) satisfies ValidatorOneOfNodeTypes;\n })(),\n ),\n },\n source: {\n validate: assertNodeType(\"StringLiteral\"),\n optional: true,\n },\n exportKind: validateOptional(assertOneOf(\"type\", \"value\")),\n },\n});\n\ndefineType(\"ExportSpecifier\", {\n visitor: [\"local\", \"exported\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n local: {\n validate: assertNodeType(\"Identifier\"),\n },\n exported: {\n validate: assertNodeType(\"Identifier\", \"StringLiteral\"),\n },\n exportKind: {\n // And TypeScript's \"export { type foo } from\"\n validate: assertOneOf(\"type\", \"value\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ForOfStatement\", {\n visitor: [\"left\", \"right\", \"body\"],\n builder: [\"left\", \"right\", \"body\", \"await\"],\n aliases: [\n \"Scopable\",\n \"Statement\",\n \"For\",\n \"BlockParent\",\n \"Loop\",\n \"ForXStatement\",\n ],\n fields: {\n left: {\n validate: (function () {\n if (\n !process.env.BABEL_8_BREAKING &&\n !process.env.BABEL_TYPES_8_BREAKING\n ) {\n return assertNodeType(\"VariableDeclaration\", \"LVal\");\n }\n\n const declaration = assertNodeType(\"VariableDeclaration\");\n const lval = assertNodeType(\n \"Identifier\",\n \"MemberExpression\",\n \"ArrayPattern\",\n \"ObjectPattern\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSTypeAssertion\",\n \"TSNonNullExpression\",\n );\n\n return Object.assign(\n function (node, key, val) {\n if (is(\"VariableDeclaration\", val)) {\n declaration(node, key, val);\n } else {\n lval(node, key, val);\n }\n } satisfies ValidatorImpl,\n {\n oneOfNodeTypes: [\n \"VariableDeclaration\",\n \"Identifier\",\n \"MemberExpression\",\n \"ArrayPattern\",\n \"ObjectPattern\",\n \"TSAsExpression\",\n \"TSSatisfiesExpression\",\n \"TSTypeAssertion\",\n \"TSNonNullExpression\",\n ] as const,\n },\n ) satisfies ValidatorOneOfNodeTypes;\n })(),\n },\n right: {\n validate: assertNodeType(\"Expression\"),\n },\n body: {\n validate: assertNodeType(\"Statement\"),\n },\n await: {\n default: false,\n },\n },\n});\n\ndefineType(\"ImportDeclaration\", {\n builder: [\"specifiers\", \"source\", \"attributes\"],\n visitor: process.env.BABEL_8_BREAKING\n ? [\"specifiers\", \"source\", \"attributes\"]\n : [\"specifiers\", \"source\", \"attributes\", \"assertions\"],\n aliases: [\"Statement\", \"Declaration\", \"ImportOrExportDeclaration\"],\n fields: {\n ...importAttributes,\n module: {\n optional: true,\n validate: assertValueType(\"boolean\"),\n },\n phase: {\n default: null,\n validate: assertOneOf(\"source\", \"defer\"),\n },\n specifiers: validateArrayOfType(\n \"ImportSpecifier\",\n \"ImportDefaultSpecifier\",\n \"ImportNamespaceSpecifier\",\n ),\n source: {\n validate: assertNodeType(\"StringLiteral\"),\n },\n importKind: {\n // Handle TypeScript/Flowtype's extension \"import type foo from\"\n // TypeScript doesn't support typeof\n validate: assertOneOf(\"type\", \"typeof\", \"value\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ImportDefaultSpecifier\", {\n visitor: [\"local\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n local: {\n validate: assertNodeType(\"Identifier\"),\n },\n },\n});\n\ndefineType(\"ImportNamespaceSpecifier\", {\n visitor: [\"local\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n local: {\n validate: assertNodeType(\"Identifier\"),\n },\n },\n});\n\ndefineType(\"ImportSpecifier\", {\n visitor: [\"imported\", \"local\"],\n builder: [\"local\", \"imported\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n local: {\n validate: assertNodeType(\"Identifier\"),\n },\n imported: {\n validate: assertNodeType(\"Identifier\", \"StringLiteral\"),\n },\n importKind: {\n // Handle Flowtype's extension \"import {typeof foo} from\"\n // And TypeScript's \"import { type foo } from\"\n validate: assertOneOf(\"type\", \"typeof\", \"value\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ImportExpression\", {\n visitor: [\"source\", \"options\"],\n aliases: [\"Expression\"],\n fields: {\n phase: {\n default: null,\n validate: assertOneOf(\"source\", \"defer\"),\n },\n source: {\n validate: assertNodeType(\"Expression\"),\n },\n options: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"MetaProperty\", {\n visitor: [\"meta\", \"property\"],\n aliases: [\"Expression\"],\n fields: {\n meta: {\n validate:\n process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n ? chain(\n assertNodeType(\"Identifier\"),\n Object.assign(\n function (node: t.MetaProperty, key, val) {\n let property;\n switch (val.name) {\n case \"function\":\n property = \"sent\";\n break;\n case \"new\":\n property = \"target\";\n break;\n case \"import\":\n property = \"meta\";\n break;\n }\n if (!is(\"Identifier\", node.property, { name: property })) {\n throw new TypeError(\"Unrecognised MetaProperty\");\n }\n } satisfies ValidatorImpl,\n { oneOfNodeTypes: [\"Identifier\"] as const },\n ) satisfies ValidatorOneOfNodeTypes,\n )\n : assertNodeType(\"Identifier\"),\n },\n property: {\n validate: assertNodeType(\"Identifier\"),\n },\n },\n});\n\nexport const classMethodOrPropertyCommon = () => ({\n abstract: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n accessibility: {\n validate: assertOneOf(\"public\", \"private\", \"protected\"),\n optional: true,\n },\n static: {\n default: false,\n },\n override: {\n default: false,\n },\n computed: {\n default: false,\n },\n optional: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n key: {\n validate: chain(\n (function () {\n const normal = assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n );\n const computed = assertNodeType(\"Expression\");\n\n return function (\n node: Extract<t.Node, { computed: boolean }>,\n key,\n val,\n ) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n } satisfies ValidatorImpl;\n })(),\n assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n \"Expression\",\n ),\n ),\n },\n});\n\nexport const classMethodOrDeclareMethodCommon = () => ({\n ...functionCommon(),\n ...classMethodOrPropertyCommon(),\n params: validateArrayOfType(\"FunctionParameter\", \"TSParameterProperty\"),\n kind: {\n validate: assertOneOf(\"get\", \"set\", \"method\", \"constructor\"),\n default: \"method\",\n },\n access: {\n validate: chain(\n assertValueType(\"string\"),\n assertOneOf(\"public\", \"private\", \"protected\"),\n ),\n optional: true,\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n});\n\ndefineType(\"ClassMethod\", {\n aliases: [\"Function\", \"Scopable\", \"BlockParent\", \"FunctionParent\", \"Method\"],\n builder: [\n \"kind\",\n \"key\",\n \"params\",\n \"body\",\n \"computed\",\n \"static\",\n \"generator\",\n \"async\",\n ],\n visitor: [\n \"decorators\",\n \"key\",\n \"typeParameters\",\n \"params\",\n \"returnType\",\n \"body\",\n ],\n ...classMethodOrPropertyUnionShapeCommon(),\n fields: {\n ...classMethodOrDeclareMethodCommon(),\n ...functionTypeAnnotationCommon(),\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n },\n});\n\ndefineType(\"ObjectPattern\", {\n visitor: [\n \"decorators\" /* for legacy param decorators */,\n \"properties\",\n \"typeAnnotation\",\n ],\n builder: [\"properties\"],\n aliases: [\"FunctionParameter\", \"Pattern\", \"PatternLike\", \"LVal\"],\n fields: {\n ...patternLikeCommon(),\n properties: validateArrayOfType(\"RestElement\", \"ObjectProperty\"),\n },\n});\n\ndefineType(\"SpreadElement\", {\n visitor: [\"argument\"],\n aliases: [\"UnaryLike\"],\n deprecatedAlias: \"SpreadProperty\",\n fields: {\n argument: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\n \"Super\",\n process.env.BABEL_8_BREAKING\n ? undefined\n : {\n aliases: [\"Expression\"],\n },\n);\n\ndefineType(\"TaggedTemplateExpression\", {\n visitor: process.env.BABEL_8_BREAKING\n ? [\"tag\", \"typeArguments\", \"quasi\"]\n : [\"tag\", \"typeParameters\", \"quasi\"],\n builder: [\"tag\", \"quasi\"],\n aliases: [\"Expression\"],\n fields: {\n tag: {\n validate: assertNodeType(\"Expression\"),\n },\n quasi: {\n validate: assertNodeType(\"TemplateLiteral\"),\n },\n [process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\"]: {\n validate: assertNodeType(\n \"TypeParameterInstantiation\",\n \"TSTypeParameterInstantiation\",\n ),\n optional: true,\n },\n },\n});\n\ndefineType(\"TemplateElement\", {\n builder: [\"value\", \"tail\"],\n fields: {\n value: {\n validate: chain(\n assertShape({\n raw: {\n validate: assertValueType(\"string\"),\n },\n cooked: {\n validate: assertValueType(\"string\"),\n optional: true,\n },\n }),\n function templateElementCookedValidator(node: t.TemplateElement) {\n const raw = node.value.raw;\n\n let unterminatedCalled = false;\n\n const error = () => {\n // unreachable\n throw new Error(\"Internal @babel/types error.\");\n };\n const { str, firstInvalidLoc } = readStringContents(\n \"template\",\n raw,\n 0,\n 0,\n 0,\n {\n unterminated() {\n unterminatedCalled = true;\n },\n strictNumericEscape: error,\n invalidEscapeSequence: error,\n numericSeparatorInEscapeSequence: error,\n unexpectedNumericSeparator: error,\n invalidDigit: error,\n invalidCodePoint: error,\n },\n );\n if (!unterminatedCalled) throw new Error(\"Invalid raw\");\n\n node.value.cooked = firstInvalidLoc ? null : str;\n },\n ),\n },\n tail: {\n default: false,\n },\n },\n});\n\ndefineType(\"TemplateLiteral\", {\n visitor: [\"quasis\", \"expressions\"],\n aliases: [\"Expression\", \"Literal\"],\n fields: {\n quasis: validateArrayOfType(\"TemplateElement\"),\n expressions: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(\n assertNodeType(\n \"Expression\",\n // For TypeScript template literal types\n \"TSType\",\n ),\n ),\n function (node: t.TemplateLiteral, key, val) {\n if (node.quasis.length !== val.length + 1) {\n throw new TypeError(\n `Number of ${\n node.type\n } quasis should be exactly one more than the number of expressions.\\nExpected ${\n val.length + 1\n } quasis but got ${node.quasis.length}`,\n );\n }\n } satisfies ValidatorImpl,\n ),\n },\n },\n});\n\ndefineType(\"YieldExpression\", {\n builder: [\"argument\", \"delegate\"],\n visitor: [\"argument\"],\n aliases: [\"Expression\", \"Terminatorless\"],\n fields: {\n delegate: {\n validate:\n process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n ? chain(\n assertValueType(\"boolean\"),\n Object.assign(\n function (node: t.YieldExpression, key, val) {\n if (val && !node.argument) {\n throw new TypeError(\n \"Property delegate of YieldExpression cannot be true if there is no argument\",\n );\n }\n } satisfies ValidatorImpl,\n { type: \"boolean\" as const },\n ) satisfies ValidatorType,\n )\n : assertValueType(\"boolean\"),\n default: false,\n },\n argument: {\n optional: true,\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\n// --- ES2017 ---\ndefineType(\"AwaitExpression\", {\n builder: [\"argument\"],\n visitor: [\"argument\"],\n aliases: [\"Expression\", \"Terminatorless\"],\n fields: {\n argument: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\n// --- ES2019 ---\ndefineType(\"Import\", {\n aliases: [\"Expression\"],\n});\n\n// --- ES2020 ---\ndefineType(\"BigIntLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: process.env.BABEL_8_BREAKING\n ? assertValueType(\"bigint\")\n : assertValueType(\"string\"),\n },\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"ExportNamespaceSpecifier\", {\n visitor: [\"exported\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n exported: {\n validate: assertNodeType(\"Identifier\"),\n },\n },\n});\n\ndefineType(\"OptionalMemberExpression\", {\n builder: [\"object\", \"property\", \"computed\", \"optional\"],\n visitor: [\"object\", \"property\"],\n // todo: Add OptionalMemberExpression to LVal when optional-chaining-assign reaches stage 4\n aliases: [\"Expression\"],\n fields: {\n object: {\n validate: assertNodeType(\"Expression\"),\n },\n property: {\n validate: (function () {\n const normal = assertNodeType(\"Identifier\");\n const computed = assertNodeType(\"Expression\");\n\n const validator: ValidatorOneOfNodeTypes = Object.assign(\n function (node: t.OptionalMemberExpression, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n } satisfies ValidatorImpl,\n // todo(ts): can be discriminated union by `computed` property\n { oneOfNodeTypes: [\"Expression\", \"Identifier\"] as const },\n );\n return validator;\n })(),\n },\n computed: {\n default: false,\n },\n optional: {\n validate:\n !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n ? assertValueType(\"boolean\")\n : chain(assertValueType(\"boolean\"), assertOptionalChainStart()),\n },\n },\n});\n\ndefineType(\"OptionalCallExpression\", {\n visitor: process.env.BABEL_8_BREAKING\n ? [\"callee\", \"typeArguments\", \"arguments\"]\n : [\"callee\", \"typeParameters\", \"typeArguments\", \"arguments\"],\n builder: [\"callee\", \"arguments\", \"optional\"],\n aliases: [\"Expression\"],\n fields: {\n callee: {\n validate: assertNodeType(\"Expression\"),\n },\n arguments: validateArrayOfType(\n \"Expression\",\n \"SpreadElement\",\n \"ArgumentPlaceholder\",\n ),\n optional: {\n validate:\n !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n ? assertValueType(\"boolean\")\n : chain(assertValueType(\"boolean\"), assertOptionalChainStart()),\n },\n typeArguments: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\n \"TypeParameterInstantiation\",\n \"TSTypeParameterInstantiation\",\n )\n : assertNodeType(\"TypeParameterInstantiation\"),\n optional: true,\n },\n ...(process.env.BABEL_8_BREAKING\n ? {}\n : {\n typeParameters: {\n validate: assertNodeType(\"TSTypeParameterInstantiation\"),\n optional: true,\n },\n }),\n },\n});\n\n// --- ES2022 ---\ndefineType(\"ClassProperty\", {\n visitor: [\"decorators\", \"variance\", \"key\", \"typeAnnotation\", \"value\"],\n builder: [\n \"key\",\n \"value\",\n \"typeAnnotation\",\n \"decorators\",\n \"computed\",\n \"static\",\n ],\n aliases: [\"Property\"],\n ...classMethodOrPropertyUnionShapeCommon(),\n fields: {\n ...classMethodOrPropertyCommon(),\n value: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n definite: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n typeAnnotation: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n : assertNodeType(\n \"TypeAnnotation\",\n \"TSTypeAnnotation\",\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n \"Noop\",\n ),\n optional: true,\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n readonly: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n declare: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n variance: {\n validate: assertNodeType(\"Variance\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ClassAccessorProperty\", {\n visitor: [\"decorators\", \"key\", \"typeAnnotation\", \"value\"],\n builder: [\n \"key\",\n \"value\",\n \"typeAnnotation\",\n \"decorators\",\n \"computed\",\n \"static\",\n ],\n aliases: [\"Property\", \"Accessor\"],\n ...classMethodOrPropertyUnionShapeCommon(true),\n fields: {\n ...classMethodOrPropertyCommon(),\n key: {\n validate: chain(\n (function () {\n const normal = assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n \"PrivateName\",\n );\n const computed = assertNodeType(\"Expression\");\n\n return function (\n node: t.ClassAccessorProperty,\n key: string,\n val: any,\n ) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n } satisfies ValidatorImpl;\n })(),\n assertNodeType(\n \"Identifier\",\n \"StringLiteral\",\n \"NumericLiteral\",\n \"BigIntLiteral\",\n \"Expression\",\n \"PrivateName\",\n ),\n ),\n },\n value: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n definite: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n typeAnnotation: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n : assertNodeType(\n \"TypeAnnotation\",\n \"TSTypeAnnotation\",\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n \"Noop\",\n ),\n optional: true,\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n readonly: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n declare: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n variance: {\n validate: assertNodeType(\"Variance\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ClassPrivateProperty\", {\n visitor: [\"decorators\", \"variance\", \"key\", \"typeAnnotation\", \"value\"],\n builder: [\"key\", \"value\", \"decorators\", \"static\"],\n aliases: [\"Property\", \"Private\"],\n fields: {\n key: {\n validate: assertNodeType(\"PrivateName\"),\n },\n value: {\n validate: assertNodeType(\"Expression\"),\n optional: true,\n },\n typeAnnotation: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n : assertNodeType(\n \"TypeAnnotation\",\n \"TSTypeAnnotation\",\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n \"Noop\",\n ),\n optional: true,\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n static: {\n validate: assertValueType(\"boolean\"),\n default: false,\n },\n readonly: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n optional: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n definite: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n variance: {\n validate: assertNodeType(\"Variance\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"ClassPrivateMethod\", {\n builder: [\"kind\", \"key\", \"params\", \"body\", \"static\"],\n visitor: [\n \"decorators\",\n \"key\",\n \"typeParameters\",\n \"params\",\n \"returnType\",\n \"body\",\n ],\n aliases: [\n \"Function\",\n \"Scopable\",\n \"BlockParent\",\n \"FunctionParent\",\n \"Method\",\n \"Private\",\n ],\n // `computed` is not included in the `builder`\n // ...classMethodOrPropertyUnionShapeCommon(),\n fields: {\n ...classMethodOrDeclareMethodCommon(),\n ...functionTypeAnnotationCommon(),\n kind: {\n validate: assertOneOf(\"get\", \"set\", \"method\"),\n default: \"method\",\n },\n key: {\n validate: assertNodeType(\"PrivateName\"),\n },\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n },\n});\n\ndefineType(\"PrivateName\", {\n visitor: [\"id\"],\n aliases: [\"Private\"],\n fields: {\n id: {\n validate: assertNodeType(\"Identifier\"),\n },\n },\n});\n\ndefineType(\"StaticBlock\", {\n visitor: [\"body\"],\n fields: {\n body: validateArrayOfType(\"Statement\"),\n },\n aliases: [\"Scopable\", \"BlockParent\", \"FunctionParent\"],\n});\n\n// --- ES2025 ---\ndefineType(\"ImportAttribute\", {\n visitor: [\"key\", \"value\"],\n fields: {\n key: {\n validate: assertNodeType(\"Identifier\", \"StringLiteral\"),\n },\n value: {\n validate: assertNodeType(\"StringLiteral\"),\n },\n },\n});\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/definitions/deprecated-aliases.js b/vanilla/node_modules/@babel/types/lib/definitions/deprecated-aliases.js
new file mode 100644
index 0000000..03a3751
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/definitions/deprecated-aliases.js
@@ -0,0 +1,11 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.DEPRECATED_ALIASES = void 0;
+const DEPRECATED_ALIASES = exports.DEPRECATED_ALIASES = {
+ ModuleDeclaration: "ImportOrExportDeclaration"
+};
+
+//# sourceMappingURL=deprecated-aliases.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/definitions/deprecated-aliases.js.map b/vanilla/node_modules/@babel/types/lib/definitions/deprecated-aliases.js.map
new file mode 100644
index 0000000..1d3dbcb
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/definitions/deprecated-aliases.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["DEPRECATED_ALIASES","exports","ModuleDeclaration"],"sources":["../../src/definitions/deprecated-aliases.ts"],"sourcesContent":["export const DEPRECATED_ALIASES = {\n ModuleDeclaration: \"ImportOrExportDeclaration\",\n};\n"],"mappings":";;;;;;AAAO,MAAMA,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAAG;EAChCE,iBAAiB,EAAE;AACrB,CAAC","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/definitions/experimental.js b/vanilla/node_modules/@babel/types/lib/definitions/experimental.js
new file mode 100644
index 0000000..839f732
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/definitions/experimental.js
@@ -0,0 +1,124 @@
+"use strict";
+
+var _utils = require("./utils.js");
+(0, _utils.default)("ArgumentPlaceholder", {});
+(0, _utils.default)("BindExpression", {
+ visitor: ["object", "callee"],
+ aliases: ["Expression"],
+ fields: !process.env.BABEL_TYPES_8_BREAKING ? {
+ object: {
+ validate: Object.assign(() => {}, {
+ oneOfNodeTypes: ["Expression"]
+ })
+ },
+ callee: {
+ validate: Object.assign(() => {}, {
+ oneOfNodeTypes: ["Expression"]
+ })
+ }
+ } : {
+ object: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ callee: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+(0, _utils.default)("Decorator", {
+ visitor: ["expression"],
+ fields: {
+ expression: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+(0, _utils.default)("DoExpression", {
+ visitor: ["body"],
+ builder: ["body", "async"],
+ aliases: ["Expression"],
+ fields: {
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ },
+ async: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ default: false
+ }
+ }
+});
+(0, _utils.default)("ExportDefaultSpecifier", {
+ visitor: ["exported"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ exported: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ }
+ }
+});
+(0, _utils.default)("RecordExpression", {
+ visitor: ["properties"],
+ aliases: ["Expression"],
+ fields: {
+ properties: (0, _utils.validateArrayOfType)("ObjectProperty", "SpreadElement")
+ }
+});
+(0, _utils.default)("TupleExpression", {
+ fields: {
+ elements: {
+ validate: (0, _utils.arrayOfType)("Expression", "SpreadElement"),
+ default: []
+ }
+ },
+ visitor: ["elements"],
+ aliases: ["Expression"]
+});
+(0, _utils.default)("DecimalLiteral", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ },
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+(0, _utils.default)("ModuleExpression", {
+ visitor: ["body"],
+ fields: {
+ body: {
+ validate: (0, _utils.assertNodeType)("Program")
+ }
+ },
+ aliases: ["Expression"]
+});
+(0, _utils.default)("TopicReference", {
+ aliases: ["Expression"]
+});
+(0, _utils.default)("PipelineTopicExpression", {
+ builder: ["expression"],
+ visitor: ["expression"],
+ fields: {
+ expression: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ },
+ aliases: ["Expression"]
+});
+(0, _utils.default)("PipelineBareFunction", {
+ builder: ["callee"],
+ visitor: ["callee"],
+ fields: {
+ callee: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ },
+ aliases: ["Expression"]
+});
+(0, _utils.default)("PipelinePrimaryTopicReference", {
+ aliases: ["Expression"]
+});
+(0, _utils.default)("VoidPattern", {
+ aliases: ["Pattern", "PatternLike", "FunctionParameter"]
+});
+
+//# sourceMappingURL=experimental.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/definitions/experimental.js.map b/vanilla/node_modules/@babel/types/lib/definitions/experimental.js.map
new file mode 100644
index 0000000..5c0a804
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/definitions/experimental.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_utils","require","defineType","visitor","aliases","fields","process","env","BABEL_TYPES_8_BREAKING","object","validate","Object","assign","oneOfNodeTypes","callee","assertNodeType","expression","builder","body","async","assertValueType","default","exported","properties","validateArrayOfType","elements","arrayOfType","value"],"sources":["../../src/definitions/experimental.ts"],"sourcesContent":["import defineType, {\n arrayOfType,\n assertNodeType,\n assertValueType,\n validateArrayOfType,\n type ValidatorOneOfNodeTypes,\n} from \"./utils.ts\";\n\ndefineType(\"ArgumentPlaceholder\", {});\n\ndefineType(\"BindExpression\", {\n visitor: [\"object\", \"callee\"],\n aliases: [\"Expression\"],\n fields:\n !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n ? {\n object: {\n validate: Object.assign(() => {}, {\n oneOfNodeTypes: [\"Expression\"] as const,\n }) satisfies ValidatorOneOfNodeTypes,\n },\n callee: {\n validate: Object.assign(() => {}, {\n oneOfNodeTypes: [\"Expression\"] as const,\n }) satisfies ValidatorOneOfNodeTypes,\n },\n }\n : {\n object: {\n validate: assertNodeType(\"Expression\"),\n },\n callee: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"Decorator\", {\n visitor: [\"expression\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"DoExpression\", {\n visitor: [\"body\"],\n builder: [\"body\", \"async\"],\n aliases: [\"Expression\"],\n fields: {\n body: {\n validate: assertNodeType(\"BlockStatement\"),\n },\n async: {\n validate: assertValueType(\"boolean\"),\n default: false,\n },\n },\n});\n\ndefineType(\"ExportDefaultSpecifier\", {\n visitor: [\"exported\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n exported: {\n validate: assertNodeType(\"Identifier\"),\n },\n },\n});\n\nif (!process.env.BABEL_8_BREAKING) {\n defineType(\"RecordExpression\", {\n visitor: [\"properties\"],\n aliases: [\"Expression\"],\n fields: {\n properties: validateArrayOfType(\"ObjectProperty\", \"SpreadElement\"),\n },\n });\n\n defineType(\"TupleExpression\", {\n fields: {\n elements: {\n validate: arrayOfType(\"Expression\", \"SpreadElement\"),\n default: [],\n },\n },\n visitor: [\"elements\"],\n aliases: [\"Expression\"],\n });\n\n defineType(\"DecimalLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"string\"),\n },\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n });\n}\n\n// https://github.com/tc39/proposal-js-module-blocks\ndefineType(\"ModuleExpression\", {\n visitor: [\"body\"],\n fields: {\n body: {\n validate: assertNodeType(\"Program\"),\n },\n },\n aliases: [\"Expression\"],\n});\n\n// https://github.com/tc39/proposal-pipeline-operator\n// https://github.com/js-choi/proposal-hack-pipes\ndefineType(\"TopicReference\", {\n aliases: [\"Expression\"],\n});\n\n// https://github.com/tc39/proposal-pipeline-operator\n// https://github.com/js-choi/proposal-smart-pipes\ndefineType(\"PipelineTopicExpression\", {\n builder: [\"expression\"],\n visitor: [\"expression\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n aliases: [\"Expression\"],\n});\n\ndefineType(\"PipelineBareFunction\", {\n builder: [\"callee\"],\n visitor: [\"callee\"],\n fields: {\n callee: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n aliases: [\"Expression\"],\n});\n\ndefineType(\"PipelinePrimaryTopicReference\", {\n aliases: [\"Expression\"],\n});\n\n// https://github.com/tc39/proposal-discard-binding\ndefineType(\"VoidPattern\", {\n aliases: [\"Pattern\", \"PatternLike\", \"FunctionParameter\"],\n});\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/definitions/flow.js b/vanilla/node_modules/@babel/types/lib/definitions/flow.js
new file mode 100644
index 0000000..f0da2cb
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/definitions/flow.js
@@ -0,0 +1,495 @@
+"use strict";
+
+var _core = require("./core.js");
+var _utils = require("./utils.js");
+const defineType = (0, _utils.defineAliasedType)("Flow");
+const defineInterfaceishType = name => {
+ const isDeclareClass = name === "DeclareClass";
+ defineType(name, {
+ builder: ["id", "typeParameters", "extends", "body"],
+ visitor: ["id", "typeParameters", "extends", ...(isDeclareClass ? ["mixins", "implements"] : []), "body"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: Object.assign({
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
+ extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends"))
+ }, isDeclareClass ? {
+ mixins: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")),
+ implements: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ClassImplements"))
+ } : {}, {
+ body: (0, _utils.validateType)("ObjectTypeAnnotation")
+ })
+ });
+};
+defineType("AnyTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("ArrayTypeAnnotation", {
+ visitor: ["elementType"],
+ aliases: ["FlowType"],
+ fields: {
+ elementType: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("BooleanTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("BooleanLiteralTypeAnnotation", {
+ builder: ["value"],
+ aliases: ["FlowType"],
+ fields: {
+ value: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("NullLiteralTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("ClassImplements", {
+ visitor: ["id", "typeParameters"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation")
+ }
+});
+defineInterfaceishType("DeclareClass");
+defineType("DeclareFunction", {
+ builder: ["id"],
+ visitor: ["id", "predicate"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ predicate: (0, _utils.validateOptionalType)("DeclaredPredicate")
+ }
+});
+defineInterfaceishType("DeclareInterface");
+defineType("DeclareModule", {
+ builder: ["id", "body", "kind"],
+ visitor: ["id", "body"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier", "StringLiteral"),
+ body: (0, _utils.validateType)("BlockStatement"),
+ kind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("CommonJS", "ES"))
+ }
+});
+defineType("DeclareModuleExports", {
+ visitor: ["typeAnnotation"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("TypeAnnotation")
+ }
+});
+defineType("DeclareTypeAlias", {
+ visitor: ["id", "typeParameters", "right"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
+ right: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("DeclareOpaqueType", {
+ visitor: ["id", "typeParameters", "supertype"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
+ supertype: (0, _utils.validateOptionalType)("FlowType"),
+ impltype: (0, _utils.validateOptionalType)("FlowType")
+ }
+});
+defineType("DeclareVariable", {
+ visitor: ["id"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier")
+ }
+});
+defineType("DeclareExportDeclaration", {
+ visitor: ["declaration", "specifiers", "source", "attributes"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: Object.assign({
+ declaration: (0, _utils.validateOptionalType)("Flow"),
+ specifiers: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ExportSpecifier", "ExportNamespaceSpecifier")),
+ source: (0, _utils.validateOptionalType)("StringLiteral"),
+ default: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean"))
+ }, _core.importAttributes)
+});
+defineType("DeclareExportAllDeclaration", {
+ visitor: ["source", "attributes"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: Object.assign({
+ source: (0, _utils.validateType)("StringLiteral"),
+ exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value"))
+ }, _core.importAttributes)
+});
+defineType("DeclaredPredicate", {
+ visitor: ["value"],
+ aliases: ["FlowPredicate"],
+ fields: {
+ value: (0, _utils.validateType)("Flow")
+ }
+});
+defineType("ExistsTypeAnnotation", {
+ aliases: ["FlowType"]
+});
+defineType("FunctionTypeAnnotation", {
+ builder: ["typeParameters", "params", "rest", "returnType"],
+ visitor: ["typeParameters", "this", "params", "rest", "returnType"],
+ aliases: ["FlowType"],
+ fields: {
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
+ params: (0, _utils.validateArrayOfType)("FunctionTypeParam"),
+ rest: (0, _utils.validateOptionalType)("FunctionTypeParam"),
+ this: (0, _utils.validateOptionalType)("FunctionTypeParam"),
+ returnType: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("FunctionTypeParam", {
+ visitor: ["name", "typeAnnotation"],
+ fields: {
+ name: (0, _utils.validateOptionalType)("Identifier"),
+ typeAnnotation: (0, _utils.validateType)("FlowType"),
+ optional: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("GenericTypeAnnotation", {
+ visitor: ["id", "typeParameters"],
+ aliases: ["FlowType"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier", "QualifiedTypeIdentifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation")
+ }
+});
+defineType("InferredPredicate", {
+ aliases: ["FlowPredicate"]
+});
+defineType("InterfaceExtends", {
+ visitor: ["id", "typeParameters"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier", "QualifiedTypeIdentifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation")
+ }
+});
+defineInterfaceishType("InterfaceDeclaration");
+defineType("InterfaceTypeAnnotation", {
+ visitor: ["extends", "body"],
+ aliases: ["FlowType"],
+ fields: {
+ extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")),
+ body: (0, _utils.validateType)("ObjectTypeAnnotation")
+ }
+});
+defineType("IntersectionTypeAnnotation", {
+ visitor: ["types"],
+ aliases: ["FlowType"],
+ fields: {
+ types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
+ }
+});
+defineType("MixedTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("EmptyTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("NullableTypeAnnotation", {
+ visitor: ["typeAnnotation"],
+ aliases: ["FlowType"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("NumberLiteralTypeAnnotation", {
+ builder: ["value"],
+ aliases: ["FlowType"],
+ fields: {
+ value: (0, _utils.validate)((0, _utils.assertValueType)("number"))
+ }
+});
+defineType("NumberTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("ObjectTypeAnnotation", {
+ visitor: ["properties", "indexers", "callProperties", "internalSlots"],
+ aliases: ["FlowType"],
+ builder: ["properties", "indexers", "callProperties", "internalSlots", "exact"],
+ fields: {
+ properties: (0, _utils.validate)((0, _utils.arrayOfType)("ObjectTypeProperty", "ObjectTypeSpreadProperty")),
+ indexers: {
+ validate: (0, _utils.arrayOfType)("ObjectTypeIndexer"),
+ optional: true,
+ default: []
+ },
+ callProperties: {
+ validate: (0, _utils.arrayOfType)("ObjectTypeCallProperty"),
+ optional: true,
+ default: []
+ },
+ internalSlots: {
+ validate: (0, _utils.arrayOfType)("ObjectTypeInternalSlot"),
+ optional: true,
+ default: []
+ },
+ exact: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ default: false
+ },
+ inexact: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("ObjectTypeInternalSlot", {
+ visitor: ["id", "value"],
+ builder: ["id", "value", "optional", "static", "method"],
+ aliases: ["UserWhitespacable"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ value: (0, _utils.validateType)("FlowType"),
+ optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ method: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("ObjectTypeCallProperty", {
+ visitor: ["value"],
+ aliases: ["UserWhitespacable"],
+ fields: {
+ value: (0, _utils.validateType)("FlowType"),
+ static: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("ObjectTypeIndexer", {
+ visitor: ["variance", "id", "key", "value"],
+ builder: ["id", "key", "value", "variance"],
+ aliases: ["UserWhitespacable"],
+ fields: {
+ id: (0, _utils.validateOptionalType)("Identifier"),
+ key: (0, _utils.validateType)("FlowType"),
+ value: (0, _utils.validateType)("FlowType"),
+ static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ variance: (0, _utils.validateOptionalType)("Variance")
+ }
+});
+defineType("ObjectTypeProperty", {
+ visitor: ["key", "value", "variance"],
+ aliases: ["UserWhitespacable"],
+ fields: {
+ key: (0, _utils.validateType)("Identifier", "StringLiteral"),
+ value: (0, _utils.validateType)("FlowType"),
+ kind: (0, _utils.validate)((0, _utils.assertOneOf)("init", "get", "set")),
+ static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ proto: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ variance: (0, _utils.validateOptionalType)("Variance"),
+ method: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("ObjectTypeSpreadProperty", {
+ visitor: ["argument"],
+ aliases: ["UserWhitespacable"],
+ fields: {
+ argument: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("OpaqueType", {
+ visitor: ["id", "typeParameters", "supertype", "impltype"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
+ supertype: (0, _utils.validateOptionalType)("FlowType"),
+ impltype: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("QualifiedTypeIdentifier", {
+ visitor: ["qualification", "id"],
+ builder: ["id", "qualification"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ qualification: (0, _utils.validateType)("Identifier", "QualifiedTypeIdentifier")
+ }
+});
+defineType("StringLiteralTypeAnnotation", {
+ builder: ["value"],
+ aliases: ["FlowType"],
+ fields: {
+ value: (0, _utils.validate)((0, _utils.assertValueType)("string"))
+ }
+});
+defineType("StringTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("SymbolTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("ThisTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("TupleTypeAnnotation", {
+ visitor: ["types"],
+ aliases: ["FlowType"],
+ fields: {
+ types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
+ }
+});
+defineType("TypeofTypeAnnotation", {
+ visitor: ["argument"],
+ aliases: ["FlowType"],
+ fields: {
+ argument: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("TypeAlias", {
+ visitor: ["id", "typeParameters", "right"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
+ right: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("TypeAnnotation", {
+ visitor: ["typeAnnotation"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("TypeCastExpression", {
+ visitor: ["expression", "typeAnnotation"],
+ aliases: ["ExpressionWrapper", "Expression"],
+ fields: {
+ expression: (0, _utils.validateType)("Expression"),
+ typeAnnotation: (0, _utils.validateType)("TypeAnnotation")
+ }
+});
+defineType("TypeParameter", {
+ visitor: ["bound", "default", "variance"],
+ fields: {
+ name: (0, _utils.validate)((0, _utils.assertValueType)("string")),
+ bound: (0, _utils.validateOptionalType)("TypeAnnotation"),
+ default: (0, _utils.validateOptionalType)("FlowType"),
+ variance: (0, _utils.validateOptionalType)("Variance")
+ }
+});
+defineType("TypeParameterDeclaration", {
+ visitor: ["params"],
+ fields: {
+ params: (0, _utils.validate)((0, _utils.arrayOfType)("TypeParameter"))
+ }
+});
+defineType("TypeParameterInstantiation", {
+ visitor: ["params"],
+ fields: {
+ params: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
+ }
+});
+defineType("UnionTypeAnnotation", {
+ visitor: ["types"],
+ aliases: ["FlowType"],
+ fields: {
+ types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
+ }
+});
+defineType("Variance", {
+ builder: ["kind"],
+ fields: {
+ kind: (0, _utils.validate)((0, _utils.assertOneOf)("minus", "plus"))
+ }
+});
+defineType("VoidTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("EnumDeclaration", {
+ aliases: ["Statement", "Declaration"],
+ visitor: ["id", "body"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ body: (0, _utils.validateType)("EnumBooleanBody", "EnumNumberBody", "EnumStringBody", "EnumSymbolBody")
+ }
+});
+defineType("EnumBooleanBody", {
+ aliases: ["EnumBody"],
+ visitor: ["members"],
+ fields: {
+ explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ members: (0, _utils.validateArrayOfType)("EnumBooleanMember"),
+ hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("EnumNumberBody", {
+ aliases: ["EnumBody"],
+ visitor: ["members"],
+ fields: {
+ explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ members: (0, _utils.validateArrayOfType)("EnumNumberMember"),
+ hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("EnumStringBody", {
+ aliases: ["EnumBody"],
+ visitor: ["members"],
+ fields: {
+ explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ members: (0, _utils.validateArrayOfType)("EnumStringMember", "EnumDefaultedMember"),
+ hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("EnumSymbolBody", {
+ aliases: ["EnumBody"],
+ visitor: ["members"],
+ fields: {
+ members: (0, _utils.validateArrayOfType)("EnumDefaultedMember"),
+ hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("EnumBooleanMember", {
+ aliases: ["EnumMember"],
+ builder: ["id"],
+ visitor: ["id", "init"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ init: (0, _utils.validateType)("BooleanLiteral")
+ }
+});
+defineType("EnumNumberMember", {
+ aliases: ["EnumMember"],
+ visitor: ["id", "init"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ init: (0, _utils.validateType)("NumericLiteral")
+ }
+});
+defineType("EnumStringMember", {
+ aliases: ["EnumMember"],
+ visitor: ["id", "init"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ init: (0, _utils.validateType)("StringLiteral")
+ }
+});
+defineType("EnumDefaultedMember", {
+ aliases: ["EnumMember"],
+ visitor: ["id"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier")
+ }
+});
+defineType("IndexedAccessType", {
+ visitor: ["objectType", "indexType"],
+ aliases: ["FlowType"],
+ fields: {
+ objectType: (0, _utils.validateType)("FlowType"),
+ indexType: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("OptionalIndexedAccessType", {
+ visitor: ["objectType", "indexType"],
+ aliases: ["FlowType"],
+ fields: {
+ objectType: (0, _utils.validateType)("FlowType"),
+ indexType: (0, _utils.validateType)("FlowType"),
+ optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+
+//# sourceMappingURL=flow.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/definitions/flow.js.map b/vanilla/node_modules/@babel/types/lib/definitions/flow.js.map
new file mode 100644
index 0000000..8ef36ba
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/definitions/flow.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_core","require","_utils","defineType","defineAliasedType","defineInterfaceishType","name","isDeclareClass","builder","visitor","aliases","fields","Object","assign","id","validateType","typeParameters","validateOptionalType","extends","validateOptional","arrayOfType","mixins","implements","body","elementType","value","validate","assertValueType","predicate","kind","assertOneOf","typeAnnotation","right","supertype","impltype","declaration","specifiers","source","default","importAttributes","exportKind","params","validateArrayOfType","rest","this","returnType","optional","types","properties","indexers","callProperties","internalSlots","exact","inexact","static","method","key","variance","proto","argument","qualification","expression","bound","explicitType","members","hasUnknownMembers","init","objectType","indexType"],"sources":["../../src/definitions/flow.ts"],"sourcesContent":["import { importAttributes } from \"./core.ts\";\nimport {\n defineAliasedType,\n arrayOfType,\n assertOneOf,\n assertValueType,\n validate,\n validateArrayOfType,\n validateOptional,\n validateOptionalType,\n validateType,\n} from \"./utils.ts\";\n\nconst defineType = defineAliasedType(\"Flow\");\n\nconst defineInterfaceishType = (\n name: \"DeclareClass\" | \"DeclareInterface\" | \"InterfaceDeclaration\",\n) => {\n const isDeclareClass = name === \"DeclareClass\";\n\n defineType(name, {\n builder: [\"id\", \"typeParameters\", \"extends\", \"body\"],\n visitor: [\n \"id\",\n \"typeParameters\",\n \"extends\",\n ...(isDeclareClass ? [\"mixins\", \"implements\"] : []),\n \"body\",\n ],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n extends: validateOptional(arrayOfType(\"InterfaceExtends\")),\n ...(isDeclareClass\n ? {\n mixins: validateOptional(arrayOfType(\"InterfaceExtends\")),\n implements: validateOptional(arrayOfType(\"ClassImplements\")),\n }\n : {}),\n body: validateType(\"ObjectTypeAnnotation\"),\n },\n });\n};\n\ndefineType(\"AnyTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ArrayTypeAnnotation\", {\n visitor: [\"elementType\"],\n aliases: [\"FlowType\"],\n fields: {\n elementType: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"BooleanTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"BooleanLiteralTypeAnnotation\", {\n builder: [\"value\"],\n aliases: [\"FlowType\"],\n fields: {\n value: validate(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"NullLiteralTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ClassImplements\", {\n visitor: [\"id\", \"typeParameters\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterInstantiation\"),\n },\n});\n\ndefineInterfaceishType(\"DeclareClass\");\n\ndefineType(\"DeclareFunction\", {\n builder: [\"id\"],\n visitor: [\"id\", \"predicate\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n predicate: validateOptionalType(\"DeclaredPredicate\"),\n },\n});\n\ndefineInterfaceishType(\"DeclareInterface\");\n\ndefineType(\"DeclareModule\", {\n builder: [\"id\", \"body\", \"kind\"],\n visitor: [\"id\", \"body\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\", \"StringLiteral\"),\n body: validateType(\"BlockStatement\"),\n kind: validateOptional(assertOneOf(\"CommonJS\", \"ES\")),\n },\n});\n\ndefineType(\"DeclareModuleExports\", {\n visitor: [\"typeAnnotation\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n typeAnnotation: validateType(\"TypeAnnotation\"),\n },\n});\n\ndefineType(\"DeclareTypeAlias\", {\n visitor: [\"id\", \"typeParameters\", \"right\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n right: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"DeclareOpaqueType\", {\n visitor: [\"id\", \"typeParameters\", \"supertype\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n supertype: validateOptionalType(\"FlowType\"),\n impltype: validateOptionalType(\"FlowType\"),\n },\n});\n\ndefineType(\"DeclareVariable\", {\n visitor: [\"id\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n },\n});\n\ndefineType(\"DeclareExportDeclaration\", {\n visitor: [\"declaration\", \"specifiers\", \"source\", \"attributes\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n declaration: validateOptionalType(\"Flow\"),\n specifiers: validateOptional(\n arrayOfType(\"ExportSpecifier\", \"ExportNamespaceSpecifier\"),\n ),\n source: validateOptionalType(\"StringLiteral\"),\n default: validateOptional(assertValueType(\"boolean\")),\n ...importAttributes,\n },\n});\n\ndefineType(\"DeclareExportAllDeclaration\", {\n visitor: [\"source\", \"attributes\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n source: validateType(\"StringLiteral\"),\n exportKind: validateOptional(assertOneOf(\"type\", \"value\")),\n ...importAttributes,\n },\n});\n\ndefineType(\"DeclaredPredicate\", {\n visitor: [\"value\"],\n aliases: [\"FlowPredicate\"],\n fields: {\n value: validateType(\"Flow\"),\n },\n});\n\ndefineType(\"ExistsTypeAnnotation\", {\n aliases: [\"FlowType\"],\n});\n\ndefineType(\"FunctionTypeAnnotation\", {\n builder: [\"typeParameters\", \"params\", \"rest\", \"returnType\"],\n visitor: [\"typeParameters\", \"this\", \"params\", \"rest\", \"returnType\"],\n aliases: [\"FlowType\"],\n fields: {\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n params: validateArrayOfType(\"FunctionTypeParam\"),\n rest: validateOptionalType(\"FunctionTypeParam\"),\n this: validateOptionalType(\"FunctionTypeParam\"),\n returnType: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"FunctionTypeParam\", {\n visitor: [\"name\", \"typeAnnotation\"],\n fields: {\n name: validateOptionalType(\"Identifier\"),\n typeAnnotation: validateType(\"FlowType\"),\n optional: validateOptional(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"GenericTypeAnnotation\", {\n visitor: [\"id\", \"typeParameters\"],\n aliases: [\"FlowType\"],\n fields: {\n id: validateType(\"Identifier\", \"QualifiedTypeIdentifier\"),\n typeParameters: validateOptionalType(\"TypeParameterInstantiation\"),\n },\n});\n\ndefineType(\"InferredPredicate\", {\n aliases: [\"FlowPredicate\"],\n});\n\ndefineType(\"InterfaceExtends\", {\n visitor: [\"id\", \"typeParameters\"],\n fields: {\n id: validateType(\"Identifier\", \"QualifiedTypeIdentifier\"),\n typeParameters: validateOptionalType(\"TypeParameterInstantiation\"),\n },\n});\n\ndefineInterfaceishType(\"InterfaceDeclaration\");\n\ndefineType(\"InterfaceTypeAnnotation\", {\n visitor: [\"extends\", \"body\"],\n aliases: [\"FlowType\"],\n fields: {\n extends: validateOptional(arrayOfType(\"InterfaceExtends\")),\n body: validateType(\"ObjectTypeAnnotation\"),\n },\n});\n\ndefineType(\"IntersectionTypeAnnotation\", {\n visitor: [\"types\"],\n aliases: [\"FlowType\"],\n fields: {\n types: validate(arrayOfType(\"FlowType\")),\n },\n});\n\ndefineType(\"MixedTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"EmptyTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"NullableTypeAnnotation\", {\n visitor: [\"typeAnnotation\"],\n aliases: [\"FlowType\"],\n fields: {\n typeAnnotation: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"NumberLiteralTypeAnnotation\", {\n builder: [\"value\"],\n aliases: [\"FlowType\"],\n fields: {\n value: validate(assertValueType(\"number\")),\n },\n});\n\ndefineType(\"NumberTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ObjectTypeAnnotation\", {\n visitor: [\"properties\", \"indexers\", \"callProperties\", \"internalSlots\"],\n aliases: [\"FlowType\"],\n builder: [\n \"properties\",\n \"indexers\",\n \"callProperties\",\n \"internalSlots\",\n \"exact\",\n ],\n fields: {\n properties: validate(\n arrayOfType(\"ObjectTypeProperty\", \"ObjectTypeSpreadProperty\"),\n ),\n indexers: {\n validate: arrayOfType(\"ObjectTypeIndexer\"),\n optional: process.env.BABEL_8_BREAKING ? false : true,\n default: [],\n },\n callProperties: {\n validate: arrayOfType(\"ObjectTypeCallProperty\"),\n optional: process.env.BABEL_8_BREAKING ? false : true,\n default: [],\n },\n internalSlots: {\n validate: arrayOfType(\"ObjectTypeInternalSlot\"),\n optional: process.env.BABEL_8_BREAKING ? false : true,\n default: [],\n },\n exact: {\n validate: assertValueType(\"boolean\"),\n default: false,\n },\n // If the inexact flag is present then this is an object type, and not a\n // declare class, declare interface, or interface. If it is true, the\n // object uses ... to express that it is inexact.\n inexact: validateOptional(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"ObjectTypeInternalSlot\", {\n visitor: [\"id\", \"value\"],\n builder: [\"id\", \"value\", \"optional\", \"static\", \"method\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n id: validateType(\"Identifier\"),\n value: validateType(\"FlowType\"),\n optional: validate(assertValueType(\"boolean\")),\n static: validate(assertValueType(\"boolean\")),\n method: validate(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"ObjectTypeCallProperty\", {\n visitor: [\"value\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n value: validateType(\"FlowType\"),\n static: validate(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"ObjectTypeIndexer\", {\n visitor: [\"variance\", \"id\", \"key\", \"value\"],\n builder: [\"id\", \"key\", \"value\", \"variance\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n id: validateOptionalType(\"Identifier\"),\n key: validateType(\"FlowType\"),\n value: validateType(\"FlowType\"),\n static: validate(assertValueType(\"boolean\")),\n variance: validateOptionalType(\"Variance\"),\n },\n});\n\ndefineType(\"ObjectTypeProperty\", {\n visitor: [\"key\", \"value\", \"variance\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n key: validateType(\"Identifier\", \"StringLiteral\"),\n value: validateType(\"FlowType\"),\n kind: validate(assertOneOf(\"init\", \"get\", \"set\")),\n static: validate(assertValueType(\"boolean\")),\n proto: validate(assertValueType(\"boolean\")),\n optional: validate(assertValueType(\"boolean\")),\n variance: validateOptionalType(\"Variance\"),\n method: validate(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"ObjectTypeSpreadProperty\", {\n visitor: [\"argument\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n argument: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"OpaqueType\", {\n visitor: [\"id\", \"typeParameters\", \"supertype\", \"impltype\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n supertype: validateOptionalType(\"FlowType\"),\n impltype: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"QualifiedTypeIdentifier\", {\n visitor: [\"qualification\", \"id\"],\n builder: [\"id\", \"qualification\"],\n fields: {\n id: validateType(\"Identifier\"),\n qualification: validateType(\"Identifier\", \"QualifiedTypeIdentifier\"),\n },\n});\n\ndefineType(\"StringLiteralTypeAnnotation\", {\n builder: [\"value\"],\n aliases: [\"FlowType\"],\n fields: {\n value: validate(assertValueType(\"string\")),\n },\n});\n\ndefineType(\"StringTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"SymbolTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ThisTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"TupleTypeAnnotation\", {\n visitor: [\"types\"],\n aliases: [\"FlowType\"],\n fields: {\n types: validate(arrayOfType(\"FlowType\")),\n },\n});\n\ndefineType(\"TypeofTypeAnnotation\", {\n visitor: [\"argument\"],\n aliases: [\"FlowType\"],\n fields: {\n argument: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"TypeAlias\", {\n visitor: [\"id\", \"typeParameters\", \"right\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n right: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"TypeAnnotation\", {\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"TypeCastExpression\", {\n visitor: [\"expression\", \"typeAnnotation\"],\n aliases: [\"ExpressionWrapper\", \"Expression\"],\n fields: {\n expression: validateType(\"Expression\"),\n typeAnnotation: validateType(\"TypeAnnotation\"),\n },\n});\n\ndefineType(\"TypeParameter\", {\n visitor: [\"bound\", \"default\", \"variance\"],\n fields: {\n name: validate(assertValueType(\"string\")),\n bound: validateOptionalType(\"TypeAnnotation\"),\n default: validateOptionalType(\"FlowType\"),\n variance: validateOptionalType(\"Variance\"),\n },\n});\n\ndefineType(\"TypeParameterDeclaration\", {\n visitor: [\"params\"],\n fields: {\n params: validate(arrayOfType(\"TypeParameter\")),\n },\n});\n\ndefineType(\"TypeParameterInstantiation\", {\n visitor: [\"params\"],\n fields: {\n params: validate(arrayOfType(\"FlowType\")),\n },\n});\n\ndefineType(\"UnionTypeAnnotation\", {\n visitor: [\"types\"],\n aliases: [\"FlowType\"],\n fields: {\n types: validate(arrayOfType(\"FlowType\")),\n },\n});\n\ndefineType(\"Variance\", {\n builder: [\"kind\"],\n fields: {\n kind: validate(assertOneOf(\"minus\", \"plus\")),\n },\n});\n\ndefineType(\"VoidTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\n// Enums\ndefineType(\"EnumDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"body\"],\n fields: {\n id: validateType(\"Identifier\"),\n body: validateType(\n \"EnumBooleanBody\",\n \"EnumNumberBody\",\n \"EnumStringBody\",\n \"EnumSymbolBody\",\n ),\n },\n});\n\ndefineType(\"EnumBooleanBody\", {\n aliases: [\"EnumBody\"],\n visitor: [\"members\"],\n fields: {\n explicitType: validate(assertValueType(\"boolean\")),\n members: validateArrayOfType(\"EnumBooleanMember\"),\n hasUnknownMembers: validate(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"EnumNumberBody\", {\n aliases: [\"EnumBody\"],\n visitor: [\"members\"],\n fields: {\n explicitType: validate(assertValueType(\"boolean\")),\n members: validateArrayOfType(\"EnumNumberMember\"),\n hasUnknownMembers: validate(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"EnumStringBody\", {\n aliases: [\"EnumBody\"],\n visitor: [\"members\"],\n fields: {\n explicitType: validate(assertValueType(\"boolean\")),\n members: validateArrayOfType(\"EnumStringMember\", \"EnumDefaultedMember\"),\n hasUnknownMembers: validate(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"EnumSymbolBody\", {\n aliases: [\"EnumBody\"],\n visitor: [\"members\"],\n fields: {\n members: validateArrayOfType(\"EnumDefaultedMember\"),\n hasUnknownMembers: validate(assertValueType(\"boolean\")),\n },\n});\n\ndefineType(\"EnumBooleanMember\", {\n aliases: [\"EnumMember\"],\n builder: [\"id\"],\n visitor: [\"id\", \"init\"],\n fields: {\n id: validateType(\"Identifier\"),\n init: validateType(\"BooleanLiteral\"),\n },\n});\n\ndefineType(\"EnumNumberMember\", {\n aliases: [\"EnumMember\"],\n visitor: [\"id\", \"init\"],\n fields: {\n id: validateType(\"Identifier\"),\n init: validateType(\"NumericLiteral\"),\n },\n});\n\ndefineType(\"EnumStringMember\", {\n aliases: [\"EnumMember\"],\n visitor: [\"id\", \"init\"],\n fields: {\n id: validateType(\"Identifier\"),\n init: validateType(\"StringLiteral\"),\n },\n});\n\ndefineType(\"EnumDefaultedMember\", {\n aliases: [\"EnumMember\"],\n visitor: [\"id\"],\n fields: {\n id: validateType(\"Identifier\"),\n },\n});\n\ndefineType(\"IndexedAccessType\", {\n visitor: [\"objectType\", \"indexType\"],\n aliases: [\"FlowType\"],\n fields: {\n objectType: validateType(\"FlowType\"),\n indexType: validateType(\"FlowType\"),\n },\n});\n\ndefineType(\"OptionalIndexedAccessType\", {\n visitor: [\"objectType\", \"indexType\"],\n aliases: [\"FlowType\"],\n fields: {\n objectType: validateType(\"FlowType\"),\n indexType: validateType(\"FlowType\"),\n optional: validate(assertValueType(\"boolean\")),\n },\n});\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/definitions/index.js b/vanilla/node_modules/@babel/types/lib/definitions/index.js
new file mode 100644
index 0000000..3dff037
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/definitions/index.js
@@ -0,0 +1,106 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "ALIAS_KEYS", {
+ enumerable: true,
+ get: function () {
+ return _utils.ALIAS_KEYS;
+ }
+});
+Object.defineProperty(exports, "BUILDER_KEYS", {
+ enumerable: true,
+ get: function () {
+ return _utils.BUILDER_KEYS;
+ }
+});
+Object.defineProperty(exports, "DEPRECATED_ALIASES", {
+ enumerable: true,
+ get: function () {
+ return _deprecatedAliases.DEPRECATED_ALIASES;
+ }
+});
+Object.defineProperty(exports, "DEPRECATED_KEYS", {
+ enumerable: true,
+ get: function () {
+ return _utils.DEPRECATED_KEYS;
+ }
+});
+Object.defineProperty(exports, "FLIPPED_ALIAS_KEYS", {
+ enumerable: true,
+ get: function () {
+ return _utils.FLIPPED_ALIAS_KEYS;
+ }
+});
+Object.defineProperty(exports, "NODE_FIELDS", {
+ enumerable: true,
+ get: function () {
+ return _utils.NODE_FIELDS;
+ }
+});
+Object.defineProperty(exports, "NODE_PARENT_VALIDATIONS", {
+ enumerable: true,
+ get: function () {
+ return _utils.NODE_PARENT_VALIDATIONS;
+ }
+});
+Object.defineProperty(exports, "NODE_UNION_SHAPES__PRIVATE", {
+ enumerable: true,
+ get: function () {
+ return _utils.NODE_UNION_SHAPES__PRIVATE;
+ }
+});
+Object.defineProperty(exports, "PLACEHOLDERS", {
+ enumerable: true,
+ get: function () {
+ return _placeholders.PLACEHOLDERS;
+ }
+});
+Object.defineProperty(exports, "PLACEHOLDERS_ALIAS", {
+ enumerable: true,
+ get: function () {
+ return _placeholders.PLACEHOLDERS_ALIAS;
+ }
+});
+Object.defineProperty(exports, "PLACEHOLDERS_FLIPPED_ALIAS", {
+ enumerable: true,
+ get: function () {
+ return _placeholders.PLACEHOLDERS_FLIPPED_ALIAS;
+ }
+});
+exports.TYPES = void 0;
+Object.defineProperty(exports, "VISITOR_KEYS", {
+ enumerable: true,
+ get: function () {
+ return _utils.VISITOR_KEYS;
+ }
+});
+require("./core.js");
+require("./flow.js");
+require("./jsx.js");
+require("./misc.js");
+require("./experimental.js");
+require("./typescript.js");
+var _utils = require("./utils.js");
+var _placeholders = require("./placeholders.js");
+var _deprecatedAliases = require("./deprecated-aliases.js");
+Object.keys(_deprecatedAliases.DEPRECATED_ALIASES).forEach(deprecatedAlias => {
+ _utils.FLIPPED_ALIAS_KEYS[deprecatedAlias] = _utils.FLIPPED_ALIAS_KEYS[_deprecatedAliases.DEPRECATED_ALIASES[deprecatedAlias]];
+});
+for (const {
+ types,
+ set
+} of _utils.allExpandedTypes) {
+ for (const type of types) {
+ const aliases = _utils.FLIPPED_ALIAS_KEYS[type];
+ if (aliases) {
+ aliases.forEach(set.add, set);
+ } else {
+ set.add(type);
+ }
+ }
+}
+const TYPES = exports.TYPES = [].concat(Object.keys(_utils.VISITOR_KEYS), Object.keys(_utils.FLIPPED_ALIAS_KEYS), Object.keys(_utils.DEPRECATED_KEYS));
+
+//# sourceMappingURL=index.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/definitions/index.js.map b/vanilla/node_modules/@babel/types/lib/definitions/index.js.map
new file mode 100644
index 0000000..a547b46
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/definitions/index.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["require","_utils","_placeholders","_deprecatedAliases","Object","keys","DEPRECATED_ALIASES","forEach","deprecatedAlias","FLIPPED_ALIAS_KEYS","types","set","allExpandedTypes","type","aliases","add","TYPES","exports","concat","VISITOR_KEYS","DEPRECATED_KEYS"],"sources":["../../src/definitions/index.ts"],"sourcesContent":["import \"./core.ts\";\nimport \"./flow.ts\";\nimport \"./jsx.ts\";\nimport \"./misc.ts\";\nimport \"./experimental.ts\";\nimport \"./typescript.ts\";\nimport {\n VISITOR_KEYS,\n ALIAS_KEYS,\n FLIPPED_ALIAS_KEYS,\n NODE_FIELDS,\n BUILDER_KEYS,\n DEPRECATED_KEYS,\n NODE_PARENT_VALIDATIONS,\n NODE_UNION_SHAPES__PRIVATE,\n allExpandedTypes,\n} from \"./utils.ts\";\nimport {\n PLACEHOLDERS,\n PLACEHOLDERS_ALIAS,\n PLACEHOLDERS_FLIPPED_ALIAS,\n} from \"./placeholders.ts\";\nimport { DEPRECATED_ALIASES } from \"./deprecated-aliases.ts\";\n\n(\n Object.keys(DEPRECATED_ALIASES) as (keyof typeof DEPRECATED_ALIASES)[]\n).forEach(deprecatedAlias => {\n FLIPPED_ALIAS_KEYS[deprecatedAlias] =\n FLIPPED_ALIAS_KEYS[DEPRECATED_ALIASES[deprecatedAlias]];\n});\n\nfor (const { types, set } of allExpandedTypes) {\n for (const type of types) {\n const aliases = FLIPPED_ALIAS_KEYS[type];\n if (aliases) {\n aliases.forEach(set.add, set);\n } else {\n set.add(type);\n }\n }\n}\n\nconst TYPES: string[] = [].concat(\n Object.keys(VISITOR_KEYS),\n Object.keys(FLIPPED_ALIAS_KEYS),\n Object.keys(DEPRECATED_KEYS),\n);\n\n/**\n * @internal\n */\nexport { NODE_UNION_SHAPES__PRIVATE };\n\nexport {\n VISITOR_KEYS,\n ALIAS_KEYS,\n FLIPPED_ALIAS_KEYS,\n NODE_FIELDS,\n BUILDER_KEYS,\n DEPRECATED_ALIASES,\n DEPRECATED_KEYS,\n NODE_PARENT_VALIDATIONS,\n PLACEHOLDERS,\n PLACEHOLDERS_ALIAS,\n PLACEHOLDERS_FLIPPED_ALIAS,\n TYPES,\n};\n\nexport type { FieldOptions } from \"./utils.ts\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAWA,IAAAE,aAAA,GAAAF,OAAA;AAKA,IAAAG,kBAAA,GAAAH,OAAA;AAGEI,MAAM,CAACC,IAAI,CAACC,qCAAkB,CAAC,CAC/BC,OAAO,CAACC,eAAe,IAAI;EAC3BC,yBAAkB,CAACD,eAAe,CAAC,GACjCC,yBAAkB,CAACH,qCAAkB,CAACE,eAAe,CAAC,CAAC;AAC3D,CAAC,CAAC;AAEF,KAAK,MAAM;EAAEE,KAAK;EAAEC;AAAI,CAAC,IAAIC,uBAAgB,EAAE;EAC7C,KAAK,MAAMC,IAAI,IAAIH,KAAK,EAAE;IACxB,MAAMI,OAAO,GAAGL,yBAAkB,CAACI,IAAI,CAAC;IACxC,IAAIC,OAAO,EAAE;MACXA,OAAO,CAACP,OAAO,CAACI,GAAG,CAACI,GAAG,EAAEJ,GAAG,CAAC;IAC/B,CAAC,MAAM;MACLA,GAAG,CAACI,GAAG,CAACF,IAAI,CAAC;IACf;EACF;AACF;AAEA,MAAMG,KAAe,GAAAC,OAAA,CAAAD,KAAA,GAAG,EAAE,CAACE,MAAM,CAC/Bd,MAAM,CAACC,IAAI,CAACc,mBAAY,CAAC,EACzBf,MAAM,CAACC,IAAI,CAACI,yBAAkB,CAAC,EAC/BL,MAAM,CAACC,IAAI,CAACe,sBAAe,CAC7B,CAAC","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/definitions/jsx.js b/vanilla/node_modules/@babel/types/lib/definitions/jsx.js
new file mode 100644
index 0000000..202f951
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/definitions/jsx.js
@@ -0,0 +1,157 @@
+"use strict";
+
+var _utils = require("./utils.js");
+const defineType = (0, _utils.defineAliasedType)("JSX");
+defineType("JSXAttribute", {
+ visitor: ["name", "value"],
+ aliases: ["Immutable"],
+ fields: {
+ name: {
+ validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXNamespacedName")
+ },
+ value: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("JSXElement", "JSXFragment", "StringLiteral", "JSXExpressionContainer")
+ }
+ }
+});
+defineType("JSXClosingElement", {
+ visitor: ["name"],
+ aliases: ["Immutable"],
+ fields: {
+ name: {
+ validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName")
+ }
+ }
+});
+defineType("JSXElement", {
+ builder: ["openingElement", "closingElement", "children", "selfClosing"],
+ visitor: ["openingElement", "children", "closingElement"],
+ aliases: ["Immutable", "Expression"],
+ fields: Object.assign({
+ openingElement: {
+ validate: (0, _utils.assertNodeType)("JSXOpeningElement")
+ },
+ closingElement: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("JSXClosingElement")
+ },
+ children: (0, _utils.validateArrayOfType)("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment")
+ }, {
+ selfClosing: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ }
+ })
+});
+defineType("JSXEmptyExpression", {});
+defineType("JSXExpressionContainer", {
+ visitor: ["expression"],
+ aliases: ["Immutable"],
+ fields: {
+ expression: {
+ validate: (0, _utils.assertNodeType)("Expression", "JSXEmptyExpression")
+ }
+ }
+});
+defineType("JSXSpreadChild", {
+ visitor: ["expression"],
+ aliases: ["Immutable"],
+ fields: {
+ expression: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("JSXIdentifier", {
+ builder: ["name"],
+ fields: {
+ name: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ }
+});
+defineType("JSXMemberExpression", {
+ visitor: ["object", "property"],
+ fields: {
+ object: {
+ validate: (0, _utils.assertNodeType)("JSXMemberExpression", "JSXIdentifier")
+ },
+ property: {
+ validate: (0, _utils.assertNodeType)("JSXIdentifier")
+ }
+ }
+});
+defineType("JSXNamespacedName", {
+ visitor: ["namespace", "name"],
+ fields: {
+ namespace: {
+ validate: (0, _utils.assertNodeType)("JSXIdentifier")
+ },
+ name: {
+ validate: (0, _utils.assertNodeType)("JSXIdentifier")
+ }
+ }
+});
+defineType("JSXOpeningElement", {
+ builder: ["name", "attributes", "selfClosing"],
+ visitor: ["name", "typeParameters", "typeArguments", "attributes"],
+ aliases: ["Immutable"],
+ fields: Object.assign({
+ name: {
+ validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName")
+ },
+ selfClosing: {
+ default: false
+ },
+ attributes: (0, _utils.validateArrayOfType)("JSXAttribute", "JSXSpreadAttribute"),
+ typeArguments: {
+ validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"),
+ optional: true
+ }
+ }, {
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"),
+ optional: true
+ }
+ })
+});
+defineType("JSXSpreadAttribute", {
+ visitor: ["argument"],
+ fields: {
+ argument: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("JSXText", {
+ aliases: ["Immutable"],
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ }
+});
+defineType("JSXFragment", {
+ builder: ["openingFragment", "closingFragment", "children"],
+ visitor: ["openingFragment", "children", "closingFragment"],
+ aliases: ["Immutable", "Expression"],
+ fields: {
+ openingFragment: {
+ validate: (0, _utils.assertNodeType)("JSXOpeningFragment")
+ },
+ closingFragment: {
+ validate: (0, _utils.assertNodeType)("JSXClosingFragment")
+ },
+ children: (0, _utils.validateArrayOfType)("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment")
+ }
+});
+defineType("JSXOpeningFragment", {
+ aliases: ["Immutable"]
+});
+defineType("JSXClosingFragment", {
+ aliases: ["Immutable"]
+});
+
+//# sourceMappingURL=jsx.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/definitions/jsx.js.map b/vanilla/node_modules/@babel/types/lib/definitions/jsx.js.map
new file mode 100644
index 0000000..ece9293
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/definitions/jsx.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_utils","require","defineType","defineAliasedType","visitor","aliases","fields","name","validate","assertNodeType","value","optional","builder","Object","assign","openingElement","closingElement","children","validateArrayOfType","selfClosing","assertValueType","expression","object","property","namespace","default","attributes","typeArguments","typeParameters","argument","openingFragment","closingFragment"],"sources":["../../src/definitions/jsx.ts"],"sourcesContent":["import {\n defineAliasedType,\n assertNodeType,\n assertValueType,\n validateArrayOfType,\n} from \"./utils.ts\";\n\nconst defineType = defineAliasedType(\"JSX\");\n\ndefineType(\"JSXAttribute\", {\n visitor: [\"name\", \"value\"],\n aliases: [\"Immutable\"],\n fields: {\n name: {\n validate: assertNodeType(\"JSXIdentifier\", \"JSXNamespacedName\"),\n },\n value: {\n optional: true,\n validate: assertNodeType(\n \"JSXElement\",\n \"JSXFragment\",\n \"StringLiteral\",\n \"JSXExpressionContainer\",\n ),\n },\n },\n});\n\ndefineType(\"JSXClosingElement\", {\n visitor: [\"name\"],\n aliases: [\"Immutable\"],\n fields: {\n name: {\n validate: assertNodeType(\n \"JSXIdentifier\",\n \"JSXMemberExpression\",\n \"JSXNamespacedName\",\n ),\n },\n },\n});\n\ndefineType(\"JSXElement\", {\n builder: process.env.BABEL_8_BREAKING\n ? [\"openingElement\", \"closingElement\", \"children\"]\n : [\"openingElement\", \"closingElement\", \"children\", \"selfClosing\"],\n visitor: [\"openingElement\", \"children\", \"closingElement\"],\n aliases: [\"Immutable\", \"Expression\"],\n fields: {\n openingElement: {\n validate: assertNodeType(\"JSXOpeningElement\"),\n },\n closingElement: {\n optional: true,\n validate: assertNodeType(\"JSXClosingElement\"),\n },\n children: validateArrayOfType(\n \"JSXText\",\n \"JSXExpressionContainer\",\n \"JSXSpreadChild\",\n \"JSXElement\",\n \"JSXFragment\",\n ),\n ...(process.env.BABEL_8_BREAKING\n ? {}\n : {\n selfClosing: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n }),\n },\n});\n\ndefineType(\"JSXEmptyExpression\", {});\n\ndefineType(\"JSXExpressionContainer\", {\n visitor: [\"expression\"],\n aliases: [\"Immutable\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\", \"JSXEmptyExpression\"),\n },\n },\n});\n\ndefineType(\"JSXSpreadChild\", {\n visitor: [\"expression\"],\n aliases: [\"Immutable\"],\n fields: {\n expression: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"JSXIdentifier\", {\n builder: [\"name\"],\n fields: {\n name: {\n validate: assertValueType(\"string\"),\n },\n },\n});\n\ndefineType(\"JSXMemberExpression\", {\n visitor: [\"object\", \"property\"],\n fields: {\n object: {\n validate: assertNodeType(\"JSXMemberExpression\", \"JSXIdentifier\"),\n },\n property: {\n validate: assertNodeType(\"JSXIdentifier\"),\n },\n },\n});\n\ndefineType(\"JSXNamespacedName\", {\n visitor: [\"namespace\", \"name\"],\n fields: {\n namespace: {\n validate: assertNodeType(\"JSXIdentifier\"),\n },\n name: {\n validate: assertNodeType(\"JSXIdentifier\"),\n },\n },\n});\n\ndefineType(\"JSXOpeningElement\", {\n builder: [\"name\", \"attributes\", \"selfClosing\"],\n visitor: process.env.BABEL_8_BREAKING\n ? [\"name\", \"typeArguments\", \"attributes\"]\n : [\"name\", \"typeParameters\", \"typeArguments\", \"attributes\"],\n aliases: [\"Immutable\"],\n fields: {\n name: {\n validate: assertNodeType(\n \"JSXIdentifier\",\n \"JSXMemberExpression\",\n \"JSXNamespacedName\",\n ),\n },\n selfClosing: {\n default: false,\n },\n attributes: validateArrayOfType(\"JSXAttribute\", \"JSXSpreadAttribute\"),\n typeArguments: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\n \"TypeParameterInstantiation\",\n \"TSTypeParameterInstantiation\",\n )\n : assertNodeType(\"TypeParameterInstantiation\"),\n optional: true,\n },\n ...(process.env.BABEL_8_BREAKING\n ? {}\n : {\n typeParameters: {\n validate: assertNodeType(\"TSTypeParameterInstantiation\"),\n optional: true,\n },\n }),\n },\n});\n\ndefineType(\"JSXSpreadAttribute\", {\n visitor: [\"argument\"],\n fields: {\n argument: {\n validate: assertNodeType(\"Expression\"),\n },\n },\n});\n\ndefineType(\"JSXText\", {\n aliases: [\"Immutable\"],\n builder: [\"value\"],\n fields: {\n value: {\n validate: assertValueType(\"string\"),\n },\n },\n});\n\ndefineType(\"JSXFragment\", {\n builder: [\"openingFragment\", \"closingFragment\", \"children\"],\n visitor: [\"openingFragment\", \"children\", \"closingFragment\"],\n aliases: [\"Immutable\", \"Expression\"],\n fields: {\n openingFragment: {\n validate: assertNodeType(\"JSXOpeningFragment\"),\n },\n closingFragment: {\n validate: assertNodeType(\"JSXClosingFragment\"),\n },\n children: validateArrayOfType(\n \"JSXText\",\n \"JSXExpressionContainer\",\n \"JSXSpreadChild\",\n \"JSXElement\",\n \"JSXFragment\",\n ),\n },\n});\n\ndefineType(\"JSXOpeningFragment\", {\n aliases: [\"Immutable\"],\n});\n\ndefineType(\"JSXClosingFragment\", {\n aliases: [\"Immutable\"],\n});\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/definitions/misc.js b/vanilla/node_modules/@babel/types/lib/definitions/misc.js
new file mode 100644
index 0000000..f054c61
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/definitions/misc.js
@@ -0,0 +1,31 @@
+"use strict";
+
+var _utils = require("./utils.js");
+var _placeholders = require("./placeholders.js");
+var _core = require("./core.js");
+const defineType = (0, _utils.defineAliasedType)("Miscellaneous");
+defineType("Noop", {
+ visitor: []
+});
+defineType("Placeholder", {
+ visitor: [],
+ builder: ["expectedNode", "name"],
+ fields: Object.assign({
+ name: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ },
+ expectedNode: {
+ validate: (0, _utils.assertOneOf)(..._placeholders.PLACEHOLDERS)
+ }
+ }, (0, _core.patternLikeCommon)())
+});
+defineType("V8IntrinsicIdentifier", {
+ builder: ["name"],
+ fields: {
+ name: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ }
+});
+
+//# sourceMappingURL=misc.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/definitions/misc.js.map b/vanilla/node_modules/@babel/types/lib/definitions/misc.js.map
new file mode 100644
index 0000000..a02da90
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/definitions/misc.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_utils","require","_placeholders","_core","defineType","defineAliasedType","visitor","builder","fields","Object","assign","name","validate","assertNodeType","expectedNode","assertOneOf","PLACEHOLDERS","patternLikeCommon","assertValueType"],"sources":["../../src/definitions/misc.ts"],"sourcesContent":["import {\n defineAliasedType,\n assertNodeType,\n assertOneOf,\n assertValueType,\n} from \"./utils.ts\";\nimport { PLACEHOLDERS } from \"./placeholders.ts\";\nimport { patternLikeCommon } from \"./core.ts\";\n\nconst defineType = defineAliasedType(\"Miscellaneous\");\n\nif (!process.env.BABEL_8_BREAKING) {\n defineType(\"Noop\", {\n visitor: [],\n });\n}\n\ndefineType(\"Placeholder\", {\n visitor: [],\n builder: [\"expectedNode\", \"name\"],\n // aliases: [], defined in placeholders.js\n fields: {\n name: {\n validate: assertNodeType(\"Identifier\"),\n },\n expectedNode: {\n validate: assertOneOf(...PLACEHOLDERS),\n },\n ...patternLikeCommon(),\n },\n});\n\ndefineType(\"V8IntrinsicIdentifier\", {\n builder: [\"name\"],\n fields: {\n name: {\n validate: assertValueType(\"string\"),\n },\n },\n});\n"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAMA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAEA,MAAMG,UAAU,GAAG,IAAAC,wBAAiB,EAAC,eAAe,CAAC;AAGnDD,UAAU,CAAC,MAAM,EAAE;EACjBE,OAAO,EAAE;AACX,CAAC,CAAC;AAGJF,UAAU,CAAC,aAAa,EAAE;EACxBE,OAAO,EAAE,EAAE;EACXC,OAAO,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC;EAEjCC,MAAM,EAAAC,MAAA,CAAAC,MAAA;IACJC,IAAI,EAAE;MACJC,QAAQ,EAAE,IAAAC,qBAAc,EAAC,YAAY;IACvC,CAAC;IACDC,YAAY,EAAE;MACZF,QAAQ,EAAE,IAAAG,kBAAW,EAAC,GAAGC,0BAAY;IACvC;EAAC,GACE,IAAAC,uBAAiB,EAAC,CAAC;AAE1B,CAAC,CAAC;AAEFb,UAAU,CAAC,uBAAuB,EAAE;EAClCG,OAAO,EAAE,CAAC,MAAM,CAAC;EACjBC,MAAM,EAAE;IACNG,IAAI,EAAE;MACJC,QAAQ,EAAE,IAAAM,sBAAe,EAAC,QAAQ;IACpC;EACF;AACF,CAAC,CAAC","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/definitions/placeholders.js b/vanilla/node_modules/@babel/types/lib/definitions/placeholders.js
new file mode 100644
index 0000000..c4a4f55
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/definitions/placeholders.js
@@ -0,0 +1,27 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.PLACEHOLDERS_FLIPPED_ALIAS = exports.PLACEHOLDERS_ALIAS = exports.PLACEHOLDERS = void 0;
+var _utils = require("./utils.js");
+const PLACEHOLDERS = exports.PLACEHOLDERS = ["Identifier", "StringLiteral", "Expression", "Statement", "Declaration", "BlockStatement", "ClassBody", "Pattern"];
+const PLACEHOLDERS_ALIAS = exports.PLACEHOLDERS_ALIAS = {
+ Declaration: ["Statement"],
+ Pattern: ["PatternLike", "LVal"]
+};
+for (const type of PLACEHOLDERS) {
+ const alias = _utils.ALIAS_KEYS[type];
+ if (alias != null && alias.length) PLACEHOLDERS_ALIAS[type] = alias;
+}
+const PLACEHOLDERS_FLIPPED_ALIAS = exports.PLACEHOLDERS_FLIPPED_ALIAS = {};
+Object.keys(PLACEHOLDERS_ALIAS).forEach(type => {
+ PLACEHOLDERS_ALIAS[type].forEach(alias => {
+ if (!hasOwnProperty.call(PLACEHOLDERS_FLIPPED_ALIAS, alias)) {
+ PLACEHOLDERS_FLIPPED_ALIAS[alias] = [];
+ }
+ PLACEHOLDERS_FLIPPED_ALIAS[alias].push(type);
+ });
+});
+
+//# sourceMappingURL=placeholders.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/definitions/placeholders.js.map b/vanilla/node_modules/@babel/types/lib/definitions/placeholders.js.map
new file mode 100644
index 0000000..f18218f
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/definitions/placeholders.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_utils","require","PLACEHOLDERS","exports","PLACEHOLDERS_ALIAS","Declaration","Pattern","type","alias","ALIAS_KEYS","length","PLACEHOLDERS_FLIPPED_ALIAS","Object","keys","forEach","hasOwnProperty","call","push"],"sources":["../../src/definitions/placeholders.ts"],"sourcesContent":["import { ALIAS_KEYS } from \"./utils.ts\";\n\nexport const PLACEHOLDERS = [\n \"Identifier\",\n \"StringLiteral\",\n \"Expression\",\n \"Statement\",\n \"Declaration\",\n \"BlockStatement\",\n \"ClassBody\",\n \"Pattern\",\n] as const;\n\nexport const PLACEHOLDERS_ALIAS: Record<string, string[]> = {\n Declaration: [\"Statement\"],\n Pattern: [\"PatternLike\", \"LVal\"],\n};\n\nfor (const type of PLACEHOLDERS) {\n const alias = ALIAS_KEYS[type];\n if (alias?.length) PLACEHOLDERS_ALIAS[type] = alias;\n}\n\nexport const PLACEHOLDERS_FLIPPED_ALIAS: Record<string, string[]> = {};\n\nObject.keys(PLACEHOLDERS_ALIAS).forEach(type => {\n PLACEHOLDERS_ALIAS[type].forEach(alias => {\n if (!Object.hasOwn(PLACEHOLDERS_FLIPPED_ALIAS, alias)) {\n PLACEHOLDERS_FLIPPED_ALIAS[alias] = [];\n }\n PLACEHOLDERS_FLIPPED_ALIAS[alias].push(type);\n });\n});\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEO,MAAMC,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG,CAC1B,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,SAAS,CACD;AAEH,MAAME,kBAA4C,GAAAD,OAAA,CAAAC,kBAAA,GAAG;EAC1DC,WAAW,EAAE,CAAC,WAAW,CAAC;EAC1BC,OAAO,EAAE,CAAC,aAAa,EAAE,MAAM;AACjC,CAAC;AAED,KAAK,MAAMC,IAAI,IAAIL,YAAY,EAAE;EAC/B,MAAMM,KAAK,GAAGC,iBAAU,CAACF,IAAI,CAAC;EAC9B,IAAIC,KAAK,YAALA,KAAK,CAAEE,MAAM,EAAEN,kBAAkB,CAACG,IAAI,CAAC,GAAGC,KAAK;AACrD;AAEO,MAAMG,0BAAoD,GAAAR,OAAA,CAAAQ,0BAAA,GAAG,CAAC,CAAC;AAEtEC,MAAM,CAACC,IAAI,CAACT,kBAAkB,CAAC,CAACU,OAAO,CAACP,IAAI,IAAI;EAC9CH,kBAAkB,CAACG,IAAI,CAAC,CAACO,OAAO,CAACN,KAAK,IAAI;IACxC,IAAI,CAACO,cAAA,CAAAC,IAAA,CAAcL,0BAA0B,EAAEH,KAAK,CAAC,EAAE;MACrDG,0BAA0B,CAACH,KAAK,CAAC,GAAG,EAAE;IACxC;IACAG,0BAA0B,CAACH,KAAK,CAAC,CAACS,IAAI,CAACV,IAAI,CAAC;EAC9C,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/definitions/typescript.js b/vanilla/node_modules/@babel/types/lib/definitions/typescript.js
new file mode 100644
index 0000000..0e5da3f
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/definitions/typescript.js
@@ -0,0 +1,528 @@
+"use strict";
+
+var _utils = require("./utils.js");
+var _core = require("./core.js");
+var _is = require("../validators/is.js");
+const defineType = (0, _utils.defineAliasedType)("TypeScript");
+const bool = (0, _utils.assertValueType)("boolean");
+const tSFunctionTypeAnnotationCommon = () => ({
+ returnType: {
+ validate: (0, _utils.assertNodeType)("TSTypeAnnotation", "Noop"),
+ optional: true
+ },
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TSTypeParameterDeclaration", "Noop"),
+ optional: true
+ }
+});
+defineType("TSParameterProperty", {
+ aliases: ["LVal"],
+ visitor: ["parameter"],
+ fields: {
+ accessibility: {
+ validate: (0, _utils.assertOneOf)("public", "private", "protected"),
+ optional: true
+ },
+ readonly: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ parameter: {
+ validate: (0, _utils.assertNodeType)("Identifier", "AssignmentPattern")
+ },
+ override: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ }
+ }
+});
+defineType("TSDeclareFunction", {
+ aliases: ["Statement", "Declaration"],
+ visitor: ["id", "typeParameters", "params", "returnType"],
+ fields: Object.assign({}, (0, _core.functionDeclarationCommon)(), tSFunctionTypeAnnotationCommon())
+});
+defineType("TSDeclareMethod", Object.assign({
+ visitor: ["decorators", "key", "typeParameters", "params", "returnType"]
+}, (0, _core.classMethodOrPropertyUnionShapeCommon)(), {
+ fields: Object.assign({}, (0, _core.classMethodOrDeclareMethodCommon)(), tSFunctionTypeAnnotationCommon())
+}));
+defineType("TSQualifiedName", {
+ aliases: ["TSEntityName"],
+ visitor: ["left", "right"],
+ fields: {
+ left: (0, _utils.validateType)("TSEntityName"),
+ right: (0, _utils.validateType)("Identifier")
+ }
+});
+const signatureDeclarationCommon = () => ({
+ typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"),
+ ["parameters"]: (0, _utils.validateArrayOfType)("ArrayPattern", "Identifier", "ObjectPattern", "RestElement"),
+ ["typeAnnotation"]: (0, _utils.validateOptionalType)("TSTypeAnnotation")
+});
+const callConstructSignatureDeclaration = {
+ aliases: ["TSTypeElement"],
+ visitor: ["typeParameters", "parameters", "typeAnnotation"],
+ fields: signatureDeclarationCommon()
+};
+defineType("TSCallSignatureDeclaration", callConstructSignatureDeclaration);
+defineType("TSConstructSignatureDeclaration", callConstructSignatureDeclaration);
+const namedTypeElementCommon = () => ({
+ key: (0, _utils.validateType)("Expression"),
+ computed: {
+ default: false
+ },
+ optional: (0, _utils.validateOptional)(bool)
+});
+defineType("TSPropertySignature", {
+ aliases: ["TSTypeElement"],
+ visitor: ["key", "typeAnnotation"],
+ fields: Object.assign({}, namedTypeElementCommon(), {
+ readonly: (0, _utils.validateOptional)(bool),
+ typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation"),
+ kind: {
+ optional: true,
+ validate: (0, _utils.assertOneOf)("get", "set")
+ }
+ })
+});
+defineType("TSMethodSignature", {
+ aliases: ["TSTypeElement"],
+ visitor: ["key", "typeParameters", "parameters", "typeAnnotation"],
+ fields: Object.assign({}, signatureDeclarationCommon(), namedTypeElementCommon(), {
+ kind: {
+ validate: (0, _utils.assertOneOf)("method", "get", "set")
+ }
+ })
+});
+defineType("TSIndexSignature", {
+ aliases: ["TSTypeElement"],
+ visitor: ["parameters", "typeAnnotation"],
+ fields: {
+ readonly: (0, _utils.validateOptional)(bool),
+ static: (0, _utils.validateOptional)(bool),
+ parameters: (0, _utils.validateArrayOfType)("Identifier"),
+ typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation")
+ }
+});
+const tsKeywordTypes = ["TSAnyKeyword", "TSBooleanKeyword", "TSBigIntKeyword", "TSIntrinsicKeyword", "TSNeverKeyword", "TSNullKeyword", "TSNumberKeyword", "TSObjectKeyword", "TSStringKeyword", "TSSymbolKeyword", "TSUndefinedKeyword", "TSUnknownKeyword", "TSVoidKeyword"];
+for (const type of tsKeywordTypes) {
+ defineType(type, {
+ aliases: ["TSType", "TSBaseType"],
+ visitor: [],
+ fields: {}
+ });
+}
+defineType("TSThisType", {
+ aliases: ["TSType", "TSBaseType"],
+ visitor: [],
+ fields: {}
+});
+const fnOrCtrBase = {
+ aliases: ["TSType"],
+ visitor: ["typeParameters", "parameters", "typeAnnotation"]
+};
+defineType("TSFunctionType", Object.assign({}, fnOrCtrBase, {
+ fields: signatureDeclarationCommon()
+}));
+defineType("TSConstructorType", Object.assign({}, fnOrCtrBase, {
+ fields: Object.assign({}, signatureDeclarationCommon(), {
+ abstract: (0, _utils.validateOptional)(bool)
+ })
+}));
+defineType("TSTypeReference", {
+ aliases: ["TSType"],
+ visitor: ["typeName", "typeParameters"],
+ fields: {
+ typeName: (0, _utils.validateType)("TSEntityName"),
+ ["typeParameters"]: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
+ }
+});
+defineType("TSTypePredicate", {
+ aliases: ["TSType"],
+ visitor: ["parameterName", "typeAnnotation"],
+ builder: ["parameterName", "typeAnnotation", "asserts"],
+ fields: {
+ parameterName: (0, _utils.validateType)("Identifier", "TSThisType"),
+ typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation"),
+ asserts: (0, _utils.validateOptional)(bool)
+ }
+});
+defineType("TSTypeQuery", {
+ aliases: ["TSType"],
+ visitor: ["exprName", "typeParameters"],
+ fields: {
+ exprName: (0, _utils.validateType)("TSEntityName", "TSImportType"),
+ ["typeParameters"]: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
+ }
+});
+defineType("TSTypeLiteral", {
+ aliases: ["TSType"],
+ visitor: ["members"],
+ fields: {
+ members: (0, _utils.validateArrayOfType)("TSTypeElement")
+ }
+});
+defineType("TSArrayType", {
+ aliases: ["TSType"],
+ visitor: ["elementType"],
+ fields: {
+ elementType: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSTupleType", {
+ aliases: ["TSType"],
+ visitor: ["elementTypes"],
+ fields: {
+ elementTypes: (0, _utils.validateArrayOfType)("TSType", "TSNamedTupleMember")
+ }
+});
+defineType("TSOptionalType", {
+ aliases: ["TSType"],
+ visitor: ["typeAnnotation"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSRestType", {
+ aliases: ["TSType"],
+ visitor: ["typeAnnotation"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSNamedTupleMember", {
+ visitor: ["label", "elementType"],
+ builder: ["label", "elementType", "optional"],
+ fields: {
+ label: (0, _utils.validateType)("Identifier"),
+ optional: {
+ validate: bool,
+ default: false
+ },
+ elementType: (0, _utils.validateType)("TSType")
+ }
+});
+const unionOrIntersection = {
+ aliases: ["TSType"],
+ visitor: ["types"],
+ fields: {
+ types: (0, _utils.validateArrayOfType)("TSType")
+ }
+};
+defineType("TSUnionType", unionOrIntersection);
+defineType("TSIntersectionType", unionOrIntersection);
+defineType("TSConditionalType", {
+ aliases: ["TSType"],
+ visitor: ["checkType", "extendsType", "trueType", "falseType"],
+ fields: {
+ checkType: (0, _utils.validateType)("TSType"),
+ extendsType: (0, _utils.validateType)("TSType"),
+ trueType: (0, _utils.validateType)("TSType"),
+ falseType: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSInferType", {
+ aliases: ["TSType"],
+ visitor: ["typeParameter"],
+ fields: {
+ typeParameter: (0, _utils.validateType)("TSTypeParameter")
+ }
+});
+defineType("TSParenthesizedType", {
+ aliases: ["TSType"],
+ visitor: ["typeAnnotation"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSTypeOperator", {
+ aliases: ["TSType"],
+ visitor: ["typeAnnotation"],
+ builder: ["typeAnnotation", "operator"],
+ fields: {
+ operator: {
+ validate: (0, _utils.assertValueType)("string"),
+ default: "keyof"
+ },
+ typeAnnotation: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSIndexedAccessType", {
+ aliases: ["TSType"],
+ visitor: ["objectType", "indexType"],
+ fields: {
+ objectType: (0, _utils.validateType)("TSType"),
+ indexType: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSMappedType", {
+ aliases: ["TSType"],
+ visitor: ["typeParameter", "nameType", "typeAnnotation"],
+ builder: ["typeParameter", "typeAnnotation", "nameType"],
+ fields: Object.assign({}, {
+ typeParameter: (0, _utils.validateType)("TSTypeParameter")
+ }, {
+ readonly: (0, _utils.validateOptional)((0, _utils.assertOneOf)(true, false, "+", "-")),
+ optional: (0, _utils.validateOptional)((0, _utils.assertOneOf)(true, false, "+", "-")),
+ typeAnnotation: (0, _utils.validateOptionalType)("TSType"),
+ nameType: (0, _utils.validateOptionalType)("TSType")
+ })
+});
+defineType("TSTemplateLiteralType", {
+ aliases: ["TSType", "TSBaseType"],
+ visitor: ["quasis", "types"],
+ fields: {
+ quasis: (0, _utils.validateArrayOfType)("TemplateElement"),
+ types: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TSType")), function (node, key, val) {
+ if (node.quasis.length !== val.length + 1) {
+ throw new TypeError(`Number of ${node.type} quasis should be exactly one more than the number of types.\nExpected ${val.length + 1} quasis but got ${node.quasis.length}`);
+ }
+ })
+ }
+ }
+});
+defineType("TSLiteralType", {
+ aliases: ["TSType", "TSBaseType"],
+ visitor: ["literal"],
+ fields: {
+ literal: {
+ validate: function () {
+ const unaryExpression = (0, _utils.assertNodeType)("NumericLiteral", "BigIntLiteral");
+ const unaryOperator = (0, _utils.assertOneOf)("-");
+ const literal = (0, _utils.assertNodeType)("NumericLiteral", "StringLiteral", "BooleanLiteral", "BigIntLiteral", "TemplateLiteral");
+ const validator = function validator(parent, key, node) {
+ if ((0, _is.default)("UnaryExpression", node)) {
+ unaryOperator(node, "operator", node.operator);
+ unaryExpression(node, "argument", node.argument);
+ } else {
+ literal(parent, key, node);
+ }
+ };
+ validator.oneOfNodeTypes = ["NumericLiteral", "StringLiteral", "BooleanLiteral", "BigIntLiteral", "TemplateLiteral", "UnaryExpression"];
+ return validator;
+ }()
+ }
+ }
+});
+defineType("TSExpressionWithTypeArguments", {
+ aliases: ["TSType"],
+ visitor: ["expression", "typeParameters"],
+ fields: {
+ expression: (0, _utils.validateType)("TSEntityName"),
+ typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
+ }
+});
+defineType("TSInterfaceDeclaration", {
+ aliases: ["Statement", "Declaration"],
+ visitor: ["id", "typeParameters", "extends", "body"],
+ fields: {
+ declare: (0, _utils.validateOptional)(bool),
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"),
+ extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("TSExpressionWithTypeArguments")),
+ body: (0, _utils.validateType)("TSInterfaceBody")
+ }
+});
+defineType("TSInterfaceBody", {
+ visitor: ["body"],
+ fields: {
+ body: (0, _utils.validateArrayOfType)("TSTypeElement")
+ }
+});
+defineType("TSTypeAliasDeclaration", {
+ aliases: ["Statement", "Declaration"],
+ visitor: ["id", "typeParameters", "typeAnnotation"],
+ fields: {
+ declare: (0, _utils.validateOptional)(bool),
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"),
+ typeAnnotation: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSInstantiationExpression", {
+ aliases: ["Expression"],
+ visitor: ["expression", "typeParameters"],
+ fields: {
+ expression: (0, _utils.validateType)("Expression"),
+ ["typeParameters"]: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
+ }
+});
+const TSTypeExpression = {
+ aliases: ["Expression", "LVal", "PatternLike"],
+ visitor: ["expression", "typeAnnotation"],
+ fields: {
+ expression: (0, _utils.validateType)("Expression"),
+ typeAnnotation: (0, _utils.validateType)("TSType")
+ }
+};
+defineType("TSAsExpression", TSTypeExpression);
+defineType("TSSatisfiesExpression", TSTypeExpression);
+defineType("TSTypeAssertion", {
+ aliases: ["Expression", "LVal", "PatternLike"],
+ visitor: ["typeAnnotation", "expression"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("TSType"),
+ expression: (0, _utils.validateType)("Expression")
+ }
+});
+defineType("TSEnumBody", {
+ visitor: ["members"],
+ fields: {
+ members: (0, _utils.validateArrayOfType)("TSEnumMember")
+ }
+});
+defineType("TSEnumDeclaration", {
+ aliases: ["Statement", "Declaration"],
+ visitor: ["id", "members"],
+ fields: {
+ declare: (0, _utils.validateOptional)(bool),
+ const: (0, _utils.validateOptional)(bool),
+ id: (0, _utils.validateType)("Identifier"),
+ members: (0, _utils.validateArrayOfType)("TSEnumMember"),
+ initializer: (0, _utils.validateOptionalType)("Expression"),
+ body: (0, _utils.validateOptionalType)("TSEnumBody")
+ }
+});
+defineType("TSEnumMember", {
+ visitor: ["id", "initializer"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier", "StringLiteral"),
+ initializer: (0, _utils.validateOptionalType)("Expression")
+ }
+});
+defineType("TSModuleDeclaration", {
+ aliases: ["Statement", "Declaration"],
+ visitor: ["id", "body"],
+ fields: Object.assign({
+ kind: {
+ validate: (0, _utils.assertOneOf)("global", "module", "namespace")
+ },
+ declare: (0, _utils.validateOptional)(bool)
+ }, {
+ global: (0, _utils.validateOptional)(bool)
+ }, {
+ id: (0, _utils.validateType)("Identifier", "StringLiteral"),
+ body: (0, _utils.validateType)("TSModuleBlock", "TSModuleDeclaration")
+ })
+});
+defineType("TSModuleBlock", {
+ aliases: ["Scopable", "Block", "BlockParent", "FunctionParent"],
+ visitor: ["body"],
+ fields: {
+ body: (0, _utils.validateArrayOfType)("Statement")
+ }
+});
+defineType("TSImportType", {
+ aliases: ["TSType"],
+ builder: ["argument", "qualifier", "typeParameters"],
+ visitor: ["argument", "options", "qualifier", "typeParameters"],
+ fields: Object.assign({}, {
+ argument: (0, _utils.validateType)("StringLiteral")
+ }, {
+ qualifier: (0, _utils.validateOptionalType)("TSEntityName")
+ }, {
+ typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
+ }, {
+ options: {
+ validate: (0, _utils.assertNodeType)("ObjectExpression"),
+ optional: true
+ }
+ })
+});
+defineType("TSImportEqualsDeclaration", {
+ aliases: ["Statement", "Declaration"],
+ visitor: ["id", "moduleReference"],
+ fields: Object.assign({}, {
+ isExport: (0, _utils.validate)(bool)
+ }, {
+ id: (0, _utils.validateType)("Identifier"),
+ moduleReference: (0, _utils.validateType)("TSEntityName", "TSExternalModuleReference"),
+ importKind: {
+ validate: (0, _utils.assertOneOf)("type", "value"),
+ optional: true
+ }
+ })
+});
+defineType("TSExternalModuleReference", {
+ visitor: ["expression"],
+ fields: {
+ expression: (0, _utils.validateType)("StringLiteral")
+ }
+});
+defineType("TSNonNullExpression", {
+ aliases: ["Expression", "LVal", "PatternLike"],
+ visitor: ["expression"],
+ fields: {
+ expression: (0, _utils.validateType)("Expression")
+ }
+});
+defineType("TSExportAssignment", {
+ aliases: ["Statement"],
+ visitor: ["expression"],
+ fields: {
+ expression: (0, _utils.validateType)("Expression")
+ }
+});
+defineType("TSNamespaceExportDeclaration", {
+ aliases: ["Statement"],
+ visitor: ["id"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier")
+ }
+});
+defineType("TSTypeAnnotation", {
+ visitor: ["typeAnnotation"],
+ fields: {
+ typeAnnotation: {
+ validate: (0, _utils.assertNodeType)("TSType")
+ }
+ }
+});
+defineType("TSTypeParameterInstantiation", {
+ visitor: ["params"],
+ fields: {
+ params: (0, _utils.validateArrayOfType)("TSType")
+ }
+});
+defineType("TSTypeParameterDeclaration", {
+ visitor: ["params"],
+ fields: {
+ params: (0, _utils.validateArrayOfType)("TSTypeParameter")
+ }
+});
+defineType("TSTypeParameter", {
+ builder: ["constraint", "default", "name"],
+ visitor: ["constraint", "default"],
+ fields: {
+ name: {
+ validate: (0, _utils.assertValueType)("string")
+ },
+ in: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ out: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ const: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ constraint: {
+ validate: (0, _utils.assertNodeType)("TSType"),
+ optional: true
+ },
+ default: {
+ validate: (0, _utils.assertNodeType)("TSType"),
+ optional: true
+ }
+ }
+});
+
+//# sourceMappingURL=typescript.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/definitions/typescript.js.map b/vanilla/node_modules/@babel/types/lib/definitions/typescript.js.map
new file mode 100644
index 0000000..6ec163b
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/definitions/typescript.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_utils","require","_core","_is","defineType","defineAliasedType","bool","assertValueType","tSFunctionTypeAnnotationCommon","returnType","validate","assertNodeType","optional","typeParameters","aliases","visitor","fields","accessibility","assertOneOf","readonly","parameter","override","decorators","arrayOfType","Object","assign","functionDeclarationCommon","classMethodOrPropertyUnionShapeCommon","classMethodOrDeclareMethodCommon","left","validateType","right","signatureDeclarationCommon","validateOptionalType","validateArrayOfType","callConstructSignatureDeclaration","namedTypeElementCommon","key","computed","default","validateOptional","typeAnnotation","kind","static","parameters","tsKeywordTypes","type","fnOrCtrBase","abstract","typeName","builder","parameterName","asserts","exprName","members","elementType","elementTypes","label","unionOrIntersection","types","checkType","extendsType","trueType","falseType","typeParameter","operator","objectType","indexType","nameType","quasis","chain","assertEach","node","val","length","TypeError","literal","unaryExpression","unaryOperator","validator","parent","is","argument","oneOfNodeTypes","expression","declare","id","extends","body","TSTypeExpression","const","initializer","global","qualifier","options","isExport","moduleReference","importKind","params","name","in","out","constraint"],"sources":["../../src/definitions/typescript.ts"],"sourcesContent":["import type * as t from \"../index.ts\";\nimport {\n defineAliasedType,\n arrayOfType,\n assertEach,\n assertNodeType,\n assertOneOf,\n assertValueType,\n chain,\n validate,\n validateArrayOfType,\n validateOptional,\n validateOptionalType,\n validateType,\n type ValidatorImpl,\n type ValidatorOneOfNodeTypes,\n} from \"./utils.ts\";\nimport {\n functionDeclarationCommon,\n classMethodOrDeclareMethodCommon,\n classMethodOrPropertyUnionShapeCommon,\n} from \"./core.ts\";\nimport is from \"../validators/is.ts\";\n\nconst defineType = defineAliasedType(\"TypeScript\");\n\nconst bool = assertValueType(\"boolean\");\n\nconst tSFunctionTypeAnnotationCommon = () => ({\n returnType: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\"TSTypeAnnotation\")\n : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n assertNodeType(\"TSTypeAnnotation\", \"Noop\"),\n optional: true,\n },\n typeParameters: {\n validate: process.env.BABEL_8_BREAKING\n ? assertNodeType(\"TSTypeParameterDeclaration\")\n : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n assertNodeType(\"TSTypeParameterDeclaration\", \"Noop\"),\n optional: true,\n },\n});\n\ndefineType(\"TSParameterProperty\", {\n aliases: process.env.BABEL_8_BREAKING ? [] : [\"LVal\"],\n visitor: [\"parameter\"],\n fields: {\n accessibility: {\n validate: assertOneOf(\"public\", \"private\", \"protected\"),\n optional: true,\n },\n readonly: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n parameter: {\n validate: assertNodeType(\"Identifier\", \"AssignmentPattern\"),\n },\n override: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n decorators: {\n validate: arrayOfType(\"Decorator\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"TSDeclareFunction\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"params\", \"returnType\"],\n fields: {\n ...functionDeclarationCommon(),\n ...tSFunctionTypeAnnotationCommon(),\n },\n});\n\ndefineType(\"TSDeclareMethod\", {\n visitor: [\"decorators\", \"key\", \"typeParameters\", \"params\", \"returnType\"],\n ...classMethodOrPropertyUnionShapeCommon(),\n fields: {\n ...classMethodOrDeclareMethodCommon(),\n ...tSFunctionTypeAnnotationCommon(),\n },\n});\n\ndefineType(\"TSQualifiedName\", {\n aliases: [\"TSEntityName\"],\n visitor: [\"left\", \"right\"],\n fields: {\n left: validateType(\"TSEntityName\"),\n right: validateType(\"Identifier\"),\n },\n});\n\nconst signatureDeclarationCommon = () => ({\n typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n [process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\"]: validateArrayOfType(\n \"ArrayPattern\",\n \"Identifier\",\n \"ObjectPattern\",\n \"RestElement\",\n ),\n [process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\"]:\n validateOptionalType(\"TSTypeAnnotation\"),\n});\n\nconst callConstructSignatureDeclaration = {\n aliases: [\"TSTypeElement\"],\n visitor: [\n \"typeParameters\",\n process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n ],\n fields: signatureDeclarationCommon(),\n};\n\ndefineType(\"TSCallSignatureDeclaration\", callConstructSignatureDeclaration);\ndefineType(\n \"TSConstructSignatureDeclaration\",\n callConstructSignatureDeclaration,\n);\n\nconst namedTypeElementCommon = () => ({\n key: validateType(\"Expression\"),\n computed: { default: false },\n optional: validateOptional(bool),\n});\n\ndefineType(\"TSPropertySignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\"key\", \"typeAnnotation\"],\n fields: {\n ...namedTypeElementCommon(),\n readonly: validateOptional(bool),\n typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n kind: {\n optional: true,\n validate: assertOneOf(\"get\", \"set\"),\n },\n },\n});\n\ndefineType(\"TSMethodSignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\n \"key\",\n \"typeParameters\",\n process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n ],\n fields: {\n ...signatureDeclarationCommon(),\n ...namedTypeElementCommon(),\n kind: {\n validate: assertOneOf(\"method\", \"get\", \"set\"),\n },\n },\n});\n\ndefineType(\"TSIndexSignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\"parameters\", \"typeAnnotation\"],\n fields: {\n readonly: validateOptional(bool),\n static: validateOptional(bool),\n parameters: validateArrayOfType(\"Identifier\"), // Length must be 1\n typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n },\n});\n\nconst tsKeywordTypes = [\n \"TSAnyKeyword\",\n \"TSBooleanKeyword\",\n \"TSBigIntKeyword\",\n \"TSIntrinsicKeyword\",\n \"TSNeverKeyword\",\n \"TSNullKeyword\",\n \"TSNumberKeyword\",\n \"TSObjectKeyword\",\n \"TSStringKeyword\",\n \"TSSymbolKeyword\",\n \"TSUndefinedKeyword\",\n \"TSUnknownKeyword\",\n \"TSVoidKeyword\",\n] as const;\n\nfor (const type of tsKeywordTypes) {\n defineType(type, {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [],\n fields: {},\n });\n}\n\ndefineType(\"TSThisType\", {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [],\n fields: {},\n});\n\nconst fnOrCtrBase = {\n aliases: [\"TSType\"],\n visitor: [\n \"typeParameters\",\n process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n ],\n};\n\ndefineType(\"TSFunctionType\", {\n ...fnOrCtrBase,\n fields: signatureDeclarationCommon(),\n});\ndefineType(\"TSConstructorType\", {\n ...fnOrCtrBase,\n fields: {\n ...signatureDeclarationCommon(),\n abstract: validateOptional(bool),\n },\n});\n\ndefineType(\"TSTypeReference\", {\n aliases: [\"TSType\"],\n visitor: [\n \"typeName\",\n process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\",\n ],\n fields: {\n typeName: validateType(\"TSEntityName\"),\n [process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\"]:\n validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\ndefineType(\"TSTypePredicate\", {\n aliases: [\"TSType\"],\n visitor: [\"parameterName\", \"typeAnnotation\"],\n builder: [\"parameterName\", \"typeAnnotation\", \"asserts\"],\n fields: {\n parameterName: validateType(\"Identifier\", \"TSThisType\"),\n typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n asserts: validateOptional(bool),\n },\n});\n\ndefineType(\"TSTypeQuery\", {\n aliases: [\"TSType\"],\n visitor: [\n \"exprName\",\n process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\",\n ],\n fields: {\n exprName: validateType(\"TSEntityName\", \"TSImportType\"),\n [process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\"]:\n validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\ndefineType(\"TSTypeLiteral\", {\n aliases: [\"TSType\"],\n visitor: [\"members\"],\n fields: {\n members: validateArrayOfType(\"TSTypeElement\"),\n },\n});\n\ndefineType(\"TSArrayType\", {\n aliases: [\"TSType\"],\n visitor: [\"elementType\"],\n fields: {\n elementType: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSTupleType\", {\n aliases: [\"TSType\"],\n visitor: [\"elementTypes\"],\n fields: {\n elementTypes: validateArrayOfType(\"TSType\", \"TSNamedTupleMember\"),\n },\n});\n\ndefineType(\"TSOptionalType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSRestType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSNamedTupleMember\", {\n visitor: [\"label\", \"elementType\"],\n builder: [\"label\", \"elementType\", \"optional\"],\n fields: {\n label: validateType(\"Identifier\"),\n optional: {\n validate: bool,\n default: false,\n },\n elementType: validateType(\"TSType\"),\n },\n});\n\nconst unionOrIntersection = {\n aliases: [\"TSType\"],\n visitor: [\"types\"],\n fields: {\n types: validateArrayOfType(\"TSType\"),\n },\n};\n\ndefineType(\"TSUnionType\", unionOrIntersection);\ndefineType(\"TSIntersectionType\", unionOrIntersection);\n\ndefineType(\"TSConditionalType\", {\n aliases: [\"TSType\"],\n visitor: [\"checkType\", \"extendsType\", \"trueType\", \"falseType\"],\n fields: {\n checkType: validateType(\"TSType\"),\n extendsType: validateType(\"TSType\"),\n trueType: validateType(\"TSType\"),\n falseType: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSInferType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeParameter\"],\n fields: {\n typeParameter: validateType(\"TSTypeParameter\"),\n },\n});\n\ndefineType(\"TSParenthesizedType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSTypeOperator\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n builder: [\"typeAnnotation\", \"operator\"],\n fields: {\n operator: {\n validate: process.env.BABEL_8_BREAKING\n ? assertOneOf(\"keyof\", \"readonly\", \"unique\")\n : assertValueType(\"string\"),\n // \"keyof\" is not a good default, but as this field is required better\n // pick one. We need it for backwards compatibility with older versions\n // of Babel 7.\n default: process.env.BABEL_8_BREAKING ? undefined : \"keyof\",\n },\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSIndexedAccessType\", {\n aliases: [\"TSType\"],\n visitor: [\"objectType\", \"indexType\"],\n fields: {\n objectType: validateType(\"TSType\"),\n indexType: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSMappedType\", {\n aliases: [\"TSType\"],\n visitor: process.env.BABEL_8_BREAKING\n ? [\"key\", \"constraint\", \"nameType\", \"typeAnnotation\"]\n : [\"typeParameter\", \"nameType\", \"typeAnnotation\"],\n builder: process.env.BABEL_8_BREAKING\n ? [\"key\", \"constraint\", \"nameType\", \"typeAnnotation\"]\n : [\"typeParameter\", \"typeAnnotation\", \"nameType\"],\n fields: {\n ...(process.env.BABEL_8_BREAKING\n ? {\n key: validateType(\"Identifier\"),\n constraint: validateType(\"TSType\"),\n }\n : {\n typeParameter: validateType(\"TSTypeParameter\"),\n }),\n readonly: validateOptional(assertOneOf(true, false, \"+\", \"-\")),\n optional: validateOptional(assertOneOf(true, false, \"+\", \"-\")),\n typeAnnotation: validateOptionalType(\"TSType\"),\n nameType: validateOptionalType(\"TSType\"),\n },\n});\n\ndefineType(\"TSTemplateLiteralType\", {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [\"quasis\", \"types\"],\n fields: {\n quasis: validateArrayOfType(\"TemplateElement\"),\n types: {\n validate: chain(\n assertValueType(\"array\"),\n assertEach(assertNodeType(\"TSType\")),\n function (node: t.TSTemplateLiteralType, key, val) {\n if (node.quasis.length !== val.length + 1) {\n throw new TypeError(\n `Number of ${\n node.type\n } quasis should be exactly one more than the number of types.\\nExpected ${\n val.length + 1\n } quasis but got ${node.quasis.length}`,\n );\n }\n } satisfies ValidatorImpl,\n ),\n },\n },\n});\n\ndefineType(\"TSLiteralType\", {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [\"literal\"],\n fields: {\n literal: {\n validate: (function () {\n const unaryExpression = assertNodeType(\n \"NumericLiteral\",\n \"BigIntLiteral\",\n );\n const unaryOperator = assertOneOf(\"-\");\n\n const literal = assertNodeType(\n \"NumericLiteral\",\n \"StringLiteral\",\n \"BooleanLiteral\",\n \"BigIntLiteral\",\n \"TemplateLiteral\",\n );\n const validator: ValidatorOneOfNodeTypes = function validator(\n parent: t.Node,\n key: string,\n node: t.Node,\n ) {\n // type A = -1 | 1;\n if (is(\"UnaryExpression\", node)) {\n // check operator first\n unaryOperator(node, \"operator\", node.operator);\n unaryExpression(node, \"argument\", node.argument);\n } else {\n // type A = 'foo' | 'bar' | false | 1;\n literal(parent, key, node);\n }\n };\n\n validator.oneOfNodeTypes = [\n \"NumericLiteral\",\n \"StringLiteral\",\n \"BooleanLiteral\",\n \"BigIntLiteral\",\n \"TemplateLiteral\",\n \"UnaryExpression\",\n ];\n\n return validator;\n })(),\n },\n },\n});\n\nif (process.env.BABEL_8_BREAKING) {\n defineType(\"TSClassImplements\", {\n aliases: [\"TSType\"],\n visitor: [\"expression\", \"typeArguments\"],\n fields: {\n expression: validateType(\"Expression\"),\n typeArguments: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n });\n defineType(\"TSInterfaceHeritage\", {\n aliases: [\"TSType\"],\n visitor: [\"expression\", \"typeArguments\"],\n fields: {\n expression: validateType(\"Expression\"),\n typeArguments: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n });\n} else {\n defineType(\"TSExpressionWithTypeArguments\", {\n aliases: [\"TSType\"],\n visitor: [\"expression\", \"typeParameters\"],\n fields: {\n expression: validateType(\"TSEntityName\"),\n typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n });\n}\n\ndefineType(\"TSInterfaceDeclaration\", {\n // \"Statement\" alias prevents a semicolon from appearing after it in an export declaration.\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"extends\", \"body\"],\n fields: {\n declare: validateOptional(bool),\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n extends: validateOptional(\n arrayOfType(\n // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n process.env.BABEL_8_BREAKING\n ? \"TSClassImplements\"\n : \"TSExpressionWithTypeArguments\",\n ),\n ),\n body: validateType(\"TSInterfaceBody\"),\n },\n});\n\ndefineType(\"TSInterfaceBody\", {\n visitor: [\"body\"],\n fields: {\n body: validateArrayOfType(\"TSTypeElement\"),\n },\n});\n\ndefineType(\"TSTypeAliasDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"typeAnnotation\"],\n fields: {\n declare: validateOptional(bool),\n id: validateType(\"Identifier\"),\n typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n typeAnnotation: validateType(\"TSType\"),\n },\n});\n\ndefineType(\"TSInstantiationExpression\", {\n aliases: [\"Expression\"],\n visitor: process.env.BABEL_8_BREAKING\n ? [\"expression\", \"typeArguments\"]\n : [\"expression\", \"typeParameters\"],\n fields: {\n expression: validateType(\"Expression\"),\n [process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\"]:\n validateOptionalType(\"TSTypeParameterInstantiation\"),\n },\n});\n\nconst TSTypeExpression = {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"expression\", \"typeAnnotation\"],\n fields: {\n expression: validateType(\"Expression\"),\n typeAnnotation: validateType(\"TSType\"),\n },\n};\n\ndefineType(\"TSAsExpression\", TSTypeExpression);\ndefineType(\"TSSatisfiesExpression\", TSTypeExpression);\n\ndefineType(\"TSTypeAssertion\", {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"typeAnnotation\", \"expression\"],\n fields: {\n typeAnnotation: validateType(\"TSType\"),\n expression: validateType(\"Expression\"),\n },\n});\n\ndefineType(\"TSEnumBody\", {\n visitor: [\"members\"],\n fields: {\n members: validateArrayOfType(\"TSEnumMember\"),\n },\n});\n\nif (process.env.BABEL_8_BREAKING) {\n defineType(\"TSEnumDeclaration\", {\n // \"Statement\" alias prevents a semicolon from appearing after it in an export declaration.\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"body\"],\n fields: {\n declare: validateOptional(bool),\n const: validateOptional(bool),\n id: validateType(\"Identifier\"),\n // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n body: validateType(\"TSEnumBody\"),\n },\n });\n} else {\n defineType(\"TSEnumDeclaration\", {\n // \"Statement\" alias prevents a semicolon from appearing after it in an export declaration.\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"members\"],\n fields: {\n declare: validateOptional(bool),\n const: validateOptional(bool),\n id: validateType(\"Identifier\"),\n members: validateArrayOfType(\"TSEnumMember\"),\n initializer: validateOptionalType(\"Expression\"),\n body: validateOptionalType(\"TSEnumBody\"),\n },\n });\n}\n\ndefineType(\"TSEnumMember\", {\n visitor: [\"id\", \"initializer\"],\n fields: {\n id: validateType(\"Identifier\", \"StringLiteral\"),\n initializer: validateOptionalType(\"Expression\"),\n },\n});\n\ndefineType(\"TSModuleDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"body\"],\n fields: {\n kind: {\n validate: assertOneOf(\"global\", \"module\", \"namespace\"),\n },\n declare: validateOptional(bool),\n ...(!process.env.BABEL_8_BREAKING && { global: validateOptional(bool) }),\n id: process.env.BABEL_8_BREAKING\n ? validateType(\"TSEntityName\", \"StringLiteral\")\n : validateType(\"Identifier\", \"StringLiteral\"),\n body: process.env.BABEL_8_BREAKING\n ? validateType(\"TSModuleBlock\")\n : validateType(\"TSModuleBlock\", \"TSModuleDeclaration\"),\n },\n});\n\ndefineType(\"TSModuleBlock\", {\n aliases: [\"Scopable\", \"Block\", \"BlockParent\", \"FunctionParent\"],\n visitor: [\"body\"],\n fields: {\n body: validateArrayOfType(\"Statement\"),\n },\n});\n\ndefineType(\"TSImportType\", {\n aliases: [\"TSType\"],\n builder: [\n process.env.BABEL_8_BREAKING ? \"source\" : \"argument\",\n \"qualifier\",\n process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\",\n ],\n visitor: [\n process.env.BABEL_8_BREAKING ? \"source\" : \"argument\",\n \"options\",\n \"qualifier\",\n process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\",\n ],\n fields: {\n ...(process.env.BABEL_8_BREAKING\n ? { source: validateType(\"StringLiteral\") }\n : { argument: validateType(\"StringLiteral\") }),\n qualifier: validateOptionalType(\"TSEntityName\"),\n ...(process.env.BABEL_8_BREAKING\n ? {\n typeArguments: validateOptionalType(\"TSTypeParameterInstantiation\"),\n }\n : {\n typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n }),\n options: {\n validate: assertNodeType(\"ObjectExpression\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"TSImportEqualsDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"moduleReference\"],\n fields: {\n ...(process.env.BABEL_8_BREAKING ? {} : { isExport: validate(bool) }),\n id: validateType(\"Identifier\"),\n moduleReference: validateType(\"TSEntityName\", \"TSExternalModuleReference\"),\n importKind: {\n validate: assertOneOf(\"type\", \"value\"),\n optional: true,\n },\n },\n});\n\ndefineType(\"TSExternalModuleReference\", {\n visitor: [\"expression\"],\n fields: {\n expression: validateType(\"StringLiteral\"),\n },\n});\n\ndefineType(\"TSNonNullExpression\", {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"expression\"],\n fields: {\n expression: validateType(\"Expression\"),\n },\n});\n\ndefineType(\"TSExportAssignment\", {\n aliases: [\"Statement\"],\n visitor: [\"expression\"],\n fields: {\n expression: validateType(\"Expression\"),\n },\n});\n\ndefineType(\"TSNamespaceExportDeclaration\", {\n aliases: [\"Statement\"],\n visitor: [\"id\"],\n fields: {\n id: validateType(\"Identifier\"),\n },\n});\n\ndefineType(\"TSTypeAnnotation\", {\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: {\n validate: assertNodeType(\"TSType\"),\n },\n },\n});\n\ndefineType(\"TSTypeParameterInstantiation\", {\n visitor: [\"params\"],\n fields: {\n params: validateArrayOfType(\"TSType\"),\n },\n});\n\ndefineType(\"TSTypeParameterDeclaration\", {\n visitor: [\"params\"],\n fields: {\n params: validateArrayOfType(\"TSTypeParameter\"),\n },\n});\n\ndefineType(\"TSTypeParameter\", {\n builder: [\"constraint\", \"default\", \"name\"],\n visitor: process.env.BABEL_8_BREAKING\n ? [\"name\", \"constraint\", \"default\"]\n : [\"constraint\", \"default\"],\n fields: {\n name: {\n validate: !process.env.BABEL_8_BREAKING\n ? assertValueType(\"string\")\n : assertNodeType(\"Identifier\"),\n },\n in: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n out: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n const: {\n validate: assertValueType(\"boolean\"),\n optional: true,\n },\n constraint: {\n validate: assertNodeType(\"TSType\"),\n optional: true,\n },\n default: {\n validate: assertNodeType(\"TSType\"),\n optional: true,\n },\n },\n});\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/definitions/utils.js b/vanilla/node_modules/@babel/types/lib/definitions/utils.js
new file mode 100644
index 0000000..ec7c094
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/definitions/utils.js
@@ -0,0 +1,296 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.allExpandedTypes = exports.VISITOR_KEYS = exports.NODE_UNION_SHAPES__PRIVATE = exports.NODE_PARENT_VALIDATIONS = exports.NODE_FIELDS = exports.FLIPPED_ALIAS_KEYS = exports.DEPRECATED_KEYS = exports.BUILDER_KEYS = exports.ALIAS_KEYS = void 0;
+exports.arrayOf = arrayOf;
+exports.arrayOfType = arrayOfType;
+exports.assertEach = assertEach;
+exports.assertNodeOrValueType = assertNodeOrValueType;
+exports.assertNodeType = assertNodeType;
+exports.assertOneOf = assertOneOf;
+exports.assertOptionalChainStart = assertOptionalChainStart;
+exports.assertShape = assertShape;
+exports.assertValueType = assertValueType;
+exports.chain = chain;
+exports.default = defineType;
+exports.defineAliasedType = defineAliasedType;
+exports.validate = validate;
+exports.validateArrayOfType = validateArrayOfType;
+exports.validateOptional = validateOptional;
+exports.validateOptionalType = validateOptionalType;
+exports.validateType = validateType;
+var _is = require("../validators/is.js");
+var _validate = require("../validators/validate.js");
+const VISITOR_KEYS = exports.VISITOR_KEYS = {};
+const ALIAS_KEYS = exports.ALIAS_KEYS = {};
+const FLIPPED_ALIAS_KEYS = exports.FLIPPED_ALIAS_KEYS = {};
+const NODE_FIELDS = exports.NODE_FIELDS = {};
+const BUILDER_KEYS = exports.BUILDER_KEYS = {};
+const DEPRECATED_KEYS = exports.DEPRECATED_KEYS = {};
+const NODE_PARENT_VALIDATIONS = exports.NODE_PARENT_VALIDATIONS = {};
+const NODE_UNION_SHAPES__PRIVATE = exports.NODE_UNION_SHAPES__PRIVATE = {};
+function getType(val) {
+ if (Array.isArray(val)) {
+ return "array";
+ } else if (val === null) {
+ return "null";
+ } else {
+ return typeof val;
+ }
+}
+function validate(validate) {
+ return {
+ validate
+ };
+}
+function validateType(...typeNames) {
+ return validate(assertNodeType(...typeNames));
+}
+function validateOptional(validate) {
+ return {
+ validate,
+ optional: true
+ };
+}
+function validateOptionalType(...typeNames) {
+ return {
+ validate: assertNodeType(...typeNames),
+ optional: true
+ };
+}
+function arrayOf(elementType) {
+ return chain(assertValueType("array"), assertEach(elementType));
+}
+function arrayOfType(...typeNames) {
+ return arrayOf(assertNodeType(...typeNames));
+}
+function validateArrayOfType(...typeNames) {
+ return validate(arrayOfType(...typeNames));
+}
+function assertEach(callback) {
+ const childValidator = process.env.BABEL_TYPES_8_BREAKING ? _validate.validateChild : () => {};
+ function validator(node, key, val) {
+ if (!Array.isArray(val)) return;
+ let i = 0;
+ const subKey = {
+ toString() {
+ return `${key}[${i}]`;
+ }
+ };
+ for (; i < val.length; i++) {
+ const v = val[i];
+ callback(node, subKey, v);
+ childValidator(node, subKey, v);
+ }
+ }
+ validator.each = callback;
+ return validator;
+}
+function assertOneOf(...values) {
+ function validate(node, key, val) {
+ if (!values.includes(val)) {
+ throw new TypeError(`Property ${key} expected value to be one of ${JSON.stringify(values)} but got ${JSON.stringify(val)}`);
+ }
+ }
+ validate.oneOf = values;
+ return validate;
+}
+const allExpandedTypes = exports.allExpandedTypes = [];
+function assertNodeType(...types) {
+ const expandedTypes = new Set();
+ allExpandedTypes.push({
+ types,
+ set: expandedTypes
+ });
+ function validate(node, key, val) {
+ const valType = val == null ? void 0 : val.type;
+ if (valType != null) {
+ if (expandedTypes.has(valType)) {
+ (0, _validate.validateChild)(node, key, val);
+ return;
+ }
+ if (valType === "Placeholder") {
+ for (const type of types) {
+ if ((0, _is.default)(type, val)) {
+ (0, _validate.validateChild)(node, key, val);
+ return;
+ }
+ }
+ }
+ }
+ throw new TypeError(`Property ${key} of ${node.type} expected node to be of a type ${JSON.stringify(types)} but instead got ${JSON.stringify(valType)}`);
+ }
+ validate.oneOfNodeTypes = types;
+ return validate;
+}
+function assertNodeOrValueType(...types) {
+ function validate(node, key, val) {
+ const primitiveType = getType(val);
+ for (const type of types) {
+ if (primitiveType === type || (0, _is.default)(type, val)) {
+ (0, _validate.validateChild)(node, key, val);
+ return;
+ }
+ }
+ throw new TypeError(`Property ${key} of ${node.type} expected node to be of a type ${JSON.stringify(types)} but instead got ${JSON.stringify(val == null ? void 0 : val.type)}`);
+ }
+ validate.oneOfNodeOrValueTypes = types;
+ return validate;
+}
+function assertValueType(type) {
+ function validate(node, key, val) {
+ if (getType(val) === type) {
+ return;
+ }
+ throw new TypeError(`Property ${key} expected type of ${type} but got ${getType(val)}`);
+ }
+ validate.type = type;
+ return validate;
+}
+function assertShape(shape) {
+ const keys = Object.keys(shape);
+ function validate(node, key, val) {
+ const errors = [];
+ for (const property of keys) {
+ try {
+ (0, _validate.validateField)(node, property, val[property], shape[property]);
+ } catch (error) {
+ if (error instanceof TypeError) {
+ errors.push(error.message);
+ continue;
+ }
+ throw error;
+ }
+ }
+ if (errors.length) {
+ throw new TypeError(`Property ${key} of ${node.type} expected to have the following:\n${errors.join("\n")}`);
+ }
+ }
+ validate.shapeOf = shape;
+ return validate;
+}
+function assertOptionalChainStart() {
+ function validate(node) {
+ var _current;
+ let current = node;
+ while (node) {
+ const {
+ type
+ } = current;
+ if (type === "OptionalCallExpression") {
+ if (current.optional) return;
+ current = current.callee;
+ continue;
+ }
+ if (type === "OptionalMemberExpression") {
+ if (current.optional) return;
+ current = current.object;
+ continue;
+ }
+ break;
+ }
+ throw new TypeError(`Non-optional ${node.type} must chain from an optional OptionalMemberExpression or OptionalCallExpression. Found chain from ${(_current = current) == null ? void 0 : _current.type}`);
+ }
+ return validate;
+}
+function chain(...fns) {
+ function validate(...args) {
+ for (const fn of fns) {
+ fn(...args);
+ }
+ }
+ validate.chainOf = fns;
+ if (fns.length >= 2 && "type" in fns[0] && fns[0].type === "array" && !("each" in fns[1])) {
+ throw new Error(`An assertValueType("array") validator can only be followed by an assertEach(...) validator.`);
+ }
+ return validate;
+}
+const validTypeOpts = new Set(["aliases", "builder", "deprecatedAlias", "fields", "inherits", "visitor", "validate", "unionShape"]);
+const validFieldKeys = new Set(["default", "optional", "deprecated", "validate"]);
+const store = {};
+function defineAliasedType(...aliases) {
+ return (type, opts = {}) => {
+ let defined = opts.aliases;
+ if (!defined) {
+ var _store$opts$inherits$;
+ if (opts.inherits) defined = (_store$opts$inherits$ = store[opts.inherits].aliases) == null ? void 0 : _store$opts$inherits$.slice();
+ defined != null ? defined : defined = [];
+ opts.aliases = defined;
+ }
+ const additional = aliases.filter(a => !defined.includes(a));
+ defined.unshift(...additional);
+ defineType(type, opts);
+ };
+}
+function defineType(type, opts = {}) {
+ const inherits = opts.inherits && store[opts.inherits] || {};
+ let fields = opts.fields;
+ if (!fields) {
+ fields = {};
+ if (inherits.fields) {
+ const keys = Object.getOwnPropertyNames(inherits.fields);
+ for (const key of keys) {
+ const field = inherits.fields[key];
+ const def = field.default;
+ if (Array.isArray(def) ? def.length > 0 : def && typeof def === "object") {
+ throw new Error("field defaults can only be primitives or empty arrays currently");
+ }
+ fields[key] = {
+ default: Array.isArray(def) ? [] : def,
+ optional: field.optional,
+ deprecated: field.deprecated,
+ validate: field.validate
+ };
+ }
+ }
+ }
+ const visitor = opts.visitor || inherits.visitor || [];
+ const aliases = opts.aliases || inherits.aliases || [];
+ const builder = opts.builder || inherits.builder || opts.visitor || [];
+ for (const k of Object.keys(opts)) {
+ if (!validTypeOpts.has(k)) {
+ throw new Error(`Unknown type option "${k}" on ${type}`);
+ }
+ }
+ if (opts.deprecatedAlias) {
+ DEPRECATED_KEYS[opts.deprecatedAlias] = type;
+ }
+ for (const key of visitor.concat(builder)) {
+ fields[key] = fields[key] || {};
+ }
+ for (const key of Object.keys(fields)) {
+ const field = fields[key];
+ if (field.default !== undefined && !builder.includes(key)) {
+ field.optional = true;
+ }
+ if (field.default === undefined) {
+ field.default = null;
+ } else if (!field.validate && field.default != null) {
+ field.validate = assertValueType(getType(field.default));
+ }
+ for (const k of Object.keys(field)) {
+ if (!validFieldKeys.has(k)) {
+ throw new Error(`Unknown field key "${k}" on ${type}.${key}`);
+ }
+ }
+ }
+ VISITOR_KEYS[type] = opts.visitor = visitor;
+ BUILDER_KEYS[type] = opts.builder = builder;
+ NODE_FIELDS[type] = opts.fields = fields;
+ ALIAS_KEYS[type] = opts.aliases = aliases;
+ aliases.forEach(alias => {
+ FLIPPED_ALIAS_KEYS[alias] = FLIPPED_ALIAS_KEYS[alias] || [];
+ FLIPPED_ALIAS_KEYS[alias].push(type);
+ });
+ if (opts.validate) {
+ NODE_PARENT_VALIDATIONS[type] = opts.validate;
+ }
+ if (opts.unionShape) {
+ NODE_UNION_SHAPES__PRIVATE[type] = opts.unionShape;
+ }
+ store[type] = opts;
+}
+
+//# sourceMappingURL=utils.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/definitions/utils.js.map b/vanilla/node_modules/@babel/types/lib/definitions/utils.js.map
new file mode 100644
index 0000000..c78a7e5
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/definitions/utils.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_is","require","_validate","VISITOR_KEYS","exports","ALIAS_KEYS","FLIPPED_ALIAS_KEYS","NODE_FIELDS","BUILDER_KEYS","DEPRECATED_KEYS","NODE_PARENT_VALIDATIONS","NODE_UNION_SHAPES__PRIVATE","getType","val","Array","isArray","validate","validateType","typeNames","assertNodeType","validateOptional","optional","validateOptionalType","arrayOf","elementType","chain","assertValueType","assertEach","arrayOfType","validateArrayOfType","callback","childValidator","process","env","BABEL_TYPES_8_BREAKING","validateChild","validator","node","key","i","subKey","toString","length","v","each","assertOneOf","values","includes","TypeError","JSON","stringify","oneOf","allExpandedTypes","types","expandedTypes","Set","push","set","valType","type","has","is","oneOfNodeTypes","assertNodeOrValueType","primitiveType","oneOfNodeOrValueTypes","assertShape","shape","keys","Object","errors","property","validateField","error","message","join","shapeOf","assertOptionalChainStart","_current","current","callee","object","fns","args","fn","chainOf","Error","validTypeOpts","validFieldKeys","store","defineAliasedType","aliases","opts","defined","_store$opts$inherits$","inherits","slice","additional","filter","a","unshift","defineType","fields","getOwnPropertyNames","field","def","default","deprecated","visitor","builder","k","deprecatedAlias","concat","undefined","forEach","alias","unionShape"],"sources":["../../src/definitions/utils.ts"],"sourcesContent":["import is from \"../validators/is.ts\";\nimport { validateField, validateChild } from \"../validators/validate.ts\";\nimport type * as t from \"../index.ts\";\n\nexport const VISITOR_KEYS: Record<string, string[]> = {};\nexport const ALIAS_KEYS: Partial<Record<NodeTypesWithoutComment, string[]>> =\n {};\nexport const FLIPPED_ALIAS_KEYS: Record<string, NodeTypesWithoutComment[]> = {};\nexport const NODE_FIELDS: Record<string, FieldDefinitions> = {};\nexport const BUILDER_KEYS: Record<string, string[]> = {};\nexport const DEPRECATED_KEYS: Record<string, NodeTypesWithoutComment> = {};\nexport const NODE_PARENT_VALIDATIONS: Record<string, Validator> = {};\nexport const NODE_UNION_SHAPES__PRIVATE: Record<string, UnionShape> = {};\n\nfunction getType(val: any) {\n if (Array.isArray(val)) {\n return \"array\";\n } else if (val === null) {\n return \"null\";\n } else {\n return typeof val;\n }\n}\n\ntype NodeTypesWithoutComment = t.Node[\"type\"] | keyof t.Aliases;\n\ntype NodeTypes = NodeTypesWithoutComment | t.Comment[\"type\"];\n\ntype PrimitiveTypes = ReturnType<typeof getType>;\n\ntype FieldDefinitions = Record<string, FieldOptions>;\n\ntype UnionShape = {\n discriminator: string;\n shapes: {\n name: string;\n value: any[];\n properties: Record<string, FieldOptions>;\n }[];\n};\n\ntype DefineTypeOpts = {\n fields?: FieldDefinitions;\n visitor?: string[];\n aliases?: string[];\n builder?: string[];\n inherits?: NodeTypes;\n deprecatedAlias?: string;\n validate?: Validator;\n unionShape?: UnionShape;\n};\n\nexport type ValidatorImpl = (\n node?: t.Node,\n key?: string | { toString(): string },\n val?: any,\n) => void;\n\nexport type ValidatorType = { type: PrimitiveTypes } & ValidatorImpl;\nexport type ValidatorEach = { each: Validator } & ValidatorImpl;\nexport type ValidatorChainOf = {\n chainOf: readonly Validator[];\n} & ValidatorImpl;\nexport type ValidatorOneOf = { oneOf: readonly any[] } & ValidatorImpl;\nexport type ValidatorOneOfNodeTypes = {\n oneOfNodeTypes: readonly NodeTypes[];\n} & ValidatorImpl;\nexport type ValidatorOneOfNodeOrValueTypes = {\n oneOfNodeOrValueTypes: readonly (NodeTypes | PrimitiveTypes)[];\n} & ValidatorImpl;\nexport type ValidatorShapeOf = {\n shapeOf: Record<string, FieldOptions>;\n} & ValidatorImpl;\n\nexport type Validator =\n | ValidatorType\n | ValidatorEach\n | ValidatorChainOf\n | ValidatorOneOf\n | ValidatorOneOfNodeTypes\n | ValidatorOneOfNodeOrValueTypes\n | ValidatorShapeOf\n | ValidatorImpl;\n\nexport type FieldOptions = {\n default?: string | number | boolean | [];\n optional?: boolean;\n deprecated?: boolean;\n validate?: Validator;\n};\n\nexport function validate(validate: Validator): FieldOptions {\n return { validate };\n}\n\nexport function validateType(...typeNames: NodeTypes[]) {\n return validate(assertNodeType(...typeNames));\n}\n\nexport function validateOptional(validate: Validator): FieldOptions {\n return { validate, optional: true };\n}\n\nexport function validateOptionalType(...typeNames: NodeTypes[]): FieldOptions {\n return { validate: assertNodeType(...typeNames), optional: true };\n}\n\nexport function arrayOf(elementType: Validator): Validator {\n return chain(assertValueType(\"array\"), assertEach(elementType));\n}\n\nexport function arrayOfType(...typeNames: NodeTypes[]) {\n return arrayOf(assertNodeType(...typeNames));\n}\n\nexport function validateArrayOfType(...typeNames: NodeTypes[]) {\n return validate(arrayOfType(...typeNames));\n}\n\nexport function assertEach(callback: Validator): Validator {\n const childValidator =\n process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n ? validateChild\n : () => {};\n\n function validator(node: t.Node, key: string, val: any) {\n if (!Array.isArray(val)) return;\n\n let i = 0;\n // We lazily concatenate strings here for performance reasons.\n // Concatenating the strings is expensive because we are actually concatenating a string and a number,\n // so V8 cannot just create a \"rope string\" but has to allocate memory for the string resulting from the number\n // This string is very rarely used, only in error paths, so we can skip the concatenation cost in most cases\n const subKey = {\n toString() {\n return `${key}[${i}]`;\n },\n };\n\n for (; i < val.length; i++) {\n const v = val[i];\n callback(node, subKey, v);\n childValidator(node, subKey, v);\n }\n }\n validator.each = callback;\n return validator;\n}\n\nexport function assertOneOf(...values: any[]): Validator {\n function validate(node: any, key: string, val: any) {\n if (!values.includes(val)) {\n throw new TypeError(\n `Property ${key} expected value to be one of ${JSON.stringify(\n values,\n )} but got ${JSON.stringify(val)}`,\n );\n }\n }\n\n validate.oneOf = values;\n\n return validate;\n}\n\nexport const allExpandedTypes: {\n types: NodeTypes[];\n set: Set<string>;\n}[] = [];\n\nexport function assertNodeType(...types: NodeTypes[]): Validator {\n const expandedTypes = new Set<string>();\n\n allExpandedTypes.push({ types, set: expandedTypes });\n\n function validate(node: t.Node, key: string, val: any) {\n const valType = val?.type;\n if (valType != null) {\n if (expandedTypes.has(valType)) {\n validateChild(node, key, val);\n return;\n }\n if (valType === \"Placeholder\") {\n for (const type of types) {\n if (is(type, val)) {\n validateChild(node, key, val);\n return;\n }\n }\n }\n }\n\n throw new TypeError(\n `Property ${key} of ${\n node.type\n } expected node to be of a type ${JSON.stringify(\n types,\n )} but instead got ${JSON.stringify(valType)}`,\n );\n }\n\n validate.oneOfNodeTypes = types;\n\n return validate;\n}\n\nexport function assertNodeOrValueType(\n ...types: (NodeTypes | PrimitiveTypes)[]\n): Validator {\n function validate(node: t.Node, key: string, val: any) {\n const primitiveType = getType(val);\n for (const type of types) {\n if (primitiveType === type || is(type, val)) {\n validateChild(node, key, val);\n return;\n }\n }\n\n throw new TypeError(\n `Property ${key} of ${\n node.type\n } expected node to be of a type ${JSON.stringify(\n types,\n )} but instead got ${JSON.stringify(val?.type)}`,\n );\n }\n\n validate.oneOfNodeOrValueTypes = types;\n\n return validate;\n}\n\nexport function assertValueType(type: PrimitiveTypes): Validator {\n function validate(node: t.Node, key: string, val: any) {\n if (getType(val) === type) {\n return;\n }\n\n throw new TypeError(\n `Property ${key} expected type of ${type} but got ${getType(val)}`,\n );\n }\n\n validate.type = type;\n\n return validate;\n}\n\nexport function assertShape(shape: Record<string, FieldOptions>): Validator {\n const keys = Object.keys(shape);\n function validate(node: t.Node, key: string, val: any) {\n const errors = [];\n for (const property of keys) {\n try {\n validateField(node, property, val[property], shape[property]);\n } catch (error) {\n if (error instanceof TypeError) {\n errors.push(error.message);\n continue;\n }\n throw error;\n }\n }\n if (errors.length) {\n throw new TypeError(\n `Property ${key} of ${\n node.type\n } expected to have the following:\\n${errors.join(\"\\n\")}`,\n );\n }\n }\n\n validate.shapeOf = shape;\n\n return validate;\n}\n\nexport function assertOptionalChainStart(): Validator {\n function validate(node: t.Node) {\n let current = node;\n while (node) {\n const { type } = current;\n if (type === \"OptionalCallExpression\") {\n if (current.optional) return;\n current = current.callee;\n continue;\n }\n\n if (type === \"OptionalMemberExpression\") {\n if (current.optional) return;\n current = current.object;\n continue;\n }\n\n break;\n }\n\n throw new TypeError(\n `Non-optional ${node.type} must chain from an optional OptionalMemberExpression or OptionalCallExpression. Found chain from ${current?.type}`,\n );\n }\n\n return validate;\n}\n\nexport function chain(...fns: Validator[]): Validator {\n function validate(...args: Parameters<Validator>) {\n for (const fn of fns) {\n fn(...args);\n }\n }\n validate.chainOf = fns;\n\n if (\n fns.length >= 2 &&\n \"type\" in fns[0] &&\n fns[0].type === \"array\" &&\n !(\"each\" in fns[1])\n ) {\n throw new Error(\n `An assertValueType(\"array\") validator can only be followed by an assertEach(...) validator.`,\n );\n }\n\n return validate;\n}\n\nconst validTypeOpts = new Set([\n \"aliases\",\n \"builder\",\n \"deprecatedAlias\",\n \"fields\",\n \"inherits\",\n \"visitor\",\n \"validate\",\n \"unionShape\",\n]);\nconst validFieldKeys = new Set([\n \"default\",\n \"optional\",\n \"deprecated\",\n \"validate\",\n]);\n\nconst store = {} as Record<string, DefineTypeOpts>;\n\n// Wraps defineType to ensure these aliases are included.\nexport function defineAliasedType(...aliases: string[]) {\n return (type: string, opts: DefineTypeOpts = {}) => {\n let defined = opts.aliases;\n if (!defined) {\n if (opts.inherits) defined = store[opts.inherits].aliases?.slice();\n defined ??= [];\n opts.aliases = defined;\n }\n const additional = aliases.filter(a => !defined.includes(a));\n defined.unshift(...additional);\n defineType(type, opts);\n };\n}\n\nexport default function defineType(type: string, opts: DefineTypeOpts = {}) {\n const inherits = (opts.inherits && store[opts.inherits]) || {};\n\n let fields = opts.fields;\n if (!fields) {\n fields = {};\n if (inherits.fields) {\n const keys = Object.getOwnPropertyNames(inherits.fields);\n for (const key of keys) {\n const field = inherits.fields[key];\n const def = field.default;\n if (\n Array.isArray(def) ? def.length > 0 : def && typeof def === \"object\"\n ) {\n throw new Error(\n \"field defaults can only be primitives or empty arrays currently\",\n );\n }\n fields[key] = {\n default: Array.isArray(def) ? [] : def,\n optional: field.optional,\n deprecated: field.deprecated,\n validate: field.validate,\n };\n }\n }\n }\n\n const visitor: string[] = opts.visitor || inherits.visitor || [];\n const aliases: string[] = opts.aliases || inherits.aliases || [];\n const builder: string[] =\n opts.builder || inherits.builder || opts.visitor || [];\n\n for (const k of Object.keys(opts)) {\n if (!validTypeOpts.has(k)) {\n throw new Error(`Unknown type option \"${k}\" on ${type}`);\n }\n }\n\n if (opts.deprecatedAlias) {\n DEPRECATED_KEYS[opts.deprecatedAlias] = type as NodeTypesWithoutComment;\n }\n\n // ensure all field keys are represented in `fields`\n for (const key of visitor.concat(builder)) {\n fields[key] = fields[key] || {};\n }\n\n for (const key of Object.keys(fields)) {\n const field = fields[key];\n\n if (field.default !== undefined && !builder.includes(key)) {\n field.optional = true;\n }\n if (field.default === undefined) {\n field.default = null;\n } else if (!field.validate && field.default != null) {\n field.validate = assertValueType(getType(field.default));\n }\n\n for (const k of Object.keys(field)) {\n if (!validFieldKeys.has(k)) {\n throw new Error(`Unknown field key \"${k}\" on ${type}.${key}`);\n }\n }\n }\n\n VISITOR_KEYS[type] = opts.visitor = visitor;\n BUILDER_KEYS[type] = opts.builder = builder;\n NODE_FIELDS[type] = opts.fields = fields;\n ALIAS_KEYS[type as NodeTypesWithoutComment] = opts.aliases = aliases;\n aliases.forEach(alias => {\n FLIPPED_ALIAS_KEYS[alias] = FLIPPED_ALIAS_KEYS[alias] || [];\n FLIPPED_ALIAS_KEYS[alias].push(type as NodeTypesWithoutComment);\n });\n\n if (opts.validate) {\n NODE_PARENT_VALIDATIONS[type] = opts.validate;\n }\n if (opts.unionShape) {\n NODE_UNION_SHAPES__PRIVATE[type] = opts.unionShape;\n }\n\n store[type] = opts;\n}\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/index-legacy.d.ts b/vanilla/node_modules/@babel/types/lib/index-legacy.d.ts
new file mode 100644
index 0000000..90736c3
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/index-legacy.d.ts
@@ -0,0 +1,2797 @@
+// NOTE: This file is autogenerated. Do not modify.
+// See packages/babel-types/scripts/generators/typescript-legacy.ts for script used.
+
+interface BaseComment {
+ value: string;
+ start: number;
+ end: number;
+ loc: SourceLocation;
+ type: "CommentBlock" | "CommentLine";
+}
+
+export interface CommentBlock extends BaseComment {
+ type: "CommentBlock";
+}
+
+export interface CommentLine extends BaseComment {
+ type: "CommentLine";
+}
+
+export type Comment = CommentBlock | CommentLine;
+
+export interface SourceLocation {
+ start: {
+ line: number;
+ column: number;
+ };
+
+ end: {
+ line: number;
+ column: number;
+ };
+}
+
+interface BaseNode {
+ leadingComments: ReadonlyArray<Comment> | null;
+ innerComments: ReadonlyArray<Comment> | null;
+ trailingComments: ReadonlyArray<Comment> | null;
+ start: number | null;
+ end: number | null;
+ loc: SourceLocation | null;
+ type: Node["type"];
+ extra?: Record<string, unknown>;
+}
+
+export type Node = Accessor | AnyTypeAnnotation | ArgumentPlaceholder | ArrayExpression | ArrayPattern | ArrayTypeAnnotation | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BigIntLiteral | Binary | BinaryExpression | BindExpression | Block | BlockParent | BlockStatement | BooleanLiteral | BooleanLiteralTypeAnnotation | BooleanTypeAnnotation | BreakStatement | CallExpression | CatchClause | Class | ClassAccessorProperty | ClassBody | ClassDeclaration | ClassExpression | ClassImplements | ClassMethod | ClassPrivateMethod | ClassPrivateProperty | ClassProperty | CompletionStatement | Conditional | ConditionalExpression | ContinueStatement | DebuggerStatement | DecimalLiteral | Declaration | DeclareClass | DeclareExportAllDeclaration | DeclareExportDeclaration | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareOpaqueType | DeclareTypeAlias | DeclareVariable | DeclaredPredicate | Decorator | Directive | DirectiveLiteral | DoExpression | DoWhileStatement | EmptyStatement | EmptyTypeAnnotation | EnumBody | EnumBooleanBody | EnumBooleanMember | EnumDeclaration | EnumDefaultedMember | EnumMember | EnumNumberBody | EnumNumberMember | EnumStringBody | EnumStringMember | EnumSymbolBody | ExistsTypeAnnotation | ExportAllDeclaration | ExportDeclaration | ExportDefaultDeclaration | ExportDefaultSpecifier | ExportNamedDeclaration | ExportNamespaceSpecifier | ExportSpecifier | Expression | ExpressionStatement | ExpressionWrapper | File | Flow | FlowBaseAnnotation | FlowDeclaration | FlowPredicate | FlowType | For | ForInStatement | ForOfStatement | ForStatement | ForXStatement | Function | FunctionDeclaration | FunctionExpression | FunctionParameter | FunctionParent | FunctionTypeAnnotation | FunctionTypeParam | GenericTypeAnnotation | Identifier | IfStatement | Immutable | Import | ImportAttribute | ImportDeclaration | ImportDefaultSpecifier | ImportExpression | ImportNamespaceSpecifier | ImportOrExportDeclaration | ImportSpecifier | IndexedAccessType | InferredPredicate | InterfaceDeclaration | InterfaceExtends | InterfaceTypeAnnotation | InterpreterDirective | IntersectionTypeAnnotation | JSX | JSXAttribute | JSXClosingElement | JSXClosingFragment | JSXElement | JSXEmptyExpression | JSXExpressionContainer | JSXFragment | JSXIdentifier | JSXMemberExpression | JSXNamespacedName | JSXOpeningElement | JSXOpeningFragment | JSXSpreadAttribute | JSXSpreadChild | JSXText | LVal | LabeledStatement | Literal | LogicalExpression | Loop | MemberExpression | MetaProperty | Method | Miscellaneous | MixedTypeAnnotation | ModuleDeclaration | ModuleExpression | ModuleSpecifier | NewExpression | Noop | NullLiteral | NullLiteralTypeAnnotation | NullableTypeAnnotation | NumberLiteral | NumberLiteralTypeAnnotation | NumberTypeAnnotation | NumericLiteral | ObjectExpression | ObjectMember | ObjectMethod | ObjectPattern | ObjectProperty | ObjectTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalCallExpression | OptionalIndexedAccessType | OptionalMemberExpression | ParenthesizedExpression | Pattern | PatternLike | PipelineBareFunction | PipelinePrimaryTopicReference | PipelineTopicExpression | Placeholder | Private | PrivateName | Program | Property | Pureish | QualifiedTypeIdentifier | RecordExpression | RegExpLiteral | RegexLiteral | RestElement | RestProperty | ReturnStatement | Scopable | SequenceExpression | SpreadElement | SpreadProperty | Standardized | Statement | StaticBlock | StringLiteral | StringLiteralTypeAnnotation | StringTypeAnnotation | Super | SwitchCase | SwitchStatement | SymbolTypeAnnotation | TSAnyKeyword | TSArrayType | TSAsExpression | TSBaseType | TSBigIntKeyword | TSBooleanKeyword | TSCallSignatureDeclaration | TSConditionalType | TSConstructSignatureDeclaration | TSConstructorType | TSDeclareFunction | TSDeclareMethod | TSEntityName | TSEnumBody | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSExpressionWithTypeArguments | TSExternalModuleReference | TSFunctionType | TSImportEqualsDeclaration | TSImportType | TSIndexSignature | TSIndexedAccessType | TSInferType | TSInstantiationExpression | TSInterfaceBody | TSInterfaceDeclaration | TSIntersectionType | TSIntrinsicKeyword | TSLiteralType | TSMappedType | TSMethodSignature | TSModuleBlock | TSModuleDeclaration | TSNamedTupleMember | TSNamespaceExportDeclaration | TSNeverKeyword | TSNonNullExpression | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSOptionalType | TSParameterProperty | TSParenthesizedType | TSPropertySignature | TSQualifiedName | TSRestType | TSSatisfiesExpression | TSStringKeyword | TSSymbolKeyword | TSTemplateLiteralType | TSThisType | TSTupleType | TSType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeElement | TSTypeLiteral | TSTypeOperator | TSTypeParameter | TSTypeParameterDeclaration | TSTypeParameterInstantiation | TSTypePredicate | TSTypeQuery | TSTypeReference | TSUndefinedKeyword | TSUnionType | TSUnknownKeyword | TSVoidKeyword | TaggedTemplateExpression | TemplateElement | TemplateLiteral | Terminatorless | ThisExpression | ThisTypeAnnotation | ThrowStatement | TopicReference | TryStatement | TupleExpression | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeCastExpression | TypeParameter | TypeParameterDeclaration | TypeParameterInstantiation | TypeScript | TypeofTypeAnnotation | UnaryExpression | UnaryLike | UnionTypeAnnotation | UpdateExpression | UserWhitespacable | V8IntrinsicIdentifier | VariableDeclaration | VariableDeclarator | Variance | VoidPattern | VoidTypeAnnotation | While | WhileStatement | WithStatement | YieldExpression;
+
+export interface ArrayExpression extends BaseNode {
+ type: "ArrayExpression";
+ elements: (null | Expression | SpreadElement)[];
+}
+
+export interface AssignmentExpression extends BaseNode {
+ type: "AssignmentExpression";
+ operator: string;
+ left: LVal | OptionalMemberExpression;
+ right: Expression;
+}
+
+export interface BinaryExpression extends BaseNode {
+ type: "BinaryExpression";
+ operator: "+" | "-" | "/" | "%" | "*" | "**" | "&" | "|" | ">>" | ">>>" | "<<" | "^" | "==" | "===" | "!=" | "!==" | "in" | "instanceof" | ">" | "<" | ">=" | "<=" | "|>";
+ left: Expression | PrivateName;
+ right: Expression;
+}
+
+export interface InterpreterDirective extends BaseNode {
+ type: "InterpreterDirective";
+ value: string;
+}
+
+export interface Directive extends BaseNode {
+ type: "Directive";
+ value: DirectiveLiteral;
+}
+
+export interface DirectiveLiteral extends BaseNode {
+ type: "DirectiveLiteral";
+ value: string;
+}
+
+export interface BlockStatement extends BaseNode {
+ type: "BlockStatement";
+ body: Statement[];
+ directives: Directive[];
+}
+
+export interface BreakStatement extends BaseNode {
+ type: "BreakStatement";
+ label: Identifier | null;
+}
+
+export interface CallExpression extends BaseNode {
+ type: "CallExpression";
+ callee: Expression | Super | V8IntrinsicIdentifier;
+ arguments: (Expression | SpreadElement | ArgumentPlaceholder)[];
+ optional: boolean | null;
+ typeArguments: TypeParameterInstantiation | null;
+ typeParameters: TSTypeParameterInstantiation | null;
+}
+
+export interface CatchClause extends BaseNode {
+ type: "CatchClause";
+ param: Identifier | ArrayPattern | ObjectPattern | null;
+ body: BlockStatement;
+}
+
+export interface ConditionalExpression extends BaseNode {
+ type: "ConditionalExpression";
+ test: Expression;
+ consequent: Expression;
+ alternate: Expression;
+}
+
+export interface ContinueStatement extends BaseNode {
+ type: "ContinueStatement";
+ label: Identifier | null;
+}
+
+export interface DebuggerStatement extends BaseNode {
+ type: "DebuggerStatement";
+}
+
+export interface DoWhileStatement extends BaseNode {
+ type: "DoWhileStatement";
+ test: Expression;
+ body: Statement;
+}
+
+export interface EmptyStatement extends BaseNode {
+ type: "EmptyStatement";
+}
+
+export interface ExpressionStatement extends BaseNode {
+ type: "ExpressionStatement";
+ expression: Expression;
+}
+
+export interface File extends BaseNode {
+ type: "File";
+ program: Program;
+ comments: (CommentBlock | CommentLine)[] | null;
+ tokens: any[] | null;
+}
+
+export interface ForInStatement extends BaseNode {
+ type: "ForInStatement";
+ left: VariableDeclaration | LVal;
+ right: Expression;
+ body: Statement;
+}
+
+export interface ForStatement extends BaseNode {
+ type: "ForStatement";
+ init: VariableDeclaration | Expression | null;
+ test: Expression | null;
+ update: Expression | null;
+ body: Statement;
+}
+
+export interface FunctionDeclaration extends BaseNode {
+ type: "FunctionDeclaration";
+ id: Identifier | null;
+ params: FunctionParameter[];
+ body: BlockStatement;
+ generator: boolean;
+ async: boolean;
+ declare: boolean | null;
+ predicate: DeclaredPredicate | InferredPredicate | null;
+ returnType: TypeAnnotation | TSTypeAnnotation | Noop | null;
+ typeParameters: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
+}
+
+export interface FunctionExpression extends BaseNode {
+ type: "FunctionExpression";
+ id: Identifier | null;
+ params: FunctionParameter[];
+ body: BlockStatement;
+ generator: boolean;
+ async: boolean;
+ predicate: DeclaredPredicate | InferredPredicate | null;
+ returnType: TypeAnnotation | TSTypeAnnotation | Noop | null;
+ typeParameters: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
+}
+
+export interface Identifier extends BaseNode {
+ type: "Identifier";
+ name: string;
+ decorators: Decorator[] | null;
+ optional: boolean | null;
+ typeAnnotation: TypeAnnotation | TSTypeAnnotation | Noop | null;
+}
+
+export interface IfStatement extends BaseNode {
+ type: "IfStatement";
+ test: Expression;
+ consequent: Statement;
+ alternate: Statement | null;
+}
+
+export interface LabeledStatement extends BaseNode {
+ type: "LabeledStatement";
+ label: Identifier;
+ body: Statement;
+}
+
+export interface StringLiteral extends BaseNode {
+ type: "StringLiteral";
+ value: string;
+}
+
+export interface NumericLiteral extends BaseNode {
+ type: "NumericLiteral";
+ value: number;
+}
+
+export interface NullLiteral extends BaseNode {
+ type: "NullLiteral";
+}
+
+export interface BooleanLiteral extends BaseNode {
+ type: "BooleanLiteral";
+ value: boolean;
+}
+
+export interface RegExpLiteral extends BaseNode {
+ type: "RegExpLiteral";
+ pattern: string;
+ flags: string;
+}
+
+export interface LogicalExpression extends BaseNode {
+ type: "LogicalExpression";
+ operator: "||" | "&&" | "??";
+ left: Expression;
+ right: Expression;
+}
+
+export interface MemberExpression extends BaseNode {
+ type: "MemberExpression";
+ object: Expression | Super;
+ property: Expression | Identifier | PrivateName;
+ computed: boolean;
+ optional: boolean | null;
+}
+
+export interface NewExpression extends BaseNode {
+ type: "NewExpression";
+ callee: Expression | Super | V8IntrinsicIdentifier;
+ arguments: (Expression | SpreadElement | ArgumentPlaceholder)[];
+ optional: boolean | null;
+ typeArguments: TypeParameterInstantiation | null;
+ typeParameters: TSTypeParameterInstantiation | null;
+}
+
+export interface Program extends BaseNode {
+ type: "Program";
+ body: Statement[];
+ directives: Directive[];
+ sourceType: "script" | "module";
+ interpreter: InterpreterDirective | null;
+}
+
+export interface ObjectExpression extends BaseNode {
+ type: "ObjectExpression";
+ properties: (ObjectMethod | ObjectProperty | SpreadElement)[];
+}
+
+export interface ObjectMethod extends BaseNode {
+ type: "ObjectMethod";
+ kind: "method" | "get" | "set";
+ key: Expression | Identifier | StringLiteral | NumericLiteral | BigIntLiteral;
+ params: FunctionParameter[];
+ body: BlockStatement;
+ computed: boolean;
+ generator: boolean;
+ async: boolean;
+ decorators: Decorator[] | null;
+ returnType: TypeAnnotation | TSTypeAnnotation | Noop | null;
+ typeParameters: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
+}
+
+export interface ObjectProperty extends BaseNode {
+ type: "ObjectProperty";
+ key: Expression | Identifier | StringLiteral | NumericLiteral | BigIntLiteral | DecimalLiteral | PrivateName;
+ value: Expression | PatternLike;
+ computed: boolean;
+ shorthand: boolean;
+ decorators: Decorator[] | null;
+}
+
+export interface RestElement extends BaseNode {
+ type: "RestElement";
+ argument: Identifier | ArrayPattern | ObjectPattern | MemberExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression | RestElement | AssignmentPattern;
+ decorators: Decorator[] | null;
+ optional: boolean | null;
+ typeAnnotation: TypeAnnotation | TSTypeAnnotation | Noop | null;
+}
+
+export interface ReturnStatement extends BaseNode {
+ type: "ReturnStatement";
+ argument: Expression | null;
+}
+
+export interface SequenceExpression extends BaseNode {
+ type: "SequenceExpression";
+ expressions: Expression[];
+}
+
+export interface ParenthesizedExpression extends BaseNode {
+ type: "ParenthesizedExpression";
+ expression: Expression;
+}
+
+export interface SwitchCase extends BaseNode {
+ type: "SwitchCase";
+ test: Expression | null;
+ consequent: Statement[];
+}
+
+export interface SwitchStatement extends BaseNode {
+ type: "SwitchStatement";
+ discriminant: Expression;
+ cases: SwitchCase[];
+}
+
+export interface ThisExpression extends BaseNode {
+ type: "ThisExpression";
+}
+
+export interface ThrowStatement extends BaseNode {
+ type: "ThrowStatement";
+ argument: Expression;
+}
+
+export interface TryStatement extends BaseNode {
+ type: "TryStatement";
+ block: BlockStatement;
+ handler: CatchClause | null;
+ finalizer: BlockStatement | null;
+}
+
+export interface UnaryExpression extends BaseNode {
+ type: "UnaryExpression";
+ operator: "void" | "throw" | "delete" | "!" | "+" | "-" | "~" | "typeof";
+ argument: Expression;
+ prefix: boolean;
+}
+
+export interface UpdateExpression extends BaseNode {
+ type: "UpdateExpression";
+ operator: "++" | "--";
+ argument: Expression;
+ prefix: boolean;
+}
+
+export interface VariableDeclaration extends BaseNode {
+ type: "VariableDeclaration";
+ kind: "var" | "let" | "const" | "using" | "await using";
+ declarations: VariableDeclarator[];
+ declare: boolean | null;
+}
+
+export interface VariableDeclarator extends BaseNode {
+ type: "VariableDeclarator";
+ id: LVal | VoidPattern;
+ init: Expression | null;
+ definite: boolean | null;
+}
+
+export interface WhileStatement extends BaseNode {
+ type: "WhileStatement";
+ test: Expression;
+ body: Statement;
+}
+
+export interface WithStatement extends BaseNode {
+ type: "WithStatement";
+ object: Expression;
+ body: Statement;
+}
+
+export interface AssignmentPattern extends BaseNode {
+ type: "AssignmentPattern";
+ left: Identifier | ObjectPattern | ArrayPattern | MemberExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression;
+ right: Expression;
+ decorators: Decorator[] | null;
+ optional: boolean | null;
+ typeAnnotation: TypeAnnotation | TSTypeAnnotation | Noop | null;
+}
+
+export interface ArrayPattern extends BaseNode {
+ type: "ArrayPattern";
+ elements: (null | PatternLike)[];
+ decorators: Decorator[] | null;
+ optional: boolean | null;
+ typeAnnotation: TypeAnnotation | TSTypeAnnotation | Noop | null;
+}
+
+export interface ArrowFunctionExpression extends BaseNode {
+ type: "ArrowFunctionExpression";
+ params: FunctionParameter[];
+ body: BlockStatement | Expression;
+ async: boolean;
+ expression: boolean;
+ generator: boolean;
+ predicate: DeclaredPredicate | InferredPredicate | null;
+ returnType: TypeAnnotation | TSTypeAnnotation | Noop | null;
+ typeParameters: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
+}
+
+export interface ClassBody extends BaseNode {
+ type: "ClassBody";
+ body: (ClassMethod | ClassPrivateMethod | ClassProperty | ClassPrivateProperty | ClassAccessorProperty | TSDeclareMethod | TSIndexSignature | StaticBlock)[];
+}
+
+export interface ClassExpression extends BaseNode {
+ type: "ClassExpression";
+ id: Identifier | null;
+ superClass: Expression | null;
+ body: ClassBody;
+ decorators: Decorator[] | null;
+ implements: (TSExpressionWithTypeArguments | ClassImplements)[] | null;
+ mixins: InterfaceExtends | null;
+ superTypeParameters: TypeParameterInstantiation | TSTypeParameterInstantiation | null;
+ typeParameters: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
+}
+
+export interface ClassDeclaration extends BaseNode {
+ type: "ClassDeclaration";
+ id: Identifier | null;
+ superClass: Expression | null;
+ body: ClassBody;
+ decorators: Decorator[] | null;
+ abstract: boolean | null;
+ declare: boolean | null;
+ implements: (TSExpressionWithTypeArguments | ClassImplements)[] | null;
+ mixins: InterfaceExtends | null;
+ superTypeParameters: TypeParameterInstantiation | TSTypeParameterInstantiation | null;
+ typeParameters: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
+}
+
+export interface ExportAllDeclaration extends BaseNode {
+ type: "ExportAllDeclaration";
+ source: StringLiteral;
+ attributes: ImportAttribute[] | null;
+ assertions: ImportAttribute[] | null;
+ exportKind: "type" | "value" | null;
+}
+
+export interface ExportDefaultDeclaration extends BaseNode {
+ type: "ExportDefaultDeclaration";
+ declaration: TSDeclareFunction | FunctionDeclaration | ClassDeclaration | Expression;
+ exportKind: "value" | null;
+}
+
+export interface ExportNamedDeclaration extends BaseNode {
+ type: "ExportNamedDeclaration";
+ declaration: Declaration | null;
+ specifiers: (ExportSpecifier | ExportDefaultSpecifier | ExportNamespaceSpecifier)[];
+ source: StringLiteral | null;
+ attributes: ImportAttribute[] | null;
+ assertions: ImportAttribute[] | null;
+ exportKind: "type" | "value" | null;
+}
+
+export interface ExportSpecifier extends BaseNode {
+ type: "ExportSpecifier";
+ local: Identifier;
+ exported: Identifier | StringLiteral;
+ exportKind: "type" | "value" | null;
+}
+
+export interface ForOfStatement extends BaseNode {
+ type: "ForOfStatement";
+ left: VariableDeclaration | LVal;
+ right: Expression;
+ body: Statement;
+ await: boolean;
+}
+
+export interface ImportDeclaration extends BaseNode {
+ type: "ImportDeclaration";
+ specifiers: (ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier)[];
+ source: StringLiteral;
+ attributes: ImportAttribute[] | null;
+ assertions: ImportAttribute[] | null;
+ importKind: "type" | "typeof" | "value" | null;
+ module: boolean | null;
+ phase: "source" | "defer" | null;
+}
+
+export interface ImportDefaultSpecifier extends BaseNode {
+ type: "ImportDefaultSpecifier";
+ local: Identifier;
+}
+
+export interface ImportNamespaceSpecifier extends BaseNode {
+ type: "ImportNamespaceSpecifier";
+ local: Identifier;
+}
+
+export interface ImportSpecifier extends BaseNode {
+ type: "ImportSpecifier";
+ local: Identifier;
+ imported: Identifier | StringLiteral;
+ importKind: "type" | "typeof" | "value" | null;
+}
+
+export interface ImportExpression extends BaseNode {
+ type: "ImportExpression";
+ source: Expression;
+ options: Expression | null;
+ phase: "source" | "defer" | null;
+}
+
+export interface MetaProperty extends BaseNode {
+ type: "MetaProperty";
+ meta: Identifier;
+ property: Identifier;
+}
+
+export interface ClassMethod extends BaseNode {
+ type: "ClassMethod";
+ kind: "get" | "set" | "method" | "constructor";
+ key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression;
+ params: (FunctionParameter | TSParameterProperty)[];
+ body: BlockStatement;
+ computed: boolean;
+ static: boolean;
+ generator: boolean;
+ async: boolean;
+ abstract: boolean | null;
+ access: "public" | "private" | "protected" | null;
+ accessibility: "public" | "private" | "protected" | null;
+ decorators: Decorator[] | null;
+ optional: boolean | null;
+ override: boolean;
+ returnType: TypeAnnotation | TSTypeAnnotation | Noop | null;
+ typeParameters: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
+}
+
+export interface ObjectPattern extends BaseNode {
+ type: "ObjectPattern";
+ properties: (RestElement | ObjectProperty)[];
+ decorators: Decorator[] | null;
+ optional: boolean | null;
+ typeAnnotation: TypeAnnotation | TSTypeAnnotation | Noop | null;
+}
+
+export interface SpreadElement extends BaseNode {
+ type: "SpreadElement";
+ argument: Expression;
+}
+
+export interface Super extends BaseNode {
+ type: "Super";
+}
+
+export interface TaggedTemplateExpression extends BaseNode {
+ type: "TaggedTemplateExpression";
+ tag: Expression;
+ quasi: TemplateLiteral;
+ typeParameters: TypeParameterInstantiation | TSTypeParameterInstantiation | null;
+}
+
+export interface TemplateElement extends BaseNode {
+ type: "TemplateElement";
+ value: { raw: string, cooked?: string };
+ tail: boolean;
+}
+
+export interface TemplateLiteral extends BaseNode {
+ type: "TemplateLiteral";
+ quasis: TemplateElement[];
+ expressions: (Expression | TSType)[];
+}
+
+export interface YieldExpression extends BaseNode {
+ type: "YieldExpression";
+ argument: Expression | null;
+ delegate: boolean;
+}
+
+export interface AwaitExpression extends BaseNode {
+ type: "AwaitExpression";
+ argument: Expression;
+}
+
+export interface Import extends BaseNode {
+ type: "Import";
+}
+
+export interface BigIntLiteral extends BaseNode {
+ type: "BigIntLiteral";
+ value: string;
+}
+
+export interface ExportNamespaceSpecifier extends BaseNode {
+ type: "ExportNamespaceSpecifier";
+ exported: Identifier;
+}
+
+export interface OptionalMemberExpression extends BaseNode {
+ type: "OptionalMemberExpression";
+ object: Expression;
+ property: Expression | Identifier;
+ computed: boolean;
+ optional: boolean;
+}
+
+export interface OptionalCallExpression extends BaseNode {
+ type: "OptionalCallExpression";
+ callee: Expression;
+ arguments: (Expression | SpreadElement | ArgumentPlaceholder)[];
+ optional: boolean;
+ typeArguments: TypeParameterInstantiation | null;
+ typeParameters: TSTypeParameterInstantiation | null;
+}
+
+export interface ClassProperty extends BaseNode {
+ type: "ClassProperty";
+ key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression;
+ value: Expression | null;
+ typeAnnotation: TypeAnnotation | TSTypeAnnotation | Noop | null;
+ decorators: Decorator[] | null;
+ computed: boolean;
+ static: boolean;
+ abstract: boolean | null;
+ accessibility: "public" | "private" | "protected" | null;
+ declare: boolean | null;
+ definite: boolean | null;
+ optional: boolean | null;
+ override: boolean;
+ readonly: boolean | null;
+ variance: Variance | null;
+}
+
+export interface ClassAccessorProperty extends BaseNode {
+ type: "ClassAccessorProperty";
+ key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression | PrivateName;
+ value: Expression | null;
+ typeAnnotation: TypeAnnotation | TSTypeAnnotation | Noop | null;
+ decorators: Decorator[] | null;
+ computed: boolean;
+ static: boolean;
+ abstract: boolean | null;
+ accessibility: "public" | "private" | "protected" | null;
+ declare: boolean | null;
+ definite: boolean | null;
+ optional: boolean | null;
+ override: boolean;
+ readonly: boolean | null;
+ variance: Variance | null;
+}
+
+export interface ClassPrivateProperty extends BaseNode {
+ type: "ClassPrivateProperty";
+ key: PrivateName;
+ value: Expression | null;
+ decorators: Decorator[] | null;
+ static: boolean;
+ definite: boolean | null;
+ optional: boolean | null;
+ readonly: boolean | null;
+ typeAnnotation: TypeAnnotation | TSTypeAnnotation | Noop | null;
+ variance: Variance | null;
+}
+
+export interface ClassPrivateMethod extends BaseNode {
+ type: "ClassPrivateMethod";
+ kind: "get" | "set" | "method";
+ key: PrivateName;
+ params: (FunctionParameter | TSParameterProperty)[];
+ body: BlockStatement;
+ static: boolean;
+ abstract: boolean | null;
+ access: "public" | "private" | "protected" | null;
+ accessibility: "public" | "private" | "protected" | null;
+ async: boolean;
+ computed: boolean;
+ decorators: Decorator[] | null;
+ generator: boolean;
+ optional: boolean | null;
+ override: boolean;
+ returnType: TypeAnnotation | TSTypeAnnotation | Noop | null;
+ typeParameters: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
+}
+
+export interface PrivateName extends BaseNode {
+ type: "PrivateName";
+ id: Identifier;
+}
+
+export interface StaticBlock extends BaseNode {
+ type: "StaticBlock";
+ body: Statement[];
+}
+
+export interface ImportAttribute extends BaseNode {
+ type: "ImportAttribute";
+ key: Identifier | StringLiteral;
+ value: StringLiteral;
+}
+
+export interface AnyTypeAnnotation extends BaseNode {
+ type: "AnyTypeAnnotation";
+}
+
+export interface ArrayTypeAnnotation extends BaseNode {
+ type: "ArrayTypeAnnotation";
+ elementType: FlowType;
+}
+
+export interface BooleanTypeAnnotation extends BaseNode {
+ type: "BooleanTypeAnnotation";
+}
+
+export interface BooleanLiteralTypeAnnotation extends BaseNode {
+ type: "BooleanLiteralTypeAnnotation";
+ value: boolean;
+}
+
+export interface NullLiteralTypeAnnotation extends BaseNode {
+ type: "NullLiteralTypeAnnotation";
+}
+
+export interface ClassImplements extends BaseNode {
+ type: "ClassImplements";
+ id: Identifier;
+ typeParameters: TypeParameterInstantiation | null;
+}
+
+export interface DeclareClass extends BaseNode {
+ type: "DeclareClass";
+ id: Identifier;
+ typeParameters: TypeParameterDeclaration | null;
+ extends: InterfaceExtends[] | null;
+ body: ObjectTypeAnnotation;
+ implements: ClassImplements[] | null;
+ mixins: InterfaceExtends[] | null;
+}
+
+export interface DeclareFunction extends BaseNode {
+ type: "DeclareFunction";
+ id: Identifier;
+ predicate: DeclaredPredicate | null;
+}
+
+export interface DeclareInterface extends BaseNode {
+ type: "DeclareInterface";
+ id: Identifier;
+ typeParameters: TypeParameterDeclaration | null;
+ extends: InterfaceExtends[] | null;
+ body: ObjectTypeAnnotation;
+}
+
+export interface DeclareModule extends BaseNode {
+ type: "DeclareModule";
+ id: Identifier | StringLiteral;
+ body: BlockStatement;
+ kind: "CommonJS" | "ES" | null;
+}
+
+export interface DeclareModuleExports extends BaseNode {
+ type: "DeclareModuleExports";
+ typeAnnotation: TypeAnnotation;
+}
+
+export interface DeclareTypeAlias extends BaseNode {
+ type: "DeclareTypeAlias";
+ id: Identifier;
+ typeParameters: TypeParameterDeclaration | null;
+ right: FlowType;
+}
+
+export interface DeclareOpaqueType extends BaseNode {
+ type: "DeclareOpaqueType";
+ id: Identifier;
+ typeParameters: TypeParameterDeclaration | null;
+ supertype: FlowType | null;
+ impltype: FlowType | null;
+}
+
+export interface DeclareVariable extends BaseNode {
+ type: "DeclareVariable";
+ id: Identifier;
+}
+
+export interface DeclareExportDeclaration extends BaseNode {
+ type: "DeclareExportDeclaration";
+ declaration: Flow | null;
+ specifiers: (ExportSpecifier | ExportNamespaceSpecifier)[] | null;
+ source: StringLiteral | null;
+ attributes: ImportAttribute[] | null;
+ assertions: ImportAttribute[] | null;
+ default: boolean | null;
+}
+
+export interface DeclareExportAllDeclaration extends BaseNode {
+ type: "DeclareExportAllDeclaration";
+ source: StringLiteral;
+ attributes: ImportAttribute[] | null;
+ assertions: ImportAttribute[] | null;
+ exportKind: "type" | "value" | null;
+}
+
+export interface DeclaredPredicate extends BaseNode {
+ type: "DeclaredPredicate";
+ value: Flow;
+}
+
+export interface ExistsTypeAnnotation extends BaseNode {
+ type: "ExistsTypeAnnotation";
+}
+
+export interface FunctionTypeAnnotation extends BaseNode {
+ type: "FunctionTypeAnnotation";
+ typeParameters: TypeParameterDeclaration | null;
+ params: FunctionTypeParam[];
+ rest: FunctionTypeParam | null;
+ returnType: FlowType;
+ this: FunctionTypeParam | null;
+}
+
+export interface FunctionTypeParam extends BaseNode {
+ type: "FunctionTypeParam";
+ name: Identifier | null;
+ typeAnnotation: FlowType;
+ optional: boolean | null;
+}
+
+export interface GenericTypeAnnotation extends BaseNode {
+ type: "GenericTypeAnnotation";
+ id: Identifier | QualifiedTypeIdentifier;
+ typeParameters: TypeParameterInstantiation | null;
+}
+
+export interface InferredPredicate extends BaseNode {
+ type: "InferredPredicate";
+}
+
+export interface InterfaceExtends extends BaseNode {
+ type: "InterfaceExtends";
+ id: Identifier | QualifiedTypeIdentifier;
+ typeParameters: TypeParameterInstantiation | null;
+}
+
+export interface InterfaceDeclaration extends BaseNode {
+ type: "InterfaceDeclaration";
+ id: Identifier;
+ typeParameters: TypeParameterDeclaration | null;
+ extends: InterfaceExtends[] | null;
+ body: ObjectTypeAnnotation;
+}
+
+export interface InterfaceTypeAnnotation extends BaseNode {
+ type: "InterfaceTypeAnnotation";
+ extends: InterfaceExtends[] | null;
+ body: ObjectTypeAnnotation;
+}
+
+export interface IntersectionTypeAnnotation extends BaseNode {
+ type: "IntersectionTypeAnnotation";
+ types: FlowType[];
+}
+
+export interface MixedTypeAnnotation extends BaseNode {
+ type: "MixedTypeAnnotation";
+}
+
+export interface EmptyTypeAnnotation extends BaseNode {
+ type: "EmptyTypeAnnotation";
+}
+
+export interface NullableTypeAnnotation extends BaseNode {
+ type: "NullableTypeAnnotation";
+ typeAnnotation: FlowType;
+}
+
+export interface NumberLiteralTypeAnnotation extends BaseNode {
+ type: "NumberLiteralTypeAnnotation";
+ value: number;
+}
+
+export interface NumberTypeAnnotation extends BaseNode {
+ type: "NumberTypeAnnotation";
+}
+
+export interface ObjectTypeAnnotation extends BaseNode {
+ type: "ObjectTypeAnnotation";
+ properties: (ObjectTypeProperty | ObjectTypeSpreadProperty)[];
+ indexers: ObjectTypeIndexer[];
+ callProperties: ObjectTypeCallProperty[];
+ internalSlots: ObjectTypeInternalSlot[];
+ exact: boolean;
+ inexact: boolean | null;
+}
+
+export interface ObjectTypeInternalSlot extends BaseNode {
+ type: "ObjectTypeInternalSlot";
+ id: Identifier;
+ value: FlowType;
+ optional: boolean;
+ static: boolean;
+ method: boolean;
+}
+
+export interface ObjectTypeCallProperty extends BaseNode {
+ type: "ObjectTypeCallProperty";
+ value: FlowType;
+ static: boolean;
+}
+
+export interface ObjectTypeIndexer extends BaseNode {
+ type: "ObjectTypeIndexer";
+ id: Identifier | null;
+ key: FlowType;
+ value: FlowType;
+ variance: Variance | null;
+ static: boolean;
+}
+
+export interface ObjectTypeProperty extends BaseNode {
+ type: "ObjectTypeProperty";
+ key: Identifier | StringLiteral;
+ value: FlowType;
+ variance: Variance | null;
+ kind: "init" | "get" | "set";
+ method: boolean;
+ optional: boolean;
+ proto: boolean;
+ static: boolean;
+}
+
+export interface ObjectTypeSpreadProperty extends BaseNode {
+ type: "ObjectTypeSpreadProperty";
+ argument: FlowType;
+}
+
+export interface OpaqueType extends BaseNode {
+ type: "OpaqueType";
+ id: Identifier;
+ typeParameters: TypeParameterDeclaration | null;
+ supertype: FlowType | null;
+ impltype: FlowType;
+}
+
+export interface QualifiedTypeIdentifier extends BaseNode {
+ type: "QualifiedTypeIdentifier";
+ id: Identifier;
+ qualification: Identifier | QualifiedTypeIdentifier;
+}
+
+export interface StringLiteralTypeAnnotation extends BaseNode {
+ type: "StringLiteralTypeAnnotation";
+ value: string;
+}
+
+export interface StringTypeAnnotation extends BaseNode {
+ type: "StringTypeAnnotation";
+}
+
+export interface SymbolTypeAnnotation extends BaseNode {
+ type: "SymbolTypeAnnotation";
+}
+
+export interface ThisTypeAnnotation extends BaseNode {
+ type: "ThisTypeAnnotation";
+}
+
+export interface TupleTypeAnnotation extends BaseNode {
+ type: "TupleTypeAnnotation";
+ types: FlowType[];
+}
+
+export interface TypeofTypeAnnotation extends BaseNode {
+ type: "TypeofTypeAnnotation";
+ argument: FlowType;
+}
+
+export interface TypeAlias extends BaseNode {
+ type: "TypeAlias";
+ id: Identifier;
+ typeParameters: TypeParameterDeclaration | null;
+ right: FlowType;
+}
+
+export interface TypeAnnotation extends BaseNode {
+ type: "TypeAnnotation";
+ typeAnnotation: FlowType;
+}
+
+export interface TypeCastExpression extends BaseNode {
+ type: "TypeCastExpression";
+ expression: Expression;
+ typeAnnotation: TypeAnnotation;
+}
+
+export interface TypeParameter extends BaseNode {
+ type: "TypeParameter";
+ bound: TypeAnnotation | null;
+ default: FlowType | null;
+ variance: Variance | null;
+ name: string;
+}
+
+export interface TypeParameterDeclaration extends BaseNode {
+ type: "TypeParameterDeclaration";
+ params: TypeParameter[];
+}
+
+export interface TypeParameterInstantiation extends BaseNode {
+ type: "TypeParameterInstantiation";
+ params: FlowType[];
+}
+
+export interface UnionTypeAnnotation extends BaseNode {
+ type: "UnionTypeAnnotation";
+ types: FlowType[];
+}
+
+export interface Variance extends BaseNode {
+ type: "Variance";
+ kind: "minus" | "plus";
+}
+
+export interface VoidTypeAnnotation extends BaseNode {
+ type: "VoidTypeAnnotation";
+}
+
+export interface EnumDeclaration extends BaseNode {
+ type: "EnumDeclaration";
+ id: Identifier;
+ body: EnumBooleanBody | EnumNumberBody | EnumStringBody | EnumSymbolBody;
+}
+
+export interface EnumBooleanBody extends BaseNode {
+ type: "EnumBooleanBody";
+ members: EnumBooleanMember[];
+ explicitType: boolean;
+ hasUnknownMembers: boolean;
+}
+
+export interface EnumNumberBody extends BaseNode {
+ type: "EnumNumberBody";
+ members: EnumNumberMember[];
+ explicitType: boolean;
+ hasUnknownMembers: boolean;
+}
+
+export interface EnumStringBody extends BaseNode {
+ type: "EnumStringBody";
+ members: (EnumStringMember | EnumDefaultedMember)[];
+ explicitType: boolean;
+ hasUnknownMembers: boolean;
+}
+
+export interface EnumSymbolBody extends BaseNode {
+ type: "EnumSymbolBody";
+ members: EnumDefaultedMember[];
+ hasUnknownMembers: boolean;
+}
+
+export interface EnumBooleanMember extends BaseNode {
+ type: "EnumBooleanMember";
+ id: Identifier;
+ init: BooleanLiteral;
+}
+
+export interface EnumNumberMember extends BaseNode {
+ type: "EnumNumberMember";
+ id: Identifier;
+ init: NumericLiteral;
+}
+
+export interface EnumStringMember extends BaseNode {
+ type: "EnumStringMember";
+ id: Identifier;
+ init: StringLiteral;
+}
+
+export interface EnumDefaultedMember extends BaseNode {
+ type: "EnumDefaultedMember";
+ id: Identifier;
+}
+
+export interface IndexedAccessType extends BaseNode {
+ type: "IndexedAccessType";
+ objectType: FlowType;
+ indexType: FlowType;
+}
+
+export interface OptionalIndexedAccessType extends BaseNode {
+ type: "OptionalIndexedAccessType";
+ objectType: FlowType;
+ indexType: FlowType;
+ optional: boolean;
+}
+
+export interface JSXAttribute extends BaseNode {
+ type: "JSXAttribute";
+ name: JSXIdentifier | JSXNamespacedName;
+ value: JSXElement | JSXFragment | StringLiteral | JSXExpressionContainer | null;
+}
+
+export interface JSXClosingElement extends BaseNode {
+ type: "JSXClosingElement";
+ name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName;
+}
+
+export interface JSXElement extends BaseNode {
+ type: "JSXElement";
+ openingElement: JSXOpeningElement;
+ closingElement: JSXClosingElement | null;
+ children: (JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment)[];
+ selfClosing: boolean | null;
+}
+
+export interface JSXEmptyExpression extends BaseNode {
+ type: "JSXEmptyExpression";
+}
+
+export interface JSXExpressionContainer extends BaseNode {
+ type: "JSXExpressionContainer";
+ expression: Expression | JSXEmptyExpression;
+}
+
+export interface JSXSpreadChild extends BaseNode {
+ type: "JSXSpreadChild";
+ expression: Expression;
+}
+
+export interface JSXIdentifier extends BaseNode {
+ type: "JSXIdentifier";
+ name: string;
+}
+
+export interface JSXMemberExpression extends BaseNode {
+ type: "JSXMemberExpression";
+ object: JSXMemberExpression | JSXIdentifier;
+ property: JSXIdentifier;
+}
+
+export interface JSXNamespacedName extends BaseNode {
+ type: "JSXNamespacedName";
+ namespace: JSXIdentifier;
+ name: JSXIdentifier;
+}
+
+export interface JSXOpeningElement extends BaseNode {
+ type: "JSXOpeningElement";
+ name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName;
+ attributes: (JSXAttribute | JSXSpreadAttribute)[];
+ selfClosing: boolean;
+ typeArguments: TypeParameterInstantiation | null;
+ typeParameters: TSTypeParameterInstantiation | null;
+}
+
+export interface JSXSpreadAttribute extends BaseNode {
+ type: "JSXSpreadAttribute";
+ argument: Expression;
+}
+
+export interface JSXText extends BaseNode {
+ type: "JSXText";
+ value: string;
+}
+
+export interface JSXFragment extends BaseNode {
+ type: "JSXFragment";
+ openingFragment: JSXOpeningFragment;
+ closingFragment: JSXClosingFragment;
+ children: (JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment)[];
+}
+
+export interface JSXOpeningFragment extends BaseNode {
+ type: "JSXOpeningFragment";
+}
+
+export interface JSXClosingFragment extends BaseNode {
+ type: "JSXClosingFragment";
+}
+
+export interface Noop extends BaseNode {
+ type: "Noop";
+}
+
+export interface Placeholder extends BaseNode {
+ type: "Placeholder";
+ expectedNode: "Identifier" | "StringLiteral" | "Expression" | "Statement" | "Declaration" | "BlockStatement" | "ClassBody" | "Pattern";
+ name: Identifier;
+ decorators: Decorator[] | null;
+ optional: boolean | null;
+ typeAnnotation: TypeAnnotation | TSTypeAnnotation | Noop | null;
+}
+
+export interface V8IntrinsicIdentifier extends BaseNode {
+ type: "V8IntrinsicIdentifier";
+ name: string;
+}
+
+export interface ArgumentPlaceholder extends BaseNode {
+ type: "ArgumentPlaceholder";
+}
+
+export interface BindExpression extends BaseNode {
+ type: "BindExpression";
+ object: Expression;
+ callee: Expression;
+}
+
+export interface Decorator extends BaseNode {
+ type: "Decorator";
+ expression: Expression;
+}
+
+export interface DoExpression extends BaseNode {
+ type: "DoExpression";
+ body: BlockStatement;
+ async: boolean;
+}
+
+export interface ExportDefaultSpecifier extends BaseNode {
+ type: "ExportDefaultSpecifier";
+ exported: Identifier;
+}
+
+export interface RecordExpression extends BaseNode {
+ type: "RecordExpression";
+ properties: (ObjectProperty | SpreadElement)[];
+}
+
+export interface TupleExpression extends BaseNode {
+ type: "TupleExpression";
+ elements: (Expression | SpreadElement)[];
+}
+
+export interface DecimalLiteral extends BaseNode {
+ type: "DecimalLiteral";
+ value: string;
+}
+
+export interface ModuleExpression extends BaseNode {
+ type: "ModuleExpression";
+ body: Program;
+}
+
+export interface TopicReference extends BaseNode {
+ type: "TopicReference";
+}
+
+export interface PipelineTopicExpression extends BaseNode {
+ type: "PipelineTopicExpression";
+ expression: Expression;
+}
+
+export interface PipelineBareFunction extends BaseNode {
+ type: "PipelineBareFunction";
+ callee: Expression;
+}
+
+export interface PipelinePrimaryTopicReference extends BaseNode {
+ type: "PipelinePrimaryTopicReference";
+}
+
+export interface VoidPattern extends BaseNode {
+ type: "VoidPattern";
+}
+
+export interface TSParameterProperty extends BaseNode {
+ type: "TSParameterProperty";
+ parameter: Identifier | AssignmentPattern;
+ accessibility: "public" | "private" | "protected" | null;
+ decorators: Decorator[] | null;
+ override: boolean | null;
+ readonly: boolean | null;
+}
+
+export interface TSDeclareFunction extends BaseNode {
+ type: "TSDeclareFunction";
+ id: Identifier | null;
+ typeParameters: TSTypeParameterDeclaration | Noop | null;
+ params: FunctionParameter[];
+ returnType: TSTypeAnnotation | Noop | null;
+ async: boolean;
+ declare: boolean | null;
+ generator: boolean;
+}
+
+export interface TSDeclareMethod extends BaseNode {
+ type: "TSDeclareMethod";
+ decorators: Decorator[] | null;
+ key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression;
+ typeParameters: TSTypeParameterDeclaration | Noop | null;
+ params: (FunctionParameter | TSParameterProperty)[];
+ returnType: TSTypeAnnotation | Noop | null;
+ abstract: boolean | null;
+ access: "public" | "private" | "protected" | null;
+ accessibility: "public" | "private" | "protected" | null;
+ async: boolean;
+ computed: boolean;
+ generator: boolean;
+ kind: "get" | "set" | "method" | "constructor";
+ optional: boolean | null;
+ override: boolean;
+ static: boolean;
+}
+
+export interface TSQualifiedName extends BaseNode {
+ type: "TSQualifiedName";
+ left: TSEntityName;
+ right: Identifier;
+}
+
+export interface TSCallSignatureDeclaration extends BaseNode {
+ type: "TSCallSignatureDeclaration";
+ typeParameters: TSTypeParameterDeclaration | null;
+ parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[];
+ typeAnnotation: TSTypeAnnotation | null;
+}
+
+export interface TSConstructSignatureDeclaration extends BaseNode {
+ type: "TSConstructSignatureDeclaration";
+ typeParameters: TSTypeParameterDeclaration | null;
+ parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[];
+ typeAnnotation: TSTypeAnnotation | null;
+}
+
+export interface TSPropertySignature extends BaseNode {
+ type: "TSPropertySignature";
+ key: Expression;
+ typeAnnotation: TSTypeAnnotation | null;
+ computed: boolean;
+ kind: "get" | "set" | null;
+ optional: boolean | null;
+ readonly: boolean | null;
+}
+
+export interface TSMethodSignature extends BaseNode {
+ type: "TSMethodSignature";
+ key: Expression;
+ typeParameters: TSTypeParameterDeclaration | null;
+ parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[];
+ typeAnnotation: TSTypeAnnotation | null;
+ computed: boolean;
+ kind: "method" | "get" | "set";
+ optional: boolean | null;
+}
+
+export interface TSIndexSignature extends BaseNode {
+ type: "TSIndexSignature";
+ parameters: Identifier[];
+ typeAnnotation: TSTypeAnnotation | null;
+ readonly: boolean | null;
+ static: boolean | null;
+}
+
+export interface TSAnyKeyword extends BaseNode {
+ type: "TSAnyKeyword";
+}
+
+export interface TSBooleanKeyword extends BaseNode {
+ type: "TSBooleanKeyword";
+}
+
+export interface TSBigIntKeyword extends BaseNode {
+ type: "TSBigIntKeyword";
+}
+
+export interface TSIntrinsicKeyword extends BaseNode {
+ type: "TSIntrinsicKeyword";
+}
+
+export interface TSNeverKeyword extends BaseNode {
+ type: "TSNeverKeyword";
+}
+
+export interface TSNullKeyword extends BaseNode {
+ type: "TSNullKeyword";
+}
+
+export interface TSNumberKeyword extends BaseNode {
+ type: "TSNumberKeyword";
+}
+
+export interface TSObjectKeyword extends BaseNode {
+ type: "TSObjectKeyword";
+}
+
+export interface TSStringKeyword extends BaseNode {
+ type: "TSStringKeyword";
+}
+
+export interface TSSymbolKeyword extends BaseNode {
+ type: "TSSymbolKeyword";
+}
+
+export interface TSUndefinedKeyword extends BaseNode {
+ type: "TSUndefinedKeyword";
+}
+
+export interface TSUnknownKeyword extends BaseNode {
+ type: "TSUnknownKeyword";
+}
+
+export interface TSVoidKeyword extends BaseNode {
+ type: "TSVoidKeyword";
+}
+
+export interface TSThisType extends BaseNode {
+ type: "TSThisType";
+}
+
+export interface TSFunctionType extends BaseNode {
+ type: "TSFunctionType";
+ typeParameters: TSTypeParameterDeclaration | null;
+ parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[];
+ typeAnnotation: TSTypeAnnotation | null;
+}
+
+export interface TSConstructorType extends BaseNode {
+ type: "TSConstructorType";
+ typeParameters: TSTypeParameterDeclaration | null;
+ parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[];
+ typeAnnotation: TSTypeAnnotation | null;
+ abstract: boolean | null;
+}
+
+export interface TSTypeReference extends BaseNode {
+ type: "TSTypeReference";
+ typeName: TSEntityName;
+ typeParameters: TSTypeParameterInstantiation | null;
+}
+
+export interface TSTypePredicate extends BaseNode {
+ type: "TSTypePredicate";
+ parameterName: Identifier | TSThisType;
+ typeAnnotation: TSTypeAnnotation | null;
+ asserts: boolean | null;
+}
+
+export interface TSTypeQuery extends BaseNode {
+ type: "TSTypeQuery";
+ exprName: TSEntityName | TSImportType;
+ typeParameters: TSTypeParameterInstantiation | null;
+}
+
+export interface TSTypeLiteral extends BaseNode {
+ type: "TSTypeLiteral";
+ members: TSTypeElement[];
+}
+
+export interface TSArrayType extends BaseNode {
+ type: "TSArrayType";
+ elementType: TSType;
+}
+
+export interface TSTupleType extends BaseNode {
+ type: "TSTupleType";
+ elementTypes: (TSType | TSNamedTupleMember)[];
+}
+
+export interface TSOptionalType extends BaseNode {
+ type: "TSOptionalType";
+ typeAnnotation: TSType;
+}
+
+export interface TSRestType extends BaseNode {
+ type: "TSRestType";
+ typeAnnotation: TSType;
+}
+
+export interface TSNamedTupleMember extends BaseNode {
+ type: "TSNamedTupleMember";
+ label: Identifier;
+ elementType: TSType;
+ optional: boolean;
+}
+
+export interface TSUnionType extends BaseNode {
+ type: "TSUnionType";
+ types: TSType[];
+}
+
+export interface TSIntersectionType extends BaseNode {
+ type: "TSIntersectionType";
+ types: TSType[];
+}
+
+export interface TSConditionalType extends BaseNode {
+ type: "TSConditionalType";
+ checkType: TSType;
+ extendsType: TSType;
+ trueType: TSType;
+ falseType: TSType;
+}
+
+export interface TSInferType extends BaseNode {
+ type: "TSInferType";
+ typeParameter: TSTypeParameter;
+}
+
+export interface TSParenthesizedType extends BaseNode {
+ type: "TSParenthesizedType";
+ typeAnnotation: TSType;
+}
+
+export interface TSTypeOperator extends BaseNode {
+ type: "TSTypeOperator";
+ typeAnnotation: TSType;
+ operator: string;
+}
+
+export interface TSIndexedAccessType extends BaseNode {
+ type: "TSIndexedAccessType";
+ objectType: TSType;
+ indexType: TSType;
+}
+
+export interface TSMappedType extends BaseNode {
+ type: "TSMappedType";
+ typeParameter: TSTypeParameter;
+ typeAnnotation: TSType | null;
+ nameType: TSType | null;
+ optional: true | false | "+" | "-" | null;
+ readonly: true | false | "+" | "-" | null;
+}
+
+export interface TSTemplateLiteralType extends BaseNode {
+ type: "TSTemplateLiteralType";
+ quasis: TemplateElement[];
+ types: TSType[];
+}
+
+export interface TSLiteralType extends BaseNode {
+ type: "TSLiteralType";
+ literal: NumericLiteral | StringLiteral | BooleanLiteral | BigIntLiteral | TemplateLiteral | UnaryExpression;
+}
+
+export interface TSExpressionWithTypeArguments extends BaseNode {
+ type: "TSExpressionWithTypeArguments";
+ expression: TSEntityName;
+ typeParameters: TSTypeParameterInstantiation | null;
+}
+
+export interface TSInterfaceDeclaration extends BaseNode {
+ type: "TSInterfaceDeclaration";
+ id: Identifier;
+ typeParameters: TSTypeParameterDeclaration | null;
+ extends: TSExpressionWithTypeArguments[] | null;
+ body: TSInterfaceBody;
+ declare: boolean | null;
+}
+
+export interface TSInterfaceBody extends BaseNode {
+ type: "TSInterfaceBody";
+ body: TSTypeElement[];
+}
+
+export interface TSTypeAliasDeclaration extends BaseNode {
+ type: "TSTypeAliasDeclaration";
+ id: Identifier;
+ typeParameters: TSTypeParameterDeclaration | null;
+ typeAnnotation: TSType;
+ declare: boolean | null;
+}
+
+export interface TSInstantiationExpression extends BaseNode {
+ type: "TSInstantiationExpression";
+ expression: Expression;
+ typeParameters: TSTypeParameterInstantiation | null;
+}
+
+export interface TSAsExpression extends BaseNode {
+ type: "TSAsExpression";
+ expression: Expression;
+ typeAnnotation: TSType;
+}
+
+export interface TSSatisfiesExpression extends BaseNode {
+ type: "TSSatisfiesExpression";
+ expression: Expression;
+ typeAnnotation: TSType;
+}
+
+export interface TSTypeAssertion extends BaseNode {
+ type: "TSTypeAssertion";
+ typeAnnotation: TSType;
+ expression: Expression;
+}
+
+export interface TSEnumBody extends BaseNode {
+ type: "TSEnumBody";
+ members: TSEnumMember[];
+}
+
+export interface TSEnumDeclaration extends BaseNode {
+ type: "TSEnumDeclaration";
+ id: Identifier;
+ members: TSEnumMember[];
+ body: TSEnumBody | null;
+ const: boolean | null;
+ declare: boolean | null;
+ initializer: Expression | null;
+}
+
+export interface TSEnumMember extends BaseNode {
+ type: "TSEnumMember";
+ id: Identifier | StringLiteral;
+ initializer: Expression | null;
+}
+
+export interface TSModuleDeclaration extends BaseNode {
+ type: "TSModuleDeclaration";
+ id: Identifier | StringLiteral;
+ body: TSModuleBlock | TSModuleDeclaration;
+ declare: boolean | null;
+ global: boolean | null;
+ kind: "global" | "module" | "namespace";
+}
+
+export interface TSModuleBlock extends BaseNode {
+ type: "TSModuleBlock";
+ body: Statement[];
+}
+
+export interface TSImportType extends BaseNode {
+ type: "TSImportType";
+ argument: StringLiteral;
+ qualifier: TSEntityName | null;
+ typeParameters: TSTypeParameterInstantiation | null;
+ options: ObjectExpression | null;
+}
+
+export interface TSImportEqualsDeclaration extends BaseNode {
+ type: "TSImportEqualsDeclaration";
+ id: Identifier;
+ moduleReference: TSEntityName | TSExternalModuleReference;
+ importKind: "type" | "value" | null;
+ isExport: boolean;
+}
+
+export interface TSExternalModuleReference extends BaseNode {
+ type: "TSExternalModuleReference";
+ expression: StringLiteral;
+}
+
+export interface TSNonNullExpression extends BaseNode {
+ type: "TSNonNullExpression";
+ expression: Expression;
+}
+
+export interface TSExportAssignment extends BaseNode {
+ type: "TSExportAssignment";
+ expression: Expression;
+}
+
+export interface TSNamespaceExportDeclaration extends BaseNode {
+ type: "TSNamespaceExportDeclaration";
+ id: Identifier;
+}
+
+export interface TSTypeAnnotation extends BaseNode {
+ type: "TSTypeAnnotation";
+ typeAnnotation: TSType;
+}
+
+export interface TSTypeParameterInstantiation extends BaseNode {
+ type: "TSTypeParameterInstantiation";
+ params: TSType[];
+}
+
+export interface TSTypeParameterDeclaration extends BaseNode {
+ type: "TSTypeParameterDeclaration";
+ params: TSTypeParameter[];
+}
+
+export interface TSTypeParameter extends BaseNode {
+ type: "TSTypeParameter";
+ constraint: TSType | null;
+ default: TSType | null;
+ name: string;
+ const: boolean | null;
+ in: boolean | null;
+ out: boolean | null;
+}
+
+/**
+ * @deprecated Use `NumericLiteral`
+ */
+export type NumberLiteral = NumericLiteral;
+
+/**
+ * @deprecated Use `RegExpLiteral`
+ */
+export type RegexLiteral = RegExpLiteral;
+
+/**
+ * @deprecated Use `RestElement`
+ */
+export type RestProperty = RestElement;
+
+/**
+ * @deprecated Use `SpreadElement`
+ */
+export type SpreadProperty = SpreadElement;
+
+export type Standardized = ArrayExpression | AssignmentExpression | BinaryExpression | InterpreterDirective | Directive | DirectiveLiteral | BlockStatement | BreakStatement | CallExpression | CatchClause | ConditionalExpression | ContinueStatement | DebuggerStatement | DoWhileStatement | EmptyStatement | ExpressionStatement | File | ForInStatement | ForStatement | FunctionDeclaration | FunctionExpression | Identifier | IfStatement | LabeledStatement | StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | RegExpLiteral | LogicalExpression | MemberExpression | NewExpression | Program | ObjectExpression | ObjectMethod | ObjectProperty | RestElement | ReturnStatement | SequenceExpression | ParenthesizedExpression | SwitchCase | SwitchStatement | ThisExpression | ThrowStatement | TryStatement | UnaryExpression | UpdateExpression | VariableDeclaration | VariableDeclarator | WhileStatement | WithStatement | AssignmentPattern | ArrayPattern | ArrowFunctionExpression | ClassBody | ClassExpression | ClassDeclaration | ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ExportSpecifier | ForOfStatement | ImportDeclaration | ImportDefaultSpecifier | ImportNamespaceSpecifier | ImportSpecifier | ImportExpression | MetaProperty | ClassMethod | ObjectPattern | SpreadElement | Super | TaggedTemplateExpression | TemplateElement | TemplateLiteral | YieldExpression | AwaitExpression | Import | BigIntLiteral | ExportNamespaceSpecifier | OptionalMemberExpression | OptionalCallExpression | ClassProperty | ClassAccessorProperty | ClassPrivateProperty | ClassPrivateMethod | PrivateName | StaticBlock | ImportAttribute;
+export type Expression = ArrayExpression | AssignmentExpression | BinaryExpression | CallExpression | ConditionalExpression | FunctionExpression | Identifier | StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | RegExpLiteral | LogicalExpression | MemberExpression | NewExpression | ObjectExpression | SequenceExpression | ParenthesizedExpression | ThisExpression | UnaryExpression | UpdateExpression | ArrowFunctionExpression | ClassExpression | ImportExpression | MetaProperty | Super | TaggedTemplateExpression | TemplateLiteral | YieldExpression | AwaitExpression | Import | BigIntLiteral | OptionalMemberExpression | OptionalCallExpression | TypeCastExpression | JSXElement | JSXFragment | BindExpression | DoExpression | RecordExpression | TupleExpression | DecimalLiteral | ModuleExpression | TopicReference | PipelineTopicExpression | PipelineBareFunction | PipelinePrimaryTopicReference | TSInstantiationExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression;
+export type Binary = BinaryExpression | LogicalExpression;
+export type Scopable = BlockStatement | CatchClause | DoWhileStatement | ForInStatement | ForStatement | FunctionDeclaration | FunctionExpression | Program | ObjectMethod | SwitchStatement | WhileStatement | ArrowFunctionExpression | ClassExpression | ClassDeclaration | ForOfStatement | ClassMethod | ClassPrivateMethod | StaticBlock | TSModuleBlock;
+export type BlockParent = BlockStatement | CatchClause | DoWhileStatement | ForInStatement | ForStatement | FunctionDeclaration | FunctionExpression | Program | ObjectMethod | SwitchStatement | WhileStatement | ArrowFunctionExpression | ForOfStatement | ClassMethod | ClassPrivateMethod | StaticBlock | TSModuleBlock;
+export type Block = BlockStatement | Program | TSModuleBlock;
+export type Statement = BlockStatement | BreakStatement | ContinueStatement | DebuggerStatement | DoWhileStatement | EmptyStatement | ExpressionStatement | ForInStatement | ForStatement | FunctionDeclaration | IfStatement | LabeledStatement | ReturnStatement | SwitchStatement | ThrowStatement | TryStatement | VariableDeclaration | WhileStatement | WithStatement | ClassDeclaration | ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ForOfStatement | ImportDeclaration | DeclareClass | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareTypeAlias | DeclareOpaqueType | DeclareVariable | DeclareExportDeclaration | DeclareExportAllDeclaration | InterfaceDeclaration | OpaqueType | TypeAlias | EnumDeclaration | TSDeclareFunction | TSInterfaceDeclaration | TSTypeAliasDeclaration | TSEnumDeclaration | TSModuleDeclaration | TSImportEqualsDeclaration | TSExportAssignment | TSNamespaceExportDeclaration;
+export type Terminatorless = BreakStatement | ContinueStatement | ReturnStatement | ThrowStatement | YieldExpression | AwaitExpression;
+export type CompletionStatement = BreakStatement | ContinueStatement | ReturnStatement | ThrowStatement;
+export type Conditional = ConditionalExpression | IfStatement;
+export type Loop = DoWhileStatement | ForInStatement | ForStatement | WhileStatement | ForOfStatement;
+export type While = DoWhileStatement | WhileStatement;
+export type ExpressionWrapper = ExpressionStatement | ParenthesizedExpression | TypeCastExpression;
+export type For = ForInStatement | ForStatement | ForOfStatement;
+export type ForXStatement = ForInStatement | ForOfStatement;
+export type Function = FunctionDeclaration | FunctionExpression | ObjectMethod | ArrowFunctionExpression | ClassMethod | ClassPrivateMethod;
+export type FunctionParent = FunctionDeclaration | FunctionExpression | ObjectMethod | ArrowFunctionExpression | ClassMethod | ClassPrivateMethod | StaticBlock | TSModuleBlock;
+export type Pureish = FunctionDeclaration | FunctionExpression | StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | RegExpLiteral | ArrowFunctionExpression | BigIntLiteral | DecimalLiteral;
+export type Declaration = FunctionDeclaration | VariableDeclaration | ClassDeclaration | ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ImportDeclaration | DeclareClass | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareTypeAlias | DeclareOpaqueType | DeclareVariable | DeclareExportDeclaration | DeclareExportAllDeclaration | InterfaceDeclaration | OpaqueType | TypeAlias | EnumDeclaration | TSDeclareFunction | TSInterfaceDeclaration | TSTypeAliasDeclaration | TSEnumDeclaration | TSModuleDeclaration | TSImportEqualsDeclaration;
+export type FunctionParameter = Identifier | RestElement | AssignmentPattern | ArrayPattern | ObjectPattern | VoidPattern;
+export type PatternLike = Identifier | MemberExpression | RestElement | AssignmentPattern | ArrayPattern | ObjectPattern | VoidPattern | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression;
+export type LVal = Identifier | MemberExpression | RestElement | AssignmentPattern | ArrayPattern | ObjectPattern | TSParameterProperty | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression;
+export type TSEntityName = Identifier | TSQualifiedName;
+export type Literal = StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | RegExpLiteral | TemplateLiteral | BigIntLiteral | DecimalLiteral;
+export type Immutable = StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | BigIntLiteral | JSXAttribute | JSXClosingElement | JSXElement | JSXExpressionContainer | JSXSpreadChild | JSXOpeningElement | JSXText | JSXFragment | JSXOpeningFragment | JSXClosingFragment | DecimalLiteral;
+export type UserWhitespacable = ObjectMethod | ObjectProperty | ObjectTypeInternalSlot | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeProperty | ObjectTypeSpreadProperty;
+export type Method = ObjectMethod | ClassMethod | ClassPrivateMethod;
+export type ObjectMember = ObjectMethod | ObjectProperty;
+export type Property = ObjectProperty | ClassProperty | ClassAccessorProperty | ClassPrivateProperty;
+export type UnaryLike = UnaryExpression | SpreadElement;
+export type Pattern = AssignmentPattern | ArrayPattern | ObjectPattern | VoidPattern;
+export type Class = ClassExpression | ClassDeclaration;
+export type ImportOrExportDeclaration = ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ImportDeclaration;
+export type ExportDeclaration = ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration;
+export type ModuleSpecifier = ExportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier | ImportSpecifier | ExportNamespaceSpecifier | ExportDefaultSpecifier;
+export type Accessor = ClassAccessorProperty;
+export type Private = ClassPrivateProperty | ClassPrivateMethod | PrivateName;
+export type Flow = AnyTypeAnnotation | ArrayTypeAnnotation | BooleanTypeAnnotation | BooleanLiteralTypeAnnotation | NullLiteralTypeAnnotation | ClassImplements | DeclareClass | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareTypeAlias | DeclareOpaqueType | DeclareVariable | DeclareExportDeclaration | DeclareExportAllDeclaration | DeclaredPredicate | ExistsTypeAnnotation | FunctionTypeAnnotation | FunctionTypeParam | GenericTypeAnnotation | InferredPredicate | InterfaceExtends | InterfaceDeclaration | InterfaceTypeAnnotation | IntersectionTypeAnnotation | MixedTypeAnnotation | EmptyTypeAnnotation | NullableTypeAnnotation | NumberLiteralTypeAnnotation | NumberTypeAnnotation | ObjectTypeAnnotation | ObjectTypeInternalSlot | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | QualifiedTypeIdentifier | StringLiteralTypeAnnotation | StringTypeAnnotation | SymbolTypeAnnotation | ThisTypeAnnotation | TupleTypeAnnotation | TypeofTypeAnnotation | TypeAlias | TypeAnnotation | TypeCastExpression | TypeParameter | TypeParameterDeclaration | TypeParameterInstantiation | UnionTypeAnnotation | Variance | VoidTypeAnnotation | EnumDeclaration | EnumBooleanBody | EnumNumberBody | EnumStringBody | EnumSymbolBody | EnumBooleanMember | EnumNumberMember | EnumStringMember | EnumDefaultedMember | IndexedAccessType | OptionalIndexedAccessType;
+export type FlowType = AnyTypeAnnotation | ArrayTypeAnnotation | BooleanTypeAnnotation | BooleanLiteralTypeAnnotation | NullLiteralTypeAnnotation | ExistsTypeAnnotation | FunctionTypeAnnotation | GenericTypeAnnotation | InterfaceTypeAnnotation | IntersectionTypeAnnotation | MixedTypeAnnotation | EmptyTypeAnnotation | NullableTypeAnnotation | NumberLiteralTypeAnnotation | NumberTypeAnnotation | ObjectTypeAnnotation | StringLiteralTypeAnnotation | StringTypeAnnotation | SymbolTypeAnnotation | ThisTypeAnnotation | TupleTypeAnnotation | TypeofTypeAnnotation | UnionTypeAnnotation | VoidTypeAnnotation | IndexedAccessType | OptionalIndexedAccessType;
+export type FlowBaseAnnotation = AnyTypeAnnotation | BooleanTypeAnnotation | NullLiteralTypeAnnotation | MixedTypeAnnotation | EmptyTypeAnnotation | NumberTypeAnnotation | StringTypeAnnotation | SymbolTypeAnnotation | ThisTypeAnnotation | VoidTypeAnnotation;
+export type FlowDeclaration = DeclareClass | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareTypeAlias | DeclareOpaqueType | DeclareVariable | DeclareExportDeclaration | DeclareExportAllDeclaration | InterfaceDeclaration | OpaqueType | TypeAlias;
+export type FlowPredicate = DeclaredPredicate | InferredPredicate;
+export type EnumBody = EnumBooleanBody | EnumNumberBody | EnumStringBody | EnumSymbolBody;
+export type EnumMember = EnumBooleanMember | EnumNumberMember | EnumStringMember | EnumDefaultedMember;
+export type JSX = JSXAttribute | JSXClosingElement | JSXElement | JSXEmptyExpression | JSXExpressionContainer | JSXSpreadChild | JSXIdentifier | JSXMemberExpression | JSXNamespacedName | JSXOpeningElement | JSXSpreadAttribute | JSXText | JSXFragment | JSXOpeningFragment | JSXClosingFragment;
+export type Miscellaneous = Noop | Placeholder | V8IntrinsicIdentifier;
+export type TypeScript = TSParameterProperty | TSDeclareFunction | TSDeclareMethod | TSQualifiedName | TSCallSignatureDeclaration | TSConstructSignatureDeclaration | TSPropertySignature | TSMethodSignature | TSIndexSignature | TSAnyKeyword | TSBooleanKeyword | TSBigIntKeyword | TSIntrinsicKeyword | TSNeverKeyword | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSStringKeyword | TSSymbolKeyword | TSUndefinedKeyword | TSUnknownKeyword | TSVoidKeyword | TSThisType | TSFunctionType | TSConstructorType | TSTypeReference | TSTypePredicate | TSTypeQuery | TSTypeLiteral | TSArrayType | TSTupleType | TSOptionalType | TSRestType | TSNamedTupleMember | TSUnionType | TSIntersectionType | TSConditionalType | TSInferType | TSParenthesizedType | TSTypeOperator | TSIndexedAccessType | TSMappedType | TSTemplateLiteralType | TSLiteralType | TSExpressionWithTypeArguments | TSInterfaceDeclaration | TSInterfaceBody | TSTypeAliasDeclaration | TSInstantiationExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSEnumBody | TSEnumDeclaration | TSEnumMember | TSModuleDeclaration | TSModuleBlock | TSImportType | TSImportEqualsDeclaration | TSExternalModuleReference | TSNonNullExpression | TSExportAssignment | TSNamespaceExportDeclaration | TSTypeAnnotation | TSTypeParameterInstantiation | TSTypeParameterDeclaration | TSTypeParameter;
+export type TSTypeElement = TSCallSignatureDeclaration | TSConstructSignatureDeclaration | TSPropertySignature | TSMethodSignature | TSIndexSignature;
+export type TSType = TSAnyKeyword | TSBooleanKeyword | TSBigIntKeyword | TSIntrinsicKeyword | TSNeverKeyword | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSStringKeyword | TSSymbolKeyword | TSUndefinedKeyword | TSUnknownKeyword | TSVoidKeyword | TSThisType | TSFunctionType | TSConstructorType | TSTypeReference | TSTypePredicate | TSTypeQuery | TSTypeLiteral | TSArrayType | TSTupleType | TSOptionalType | TSRestType | TSUnionType | TSIntersectionType | TSConditionalType | TSInferType | TSParenthesizedType | TSTypeOperator | TSIndexedAccessType | TSMappedType | TSTemplateLiteralType | TSLiteralType | TSExpressionWithTypeArguments | TSImportType;
+export type TSBaseType = TSAnyKeyword | TSBooleanKeyword | TSBigIntKeyword | TSIntrinsicKeyword | TSNeverKeyword | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSStringKeyword | TSSymbolKeyword | TSUndefinedKeyword | TSUnknownKeyword | TSVoidKeyword | TSThisType | TSTemplateLiteralType | TSLiteralType;
+export type ModuleDeclaration = ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ImportDeclaration;
+
+export interface Aliases {
+ Standardized: Standardized;
+ Expression: Expression;
+ Binary: Binary;
+ Scopable: Scopable;
+ BlockParent: BlockParent;
+ Block: Block;
+ Statement: Statement;
+ Terminatorless: Terminatorless;
+ CompletionStatement: CompletionStatement;
+ Conditional: Conditional;
+ Loop: Loop;
+ While: While;
+ ExpressionWrapper: ExpressionWrapper;
+ For: For;
+ ForXStatement: ForXStatement;
+ Function: Function;
+ FunctionParent: FunctionParent;
+ Pureish: Pureish;
+ Declaration: Declaration;
+ FunctionParameter: FunctionParameter;
+ PatternLike: PatternLike;
+ LVal: LVal;
+ TSEntityName: TSEntityName;
+ Literal: Literal;
+ Immutable: Immutable;
+ UserWhitespacable: UserWhitespacable;
+ Method: Method;
+ ObjectMember: ObjectMember;
+ Property: Property;
+ UnaryLike: UnaryLike;
+ Pattern: Pattern;
+ Class: Class;
+ ImportOrExportDeclaration: ImportOrExportDeclaration;
+ ExportDeclaration: ExportDeclaration;
+ ModuleSpecifier: ModuleSpecifier;
+ Accessor: Accessor;
+ Private: Private;
+ Flow: Flow;
+ FlowType: FlowType;
+ FlowBaseAnnotation: FlowBaseAnnotation;
+ FlowDeclaration: FlowDeclaration;
+ FlowPredicate: FlowPredicate;
+ EnumBody: EnumBody;
+ EnumMember: EnumMember;
+ JSX: JSX;
+ Miscellaneous: Miscellaneous;
+ TypeScript: TypeScript;
+ TSTypeElement: TSTypeElement;
+ TSType: TSType;
+ TSBaseType: TSBaseType;
+ ModuleDeclaration: ModuleDeclaration;
+}
+
+export function arrayExpression(elements?: (null | Expression | SpreadElement)[]): ArrayExpression;
+export function assignmentExpression(operator: string, left: LVal | OptionalMemberExpression, right: Expression): AssignmentExpression;
+export function binaryExpression(operator: "+" | "-" | "/" | "%" | "*" | "**" | "&" | "|" | ">>" | ">>>" | "<<" | "^" | "==" | "===" | "!=" | "!==" | "in" | "instanceof" | ">" | "<" | ">=" | "<=" | "|>", left: Expression | PrivateName, right: Expression): BinaryExpression;
+export function interpreterDirective(value: string): InterpreterDirective;
+export function directive(value: DirectiveLiteral): Directive;
+export function directiveLiteral(value: string): DirectiveLiteral;
+export function blockStatement(body: Statement[], directives?: Directive[]): BlockStatement;
+export function breakStatement(label?: Identifier | null): BreakStatement;
+export function callExpression(callee: Expression | Super | V8IntrinsicIdentifier, _arguments: (Expression | SpreadElement | ArgumentPlaceholder)[]): CallExpression;
+export function catchClause(param: Identifier | ArrayPattern | ObjectPattern | null | undefined, body: BlockStatement): CatchClause;
+export function conditionalExpression(test: Expression, consequent: Expression, alternate: Expression): ConditionalExpression;
+export function continueStatement(label?: Identifier | null): ContinueStatement;
+export function debuggerStatement(): DebuggerStatement;
+export function doWhileStatement(test: Expression, body: Statement): DoWhileStatement;
+export function emptyStatement(): EmptyStatement;
+export function expressionStatement(expression: Expression): ExpressionStatement;
+export function file(program: Program, comments?: (CommentBlock | CommentLine)[] | null, tokens?: any[] | null): File;
+export function forInStatement(left: VariableDeclaration | LVal, right: Expression, body: Statement): ForInStatement;
+export function forStatement(init: VariableDeclaration | Expression | null | undefined, test: Expression | null | undefined, update: Expression | null | undefined, body: Statement): ForStatement;
+export function functionDeclaration(id: Identifier | null | undefined, params: FunctionParameter[], body: BlockStatement, generator?: boolean, async?: boolean): FunctionDeclaration;
+export function functionExpression(id: Identifier | null | undefined, params: FunctionParameter[], body: BlockStatement, generator?: boolean, async?: boolean): FunctionExpression;
+export function identifier(name: string): Identifier;
+export function ifStatement(test: Expression, consequent: Statement, alternate?: Statement | null): IfStatement;
+export function labeledStatement(label: Identifier, body: Statement): LabeledStatement;
+export function stringLiteral(value: string): StringLiteral;
+export function numericLiteral(value: number): NumericLiteral;
+export function nullLiteral(): NullLiteral;
+export function booleanLiteral(value: boolean): BooleanLiteral;
+export function regExpLiteral(pattern: string, flags?: string): RegExpLiteral;
+export function logicalExpression(operator: "||" | "&&" | "??", left: Expression, right: Expression): LogicalExpression;
+export function memberExpression(object: Expression | Super, property: Expression | Identifier | PrivateName, computed?: boolean, optional?: boolean | null): MemberExpression;
+export function newExpression(callee: Expression | Super | V8IntrinsicIdentifier, _arguments: (Expression | SpreadElement | ArgumentPlaceholder)[]): NewExpression;
+export function program(body: Statement[], directives?: Directive[], sourceType?: "script" | "module", interpreter?: InterpreterDirective | null): Program;
+export function objectExpression(properties: (ObjectMethod | ObjectProperty | SpreadElement)[]): ObjectExpression;
+export function objectMethod(kind: "method" | "get" | "set" | undefined, key: Expression | Identifier | StringLiteral | NumericLiteral | BigIntLiteral, params: FunctionParameter[], body: BlockStatement, computed?: boolean, generator?: boolean, async?: boolean): ObjectMethod;
+export function objectProperty(key: Expression | Identifier | StringLiteral | NumericLiteral | BigIntLiteral | DecimalLiteral | PrivateName, value: Expression | PatternLike, computed?: boolean, shorthand?: boolean, decorators?: Decorator[] | null): ObjectProperty;
+export function restElement(argument: Identifier | ArrayPattern | ObjectPattern | MemberExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression | RestElement | AssignmentPattern): RestElement;
+export function returnStatement(argument?: Expression | null): ReturnStatement;
+export function sequenceExpression(expressions: Expression[]): SequenceExpression;
+export function parenthesizedExpression(expression: Expression): ParenthesizedExpression;
+export function switchCase(test: Expression | null | undefined, consequent: Statement[]): SwitchCase;
+export function switchStatement(discriminant: Expression, cases: SwitchCase[]): SwitchStatement;
+export function thisExpression(): ThisExpression;
+export function throwStatement(argument: Expression): ThrowStatement;
+export function tryStatement(block: BlockStatement, handler?: CatchClause | null, finalizer?: BlockStatement | null): TryStatement;
+export function unaryExpression(operator: "void" | "throw" | "delete" | "!" | "+" | "-" | "~" | "typeof", argument: Expression, prefix?: boolean): UnaryExpression;
+export function updateExpression(operator: "++" | "--", argument: Expression, prefix?: boolean): UpdateExpression;
+export function variableDeclaration(kind: "var" | "let" | "const" | "using" | "await using", declarations: VariableDeclarator[]): VariableDeclaration;
+export function variableDeclarator(id: LVal | VoidPattern, init?: Expression | null): VariableDeclarator;
+export function whileStatement(test: Expression, body: Statement): WhileStatement;
+export function withStatement(object: Expression, body: Statement): WithStatement;
+export function assignmentPattern(left: Identifier | ObjectPattern | ArrayPattern | MemberExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression, right: Expression): AssignmentPattern;
+export function arrayPattern(elements: (null | PatternLike)[]): ArrayPattern;
+export function arrowFunctionExpression(params: FunctionParameter[], body: BlockStatement | Expression, async?: boolean): ArrowFunctionExpression;
+export function classBody(body: (ClassMethod | ClassPrivateMethod | ClassProperty | ClassPrivateProperty | ClassAccessorProperty | TSDeclareMethod | TSIndexSignature | StaticBlock)[]): ClassBody;
+export function classExpression(id: Identifier | null | undefined, superClass: Expression | null | undefined, body: ClassBody, decorators?: Decorator[] | null): ClassExpression;
+export function classDeclaration(id: Identifier | null | undefined, superClass: Expression | null | undefined, body: ClassBody, decorators?: Decorator[] | null): ClassDeclaration;
+export function exportAllDeclaration(source: StringLiteral, attributes?: ImportAttribute[] | null): ExportAllDeclaration;
+export function exportDefaultDeclaration(declaration: TSDeclareFunction | FunctionDeclaration | ClassDeclaration | Expression): ExportDefaultDeclaration;
+export function exportNamedDeclaration(declaration?: Declaration | null, specifiers?: (ExportSpecifier | ExportDefaultSpecifier | ExportNamespaceSpecifier)[], source?: StringLiteral | null, attributes?: ImportAttribute[] | null): ExportNamedDeclaration;
+export function exportSpecifier(local: Identifier, exported: Identifier | StringLiteral): ExportSpecifier;
+export function forOfStatement(left: VariableDeclaration | LVal, right: Expression, body: Statement, _await?: boolean): ForOfStatement;
+export function importDeclaration(specifiers: (ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier)[], source: StringLiteral, attributes?: ImportAttribute[] | null): ImportDeclaration;
+export function importDefaultSpecifier(local: Identifier): ImportDefaultSpecifier;
+export function importNamespaceSpecifier(local: Identifier): ImportNamespaceSpecifier;
+export function importSpecifier(local: Identifier, imported: Identifier | StringLiteral): ImportSpecifier;
+export function importExpression(source: Expression, options?: Expression | null): ImportExpression;
+export function metaProperty(meta: Identifier, property: Identifier): MetaProperty;
+export function classMethod(kind: "get" | "set" | "method" | "constructor" | undefined, key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression, params: (FunctionParameter | TSParameterProperty)[], body: BlockStatement, computed?: boolean, _static?: boolean, generator?: boolean, async?: boolean): ClassMethod;
+export function objectPattern(properties: (RestElement | ObjectProperty)[]): ObjectPattern;
+export function spreadElement(argument: Expression): SpreadElement;
+declare function _super(): Super;
+export { _super as super}
+export function taggedTemplateExpression(tag: Expression, quasi: TemplateLiteral): TaggedTemplateExpression;
+export function templateElement(value: { raw: string, cooked?: string }, tail?: boolean): TemplateElement;
+export function templateLiteral(quasis: TemplateElement[], expressions: (Expression | TSType)[]): TemplateLiteral;
+export function yieldExpression(argument?: Expression | null, delegate?: boolean): YieldExpression;
+export function awaitExpression(argument: Expression): AwaitExpression;
+declare function _import(): Import;
+export { _import as import}
+export function bigIntLiteral(value: string): BigIntLiteral;
+export function exportNamespaceSpecifier(exported: Identifier): ExportNamespaceSpecifier;
+export function optionalMemberExpression(object: Expression, property: Expression | Identifier, computed: boolean | undefined, optional: boolean): OptionalMemberExpression;
+export function optionalCallExpression(callee: Expression, _arguments: (Expression | SpreadElement | ArgumentPlaceholder)[], optional: boolean): OptionalCallExpression;
+export function classProperty(key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression, value?: Expression | null, typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null, decorators?: Decorator[] | null, computed?: boolean, _static?: boolean): ClassProperty;
+export function classAccessorProperty(key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression | PrivateName, value?: Expression | null, typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null, decorators?: Decorator[] | null, computed?: boolean, _static?: boolean): ClassAccessorProperty;
+export function classPrivateProperty(key: PrivateName, value?: Expression | null, decorators?: Decorator[] | null, _static?: boolean): ClassPrivateProperty;
+export function classPrivateMethod(kind: "get" | "set" | "method" | undefined, key: PrivateName, params: (FunctionParameter | TSParameterProperty)[], body: BlockStatement, _static?: boolean): ClassPrivateMethod;
+export function privateName(id: Identifier): PrivateName;
+export function staticBlock(body: Statement[]): StaticBlock;
+export function importAttribute(key: Identifier | StringLiteral, value: StringLiteral): ImportAttribute;
+export function anyTypeAnnotation(): AnyTypeAnnotation;
+export function arrayTypeAnnotation(elementType: FlowType): ArrayTypeAnnotation;
+export function booleanTypeAnnotation(): BooleanTypeAnnotation;
+export function booleanLiteralTypeAnnotation(value: boolean): BooleanLiteralTypeAnnotation;
+export function nullLiteralTypeAnnotation(): NullLiteralTypeAnnotation;
+export function classImplements(id: Identifier, typeParameters?: TypeParameterInstantiation | null): ClassImplements;
+export function declareClass(id: Identifier, typeParameters: TypeParameterDeclaration | null | undefined, _extends: InterfaceExtends[] | null | undefined, body: ObjectTypeAnnotation): DeclareClass;
+export function declareFunction(id: Identifier): DeclareFunction;
+export function declareInterface(id: Identifier, typeParameters: TypeParameterDeclaration | null | undefined, _extends: InterfaceExtends[] | null | undefined, body: ObjectTypeAnnotation): DeclareInterface;
+export function declareModule(id: Identifier | StringLiteral, body: BlockStatement, kind?: "CommonJS" | "ES" | null): DeclareModule;
+export function declareModuleExports(typeAnnotation: TypeAnnotation): DeclareModuleExports;
+export function declareTypeAlias(id: Identifier, typeParameters: TypeParameterDeclaration | null | undefined, right: FlowType): DeclareTypeAlias;
+export function declareOpaqueType(id: Identifier, typeParameters?: TypeParameterDeclaration | null, supertype?: FlowType | null): DeclareOpaqueType;
+export function declareVariable(id: Identifier): DeclareVariable;
+export function declareExportDeclaration(declaration?: Flow | null, specifiers?: (ExportSpecifier | ExportNamespaceSpecifier)[] | null, source?: StringLiteral | null, attributes?: ImportAttribute[] | null): DeclareExportDeclaration;
+export function declareExportAllDeclaration(source: StringLiteral, attributes?: ImportAttribute[] | null): DeclareExportAllDeclaration;
+export function declaredPredicate(value: Flow): DeclaredPredicate;
+export function existsTypeAnnotation(): ExistsTypeAnnotation;
+export function functionTypeAnnotation(typeParameters: TypeParameterDeclaration | null | undefined, params: FunctionTypeParam[], rest: FunctionTypeParam | null | undefined, returnType: FlowType): FunctionTypeAnnotation;
+export function functionTypeParam(name: Identifier | null | undefined, typeAnnotation: FlowType): FunctionTypeParam;
+export function genericTypeAnnotation(id: Identifier | QualifiedTypeIdentifier, typeParameters?: TypeParameterInstantiation | null): GenericTypeAnnotation;
+export function inferredPredicate(): InferredPredicate;
+export function interfaceExtends(id: Identifier | QualifiedTypeIdentifier, typeParameters?: TypeParameterInstantiation | null): InterfaceExtends;
+export function interfaceDeclaration(id: Identifier, typeParameters: TypeParameterDeclaration | null | undefined, _extends: InterfaceExtends[] | null | undefined, body: ObjectTypeAnnotation): InterfaceDeclaration;
+export function interfaceTypeAnnotation(_extends: InterfaceExtends[] | null | undefined, body: ObjectTypeAnnotation): InterfaceTypeAnnotation;
+export function intersectionTypeAnnotation(types: FlowType[]): IntersectionTypeAnnotation;
+export function mixedTypeAnnotation(): MixedTypeAnnotation;
+export function emptyTypeAnnotation(): EmptyTypeAnnotation;
+export function nullableTypeAnnotation(typeAnnotation: FlowType): NullableTypeAnnotation;
+export function numberLiteralTypeAnnotation(value: number): NumberLiteralTypeAnnotation;
+export function numberTypeAnnotation(): NumberTypeAnnotation;
+export function objectTypeAnnotation(properties: (ObjectTypeProperty | ObjectTypeSpreadProperty)[], indexers?: ObjectTypeIndexer[], callProperties?: ObjectTypeCallProperty[], internalSlots?: ObjectTypeInternalSlot[], exact?: boolean): ObjectTypeAnnotation;
+export function objectTypeInternalSlot(id: Identifier, value: FlowType, optional: boolean, _static: boolean, method: boolean): ObjectTypeInternalSlot;
+export function objectTypeCallProperty(value: FlowType): ObjectTypeCallProperty;
+export function objectTypeIndexer(id: Identifier | null | undefined, key: FlowType, value: FlowType, variance?: Variance | null): ObjectTypeIndexer;
+export function objectTypeProperty(key: Identifier | StringLiteral, value: FlowType, variance?: Variance | null): ObjectTypeProperty;
+export function objectTypeSpreadProperty(argument: FlowType): ObjectTypeSpreadProperty;
+export function opaqueType(id: Identifier, typeParameters: TypeParameterDeclaration | null | undefined, supertype: FlowType | null | undefined, impltype: FlowType): OpaqueType;
+export function qualifiedTypeIdentifier(id: Identifier, qualification: Identifier | QualifiedTypeIdentifier): QualifiedTypeIdentifier;
+export function stringLiteralTypeAnnotation(value: string): StringLiteralTypeAnnotation;
+export function stringTypeAnnotation(): StringTypeAnnotation;
+export function symbolTypeAnnotation(): SymbolTypeAnnotation;
+export function thisTypeAnnotation(): ThisTypeAnnotation;
+export function tupleTypeAnnotation(types: FlowType[]): TupleTypeAnnotation;
+export function typeofTypeAnnotation(argument: FlowType): TypeofTypeAnnotation;
+export function typeAlias(id: Identifier, typeParameters: TypeParameterDeclaration | null | undefined, right: FlowType): TypeAlias;
+export function typeAnnotation(typeAnnotation: FlowType): TypeAnnotation;
+export function typeCastExpression(expression: Expression, typeAnnotation: TypeAnnotation): TypeCastExpression;
+export function typeParameter(bound?: TypeAnnotation | null, _default?: FlowType | null, variance?: Variance | null): TypeParameter;
+export function typeParameterDeclaration(params: TypeParameter[]): TypeParameterDeclaration;
+export function typeParameterInstantiation(params: FlowType[]): TypeParameterInstantiation;
+export function unionTypeAnnotation(types: FlowType[]): UnionTypeAnnotation;
+export function variance(kind: "minus" | "plus"): Variance;
+export function voidTypeAnnotation(): VoidTypeAnnotation;
+export function enumDeclaration(id: Identifier, body: EnumBooleanBody | EnumNumberBody | EnumStringBody | EnumSymbolBody): EnumDeclaration;
+export function enumBooleanBody(members: EnumBooleanMember[]): EnumBooleanBody;
+export function enumNumberBody(members: EnumNumberMember[]): EnumNumberBody;
+export function enumStringBody(members: (EnumStringMember | EnumDefaultedMember)[]): EnumStringBody;
+export function enumSymbolBody(members: EnumDefaultedMember[]): EnumSymbolBody;
+export function enumBooleanMember(id: Identifier): EnumBooleanMember;
+export function enumNumberMember(id: Identifier, init: NumericLiteral): EnumNumberMember;
+export function enumStringMember(id: Identifier, init: StringLiteral): EnumStringMember;
+export function enumDefaultedMember(id: Identifier): EnumDefaultedMember;
+export function indexedAccessType(objectType: FlowType, indexType: FlowType): IndexedAccessType;
+export function optionalIndexedAccessType(objectType: FlowType, indexType: FlowType): OptionalIndexedAccessType;
+export function jsxAttribute(name: JSXIdentifier | JSXNamespacedName, value?: JSXElement | JSXFragment | StringLiteral | JSXExpressionContainer | null): JSXAttribute;
+export function jsxClosingElement(name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName): JSXClosingElement;
+export function jsxElement(openingElement: JSXOpeningElement, closingElement: JSXClosingElement | null | undefined, children: (JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment)[], selfClosing?: boolean | null): JSXElement;
+export function jsxEmptyExpression(): JSXEmptyExpression;
+export function jsxExpressionContainer(expression: Expression | JSXEmptyExpression): JSXExpressionContainer;
+export function jsxSpreadChild(expression: Expression): JSXSpreadChild;
+export function jsxIdentifier(name: string): JSXIdentifier;
+export function jsxMemberExpression(object: JSXMemberExpression | JSXIdentifier, property: JSXIdentifier): JSXMemberExpression;
+export function jsxNamespacedName(namespace: JSXIdentifier, name: JSXIdentifier): JSXNamespacedName;
+export function jsxOpeningElement(name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName, attributes: (JSXAttribute | JSXSpreadAttribute)[], selfClosing?: boolean): JSXOpeningElement;
+export function jsxSpreadAttribute(argument: Expression): JSXSpreadAttribute;
+export function jsxText(value: string): JSXText;
+export function jsxFragment(openingFragment: JSXOpeningFragment, closingFragment: JSXClosingFragment, children: (JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment)[]): JSXFragment;
+export function jsxOpeningFragment(): JSXOpeningFragment;
+export function jsxClosingFragment(): JSXClosingFragment;
+export function noop(): Noop;
+export function placeholder(expectedNode: "Identifier" | "StringLiteral" | "Expression" | "Statement" | "Declaration" | "BlockStatement" | "ClassBody" | "Pattern", name: Identifier): Placeholder;
+export function v8IntrinsicIdentifier(name: string): V8IntrinsicIdentifier;
+export function argumentPlaceholder(): ArgumentPlaceholder;
+export function bindExpression(object: Expression, callee: Expression): BindExpression;
+export function decorator(expression: Expression): Decorator;
+export function doExpression(body: BlockStatement, async?: boolean): DoExpression;
+export function exportDefaultSpecifier(exported: Identifier): ExportDefaultSpecifier;
+export function recordExpression(properties: (ObjectProperty | SpreadElement)[]): RecordExpression;
+export function tupleExpression(elements?: (Expression | SpreadElement)[]): TupleExpression;
+export function decimalLiteral(value: string): DecimalLiteral;
+export function moduleExpression(body: Program): ModuleExpression;
+export function topicReference(): TopicReference;
+export function pipelineTopicExpression(expression: Expression): PipelineTopicExpression;
+export function pipelineBareFunction(callee: Expression): PipelineBareFunction;
+export function pipelinePrimaryTopicReference(): PipelinePrimaryTopicReference;
+export function voidPattern(): VoidPattern;
+export function tsParameterProperty(parameter: Identifier | AssignmentPattern): TSParameterProperty;
+export function tsDeclareFunction(id: Identifier | null | undefined, typeParameters: TSTypeParameterDeclaration | Noop | null | undefined, params: FunctionParameter[], returnType?: TSTypeAnnotation | Noop | null): TSDeclareFunction;
+export function tsDeclareMethod(decorators: Decorator[] | null | undefined, key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression, typeParameters: TSTypeParameterDeclaration | Noop | null | undefined, params: (FunctionParameter | TSParameterProperty)[], returnType?: TSTypeAnnotation | Noop | null): TSDeclareMethod;
+export function tsQualifiedName(left: TSEntityName, right: Identifier): TSQualifiedName;
+export function tsCallSignatureDeclaration(typeParameters: TSTypeParameterDeclaration | null | undefined, parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[], typeAnnotation?: TSTypeAnnotation | null): TSCallSignatureDeclaration;
+export function tsConstructSignatureDeclaration(typeParameters: TSTypeParameterDeclaration | null | undefined, parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[], typeAnnotation?: TSTypeAnnotation | null): TSConstructSignatureDeclaration;
+export function tsPropertySignature(key: Expression, typeAnnotation?: TSTypeAnnotation | null): TSPropertySignature;
+export function tsMethodSignature(key: Expression, typeParameters: TSTypeParameterDeclaration | null | undefined, parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[], typeAnnotation?: TSTypeAnnotation | null): TSMethodSignature;
+export function tsIndexSignature(parameters: Identifier[], typeAnnotation?: TSTypeAnnotation | null): TSIndexSignature;
+export function tsAnyKeyword(): TSAnyKeyword;
+export function tsBooleanKeyword(): TSBooleanKeyword;
+export function tsBigIntKeyword(): TSBigIntKeyword;
+export function tsIntrinsicKeyword(): TSIntrinsicKeyword;
+export function tsNeverKeyword(): TSNeverKeyword;
+export function tsNullKeyword(): TSNullKeyword;
+export function tsNumberKeyword(): TSNumberKeyword;
+export function tsObjectKeyword(): TSObjectKeyword;
+export function tsStringKeyword(): TSStringKeyword;
+export function tsSymbolKeyword(): TSSymbolKeyword;
+export function tsUndefinedKeyword(): TSUndefinedKeyword;
+export function tsUnknownKeyword(): TSUnknownKeyword;
+export function tsVoidKeyword(): TSVoidKeyword;
+export function tsThisType(): TSThisType;
+export function tsFunctionType(typeParameters: TSTypeParameterDeclaration | null | undefined, parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[], typeAnnotation?: TSTypeAnnotation | null): TSFunctionType;
+export function tsConstructorType(typeParameters: TSTypeParameterDeclaration | null | undefined, parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[], typeAnnotation?: TSTypeAnnotation | null): TSConstructorType;
+export function tsTypeReference(typeName: TSEntityName, typeParameters?: TSTypeParameterInstantiation | null): TSTypeReference;
+export function tsTypePredicate(parameterName: Identifier | TSThisType, typeAnnotation?: TSTypeAnnotation | null, asserts?: boolean | null): TSTypePredicate;
+export function tsTypeQuery(exprName: TSEntityName | TSImportType, typeParameters?: TSTypeParameterInstantiation | null): TSTypeQuery;
+export function tsTypeLiteral(members: TSTypeElement[]): TSTypeLiteral;
+export function tsArrayType(elementType: TSType): TSArrayType;
+export function tsTupleType(elementTypes: (TSType | TSNamedTupleMember)[]): TSTupleType;
+export function tsOptionalType(typeAnnotation: TSType): TSOptionalType;
+export function tsRestType(typeAnnotation: TSType): TSRestType;
+export function tsNamedTupleMember(label: Identifier, elementType: TSType, optional?: boolean): TSNamedTupleMember;
+export function tsUnionType(types: TSType[]): TSUnionType;
+export function tsIntersectionType(types: TSType[]): TSIntersectionType;
+export function tsConditionalType(checkType: TSType, extendsType: TSType, trueType: TSType, falseType: TSType): TSConditionalType;
+export function tsInferType(typeParameter: TSTypeParameter): TSInferType;
+export function tsParenthesizedType(typeAnnotation: TSType): TSParenthesizedType;
+export function tsTypeOperator(typeAnnotation: TSType, operator?: string): TSTypeOperator;
+export function tsIndexedAccessType(objectType: TSType, indexType: TSType): TSIndexedAccessType;
+export function tsMappedType(typeParameter: TSTypeParameter, typeAnnotation?: TSType | null, nameType?: TSType | null): TSMappedType;
+export function tsTemplateLiteralType(quasis: TemplateElement[], types: TSType[]): TSTemplateLiteralType;
+export function tsLiteralType(literal: NumericLiteral | StringLiteral | BooleanLiteral | BigIntLiteral | TemplateLiteral | UnaryExpression): TSLiteralType;
+export function tsExpressionWithTypeArguments(expression: TSEntityName, typeParameters?: TSTypeParameterInstantiation | null): TSExpressionWithTypeArguments;
+export function tsInterfaceDeclaration(id: Identifier, typeParameters: TSTypeParameterDeclaration | null | undefined, _extends: TSExpressionWithTypeArguments[] | null | undefined, body: TSInterfaceBody): TSInterfaceDeclaration;
+export function tsInterfaceBody(body: TSTypeElement[]): TSInterfaceBody;
+export function tsTypeAliasDeclaration(id: Identifier, typeParameters: TSTypeParameterDeclaration | null | undefined, typeAnnotation: TSType): TSTypeAliasDeclaration;
+export function tsInstantiationExpression(expression: Expression, typeParameters?: TSTypeParameterInstantiation | null): TSInstantiationExpression;
+export function tsAsExpression(expression: Expression, typeAnnotation: TSType): TSAsExpression;
+export function tsSatisfiesExpression(expression: Expression, typeAnnotation: TSType): TSSatisfiesExpression;
+export function tsTypeAssertion(typeAnnotation: TSType, expression: Expression): TSTypeAssertion;
+export function tsEnumBody(members: TSEnumMember[]): TSEnumBody;
+export function tsEnumDeclaration(id: Identifier, members: TSEnumMember[]): TSEnumDeclaration;
+export function tsEnumMember(id: Identifier | StringLiteral, initializer?: Expression | null): TSEnumMember;
+export function tsModuleDeclaration(id: Identifier | StringLiteral, body: TSModuleBlock | TSModuleDeclaration): TSModuleDeclaration;
+export function tsModuleBlock(body: Statement[]): TSModuleBlock;
+export function tsImportType(argument: StringLiteral, qualifier?: TSEntityName | null, typeParameters?: TSTypeParameterInstantiation | null): TSImportType;
+export function tsImportEqualsDeclaration(id: Identifier, moduleReference: TSEntityName | TSExternalModuleReference): TSImportEqualsDeclaration;
+export function tsExternalModuleReference(expression: StringLiteral): TSExternalModuleReference;
+export function tsNonNullExpression(expression: Expression): TSNonNullExpression;
+export function tsExportAssignment(expression: Expression): TSExportAssignment;
+export function tsNamespaceExportDeclaration(id: Identifier): TSNamespaceExportDeclaration;
+export function tsTypeAnnotation(typeAnnotation: TSType): TSTypeAnnotation;
+export function tsTypeParameterInstantiation(params: TSType[]): TSTypeParameterInstantiation;
+export function tsTypeParameterDeclaration(params: TSTypeParameter[]): TSTypeParameterDeclaration;
+export function tsTypeParameter(constraint: TSType | null | undefined, _default: TSType | null | undefined, name: string): TSTypeParameter;
+export function isAccessor(node: object | null | undefined, opts?: object | null): node is Accessor;
+export function assertAccessor(node: object | null | undefined, opts?: object | null): void;
+export function isAnyTypeAnnotation(node: object | null | undefined, opts?: object | null): node is AnyTypeAnnotation;
+export function assertAnyTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isArgumentPlaceholder(node: object | null | undefined, opts?: object | null): node is ArgumentPlaceholder;
+export function assertArgumentPlaceholder(node: object | null | undefined, opts?: object | null): void;
+export function isArrayExpression(node: object | null | undefined, opts?: object | null): node is ArrayExpression;
+export function assertArrayExpression(node: object | null | undefined, opts?: object | null): void;
+export function isArrayPattern(node: object | null | undefined, opts?: object | null): node is ArrayPattern;
+export function assertArrayPattern(node: object | null | undefined, opts?: object | null): void;
+export function isArrayTypeAnnotation(node: object | null | undefined, opts?: object | null): node is ArrayTypeAnnotation;
+export function assertArrayTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isArrowFunctionExpression(node: object | null | undefined, opts?: object | null): node is ArrowFunctionExpression;
+export function assertArrowFunctionExpression(node: object | null | undefined, opts?: object | null): void;
+export function isAssignmentExpression(node: object | null | undefined, opts?: object | null): node is AssignmentExpression;
+export function assertAssignmentExpression(node: object | null | undefined, opts?: object | null): void;
+export function isAssignmentPattern(node: object | null | undefined, opts?: object | null): node is AssignmentPattern;
+export function assertAssignmentPattern(node: object | null | undefined, opts?: object | null): void;
+export function isAwaitExpression(node: object | null | undefined, opts?: object | null): node is AwaitExpression;
+export function assertAwaitExpression(node: object | null | undefined, opts?: object | null): void;
+export function isBigIntLiteral(node: object | null | undefined, opts?: object | null): node is BigIntLiteral;
+export function assertBigIntLiteral(node: object | null | undefined, opts?: object | null): void;
+export function isBinary(node: object | null | undefined, opts?: object | null): node is Binary;
+export function assertBinary(node: object | null | undefined, opts?: object | null): void;
+export function isBinaryExpression(node: object | null | undefined, opts?: object | null): node is BinaryExpression;
+export function assertBinaryExpression(node: object | null | undefined, opts?: object | null): void;
+export function isBindExpression(node: object | null | undefined, opts?: object | null): node is BindExpression;
+export function assertBindExpression(node: object | null | undefined, opts?: object | null): void;
+export function isBlock(node: object | null | undefined, opts?: object | null): node is Block;
+export function assertBlock(node: object | null | undefined, opts?: object | null): void;
+export function isBlockParent(node: object | null | undefined, opts?: object | null): node is BlockParent;
+export function assertBlockParent(node: object | null | undefined, opts?: object | null): void;
+export function isBlockStatement(node: object | null | undefined, opts?: object | null): node is BlockStatement;
+export function assertBlockStatement(node: object | null | undefined, opts?: object | null): void;
+export function isBooleanLiteral(node: object | null | undefined, opts?: object | null): node is BooleanLiteral;
+export function assertBooleanLiteral(node: object | null | undefined, opts?: object | null): void;
+export function isBooleanLiteralTypeAnnotation(node: object | null | undefined, opts?: object | null): node is BooleanLiteralTypeAnnotation;
+export function assertBooleanLiteralTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isBooleanTypeAnnotation(node: object | null | undefined, opts?: object | null): node is BooleanTypeAnnotation;
+export function assertBooleanTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isBreakStatement(node: object | null | undefined, opts?: object | null): node is BreakStatement;
+export function assertBreakStatement(node: object | null | undefined, opts?: object | null): void;
+export function isCallExpression(node: object | null | undefined, opts?: object | null): node is CallExpression;
+export function assertCallExpression(node: object | null | undefined, opts?: object | null): void;
+export function isCatchClause(node: object | null | undefined, opts?: object | null): node is CatchClause;
+export function assertCatchClause(node: object | null | undefined, opts?: object | null): void;
+export function isClass(node: object | null | undefined, opts?: object | null): node is Class;
+export function assertClass(node: object | null | undefined, opts?: object | null): void;
+export function isClassAccessorProperty(node: object | null | undefined, opts?: object | null): node is ClassAccessorProperty;
+export function assertClassAccessorProperty(node: object | null | undefined, opts?: object | null): void;
+export function isClassBody(node: object | null | undefined, opts?: object | null): node is ClassBody;
+export function assertClassBody(node: object | null | undefined, opts?: object | null): void;
+export function isClassDeclaration(node: object | null | undefined, opts?: object | null): node is ClassDeclaration;
+export function assertClassDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isClassExpression(node: object | null | undefined, opts?: object | null): node is ClassExpression;
+export function assertClassExpression(node: object | null | undefined, opts?: object | null): void;
+export function isClassImplements(node: object | null | undefined, opts?: object | null): node is ClassImplements;
+export function assertClassImplements(node: object | null | undefined, opts?: object | null): void;
+export function isClassMethod(node: object | null | undefined, opts?: object | null): node is ClassMethod;
+export function assertClassMethod(node: object | null | undefined, opts?: object | null): void;
+export function isClassPrivateMethod(node: object | null | undefined, opts?: object | null): node is ClassPrivateMethod;
+export function assertClassPrivateMethod(node: object | null | undefined, opts?: object | null): void;
+export function isClassPrivateProperty(node: object | null | undefined, opts?: object | null): node is ClassPrivateProperty;
+export function assertClassPrivateProperty(node: object | null | undefined, opts?: object | null): void;
+export function isClassProperty(node: object | null | undefined, opts?: object | null): node is ClassProperty;
+export function assertClassProperty(node: object | null | undefined, opts?: object | null): void;
+export function isCompletionStatement(node: object | null | undefined, opts?: object | null): node is CompletionStatement;
+export function assertCompletionStatement(node: object | null | undefined, opts?: object | null): void;
+export function isConditional(node: object | null | undefined, opts?: object | null): node is Conditional;
+export function assertConditional(node: object | null | undefined, opts?: object | null): void;
+export function isConditionalExpression(node: object | null | undefined, opts?: object | null): node is ConditionalExpression;
+export function assertConditionalExpression(node: object | null | undefined, opts?: object | null): void;
+export function isContinueStatement(node: object | null | undefined, opts?: object | null): node is ContinueStatement;
+export function assertContinueStatement(node: object | null | undefined, opts?: object | null): void;
+export function isDebuggerStatement(node: object | null | undefined, opts?: object | null): node is DebuggerStatement;
+export function assertDebuggerStatement(node: object | null | undefined, opts?: object | null): void;
+export function isDecimalLiteral(node: object | null | undefined, opts?: object | null): node is DecimalLiteral;
+export function assertDecimalLiteral(node: object | null | undefined, opts?: object | null): void;
+export function isDeclaration(node: object | null | undefined, opts?: object | null): node is Declaration;
+export function assertDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isDeclareClass(node: object | null | undefined, opts?: object | null): node is DeclareClass;
+export function assertDeclareClass(node: object | null | undefined, opts?: object | null): void;
+export function isDeclareExportAllDeclaration(node: object | null | undefined, opts?: object | null): node is DeclareExportAllDeclaration;
+export function assertDeclareExportAllDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isDeclareExportDeclaration(node: object | null | undefined, opts?: object | null): node is DeclareExportDeclaration;
+export function assertDeclareExportDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isDeclareFunction(node: object | null | undefined, opts?: object | null): node is DeclareFunction;
+export function assertDeclareFunction(node: object | null | undefined, opts?: object | null): void;
+export function isDeclareInterface(node: object | null | undefined, opts?: object | null): node is DeclareInterface;
+export function assertDeclareInterface(node: object | null | undefined, opts?: object | null): void;
+export function isDeclareModule(node: object | null | undefined, opts?: object | null): node is DeclareModule;
+export function assertDeclareModule(node: object | null | undefined, opts?: object | null): void;
+export function isDeclareModuleExports(node: object | null | undefined, opts?: object | null): node is DeclareModuleExports;
+export function assertDeclareModuleExports(node: object | null | undefined, opts?: object | null): void;
+export function isDeclareOpaqueType(node: object | null | undefined, opts?: object | null): node is DeclareOpaqueType;
+export function assertDeclareOpaqueType(node: object | null | undefined, opts?: object | null): void;
+export function isDeclareTypeAlias(node: object | null | undefined, opts?: object | null): node is DeclareTypeAlias;
+export function assertDeclareTypeAlias(node: object | null | undefined, opts?: object | null): void;
+export function isDeclareVariable(node: object | null | undefined, opts?: object | null): node is DeclareVariable;
+export function assertDeclareVariable(node: object | null | undefined, opts?: object | null): void;
+export function isDeclaredPredicate(node: object | null | undefined, opts?: object | null): node is DeclaredPredicate;
+export function assertDeclaredPredicate(node: object | null | undefined, opts?: object | null): void;
+export function isDecorator(node: object | null | undefined, opts?: object | null): node is Decorator;
+export function assertDecorator(node: object | null | undefined, opts?: object | null): void;
+export function isDirective(node: object | null | undefined, opts?: object | null): node is Directive;
+export function assertDirective(node: object | null | undefined, opts?: object | null): void;
+export function isDirectiveLiteral(node: object | null | undefined, opts?: object | null): node is DirectiveLiteral;
+export function assertDirectiveLiteral(node: object | null | undefined, opts?: object | null): void;
+export function isDoExpression(node: object | null | undefined, opts?: object | null): node is DoExpression;
+export function assertDoExpression(node: object | null | undefined, opts?: object | null): void;
+export function isDoWhileStatement(node: object | null | undefined, opts?: object | null): node is DoWhileStatement;
+export function assertDoWhileStatement(node: object | null | undefined, opts?: object | null): void;
+export function isEmptyStatement(node: object | null | undefined, opts?: object | null): node is EmptyStatement;
+export function assertEmptyStatement(node: object | null | undefined, opts?: object | null): void;
+export function isEmptyTypeAnnotation(node: object | null | undefined, opts?: object | null): node is EmptyTypeAnnotation;
+export function assertEmptyTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isEnumBody(node: object | null | undefined, opts?: object | null): node is EnumBody;
+export function assertEnumBody(node: object | null | undefined, opts?: object | null): void;
+export function isEnumBooleanBody(node: object | null | undefined, opts?: object | null): node is EnumBooleanBody;
+export function assertEnumBooleanBody(node: object | null | undefined, opts?: object | null): void;
+export function isEnumBooleanMember(node: object | null | undefined, opts?: object | null): node is EnumBooleanMember;
+export function assertEnumBooleanMember(node: object | null | undefined, opts?: object | null): void;
+export function isEnumDeclaration(node: object | null | undefined, opts?: object | null): node is EnumDeclaration;
+export function assertEnumDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isEnumDefaultedMember(node: object | null | undefined, opts?: object | null): node is EnumDefaultedMember;
+export function assertEnumDefaultedMember(node: object | null | undefined, opts?: object | null): void;
+export function isEnumMember(node: object | null | undefined, opts?: object | null): node is EnumMember;
+export function assertEnumMember(node: object | null | undefined, opts?: object | null): void;
+export function isEnumNumberBody(node: object | null | undefined, opts?: object | null): node is EnumNumberBody;
+export function assertEnumNumberBody(node: object | null | undefined, opts?: object | null): void;
+export function isEnumNumberMember(node: object | null | undefined, opts?: object | null): node is EnumNumberMember;
+export function assertEnumNumberMember(node: object | null | undefined, opts?: object | null): void;
+export function isEnumStringBody(node: object | null | undefined, opts?: object | null): node is EnumStringBody;
+export function assertEnumStringBody(node: object | null | undefined, opts?: object | null): void;
+export function isEnumStringMember(node: object | null | undefined, opts?: object | null): node is EnumStringMember;
+export function assertEnumStringMember(node: object | null | undefined, opts?: object | null): void;
+export function isEnumSymbolBody(node: object | null | undefined, opts?: object | null): node is EnumSymbolBody;
+export function assertEnumSymbolBody(node: object | null | undefined, opts?: object | null): void;
+export function isExistsTypeAnnotation(node: object | null | undefined, opts?: object | null): node is ExistsTypeAnnotation;
+export function assertExistsTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isExportAllDeclaration(node: object | null | undefined, opts?: object | null): node is ExportAllDeclaration;
+export function assertExportAllDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isExportDeclaration(node: object | null | undefined, opts?: object | null): node is ExportDeclaration;
+export function assertExportDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isExportDefaultDeclaration(node: object | null | undefined, opts?: object | null): node is ExportDefaultDeclaration;
+export function assertExportDefaultDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isExportDefaultSpecifier(node: object | null | undefined, opts?: object | null): node is ExportDefaultSpecifier;
+export function assertExportDefaultSpecifier(node: object | null | undefined, opts?: object | null): void;
+export function isExportNamedDeclaration(node: object | null | undefined, opts?: object | null): node is ExportNamedDeclaration;
+export function assertExportNamedDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isExportNamespaceSpecifier(node: object | null | undefined, opts?: object | null): node is ExportNamespaceSpecifier;
+export function assertExportNamespaceSpecifier(node: object | null | undefined, opts?: object | null): void;
+export function isExportSpecifier(node: object | null | undefined, opts?: object | null): node is ExportSpecifier;
+export function assertExportSpecifier(node: object | null | undefined, opts?: object | null): void;
+export function isExpression(node: object | null | undefined, opts?: object | null): node is Expression;
+export function assertExpression(node: object | null | undefined, opts?: object | null): void;
+export function isExpressionStatement(node: object | null | undefined, opts?: object | null): node is ExpressionStatement;
+export function assertExpressionStatement(node: object | null | undefined, opts?: object | null): void;
+export function isExpressionWrapper(node: object | null | undefined, opts?: object | null): node is ExpressionWrapper;
+export function assertExpressionWrapper(node: object | null | undefined, opts?: object | null): void;
+export function isFile(node: object | null | undefined, opts?: object | null): node is File;
+export function assertFile(node: object | null | undefined, opts?: object | null): void;
+export function isFlow(node: object | null | undefined, opts?: object | null): node is Flow;
+export function assertFlow(node: object | null | undefined, opts?: object | null): void;
+export function isFlowBaseAnnotation(node: object | null | undefined, opts?: object | null): node is FlowBaseAnnotation;
+export function assertFlowBaseAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isFlowDeclaration(node: object | null | undefined, opts?: object | null): node is FlowDeclaration;
+export function assertFlowDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isFlowPredicate(node: object | null | undefined, opts?: object | null): node is FlowPredicate;
+export function assertFlowPredicate(node: object | null | undefined, opts?: object | null): void;
+export function isFlowType(node: object | null | undefined, opts?: object | null): node is FlowType;
+export function assertFlowType(node: object | null | undefined, opts?: object | null): void;
+export function isFor(node: object | null | undefined, opts?: object | null): node is For;
+export function assertFor(node: object | null | undefined, opts?: object | null): void;
+export function isForInStatement(node: object | null | undefined, opts?: object | null): node is ForInStatement;
+export function assertForInStatement(node: object | null | undefined, opts?: object | null): void;
+export function isForOfStatement(node: object | null | undefined, opts?: object | null): node is ForOfStatement;
+export function assertForOfStatement(node: object | null | undefined, opts?: object | null): void;
+export function isForStatement(node: object | null | undefined, opts?: object | null): node is ForStatement;
+export function assertForStatement(node: object | null | undefined, opts?: object | null): void;
+export function isForXStatement(node: object | null | undefined, opts?: object | null): node is ForXStatement;
+export function assertForXStatement(node: object | null | undefined, opts?: object | null): void;
+export function isFunction(node: object | null | undefined, opts?: object | null): node is Function;
+export function assertFunction(node: object | null | undefined, opts?: object | null): void;
+export function isFunctionDeclaration(node: object | null | undefined, opts?: object | null): node is FunctionDeclaration;
+export function assertFunctionDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isFunctionExpression(node: object | null | undefined, opts?: object | null): node is FunctionExpression;
+export function assertFunctionExpression(node: object | null | undefined, opts?: object | null): void;
+export function isFunctionParameter(node: object | null | undefined, opts?: object | null): node is FunctionParameter;
+export function assertFunctionParameter(node: object | null | undefined, opts?: object | null): void;
+export function isFunctionParent(node: object | null | undefined, opts?: object | null): node is FunctionParent;
+export function assertFunctionParent(node: object | null | undefined, opts?: object | null): void;
+export function isFunctionTypeAnnotation(node: object | null | undefined, opts?: object | null): node is FunctionTypeAnnotation;
+export function assertFunctionTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isFunctionTypeParam(node: object | null | undefined, opts?: object | null): node is FunctionTypeParam;
+export function assertFunctionTypeParam(node: object | null | undefined, opts?: object | null): void;
+export function isGenericTypeAnnotation(node: object | null | undefined, opts?: object | null): node is GenericTypeAnnotation;
+export function assertGenericTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isIdentifier(node: object | null | undefined, opts?: object | null): node is Identifier;
+export function assertIdentifier(node: object | null | undefined, opts?: object | null): void;
+export function isIfStatement(node: object | null | undefined, opts?: object | null): node is IfStatement;
+export function assertIfStatement(node: object | null | undefined, opts?: object | null): void;
+export function isImmutable(node: object | null | undefined, opts?: object | null): node is Immutable;
+export function assertImmutable(node: object | null | undefined, opts?: object | null): void;
+export function isImport(node: object | null | undefined, opts?: object | null): node is Import;
+export function assertImport(node: object | null | undefined, opts?: object | null): void;
+export function isImportAttribute(node: object | null | undefined, opts?: object | null): node is ImportAttribute;
+export function assertImportAttribute(node: object | null | undefined, opts?: object | null): void;
+export function isImportDeclaration(node: object | null | undefined, opts?: object | null): node is ImportDeclaration;
+export function assertImportDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isImportDefaultSpecifier(node: object | null | undefined, opts?: object | null): node is ImportDefaultSpecifier;
+export function assertImportDefaultSpecifier(node: object | null | undefined, opts?: object | null): void;
+export function isImportExpression(node: object | null | undefined, opts?: object | null): node is ImportExpression;
+export function assertImportExpression(node: object | null | undefined, opts?: object | null): void;
+export function isImportNamespaceSpecifier(node: object | null | undefined, opts?: object | null): node is ImportNamespaceSpecifier;
+export function assertImportNamespaceSpecifier(node: object | null | undefined, opts?: object | null): void;
+export function isImportOrExportDeclaration(node: object | null | undefined, opts?: object | null): node is ImportOrExportDeclaration;
+export function assertImportOrExportDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isImportSpecifier(node: object | null | undefined, opts?: object | null): node is ImportSpecifier;
+export function assertImportSpecifier(node: object | null | undefined, opts?: object | null): void;
+export function isIndexedAccessType(node: object | null | undefined, opts?: object | null): node is IndexedAccessType;
+export function assertIndexedAccessType(node: object | null | undefined, opts?: object | null): void;
+export function isInferredPredicate(node: object | null | undefined, opts?: object | null): node is InferredPredicate;
+export function assertInferredPredicate(node: object | null | undefined, opts?: object | null): void;
+export function isInterfaceDeclaration(node: object | null | undefined, opts?: object | null): node is InterfaceDeclaration;
+export function assertInterfaceDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isInterfaceExtends(node: object | null | undefined, opts?: object | null): node is InterfaceExtends;
+export function assertInterfaceExtends(node: object | null | undefined, opts?: object | null): void;
+export function isInterfaceTypeAnnotation(node: object | null | undefined, opts?: object | null): node is InterfaceTypeAnnotation;
+export function assertInterfaceTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isInterpreterDirective(node: object | null | undefined, opts?: object | null): node is InterpreterDirective;
+export function assertInterpreterDirective(node: object | null | undefined, opts?: object | null): void;
+export function isIntersectionTypeAnnotation(node: object | null | undefined, opts?: object | null): node is IntersectionTypeAnnotation;
+export function assertIntersectionTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isJSX(node: object | null | undefined, opts?: object | null): node is JSX;
+export function assertJSX(node: object | null | undefined, opts?: object | null): void;
+export function isJSXAttribute(node: object | null | undefined, opts?: object | null): node is JSXAttribute;
+export function assertJSXAttribute(node: object | null | undefined, opts?: object | null): void;
+export function isJSXClosingElement(node: object | null | undefined, opts?: object | null): node is JSXClosingElement;
+export function assertJSXClosingElement(node: object | null | undefined, opts?: object | null): void;
+export function isJSXClosingFragment(node: object | null | undefined, opts?: object | null): node is JSXClosingFragment;
+export function assertJSXClosingFragment(node: object | null | undefined, opts?: object | null): void;
+export function isJSXElement(node: object | null | undefined, opts?: object | null): node is JSXElement;
+export function assertJSXElement(node: object | null | undefined, opts?: object | null): void;
+export function isJSXEmptyExpression(node: object | null | undefined, opts?: object | null): node is JSXEmptyExpression;
+export function assertJSXEmptyExpression(node: object | null | undefined, opts?: object | null): void;
+export function isJSXExpressionContainer(node: object | null | undefined, opts?: object | null): node is JSXExpressionContainer;
+export function assertJSXExpressionContainer(node: object | null | undefined, opts?: object | null): void;
+export function isJSXFragment(node: object | null | undefined, opts?: object | null): node is JSXFragment;
+export function assertJSXFragment(node: object | null | undefined, opts?: object | null): void;
+export function isJSXIdentifier(node: object | null | undefined, opts?: object | null): node is JSXIdentifier;
+export function assertJSXIdentifier(node: object | null | undefined, opts?: object | null): void;
+export function isJSXMemberExpression(node: object | null | undefined, opts?: object | null): node is JSXMemberExpression;
+export function assertJSXMemberExpression(node: object | null | undefined, opts?: object | null): void;
+export function isJSXNamespacedName(node: object | null | undefined, opts?: object | null): node is JSXNamespacedName;
+export function assertJSXNamespacedName(node: object | null | undefined, opts?: object | null): void;
+export function isJSXOpeningElement(node: object | null | undefined, opts?: object | null): node is JSXOpeningElement;
+export function assertJSXOpeningElement(node: object | null | undefined, opts?: object | null): void;
+export function isJSXOpeningFragment(node: object | null | undefined, opts?: object | null): node is JSXOpeningFragment;
+export function assertJSXOpeningFragment(node: object | null | undefined, opts?: object | null): void;
+export function isJSXSpreadAttribute(node: object | null | undefined, opts?: object | null): node is JSXSpreadAttribute;
+export function assertJSXSpreadAttribute(node: object | null | undefined, opts?: object | null): void;
+export function isJSXSpreadChild(node: object | null | undefined, opts?: object | null): node is JSXSpreadChild;
+export function assertJSXSpreadChild(node: object | null | undefined, opts?: object | null): void;
+export function isJSXText(node: object | null | undefined, opts?: object | null): node is JSXText;
+export function assertJSXText(node: object | null | undefined, opts?: object | null): void;
+export function isLVal(node: object | null | undefined, opts?: object | null): node is LVal;
+export function assertLVal(node: object | null | undefined, opts?: object | null): void;
+export function isLabeledStatement(node: object | null | undefined, opts?: object | null): node is LabeledStatement;
+export function assertLabeledStatement(node: object | null | undefined, opts?: object | null): void;
+export function isLiteral(node: object | null | undefined, opts?: object | null): node is Literal;
+export function assertLiteral(node: object | null | undefined, opts?: object | null): void;
+export function isLogicalExpression(node: object | null | undefined, opts?: object | null): node is LogicalExpression;
+export function assertLogicalExpression(node: object | null | undefined, opts?: object | null): void;
+export function isLoop(node: object | null | undefined, opts?: object | null): node is Loop;
+export function assertLoop(node: object | null | undefined, opts?: object | null): void;
+export function isMemberExpression(node: object | null | undefined, opts?: object | null): node is MemberExpression;
+export function assertMemberExpression(node: object | null | undefined, opts?: object | null): void;
+export function isMetaProperty(node: object | null | undefined, opts?: object | null): node is MetaProperty;
+export function assertMetaProperty(node: object | null | undefined, opts?: object | null): void;
+export function isMethod(node: object | null | undefined, opts?: object | null): node is Method;
+export function assertMethod(node: object | null | undefined, opts?: object | null): void;
+export function isMiscellaneous(node: object | null | undefined, opts?: object | null): node is Miscellaneous;
+export function assertMiscellaneous(node: object | null | undefined, opts?: object | null): void;
+export function isMixedTypeAnnotation(node: object | null | undefined, opts?: object | null): node is MixedTypeAnnotation;
+export function assertMixedTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isModuleDeclaration(node: object | null | undefined, opts?: object | null): node is ModuleDeclaration;
+export function assertModuleDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isModuleExpression(node: object | null | undefined, opts?: object | null): node is ModuleExpression;
+export function assertModuleExpression(node: object | null | undefined, opts?: object | null): void;
+export function isModuleSpecifier(node: object | null | undefined, opts?: object | null): node is ModuleSpecifier;
+export function assertModuleSpecifier(node: object | null | undefined, opts?: object | null): void;
+export function isNewExpression(node: object | null | undefined, opts?: object | null): node is NewExpression;
+export function assertNewExpression(node: object | null | undefined, opts?: object | null): void;
+export function isNoop(node: object | null | undefined, opts?: object | null): node is Noop;
+export function assertNoop(node: object | null | undefined, opts?: object | null): void;
+export function isNullLiteral(node: object | null | undefined, opts?: object | null): node is NullLiteral;
+export function assertNullLiteral(node: object | null | undefined, opts?: object | null): void;
+export function isNullLiteralTypeAnnotation(node: object | null | undefined, opts?: object | null): node is NullLiteralTypeAnnotation;
+export function assertNullLiteralTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isNullableTypeAnnotation(node: object | null | undefined, opts?: object | null): node is NullableTypeAnnotation;
+export function assertNullableTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+/** @deprecated Use `isNumericLiteral` */
+export function isNumberLiteral(node: object | null | undefined, opts?: object | null): node is NumericLiteral;
+/** @deprecated Use `assertNumericLiteral` */
+export function assertNumberLiteral(node: object | null | undefined, opts?: object | null): void;
+export function isNumberLiteralTypeAnnotation(node: object | null | undefined, opts?: object | null): node is NumberLiteralTypeAnnotation;
+export function assertNumberLiteralTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isNumberTypeAnnotation(node: object | null | undefined, opts?: object | null): node is NumberTypeAnnotation;
+export function assertNumberTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isNumericLiteral(node: object | null | undefined, opts?: object | null): node is NumericLiteral;
+export function assertNumericLiteral(node: object | null | undefined, opts?: object | null): void;
+export function isObjectExpression(node: object | null | undefined, opts?: object | null): node is ObjectExpression;
+export function assertObjectExpression(node: object | null | undefined, opts?: object | null): void;
+export function isObjectMember(node: object | null | undefined, opts?: object | null): node is ObjectMember;
+export function assertObjectMember(node: object | null | undefined, opts?: object | null): void;
+export function isObjectMethod(node: object | null | undefined, opts?: object | null): node is ObjectMethod;
+export function assertObjectMethod(node: object | null | undefined, opts?: object | null): void;
+export function isObjectPattern(node: object | null | undefined, opts?: object | null): node is ObjectPattern;
+export function assertObjectPattern(node: object | null | undefined, opts?: object | null): void;
+export function isObjectProperty(node: object | null | undefined, opts?: object | null): node is ObjectProperty;
+export function assertObjectProperty(node: object | null | undefined, opts?: object | null): void;
+export function isObjectTypeAnnotation(node: object | null | undefined, opts?: object | null): node is ObjectTypeAnnotation;
+export function assertObjectTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isObjectTypeCallProperty(node: object | null | undefined, opts?: object | null): node is ObjectTypeCallProperty;
+export function assertObjectTypeCallProperty(node: object | null | undefined, opts?: object | null): void;
+export function isObjectTypeIndexer(node: object | null | undefined, opts?: object | null): node is ObjectTypeIndexer;
+export function assertObjectTypeIndexer(node: object | null | undefined, opts?: object | null): void;
+export function isObjectTypeInternalSlot(node: object | null | undefined, opts?: object | null): node is ObjectTypeInternalSlot;
+export function assertObjectTypeInternalSlot(node: object | null | undefined, opts?: object | null): void;
+export function isObjectTypeProperty(node: object | null | undefined, opts?: object | null): node is ObjectTypeProperty;
+export function assertObjectTypeProperty(node: object | null | undefined, opts?: object | null): void;
+export function isObjectTypeSpreadProperty(node: object | null | undefined, opts?: object | null): node is ObjectTypeSpreadProperty;
+export function assertObjectTypeSpreadProperty(node: object | null | undefined, opts?: object | null): void;
+export function isOpaqueType(node: object | null | undefined, opts?: object | null): node is OpaqueType;
+export function assertOpaqueType(node: object | null | undefined, opts?: object | null): void;
+export function isOptionalCallExpression(node: object | null | undefined, opts?: object | null): node is OptionalCallExpression;
+export function assertOptionalCallExpression(node: object | null | undefined, opts?: object | null): void;
+export function isOptionalIndexedAccessType(node: object | null | undefined, opts?: object | null): node is OptionalIndexedAccessType;
+export function assertOptionalIndexedAccessType(node: object | null | undefined, opts?: object | null): void;
+export function isOptionalMemberExpression(node: object | null | undefined, opts?: object | null): node is OptionalMemberExpression;
+export function assertOptionalMemberExpression(node: object | null | undefined, opts?: object | null): void;
+export function isParenthesizedExpression(node: object | null | undefined, opts?: object | null): node is ParenthesizedExpression;
+export function assertParenthesizedExpression(node: object | null | undefined, opts?: object | null): void;
+export function isPattern(node: object | null | undefined, opts?: object | null): node is Pattern;
+export function assertPattern(node: object | null | undefined, opts?: object | null): void;
+export function isPatternLike(node: object | null | undefined, opts?: object | null): node is PatternLike;
+export function assertPatternLike(node: object | null | undefined, opts?: object | null): void;
+export function isPipelineBareFunction(node: object | null | undefined, opts?: object | null): node is PipelineBareFunction;
+export function assertPipelineBareFunction(node: object | null | undefined, opts?: object | null): void;
+export function isPipelinePrimaryTopicReference(node: object | null | undefined, opts?: object | null): node is PipelinePrimaryTopicReference;
+export function assertPipelinePrimaryTopicReference(node: object | null | undefined, opts?: object | null): void;
+export function isPipelineTopicExpression(node: object | null | undefined, opts?: object | null): node is PipelineTopicExpression;
+export function assertPipelineTopicExpression(node: object | null | undefined, opts?: object | null): void;
+export function isPlaceholder(node: object | null | undefined, opts?: object | null): node is Placeholder;
+export function assertPlaceholder(node: object | null | undefined, opts?: object | null): void;
+export function isPrivate(node: object | null | undefined, opts?: object | null): node is Private;
+export function assertPrivate(node: object | null | undefined, opts?: object | null): void;
+export function isPrivateName(node: object | null | undefined, opts?: object | null): node is PrivateName;
+export function assertPrivateName(node: object | null | undefined, opts?: object | null): void;
+export function isProgram(node: object | null | undefined, opts?: object | null): node is Program;
+export function assertProgram(node: object | null | undefined, opts?: object | null): void;
+export function isProperty(node: object | null | undefined, opts?: object | null): node is Property;
+export function assertProperty(node: object | null | undefined, opts?: object | null): void;
+export function isPureish(node: object | null | undefined, opts?: object | null): node is Pureish;
+export function assertPureish(node: object | null | undefined, opts?: object | null): void;
+export function isQualifiedTypeIdentifier(node: object | null | undefined, opts?: object | null): node is QualifiedTypeIdentifier;
+export function assertQualifiedTypeIdentifier(node: object | null | undefined, opts?: object | null): void;
+export function isRecordExpression(node: object | null | undefined, opts?: object | null): node is RecordExpression;
+export function assertRecordExpression(node: object | null | undefined, opts?: object | null): void;
+export function isRegExpLiteral(node: object | null | undefined, opts?: object | null): node is RegExpLiteral;
+export function assertRegExpLiteral(node: object | null | undefined, opts?: object | null): void;
+/** @deprecated Use `isRegExpLiteral` */
+export function isRegexLiteral(node: object | null | undefined, opts?: object | null): node is RegExpLiteral;
+/** @deprecated Use `assertRegExpLiteral` */
+export function assertRegexLiteral(node: object | null | undefined, opts?: object | null): void;
+export function isRestElement(node: object | null | undefined, opts?: object | null): node is RestElement;
+export function assertRestElement(node: object | null | undefined, opts?: object | null): void;
+/** @deprecated Use `isRestElement` */
+export function isRestProperty(node: object | null | undefined, opts?: object | null): node is RestElement;
+/** @deprecated Use `assertRestElement` */
+export function assertRestProperty(node: object | null | undefined, opts?: object | null): void;
+export function isReturnStatement(node: object | null | undefined, opts?: object | null): node is ReturnStatement;
+export function assertReturnStatement(node: object | null | undefined, opts?: object | null): void;
+export function isScopable(node: object | null | undefined, opts?: object | null): node is Scopable;
+export function assertScopable(node: object | null | undefined, opts?: object | null): void;
+export function isSequenceExpression(node: object | null | undefined, opts?: object | null): node is SequenceExpression;
+export function assertSequenceExpression(node: object | null | undefined, opts?: object | null): void;
+export function isSpreadElement(node: object | null | undefined, opts?: object | null): node is SpreadElement;
+export function assertSpreadElement(node: object | null | undefined, opts?: object | null): void;
+/** @deprecated Use `isSpreadElement` */
+export function isSpreadProperty(node: object | null | undefined, opts?: object | null): node is SpreadElement;
+/** @deprecated Use `assertSpreadElement` */
+export function assertSpreadProperty(node: object | null | undefined, opts?: object | null): void;
+export function isStandardized(node: object | null | undefined, opts?: object | null): node is Standardized;
+export function assertStandardized(node: object | null | undefined, opts?: object | null): void;
+export function isStatement(node: object | null | undefined, opts?: object | null): node is Statement;
+export function assertStatement(node: object | null | undefined, opts?: object | null): void;
+export function isStaticBlock(node: object | null | undefined, opts?: object | null): node is StaticBlock;
+export function assertStaticBlock(node: object | null | undefined, opts?: object | null): void;
+export function isStringLiteral(node: object | null | undefined, opts?: object | null): node is StringLiteral;
+export function assertStringLiteral(node: object | null | undefined, opts?: object | null): void;
+export function isStringLiteralTypeAnnotation(node: object | null | undefined, opts?: object | null): node is StringLiteralTypeAnnotation;
+export function assertStringLiteralTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isStringTypeAnnotation(node: object | null | undefined, opts?: object | null): node is StringTypeAnnotation;
+export function assertStringTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isSuper(node: object | null | undefined, opts?: object | null): node is Super;
+export function assertSuper(node: object | null | undefined, opts?: object | null): void;
+export function isSwitchCase(node: object | null | undefined, opts?: object | null): node is SwitchCase;
+export function assertSwitchCase(node: object | null | undefined, opts?: object | null): void;
+export function isSwitchStatement(node: object | null | undefined, opts?: object | null): node is SwitchStatement;
+export function assertSwitchStatement(node: object | null | undefined, opts?: object | null): void;
+export function isSymbolTypeAnnotation(node: object | null | undefined, opts?: object | null): node is SymbolTypeAnnotation;
+export function assertSymbolTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isTSAnyKeyword(node: object | null | undefined, opts?: object | null): node is TSAnyKeyword;
+export function assertTSAnyKeyword(node: object | null | undefined, opts?: object | null): void;
+export function isTSArrayType(node: object | null | undefined, opts?: object | null): node is TSArrayType;
+export function assertTSArrayType(node: object | null | undefined, opts?: object | null): void;
+export function isTSAsExpression(node: object | null | undefined, opts?: object | null): node is TSAsExpression;
+export function assertTSAsExpression(node: object | null | undefined, opts?: object | null): void;
+export function isTSBaseType(node: object | null | undefined, opts?: object | null): node is TSBaseType;
+export function assertTSBaseType(node: object | null | undefined, opts?: object | null): void;
+export function isTSBigIntKeyword(node: object | null | undefined, opts?: object | null): node is TSBigIntKeyword;
+export function assertTSBigIntKeyword(node: object | null | undefined, opts?: object | null): void;
+export function isTSBooleanKeyword(node: object | null | undefined, opts?: object | null): node is TSBooleanKeyword;
+export function assertTSBooleanKeyword(node: object | null | undefined, opts?: object | null): void;
+export function isTSCallSignatureDeclaration(node: object | null | undefined, opts?: object | null): node is TSCallSignatureDeclaration;
+export function assertTSCallSignatureDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isTSConditionalType(node: object | null | undefined, opts?: object | null): node is TSConditionalType;
+export function assertTSConditionalType(node: object | null | undefined, opts?: object | null): void;
+export function isTSConstructSignatureDeclaration(node: object | null | undefined, opts?: object | null): node is TSConstructSignatureDeclaration;
+export function assertTSConstructSignatureDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isTSConstructorType(node: object | null | undefined, opts?: object | null): node is TSConstructorType;
+export function assertTSConstructorType(node: object | null | undefined, opts?: object | null): void;
+export function isTSDeclareFunction(node: object | null | undefined, opts?: object | null): node is TSDeclareFunction;
+export function assertTSDeclareFunction(node: object | null | undefined, opts?: object | null): void;
+export function isTSDeclareMethod(node: object | null | undefined, opts?: object | null): node is TSDeclareMethod;
+export function assertTSDeclareMethod(node: object | null | undefined, opts?: object | null): void;
+export function isTSEntityName(node: object | null | undefined, opts?: object | null): node is TSEntityName;
+export function assertTSEntityName(node: object | null | undefined, opts?: object | null): void;
+export function isTSEnumBody(node: object | null | undefined, opts?: object | null): node is TSEnumBody;
+export function assertTSEnumBody(node: object | null | undefined, opts?: object | null): void;
+export function isTSEnumDeclaration(node: object | null | undefined, opts?: object | null): node is TSEnumDeclaration;
+export function assertTSEnumDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isTSEnumMember(node: object | null | undefined, opts?: object | null): node is TSEnumMember;
+export function assertTSEnumMember(node: object | null | undefined, opts?: object | null): void;
+export function isTSExportAssignment(node: object | null | undefined, opts?: object | null): node is TSExportAssignment;
+export function assertTSExportAssignment(node: object | null | undefined, opts?: object | null): void;
+export function isTSExpressionWithTypeArguments(node: object | null | undefined, opts?: object | null): node is TSExpressionWithTypeArguments;
+export function assertTSExpressionWithTypeArguments(node: object | null | undefined, opts?: object | null): void;
+export function isTSExternalModuleReference(node: object | null | undefined, opts?: object | null): node is TSExternalModuleReference;
+export function assertTSExternalModuleReference(node: object | null | undefined, opts?: object | null): void;
+export function isTSFunctionType(node: object | null | undefined, opts?: object | null): node is TSFunctionType;
+export function assertTSFunctionType(node: object | null | undefined, opts?: object | null): void;
+export function isTSImportEqualsDeclaration(node: object | null | undefined, opts?: object | null): node is TSImportEqualsDeclaration;
+export function assertTSImportEqualsDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isTSImportType(node: object | null | undefined, opts?: object | null): node is TSImportType;
+export function assertTSImportType(node: object | null | undefined, opts?: object | null): void;
+export function isTSIndexSignature(node: object | null | undefined, opts?: object | null): node is TSIndexSignature;
+export function assertTSIndexSignature(node: object | null | undefined, opts?: object | null): void;
+export function isTSIndexedAccessType(node: object | null | undefined, opts?: object | null): node is TSIndexedAccessType;
+export function assertTSIndexedAccessType(node: object | null | undefined, opts?: object | null): void;
+export function isTSInferType(node: object | null | undefined, opts?: object | null): node is TSInferType;
+export function assertTSInferType(node: object | null | undefined, opts?: object | null): void;
+export function isTSInstantiationExpression(node: object | null | undefined, opts?: object | null): node is TSInstantiationExpression;
+export function assertTSInstantiationExpression(node: object | null | undefined, opts?: object | null): void;
+export function isTSInterfaceBody(node: object | null | undefined, opts?: object | null): node is TSInterfaceBody;
+export function assertTSInterfaceBody(node: object | null | undefined, opts?: object | null): void;
+export function isTSInterfaceDeclaration(node: object | null | undefined, opts?: object | null): node is TSInterfaceDeclaration;
+export function assertTSInterfaceDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isTSIntersectionType(node: object | null | undefined, opts?: object | null): node is TSIntersectionType;
+export function assertTSIntersectionType(node: object | null | undefined, opts?: object | null): void;
+export function isTSIntrinsicKeyword(node: object | null | undefined, opts?: object | null): node is TSIntrinsicKeyword;
+export function assertTSIntrinsicKeyword(node: object | null | undefined, opts?: object | null): void;
+export function isTSLiteralType(node: object | null | undefined, opts?: object | null): node is TSLiteralType;
+export function assertTSLiteralType(node: object | null | undefined, opts?: object | null): void;
+export function isTSMappedType(node: object | null | undefined, opts?: object | null): node is TSMappedType;
+export function assertTSMappedType(node: object | null | undefined, opts?: object | null): void;
+export function isTSMethodSignature(node: object | null | undefined, opts?: object | null): node is TSMethodSignature;
+export function assertTSMethodSignature(node: object | null | undefined, opts?: object | null): void;
+export function isTSModuleBlock(node: object | null | undefined, opts?: object | null): node is TSModuleBlock;
+export function assertTSModuleBlock(node: object | null | undefined, opts?: object | null): void;
+export function isTSModuleDeclaration(node: object | null | undefined, opts?: object | null): node is TSModuleDeclaration;
+export function assertTSModuleDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isTSNamedTupleMember(node: object | null | undefined, opts?: object | null): node is TSNamedTupleMember;
+export function assertTSNamedTupleMember(node: object | null | undefined, opts?: object | null): void;
+export function isTSNamespaceExportDeclaration(node: object | null | undefined, opts?: object | null): node is TSNamespaceExportDeclaration;
+export function assertTSNamespaceExportDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isTSNeverKeyword(node: object | null | undefined, opts?: object | null): node is TSNeverKeyword;
+export function assertTSNeverKeyword(node: object | null | undefined, opts?: object | null): void;
+export function isTSNonNullExpression(node: object | null | undefined, opts?: object | null): node is TSNonNullExpression;
+export function assertTSNonNullExpression(node: object | null | undefined, opts?: object | null): void;
+export function isTSNullKeyword(node: object | null | undefined, opts?: object | null): node is TSNullKeyword;
+export function assertTSNullKeyword(node: object | null | undefined, opts?: object | null): void;
+export function isTSNumberKeyword(node: object | null | undefined, opts?: object | null): node is TSNumberKeyword;
+export function assertTSNumberKeyword(node: object | null | undefined, opts?: object | null): void;
+export function isTSObjectKeyword(node: object | null | undefined, opts?: object | null): node is TSObjectKeyword;
+export function assertTSObjectKeyword(node: object | null | undefined, opts?: object | null): void;
+export function isTSOptionalType(node: object | null | undefined, opts?: object | null): node is TSOptionalType;
+export function assertTSOptionalType(node: object | null | undefined, opts?: object | null): void;
+export function isTSParameterProperty(node: object | null | undefined, opts?: object | null): node is TSParameterProperty;
+export function assertTSParameterProperty(node: object | null | undefined, opts?: object | null): void;
+export function isTSParenthesizedType(node: object | null | undefined, opts?: object | null): node is TSParenthesizedType;
+export function assertTSParenthesizedType(node: object | null | undefined, opts?: object | null): void;
+export function isTSPropertySignature(node: object | null | undefined, opts?: object | null): node is TSPropertySignature;
+export function assertTSPropertySignature(node: object | null | undefined, opts?: object | null): void;
+export function isTSQualifiedName(node: object | null | undefined, opts?: object | null): node is TSQualifiedName;
+export function assertTSQualifiedName(node: object | null | undefined, opts?: object | null): void;
+export function isTSRestType(node: object | null | undefined, opts?: object | null): node is TSRestType;
+export function assertTSRestType(node: object | null | undefined, opts?: object | null): void;
+export function isTSSatisfiesExpression(node: object | null | undefined, opts?: object | null): node is TSSatisfiesExpression;
+export function assertTSSatisfiesExpression(node: object | null | undefined, opts?: object | null): void;
+export function isTSStringKeyword(node: object | null | undefined, opts?: object | null): node is TSStringKeyword;
+export function assertTSStringKeyword(node: object | null | undefined, opts?: object | null): void;
+export function isTSSymbolKeyword(node: object | null | undefined, opts?: object | null): node is TSSymbolKeyword;
+export function assertTSSymbolKeyword(node: object | null | undefined, opts?: object | null): void;
+export function isTSTemplateLiteralType(node: object | null | undefined, opts?: object | null): node is TSTemplateLiteralType;
+export function assertTSTemplateLiteralType(node: object | null | undefined, opts?: object | null): void;
+export function isTSThisType(node: object | null | undefined, opts?: object | null): node is TSThisType;
+export function assertTSThisType(node: object | null | undefined, opts?: object | null): void;
+export function isTSTupleType(node: object | null | undefined, opts?: object | null): node is TSTupleType;
+export function assertTSTupleType(node: object | null | undefined, opts?: object | null): void;
+export function isTSType(node: object | null | undefined, opts?: object | null): node is TSType;
+export function assertTSType(node: object | null | undefined, opts?: object | null): void;
+export function isTSTypeAliasDeclaration(node: object | null | undefined, opts?: object | null): node is TSTypeAliasDeclaration;
+export function assertTSTypeAliasDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isTSTypeAnnotation(node: object | null | undefined, opts?: object | null): node is TSTypeAnnotation;
+export function assertTSTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isTSTypeAssertion(node: object | null | undefined, opts?: object | null): node is TSTypeAssertion;
+export function assertTSTypeAssertion(node: object | null | undefined, opts?: object | null): void;
+export function isTSTypeElement(node: object | null | undefined, opts?: object | null): node is TSTypeElement;
+export function assertTSTypeElement(node: object | null | undefined, opts?: object | null): void;
+export function isTSTypeLiteral(node: object | null | undefined, opts?: object | null): node is TSTypeLiteral;
+export function assertTSTypeLiteral(node: object | null | undefined, opts?: object | null): void;
+export function isTSTypeOperator(node: object | null | undefined, opts?: object | null): node is TSTypeOperator;
+export function assertTSTypeOperator(node: object | null | undefined, opts?: object | null): void;
+export function isTSTypeParameter(node: object | null | undefined, opts?: object | null): node is TSTypeParameter;
+export function assertTSTypeParameter(node: object | null | undefined, opts?: object | null): void;
+export function isTSTypeParameterDeclaration(node: object | null | undefined, opts?: object | null): node is TSTypeParameterDeclaration;
+export function assertTSTypeParameterDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isTSTypeParameterInstantiation(node: object | null | undefined, opts?: object | null): node is TSTypeParameterInstantiation;
+export function assertTSTypeParameterInstantiation(node: object | null | undefined, opts?: object | null): void;
+export function isTSTypePredicate(node: object | null | undefined, opts?: object | null): node is TSTypePredicate;
+export function assertTSTypePredicate(node: object | null | undefined, opts?: object | null): void;
+export function isTSTypeQuery(node: object | null | undefined, opts?: object | null): node is TSTypeQuery;
+export function assertTSTypeQuery(node: object | null | undefined, opts?: object | null): void;
+export function isTSTypeReference(node: object | null | undefined, opts?: object | null): node is TSTypeReference;
+export function assertTSTypeReference(node: object | null | undefined, opts?: object | null): void;
+export function isTSUndefinedKeyword(node: object | null | undefined, opts?: object | null): node is TSUndefinedKeyword;
+export function assertTSUndefinedKeyword(node: object | null | undefined, opts?: object | null): void;
+export function isTSUnionType(node: object | null | undefined, opts?: object | null): node is TSUnionType;
+export function assertTSUnionType(node: object | null | undefined, opts?: object | null): void;
+export function isTSUnknownKeyword(node: object | null | undefined, opts?: object | null): node is TSUnknownKeyword;
+export function assertTSUnknownKeyword(node: object | null | undefined, opts?: object | null): void;
+export function isTSVoidKeyword(node: object | null | undefined, opts?: object | null): node is TSVoidKeyword;
+export function assertTSVoidKeyword(node: object | null | undefined, opts?: object | null): void;
+export function isTaggedTemplateExpression(node: object | null | undefined, opts?: object | null): node is TaggedTemplateExpression;
+export function assertTaggedTemplateExpression(node: object | null | undefined, opts?: object | null): void;
+export function isTemplateElement(node: object | null | undefined, opts?: object | null): node is TemplateElement;
+export function assertTemplateElement(node: object | null | undefined, opts?: object | null): void;
+export function isTemplateLiteral(node: object | null | undefined, opts?: object | null): node is TemplateLiteral;
+export function assertTemplateLiteral(node: object | null | undefined, opts?: object | null): void;
+export function isTerminatorless(node: object | null | undefined, opts?: object | null): node is Terminatorless;
+export function assertTerminatorless(node: object | null | undefined, opts?: object | null): void;
+export function isThisExpression(node: object | null | undefined, opts?: object | null): node is ThisExpression;
+export function assertThisExpression(node: object | null | undefined, opts?: object | null): void;
+export function isThisTypeAnnotation(node: object | null | undefined, opts?: object | null): node is ThisTypeAnnotation;
+export function assertThisTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isThrowStatement(node: object | null | undefined, opts?: object | null): node is ThrowStatement;
+export function assertThrowStatement(node: object | null | undefined, opts?: object | null): void;
+export function isTopicReference(node: object | null | undefined, opts?: object | null): node is TopicReference;
+export function assertTopicReference(node: object | null | undefined, opts?: object | null): void;
+export function isTryStatement(node: object | null | undefined, opts?: object | null): node is TryStatement;
+export function assertTryStatement(node: object | null | undefined, opts?: object | null): void;
+export function isTupleExpression(node: object | null | undefined, opts?: object | null): node is TupleExpression;
+export function assertTupleExpression(node: object | null | undefined, opts?: object | null): void;
+export function isTupleTypeAnnotation(node: object | null | undefined, opts?: object | null): node is TupleTypeAnnotation;
+export function assertTupleTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isTypeAlias(node: object | null | undefined, opts?: object | null): node is TypeAlias;
+export function assertTypeAlias(node: object | null | undefined, opts?: object | null): void;
+export function isTypeAnnotation(node: object | null | undefined, opts?: object | null): node is TypeAnnotation;
+export function assertTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isTypeCastExpression(node: object | null | undefined, opts?: object | null): node is TypeCastExpression;
+export function assertTypeCastExpression(node: object | null | undefined, opts?: object | null): void;
+export function isTypeParameter(node: object | null | undefined, opts?: object | null): node is TypeParameter;
+export function assertTypeParameter(node: object | null | undefined, opts?: object | null): void;
+export function isTypeParameterDeclaration(node: object | null | undefined, opts?: object | null): node is TypeParameterDeclaration;
+export function assertTypeParameterDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isTypeParameterInstantiation(node: object | null | undefined, opts?: object | null): node is TypeParameterInstantiation;
+export function assertTypeParameterInstantiation(node: object | null | undefined, opts?: object | null): void;
+export function isTypeScript(node: object | null | undefined, opts?: object | null): node is TypeScript;
+export function assertTypeScript(node: object | null | undefined, opts?: object | null): void;
+export function isTypeofTypeAnnotation(node: object | null | undefined, opts?: object | null): node is TypeofTypeAnnotation;
+export function assertTypeofTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isUnaryExpression(node: object | null | undefined, opts?: object | null): node is UnaryExpression;
+export function assertUnaryExpression(node: object | null | undefined, opts?: object | null): void;
+export function isUnaryLike(node: object | null | undefined, opts?: object | null): node is UnaryLike;
+export function assertUnaryLike(node: object | null | undefined, opts?: object | null): void;
+export function isUnionTypeAnnotation(node: object | null | undefined, opts?: object | null): node is UnionTypeAnnotation;
+export function assertUnionTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isUpdateExpression(node: object | null | undefined, opts?: object | null): node is UpdateExpression;
+export function assertUpdateExpression(node: object | null | undefined, opts?: object | null): void;
+export function isUserWhitespacable(node: object | null | undefined, opts?: object | null): node is UserWhitespacable;
+export function assertUserWhitespacable(node: object | null | undefined, opts?: object | null): void;
+export function isV8IntrinsicIdentifier(node: object | null | undefined, opts?: object | null): node is V8IntrinsicIdentifier;
+export function assertV8IntrinsicIdentifier(node: object | null | undefined, opts?: object | null): void;
+export function isVariableDeclaration(node: object | null | undefined, opts?: object | null): node is VariableDeclaration;
+export function assertVariableDeclaration(node: object | null | undefined, opts?: object | null): void;
+export function isVariableDeclarator(node: object | null | undefined, opts?: object | null): node is VariableDeclarator;
+export function assertVariableDeclarator(node: object | null | undefined, opts?: object | null): void;
+export function isVariance(node: object | null | undefined, opts?: object | null): node is Variance;
+export function assertVariance(node: object | null | undefined, opts?: object | null): void;
+export function isVoidPattern(node: object | null | undefined, opts?: object | null): node is VoidPattern;
+export function assertVoidPattern(node: object | null | undefined, opts?: object | null): void;
+export function isVoidTypeAnnotation(node: object | null | undefined, opts?: object | null): node is VoidTypeAnnotation;
+export function assertVoidTypeAnnotation(node: object | null | undefined, opts?: object | null): void;
+export function isWhile(node: object | null | undefined, opts?: object | null): node is While;
+export function assertWhile(node: object | null | undefined, opts?: object | null): void;
+export function isWhileStatement(node: object | null | undefined, opts?: object | null): node is WhileStatement;
+export function assertWhileStatement(node: object | null | undefined, opts?: object | null): void;
+export function isWithStatement(node: object | null | undefined, opts?: object | null): node is WithStatement;
+export function assertWithStatement(node: object | null | undefined, opts?: object | null): void;
+export function isYieldExpression(node: object | null | undefined, opts?: object | null): node is YieldExpression;
+export function assertYieldExpression(node: object | null | undefined, opts?: object | null): void;
+export function assertNode(obj: any): void
+export function createTypeAnnotationBasedOnTypeof(type: 'string' | 'number' | 'undefined' | 'boolean' | 'function' | 'object' | 'symbol'): StringTypeAnnotation | VoidTypeAnnotation | NumberTypeAnnotation | BooleanTypeAnnotation | GenericTypeAnnotation
+export function createUnionTypeAnnotation<T extends FlowType>(types: [T]): T
+export function createFlowUnionType<T extends FlowType>(types: [T]): T
+export function createUnionTypeAnnotation(types: ReadonlyArray<FlowType>): UnionTypeAnnotation
+export function createFlowUnionType(types: ReadonlyArray<FlowType>): UnionTypeAnnotation
+export function buildChildren(node: { children: ReadonlyArray<JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment | JSXEmptyExpression> }): JSXElement['children']
+export function clone<T extends Node>(n: T): T;
+export function cloneDeep<T extends Node>(n: T): T;
+export function cloneDeepWithoutLoc<T extends Node>(n: T): T;
+export function cloneNode<T extends Node>(n: T, deep?: boolean, withoutLoc?: boolean): T;
+export function cloneWithoutLoc<T extends Node>(n: T): T;
+export type CommentTypeShorthand = 'leading' | 'inner' | 'trailing'
+export function addComment<T extends Node>(node: T, type: CommentTypeShorthand, content: string, line?: boolean): T
+export function addComments<T extends Node>(node: T, type: CommentTypeShorthand, comments: ReadonlyArray<Comment>): T
+export function inheritInnerComments(node: Node, parent: Node): void
+export function inheritLeadingComments(node: Node, parent: Node): void
+export function inheritsComments<T extends Node>(node: T, parent: Node): void
+export function inheritTrailingComments(node: Node, parent: Node): void
+export function removeComments<T extends Node>(node: T): T
+export function ensureBlock(node: Extract<Node, { body: BlockStatement | Statement | Expression }>): BlockStatement
+export function ensureBlock<K extends keyof Extract<Node, { body: BlockStatement | Statement | Expression }> = 'body'>(node: Extract<Node, Record<K, BlockStatement | Statement | Expression>>, key: K): BlockStatement
+export function toBindingIdentifierName(name: { toString(): string } | null | undefined): string
+export function toBlock(node: Statement | Expression, parent?: Function | null): BlockStatement
+export function toComputedKey<T extends Extract<Node, { computed: boolean | null }>>(node: T, key?: Expression | Identifier): Expression
+export function toExpression(node: Function): FunctionExpression
+export function toExpression(node: Class): ClassExpression
+export function toExpression(node: ExpressionStatement | Expression | Class | Function): Expression
+export function toIdentifier(name: { toString(): string } | null | undefined): string
+export function toKeyAlias(node: Method | Property, key?: Node): string
+export function toSequenceExpression(nodes: ReadonlyArray<Node>, scope: { push(value: { id: LVal; kind: 'var'; init?: Expression}): void; buildUndefinedNode(): Node }): SequenceExpression | undefined
+export function toStatement(node: AssignmentExpression, ignore?: boolean): ExpressionStatement
+export function toStatement(node: Statement | AssignmentExpression, ignore?: boolean): Statement
+export function toStatement(node: Class, ignore: true): ClassDeclaration | undefined
+export function toStatement(node: Class, ignore?: boolean): ClassDeclaration
+export function toStatement(node: Function, ignore: true): FunctionDeclaration | undefined
+export function toStatement(node: Function, ignore?: boolean): FunctionDeclaration
+export function toStatement(node: Statement | Class | Function | AssignmentExpression, ignore: true): Statement | undefined
+export function toStatement(node: Statement | Class | Function | AssignmentExpression, ignore?: boolean): Statement
+export function valueToNode(value: undefined): Identifier
+export function valueToNode(value: boolean): BooleanLiteral
+export function valueToNode(value: null): NullLiteral
+export function valueToNode(value: string): StringLiteral
+export function valueToNode(value: number): NumericLiteral | BinaryExpression | UnaryExpression
+export function valueToNode(value: RegExp): RegExpLiteral
+export function valueToNode(value: ReadonlyArray<undefined | boolean | null | string | number | RegExp | object>): ArrayExpression
+export function valueToNode(value: object): ObjectExpression
+export function valueToNode(value: undefined | boolean | null | string | number | RegExp | object): Expression
+export function removeTypeDuplicates(types: ReadonlyArray<FlowType | false | null | undefined>): FlowType[]
+export function appendToMemberExpression<T extends Pick<MemberExpression, 'object' | 'property'>>(member: T, append: MemberExpression['property'], computed?: boolean): T
+export function inherits<T extends Node | null | undefined>(child: T, parent: Node | null | undefined): T
+export function prependToMemberExpression<T extends Pick<MemberExpression, 'object' | 'property'>>(member: T, prepend: MemberExpression['object']): T
+export function removeProperties(
+ n: Node,
+ opts?: { preserveComments: boolean } | null
+): void;
+export function removePropertiesDeep<T extends Node>(
+ n: T,
+ opts?: { preserveComments: boolean } | null
+): T;
+export function getBindingIdentifiers(node: Node, duplicates: true, outerOnly?: boolean): Record<string, Array<Identifier>>
+export function getBindingIdentifiers(node: Node, duplicates?: false, outerOnly?: boolean): Record<string, Identifier>
+export function getBindingIdentifiers(node: Node, duplicates: boolean, outerOnly?: boolean): Record<string, Identifier | Array<Identifier>>
+export function getOuterBindingIdentifiers(node: Node, duplicates: true): Record<string, Array<Identifier>>
+export function getOuterBindingIdentifiers(node: Node, duplicates?: false): Record<string, Identifier>
+export function getOuterBindingIdentifiers(node: Node, duplicates: boolean): Record<string, Identifier | Array<Identifier>>
+export type TraversalAncestors = ReadonlyArray<{
+ node: Node,
+ key: string,
+ index?: number,
+}>;
+export type TraversalHandler<T> = (
+ this: undefined, node: Node, parent: TraversalAncestors, type: T
+) => void;
+export type TraversalHandlers<T> = {
+ enter?: TraversalHandler<T>,
+ exit?: TraversalHandler<T>,
+};
+export function traverse<T>(n: Node, h: TraversalHandler<T> | TraversalHandlers<T>, state?: T): void;
+export function traverseFast<T>(n: Node, h: TraversalHandler<T>, state?: T): void;
+export function shallowEqual<T extends object>(actual: object, expected: T): actual is T
+export function buildMatchMemberExpression(match: string, allowPartial?: boolean): (node: Node | null | undefined) => node is MemberExpression
+export function is<T extends Node['type']>(type: T, n: Node | null | undefined, required?: undefined): n is Extract<Node, { type: T }>
+export function is<T extends Node['type'], P extends Extract<Node, { type: T }>>(type: T, n: Node | null | undefined, required: Partial<P>): n is P
+export function is<P extends Node>(type: string, n: Node | null | undefined, required: Partial<P>): n is P
+export function is(type: string, n: Node | null | undefined, required?: Partial<Node>): n is Node
+export function isBinding(node: Node, parent: Node, grandparent?: Node): boolean
+export function isBlockScoped(node: Node): node is FunctionDeclaration | ClassDeclaration | VariableDeclaration
+export function isImmutable(node: Node): node is Immutable
+export function isLet(node: Node): node is VariableDeclaration
+export function isNode(node: object | null | undefined): node is Node
+export function isNodesEquivalent<T extends Partial<Node>>(a: T, b: any): b is T
+export function isNodesEquivalent(a: any, b: any): boolean
+export function isPlaceholderType(placeholderType: Node['type'], targetType: Node['type']): boolean
+export function isReferenced(node: Node, parent: Node, grandparent?: Node): boolean
+export function isScope(node: Node, parent: Node): node is Scopable
+export function isSpecifierDefault(specifier: ModuleSpecifier): boolean
+export function isType<T extends Node['type']>(nodetype: string, targetType: T): nodetype is T
+export function isType(nodetype: string | null | undefined, targetType: string): boolean
+export function isValidES3Identifier(name: string): boolean
+export function isValidIdentifier(name: string): boolean
+export function isVar(node: Node): node is VariableDeclaration
+export function matchesPattern(node: Node | null | undefined, match: string | ReadonlyArray<string>, allowPartial?: boolean): node is MemberExpression
+export function validate<T extends Node, K extends keyof T>(n: Node | null | undefined, key: K, value: T[K]): void;
+export function validate(n: Node, key: string, value: any): void; \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/index.d.ts b/vanilla/node_modules/@babel/types/lib/index.d.ts
new file mode 100644
index 0000000..efa49cb
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/index.d.ts
@@ -0,0 +1,3617 @@
+declare function isCompatTag(tagName?: string): boolean;
+
+type ReturnedChild = JSXSpreadChild | JSXElement | JSXFragment | Expression;
+declare function buildChildren(node: JSXElement | JSXFragment): ReturnedChild[];
+
+declare function assertNode(node?: any): asserts node is Node;
+
+declare function assertArrayExpression(node: object | null | undefined, opts?: object | null): asserts node is ArrayExpression;
+declare function assertAssignmentExpression(node: object | null | undefined, opts?: object | null): asserts node is AssignmentExpression;
+declare function assertBinaryExpression(node: object | null | undefined, opts?: object | null): asserts node is BinaryExpression;
+declare function assertInterpreterDirective(node: object | null | undefined, opts?: object | null): asserts node is InterpreterDirective;
+declare function assertDirective(node: object | null | undefined, opts?: object | null): asserts node is Directive;
+declare function assertDirectiveLiteral(node: object | null | undefined, opts?: object | null): asserts node is DirectiveLiteral;
+declare function assertBlockStatement(node: object | null | undefined, opts?: object | null): asserts node is BlockStatement;
+declare function assertBreakStatement(node: object | null | undefined, opts?: object | null): asserts node is BreakStatement;
+declare function assertCallExpression(node: object | null | undefined, opts?: object | null): asserts node is CallExpression;
+declare function assertCatchClause(node: object | null | undefined, opts?: object | null): asserts node is CatchClause;
+declare function assertConditionalExpression(node: object | null | undefined, opts?: object | null): asserts node is ConditionalExpression;
+declare function assertContinueStatement(node: object | null | undefined, opts?: object | null): asserts node is ContinueStatement;
+declare function assertDebuggerStatement(node: object | null | undefined, opts?: object | null): asserts node is DebuggerStatement;
+declare function assertDoWhileStatement(node: object | null | undefined, opts?: object | null): asserts node is DoWhileStatement;
+declare function assertEmptyStatement(node: object | null | undefined, opts?: object | null): asserts node is EmptyStatement;
+declare function assertExpressionStatement(node: object | null | undefined, opts?: object | null): asserts node is ExpressionStatement;
+declare function assertFile(node: object | null | undefined, opts?: object | null): asserts node is File;
+declare function assertForInStatement(node: object | null | undefined, opts?: object | null): asserts node is ForInStatement;
+declare function assertForStatement(node: object | null | undefined, opts?: object | null): asserts node is ForStatement;
+declare function assertFunctionDeclaration(node: object | null | undefined, opts?: object | null): asserts node is FunctionDeclaration;
+declare function assertFunctionExpression(node: object | null | undefined, opts?: object | null): asserts node is FunctionExpression;
+declare function assertIdentifier(node: object | null | undefined, opts?: object | null): asserts node is Identifier;
+declare function assertIfStatement(node: object | null | undefined, opts?: object | null): asserts node is IfStatement;
+declare function assertLabeledStatement(node: object | null | undefined, opts?: object | null): asserts node is LabeledStatement;
+declare function assertStringLiteral(node: object | null | undefined, opts?: object | null): asserts node is StringLiteral;
+declare function assertNumericLiteral(node: object | null | undefined, opts?: object | null): asserts node is NumericLiteral;
+declare function assertNullLiteral(node: object | null | undefined, opts?: object | null): asserts node is NullLiteral;
+declare function assertBooleanLiteral(node: object | null | undefined, opts?: object | null): asserts node is BooleanLiteral;
+declare function assertRegExpLiteral(node: object | null | undefined, opts?: object | null): asserts node is RegExpLiteral;
+declare function assertLogicalExpression(node: object | null | undefined, opts?: object | null): asserts node is LogicalExpression;
+declare function assertMemberExpression(node: object | null | undefined, opts?: object | null): asserts node is MemberExpression;
+declare function assertNewExpression(node: object | null | undefined, opts?: object | null): asserts node is NewExpression;
+declare function assertProgram(node: object | null | undefined, opts?: object | null): asserts node is Program;
+declare function assertObjectExpression(node: object | null | undefined, opts?: object | null): asserts node is ObjectExpression;
+declare function assertObjectMethod(node: object | null | undefined, opts?: object | null): asserts node is ObjectMethod;
+declare function assertObjectProperty(node: object | null | undefined, opts?: object | null): asserts node is ObjectProperty;
+declare function assertRestElement(node: object | null | undefined, opts?: object | null): asserts node is RestElement;
+declare function assertReturnStatement(node: object | null | undefined, opts?: object | null): asserts node is ReturnStatement;
+declare function assertSequenceExpression(node: object | null | undefined, opts?: object | null): asserts node is SequenceExpression;
+declare function assertParenthesizedExpression(node: object | null | undefined, opts?: object | null): asserts node is ParenthesizedExpression;
+declare function assertSwitchCase(node: object | null | undefined, opts?: object | null): asserts node is SwitchCase;
+declare function assertSwitchStatement(node: object | null | undefined, opts?: object | null): asserts node is SwitchStatement;
+declare function assertThisExpression(node: object | null | undefined, opts?: object | null): asserts node is ThisExpression;
+declare function assertThrowStatement(node: object | null | undefined, opts?: object | null): asserts node is ThrowStatement;
+declare function assertTryStatement(node: object | null | undefined, opts?: object | null): asserts node is TryStatement;
+declare function assertUnaryExpression(node: object | null | undefined, opts?: object | null): asserts node is UnaryExpression;
+declare function assertUpdateExpression(node: object | null | undefined, opts?: object | null): asserts node is UpdateExpression;
+declare function assertVariableDeclaration(node: object | null | undefined, opts?: object | null): asserts node is VariableDeclaration;
+declare function assertVariableDeclarator(node: object | null | undefined, opts?: object | null): asserts node is VariableDeclarator;
+declare function assertWhileStatement(node: object | null | undefined, opts?: object | null): asserts node is WhileStatement;
+declare function assertWithStatement(node: object | null | undefined, opts?: object | null): asserts node is WithStatement;
+declare function assertAssignmentPattern(node: object | null | undefined, opts?: object | null): asserts node is AssignmentPattern;
+declare function assertArrayPattern(node: object | null | undefined, opts?: object | null): asserts node is ArrayPattern;
+declare function assertArrowFunctionExpression(node: object | null | undefined, opts?: object | null): asserts node is ArrowFunctionExpression;
+declare function assertClassBody(node: object | null | undefined, opts?: object | null): asserts node is ClassBody;
+declare function assertClassExpression(node: object | null | undefined, opts?: object | null): asserts node is ClassExpression;
+declare function assertClassDeclaration(node: object | null | undefined, opts?: object | null): asserts node is ClassDeclaration;
+declare function assertExportAllDeclaration(node: object | null | undefined, opts?: object | null): asserts node is ExportAllDeclaration;
+declare function assertExportDefaultDeclaration(node: object | null | undefined, opts?: object | null): asserts node is ExportDefaultDeclaration;
+declare function assertExportNamedDeclaration(node: object | null | undefined, opts?: object | null): asserts node is ExportNamedDeclaration;
+declare function assertExportSpecifier(node: object | null | undefined, opts?: object | null): asserts node is ExportSpecifier;
+declare function assertForOfStatement(node: object | null | undefined, opts?: object | null): asserts node is ForOfStatement;
+declare function assertImportDeclaration(node: object | null | undefined, opts?: object | null): asserts node is ImportDeclaration;
+declare function assertImportDefaultSpecifier(node: object | null | undefined, opts?: object | null): asserts node is ImportDefaultSpecifier;
+declare function assertImportNamespaceSpecifier(node: object | null | undefined, opts?: object | null): asserts node is ImportNamespaceSpecifier;
+declare function assertImportSpecifier(node: object | null | undefined, opts?: object | null): asserts node is ImportSpecifier;
+declare function assertImportExpression(node: object | null | undefined, opts?: object | null): asserts node is ImportExpression;
+declare function assertMetaProperty(node: object | null | undefined, opts?: object | null): asserts node is MetaProperty;
+declare function assertClassMethod(node: object | null | undefined, opts?: object | null): asserts node is ClassMethod;
+declare function assertObjectPattern(node: object | null | undefined, opts?: object | null): asserts node is ObjectPattern;
+declare function assertSpreadElement(node: object | null | undefined, opts?: object | null): asserts node is SpreadElement;
+declare function assertSuper(node: object | null | undefined, opts?: object | null): asserts node is Super;
+declare function assertTaggedTemplateExpression(node: object | null | undefined, opts?: object | null): asserts node is TaggedTemplateExpression;
+declare function assertTemplateElement(node: object | null | undefined, opts?: object | null): asserts node is TemplateElement;
+declare function assertTemplateLiteral(node: object | null | undefined, opts?: object | null): asserts node is TemplateLiteral;
+declare function assertYieldExpression(node: object | null | undefined, opts?: object | null): asserts node is YieldExpression;
+declare function assertAwaitExpression(node: object | null | undefined, opts?: object | null): asserts node is AwaitExpression;
+declare function assertImport(node: object | null | undefined, opts?: object | null): asserts node is Import;
+declare function assertBigIntLiteral(node: object | null | undefined, opts?: object | null): asserts node is BigIntLiteral;
+declare function assertExportNamespaceSpecifier(node: object | null | undefined, opts?: object | null): asserts node is ExportNamespaceSpecifier;
+declare function assertOptionalMemberExpression(node: object | null | undefined, opts?: object | null): asserts node is OptionalMemberExpression;
+declare function assertOptionalCallExpression(node: object | null | undefined, opts?: object | null): asserts node is OptionalCallExpression;
+declare function assertClassProperty(node: object | null | undefined, opts?: object | null): asserts node is ClassProperty;
+declare function assertClassAccessorProperty(node: object | null | undefined, opts?: object | null): asserts node is ClassAccessorProperty;
+declare function assertClassPrivateProperty(node: object | null | undefined, opts?: object | null): asserts node is ClassPrivateProperty;
+declare function assertClassPrivateMethod(node: object | null | undefined, opts?: object | null): asserts node is ClassPrivateMethod;
+declare function assertPrivateName(node: object | null | undefined, opts?: object | null): asserts node is PrivateName;
+declare function assertStaticBlock(node: object | null | undefined, opts?: object | null): asserts node is StaticBlock;
+declare function assertImportAttribute(node: object | null | undefined, opts?: object | null): asserts node is ImportAttribute;
+declare function assertAnyTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is AnyTypeAnnotation;
+declare function assertArrayTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is ArrayTypeAnnotation;
+declare function assertBooleanTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is BooleanTypeAnnotation;
+declare function assertBooleanLiteralTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is BooleanLiteralTypeAnnotation;
+declare function assertNullLiteralTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is NullLiteralTypeAnnotation;
+declare function assertClassImplements(node: object | null | undefined, opts?: object | null): asserts node is ClassImplements;
+declare function assertDeclareClass(node: object | null | undefined, opts?: object | null): asserts node is DeclareClass;
+declare function assertDeclareFunction(node: object | null | undefined, opts?: object | null): asserts node is DeclareFunction;
+declare function assertDeclareInterface(node: object | null | undefined, opts?: object | null): asserts node is DeclareInterface;
+declare function assertDeclareModule(node: object | null | undefined, opts?: object | null): asserts node is DeclareModule;
+declare function assertDeclareModuleExports(node: object | null | undefined, opts?: object | null): asserts node is DeclareModuleExports;
+declare function assertDeclareTypeAlias(node: object | null | undefined, opts?: object | null): asserts node is DeclareTypeAlias;
+declare function assertDeclareOpaqueType(node: object | null | undefined, opts?: object | null): asserts node is DeclareOpaqueType;
+declare function assertDeclareVariable(node: object | null | undefined, opts?: object | null): asserts node is DeclareVariable;
+declare function assertDeclareExportDeclaration(node: object | null | undefined, opts?: object | null): asserts node is DeclareExportDeclaration;
+declare function assertDeclareExportAllDeclaration(node: object | null | undefined, opts?: object | null): asserts node is DeclareExportAllDeclaration;
+declare function assertDeclaredPredicate(node: object | null | undefined, opts?: object | null): asserts node is DeclaredPredicate;
+declare function assertExistsTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is ExistsTypeAnnotation;
+declare function assertFunctionTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is FunctionTypeAnnotation;
+declare function assertFunctionTypeParam(node: object | null | undefined, opts?: object | null): asserts node is FunctionTypeParam;
+declare function assertGenericTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is GenericTypeAnnotation;
+declare function assertInferredPredicate(node: object | null | undefined, opts?: object | null): asserts node is InferredPredicate;
+declare function assertInterfaceExtends(node: object | null | undefined, opts?: object | null): asserts node is InterfaceExtends;
+declare function assertInterfaceDeclaration(node: object | null | undefined, opts?: object | null): asserts node is InterfaceDeclaration;
+declare function assertInterfaceTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is InterfaceTypeAnnotation;
+declare function assertIntersectionTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is IntersectionTypeAnnotation;
+declare function assertMixedTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is MixedTypeAnnotation;
+declare function assertEmptyTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is EmptyTypeAnnotation;
+declare function assertNullableTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is NullableTypeAnnotation;
+declare function assertNumberLiteralTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is NumberLiteralTypeAnnotation;
+declare function assertNumberTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is NumberTypeAnnotation;
+declare function assertObjectTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is ObjectTypeAnnotation;
+declare function assertObjectTypeInternalSlot(node: object | null | undefined, opts?: object | null): asserts node is ObjectTypeInternalSlot;
+declare function assertObjectTypeCallProperty(node: object | null | undefined, opts?: object | null): asserts node is ObjectTypeCallProperty;
+declare function assertObjectTypeIndexer(node: object | null | undefined, opts?: object | null): asserts node is ObjectTypeIndexer;
+declare function assertObjectTypeProperty(node: object | null | undefined, opts?: object | null): asserts node is ObjectTypeProperty;
+declare function assertObjectTypeSpreadProperty(node: object | null | undefined, opts?: object | null): asserts node is ObjectTypeSpreadProperty;
+declare function assertOpaqueType(node: object | null | undefined, opts?: object | null): asserts node is OpaqueType;
+declare function assertQualifiedTypeIdentifier(node: object | null | undefined, opts?: object | null): asserts node is QualifiedTypeIdentifier;
+declare function assertStringLiteralTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is StringLiteralTypeAnnotation;
+declare function assertStringTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is StringTypeAnnotation;
+declare function assertSymbolTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is SymbolTypeAnnotation;
+declare function assertThisTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is ThisTypeAnnotation;
+declare function assertTupleTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is TupleTypeAnnotation;
+declare function assertTypeofTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is TypeofTypeAnnotation;
+declare function assertTypeAlias(node: object | null | undefined, opts?: object | null): asserts node is TypeAlias;
+declare function assertTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is TypeAnnotation;
+declare function assertTypeCastExpression(node: object | null | undefined, opts?: object | null): asserts node is TypeCastExpression;
+declare function assertTypeParameter(node: object | null | undefined, opts?: object | null): asserts node is TypeParameter;
+declare function assertTypeParameterDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TypeParameterDeclaration;
+declare function assertTypeParameterInstantiation(node: object | null | undefined, opts?: object | null): asserts node is TypeParameterInstantiation;
+declare function assertUnionTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is UnionTypeAnnotation;
+declare function assertVariance(node: object | null | undefined, opts?: object | null): asserts node is Variance;
+declare function assertVoidTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is VoidTypeAnnotation;
+declare function assertEnumDeclaration(node: object | null | undefined, opts?: object | null): asserts node is EnumDeclaration;
+declare function assertEnumBooleanBody(node: object | null | undefined, opts?: object | null): asserts node is EnumBooleanBody;
+declare function assertEnumNumberBody(node: object | null | undefined, opts?: object | null): asserts node is EnumNumberBody;
+declare function assertEnumStringBody(node: object | null | undefined, opts?: object | null): asserts node is EnumStringBody;
+declare function assertEnumSymbolBody(node: object | null | undefined, opts?: object | null): asserts node is EnumSymbolBody;
+declare function assertEnumBooleanMember(node: object | null | undefined, opts?: object | null): asserts node is EnumBooleanMember;
+declare function assertEnumNumberMember(node: object | null | undefined, opts?: object | null): asserts node is EnumNumberMember;
+declare function assertEnumStringMember(node: object | null | undefined, opts?: object | null): asserts node is EnumStringMember;
+declare function assertEnumDefaultedMember(node: object | null | undefined, opts?: object | null): asserts node is EnumDefaultedMember;
+declare function assertIndexedAccessType(node: object | null | undefined, opts?: object | null): asserts node is IndexedAccessType;
+declare function assertOptionalIndexedAccessType(node: object | null | undefined, opts?: object | null): asserts node is OptionalIndexedAccessType;
+declare function assertJSXAttribute(node: object | null | undefined, opts?: object | null): asserts node is JSXAttribute;
+declare function assertJSXClosingElement(node: object | null | undefined, opts?: object | null): asserts node is JSXClosingElement;
+declare function assertJSXElement(node: object | null | undefined, opts?: object | null): asserts node is JSXElement;
+declare function assertJSXEmptyExpression(node: object | null | undefined, opts?: object | null): asserts node is JSXEmptyExpression;
+declare function assertJSXExpressionContainer(node: object | null | undefined, opts?: object | null): asserts node is JSXExpressionContainer;
+declare function assertJSXSpreadChild(node: object | null | undefined, opts?: object | null): asserts node is JSXSpreadChild;
+declare function assertJSXIdentifier(node: object | null | undefined, opts?: object | null): asserts node is JSXIdentifier;
+declare function assertJSXMemberExpression(node: object | null | undefined, opts?: object | null): asserts node is JSXMemberExpression;
+declare function assertJSXNamespacedName(node: object | null | undefined, opts?: object | null): asserts node is JSXNamespacedName;
+declare function assertJSXOpeningElement(node: object | null | undefined, opts?: object | null): asserts node is JSXOpeningElement;
+declare function assertJSXSpreadAttribute(node: object | null | undefined, opts?: object | null): asserts node is JSXSpreadAttribute;
+declare function assertJSXText(node: object | null | undefined, opts?: object | null): asserts node is JSXText;
+declare function assertJSXFragment(node: object | null | undefined, opts?: object | null): asserts node is JSXFragment;
+declare function assertJSXOpeningFragment(node: object | null | undefined, opts?: object | null): asserts node is JSXOpeningFragment;
+declare function assertJSXClosingFragment(node: object | null | undefined, opts?: object | null): asserts node is JSXClosingFragment;
+declare function assertNoop(node: object | null | undefined, opts?: object | null): asserts node is Noop;
+declare function assertPlaceholder(node: object | null | undefined, opts?: object | null): asserts node is Placeholder;
+declare function assertV8IntrinsicIdentifier(node: object | null | undefined, opts?: object | null): asserts node is V8IntrinsicIdentifier;
+declare function assertArgumentPlaceholder(node: object | null | undefined, opts?: object | null): asserts node is ArgumentPlaceholder;
+declare function assertBindExpression(node: object | null | undefined, opts?: object | null): asserts node is BindExpression;
+declare function assertDecorator(node: object | null | undefined, opts?: object | null): asserts node is Decorator;
+declare function assertDoExpression(node: object | null | undefined, opts?: object | null): asserts node is DoExpression;
+declare function assertExportDefaultSpecifier(node: object | null | undefined, opts?: object | null): asserts node is ExportDefaultSpecifier;
+declare function assertRecordExpression(node: object | null | undefined, opts?: object | null): asserts node is RecordExpression;
+declare function assertTupleExpression(node: object | null | undefined, opts?: object | null): asserts node is TupleExpression;
+declare function assertDecimalLiteral(node: object | null | undefined, opts?: object | null): asserts node is DecimalLiteral;
+declare function assertModuleExpression(node: object | null | undefined, opts?: object | null): asserts node is ModuleExpression;
+declare function assertTopicReference(node: object | null | undefined, opts?: object | null): asserts node is TopicReference;
+declare function assertPipelineTopicExpression(node: object | null | undefined, opts?: object | null): asserts node is PipelineTopicExpression;
+declare function assertPipelineBareFunction(node: object | null | undefined, opts?: object | null): asserts node is PipelineBareFunction;
+declare function assertPipelinePrimaryTopicReference(node: object | null | undefined, opts?: object | null): asserts node is PipelinePrimaryTopicReference;
+declare function assertVoidPattern(node: object | null | undefined, opts?: object | null): asserts node is VoidPattern;
+declare function assertTSParameterProperty(node: object | null | undefined, opts?: object | null): asserts node is TSParameterProperty;
+declare function assertTSDeclareFunction(node: object | null | undefined, opts?: object | null): asserts node is TSDeclareFunction;
+declare function assertTSDeclareMethod(node: object | null | undefined, opts?: object | null): asserts node is TSDeclareMethod;
+declare function assertTSQualifiedName(node: object | null | undefined, opts?: object | null): asserts node is TSQualifiedName;
+declare function assertTSCallSignatureDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TSCallSignatureDeclaration;
+declare function assertTSConstructSignatureDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TSConstructSignatureDeclaration;
+declare function assertTSPropertySignature(node: object | null | undefined, opts?: object | null): asserts node is TSPropertySignature;
+declare function assertTSMethodSignature(node: object | null | undefined, opts?: object | null): asserts node is TSMethodSignature;
+declare function assertTSIndexSignature(node: object | null | undefined, opts?: object | null): asserts node is TSIndexSignature;
+declare function assertTSAnyKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSAnyKeyword;
+declare function assertTSBooleanKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSBooleanKeyword;
+declare function assertTSBigIntKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSBigIntKeyword;
+declare function assertTSIntrinsicKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSIntrinsicKeyword;
+declare function assertTSNeverKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSNeverKeyword;
+declare function assertTSNullKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSNullKeyword;
+declare function assertTSNumberKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSNumberKeyword;
+declare function assertTSObjectKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSObjectKeyword;
+declare function assertTSStringKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSStringKeyword;
+declare function assertTSSymbolKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSSymbolKeyword;
+declare function assertTSUndefinedKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSUndefinedKeyword;
+declare function assertTSUnknownKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSUnknownKeyword;
+declare function assertTSVoidKeyword(node: object | null | undefined, opts?: object | null): asserts node is TSVoidKeyword;
+declare function assertTSThisType(node: object | null | undefined, opts?: object | null): asserts node is TSThisType;
+declare function assertTSFunctionType(node: object | null | undefined, opts?: object | null): asserts node is TSFunctionType;
+declare function assertTSConstructorType(node: object | null | undefined, opts?: object | null): asserts node is TSConstructorType;
+declare function assertTSTypeReference(node: object | null | undefined, opts?: object | null): asserts node is TSTypeReference;
+declare function assertTSTypePredicate(node: object | null | undefined, opts?: object | null): asserts node is TSTypePredicate;
+declare function assertTSTypeQuery(node: object | null | undefined, opts?: object | null): asserts node is TSTypeQuery;
+declare function assertTSTypeLiteral(node: object | null | undefined, opts?: object | null): asserts node is TSTypeLiteral;
+declare function assertTSArrayType(node: object | null | undefined, opts?: object | null): asserts node is TSArrayType;
+declare function assertTSTupleType(node: object | null | undefined, opts?: object | null): asserts node is TSTupleType;
+declare function assertTSOptionalType(node: object | null | undefined, opts?: object | null): asserts node is TSOptionalType;
+declare function assertTSRestType(node: object | null | undefined, opts?: object | null): asserts node is TSRestType;
+declare function assertTSNamedTupleMember(node: object | null | undefined, opts?: object | null): asserts node is TSNamedTupleMember;
+declare function assertTSUnionType(node: object | null | undefined, opts?: object | null): asserts node is TSUnionType;
+declare function assertTSIntersectionType(node: object | null | undefined, opts?: object | null): asserts node is TSIntersectionType;
+declare function assertTSConditionalType(node: object | null | undefined, opts?: object | null): asserts node is TSConditionalType;
+declare function assertTSInferType(node: object | null | undefined, opts?: object | null): asserts node is TSInferType;
+declare function assertTSParenthesizedType(node: object | null | undefined, opts?: object | null): asserts node is TSParenthesizedType;
+declare function assertTSTypeOperator(node: object | null | undefined, opts?: object | null): asserts node is TSTypeOperator;
+declare function assertTSIndexedAccessType(node: object | null | undefined, opts?: object | null): asserts node is TSIndexedAccessType;
+declare function assertTSMappedType(node: object | null | undefined, opts?: object | null): asserts node is TSMappedType;
+declare function assertTSTemplateLiteralType(node: object | null | undefined, opts?: object | null): asserts node is TSTemplateLiteralType;
+declare function assertTSLiteralType(node: object | null | undefined, opts?: object | null): asserts node is TSLiteralType;
+declare function assertTSExpressionWithTypeArguments(node: object | null | undefined, opts?: object | null): asserts node is TSExpressionWithTypeArguments;
+declare function assertTSInterfaceDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TSInterfaceDeclaration;
+declare function assertTSInterfaceBody(node: object | null | undefined, opts?: object | null): asserts node is TSInterfaceBody;
+declare function assertTSTypeAliasDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TSTypeAliasDeclaration;
+declare function assertTSInstantiationExpression(node: object | null | undefined, opts?: object | null): asserts node is TSInstantiationExpression;
+declare function assertTSAsExpression(node: object | null | undefined, opts?: object | null): asserts node is TSAsExpression;
+declare function assertTSSatisfiesExpression(node: object | null | undefined, opts?: object | null): asserts node is TSSatisfiesExpression;
+declare function assertTSTypeAssertion(node: object | null | undefined, opts?: object | null): asserts node is TSTypeAssertion;
+declare function assertTSEnumBody(node: object | null | undefined, opts?: object | null): asserts node is TSEnumBody;
+declare function assertTSEnumDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TSEnumDeclaration;
+declare function assertTSEnumMember(node: object | null | undefined, opts?: object | null): asserts node is TSEnumMember;
+declare function assertTSModuleDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TSModuleDeclaration;
+declare function assertTSModuleBlock(node: object | null | undefined, opts?: object | null): asserts node is TSModuleBlock;
+declare function assertTSImportType(node: object | null | undefined, opts?: object | null): asserts node is TSImportType;
+declare function assertTSImportEqualsDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TSImportEqualsDeclaration;
+declare function assertTSExternalModuleReference(node: object | null | undefined, opts?: object | null): asserts node is TSExternalModuleReference;
+declare function assertTSNonNullExpression(node: object | null | undefined, opts?: object | null): asserts node is TSNonNullExpression;
+declare function assertTSExportAssignment(node: object | null | undefined, opts?: object | null): asserts node is TSExportAssignment;
+declare function assertTSNamespaceExportDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TSNamespaceExportDeclaration;
+declare function assertTSTypeAnnotation(node: object | null | undefined, opts?: object | null): asserts node is TSTypeAnnotation;
+declare function assertTSTypeParameterInstantiation(node: object | null | undefined, opts?: object | null): asserts node is TSTypeParameterInstantiation;
+declare function assertTSTypeParameterDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TSTypeParameterDeclaration;
+declare function assertTSTypeParameter(node: object | null | undefined, opts?: object | null): asserts node is TSTypeParameter;
+declare function assertStandardized(node: object | null | undefined, opts?: object | null): asserts node is Standardized;
+declare function assertExpression(node: object | null | undefined, opts?: object | null): asserts node is Expression;
+declare function assertBinary(node: object | null | undefined, opts?: object | null): asserts node is Binary;
+declare function assertScopable(node: object | null | undefined, opts?: object | null): asserts node is Scopable;
+declare function assertBlockParent(node: object | null | undefined, opts?: object | null): asserts node is BlockParent;
+declare function assertBlock(node: object | null | undefined, opts?: object | null): asserts node is Block;
+declare function assertStatement(node: object | null | undefined, opts?: object | null): asserts node is Statement;
+declare function assertTerminatorless(node: object | null | undefined, opts?: object | null): asserts node is Terminatorless;
+declare function assertCompletionStatement(node: object | null | undefined, opts?: object | null): asserts node is CompletionStatement;
+declare function assertConditional(node: object | null | undefined, opts?: object | null): asserts node is Conditional;
+declare function assertLoop(node: object | null | undefined, opts?: object | null): asserts node is Loop;
+declare function assertWhile(node: object | null | undefined, opts?: object | null): asserts node is While;
+declare function assertExpressionWrapper(node: object | null | undefined, opts?: object | null): asserts node is ExpressionWrapper;
+declare function assertFor(node: object | null | undefined, opts?: object | null): asserts node is For;
+declare function assertForXStatement(node: object | null | undefined, opts?: object | null): asserts node is ForXStatement;
+declare function assertFunction(node: object | null | undefined, opts?: object | null): asserts node is Function;
+declare function assertFunctionParent(node: object | null | undefined, opts?: object | null): asserts node is FunctionParent;
+declare function assertPureish(node: object | null | undefined, opts?: object | null): asserts node is Pureish;
+declare function assertDeclaration(node: object | null | undefined, opts?: object | null): asserts node is Declaration;
+declare function assertFunctionParameter(node: object | null | undefined, opts?: object | null): asserts node is FunctionParameter;
+declare function assertPatternLike(node: object | null | undefined, opts?: object | null): asserts node is PatternLike;
+declare function assertLVal(node: object | null | undefined, opts?: object | null): asserts node is LVal;
+declare function assertTSEntityName(node: object | null | undefined, opts?: object | null): asserts node is TSEntityName;
+declare function assertLiteral(node: object | null | undefined, opts?: object | null): asserts node is Literal;
+declare function assertImmutable(node: object | null | undefined, opts?: object | null): asserts node is Immutable;
+declare function assertUserWhitespacable(node: object | null | undefined, opts?: object | null): asserts node is UserWhitespacable;
+declare function assertMethod(node: object | null | undefined, opts?: object | null): asserts node is Method;
+declare function assertObjectMember(node: object | null | undefined, opts?: object | null): asserts node is ObjectMember;
+declare function assertProperty(node: object | null | undefined, opts?: object | null): asserts node is Property;
+declare function assertUnaryLike(node: object | null | undefined, opts?: object | null): asserts node is UnaryLike;
+declare function assertPattern(node: object | null | undefined, opts?: object | null): asserts node is Pattern;
+declare function assertClass(node: object | null | undefined, opts?: object | null): asserts node is Class;
+declare function assertImportOrExportDeclaration(node: object | null | undefined, opts?: object | null): asserts node is ImportOrExportDeclaration;
+declare function assertExportDeclaration(node: object | null | undefined, opts?: object | null): asserts node is ExportDeclaration;
+declare function assertModuleSpecifier(node: object | null | undefined, opts?: object | null): asserts node is ModuleSpecifier;
+declare function assertAccessor(node: object | null | undefined, opts?: object | null): asserts node is Accessor;
+declare function assertPrivate(node: object | null | undefined, opts?: object | null): asserts node is Private;
+declare function assertFlow(node: object | null | undefined, opts?: object | null): asserts node is Flow;
+declare function assertFlowType(node: object | null | undefined, opts?: object | null): asserts node is FlowType;
+declare function assertFlowBaseAnnotation(node: object | null | undefined, opts?: object | null): asserts node is FlowBaseAnnotation;
+declare function assertFlowDeclaration(node: object | null | undefined, opts?: object | null): asserts node is FlowDeclaration;
+declare function assertFlowPredicate(node: object | null | undefined, opts?: object | null): asserts node is FlowPredicate;
+declare function assertEnumBody(node: object | null | undefined, opts?: object | null): asserts node is EnumBody;
+declare function assertEnumMember(node: object | null | undefined, opts?: object | null): asserts node is EnumMember;
+declare function assertJSX(node: object | null | undefined, opts?: object | null): asserts node is JSX;
+declare function assertMiscellaneous(node: object | null | undefined, opts?: object | null): asserts node is Miscellaneous;
+declare function assertTypeScript(node: object | null | undefined, opts?: object | null): asserts node is TypeScript;
+declare function assertTSTypeElement(node: object | null | undefined, opts?: object | null): asserts node is TSTypeElement;
+declare function assertTSType(node: object | null | undefined, opts?: object | null): asserts node is TSType;
+declare function assertTSBaseType(node: object | null | undefined, opts?: object | null): asserts node is TSBaseType;
+declare function assertNumberLiteral(node: any, opts: any): void;
+declare function assertRegexLiteral(node: any, opts: any): void;
+declare function assertRestProperty(node: any, opts: any): void;
+declare function assertSpreadProperty(node: any, opts: any): void;
+declare function assertModuleDeclaration(node: any, opts: any): void;
+
+declare const _default$4: {
+ (type: "string"): StringTypeAnnotation;
+ (type: "number"): NumberTypeAnnotation;
+ (type: "undefined"): VoidTypeAnnotation;
+ (type: "boolean"): BooleanTypeAnnotation;
+ (type: "function"): GenericTypeAnnotation;
+ (type: "object"): GenericTypeAnnotation;
+ (type: "symbol"): GenericTypeAnnotation;
+ (type: "bigint"): AnyTypeAnnotation;
+};
+//# sourceMappingURL=createTypeAnnotationBasedOnTypeof.d.ts.map
+
+/**
+ * Takes an array of `types` and flattens them, removing duplicates and
+ * returns a `UnionTypeAnnotation` node containing them.
+ */
+declare function createFlowUnionType<T extends FlowType>(types: [T] | T[]): T | UnionTypeAnnotation;
+
+/**
+ * Takes an array of `types` and flattens them, removing duplicates and
+ * returns a `UnionTypeAnnotation` node containing them.
+ */
+declare function createTSUnionType(typeAnnotations: (TSTypeAnnotation | TSType)[]): TSType;
+
+interface BaseComment {
+ value: string;
+ start?: number;
+ end?: number;
+ loc?: SourceLocation;
+ ignore?: boolean;
+ type: "CommentBlock" | "CommentLine";
+}
+interface Position {
+ line: number;
+ column: number;
+ index: number;
+}
+interface CommentBlock extends BaseComment {
+ type: "CommentBlock";
+}
+interface CommentLine extends BaseComment {
+ type: "CommentLine";
+}
+type Comment = CommentBlock | CommentLine;
+interface SourceLocation {
+ start: Position;
+ end: Position;
+ filename: string;
+ identifierName: string | undefined | null;
+}
+interface BaseNode {
+ leadingComments?: Comment[] | null;
+ innerComments?: Comment[] | null;
+ trailingComments?: Comment[] | null;
+ start?: number | null;
+ end?: number | null;
+ loc?: SourceLocation | null;
+ range?: [number, number];
+ extra?: Record<string, unknown>;
+}
+type CommentTypeShorthand = "leading" | "inner" | "trailing";
+type Node = AnyTypeAnnotation | ArgumentPlaceholder | ArrayExpression | ArrayPattern | ArrayTypeAnnotation | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BigIntLiteral | BinaryExpression | BindExpression | BlockStatement | BooleanLiteral | BooleanLiteralTypeAnnotation | BooleanTypeAnnotation | BreakStatement | CallExpression | CatchClause | ClassAccessorProperty | ClassBody | ClassDeclaration | ClassExpression | ClassImplements | ClassMethod | ClassPrivateMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | ContinueStatement | DebuggerStatement | DecimalLiteral | DeclareClass | DeclareExportAllDeclaration | DeclareExportDeclaration | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareOpaqueType | DeclareTypeAlias | DeclareVariable | DeclaredPredicate | Decorator | Directive | DirectiveLiteral | DoExpression | DoWhileStatement | EmptyStatement | EmptyTypeAnnotation | EnumBooleanBody | EnumBooleanMember | EnumDeclaration | EnumDefaultedMember | EnumNumberBody | EnumNumberMember | EnumStringBody | EnumStringMember | EnumSymbolBody | ExistsTypeAnnotation | ExportAllDeclaration | ExportDefaultDeclaration | ExportDefaultSpecifier | ExportNamedDeclaration | ExportNamespaceSpecifier | ExportSpecifier | ExpressionStatement | File | ForInStatement | ForOfStatement | ForStatement | FunctionDeclaration | FunctionExpression | FunctionTypeAnnotation | FunctionTypeParam | GenericTypeAnnotation | Identifier | IfStatement | Import | ImportAttribute | ImportDeclaration | ImportDefaultSpecifier | ImportExpression | ImportNamespaceSpecifier | ImportSpecifier | IndexedAccessType | InferredPredicate | InterfaceDeclaration | InterfaceExtends | InterfaceTypeAnnotation | InterpreterDirective | IntersectionTypeAnnotation | JSXAttribute | JSXClosingElement | JSXClosingFragment | JSXElement | JSXEmptyExpression | JSXExpressionContainer | JSXFragment | JSXIdentifier | JSXMemberExpression | JSXNamespacedName | JSXOpeningElement | JSXOpeningFragment | JSXSpreadAttribute | JSXSpreadChild | JSXText | LabeledStatement | LogicalExpression | MemberExpression | MetaProperty | MixedTypeAnnotation | ModuleExpression | NewExpression | Noop | NullLiteral | NullLiteralTypeAnnotation | NullableTypeAnnotation | NumberLiteral$1 | NumberLiteralTypeAnnotation | NumberTypeAnnotation | NumericLiteral | ObjectExpression | ObjectMethod | ObjectPattern | ObjectProperty | ObjectTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalCallExpression | OptionalIndexedAccessType | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelinePrimaryTopicReference | PipelineTopicExpression | Placeholder | PrivateName | Program | QualifiedTypeIdentifier | RecordExpression | RegExpLiteral | RegexLiteral$1 | RestElement | RestProperty$1 | ReturnStatement | SequenceExpression | SpreadElement | SpreadProperty$1 | StaticBlock | StringLiteral | StringLiteralTypeAnnotation | StringTypeAnnotation | Super | SwitchCase | SwitchStatement | SymbolTypeAnnotation | TSAnyKeyword | TSArrayType | TSAsExpression | TSBigIntKeyword | TSBooleanKeyword | TSCallSignatureDeclaration | TSConditionalType | TSConstructSignatureDeclaration | TSConstructorType | TSDeclareFunction | TSDeclareMethod | TSEnumBody | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSExpressionWithTypeArguments | TSExternalModuleReference | TSFunctionType | TSImportEqualsDeclaration | TSImportType | TSIndexSignature | TSIndexedAccessType | TSInferType | TSInstantiationExpression | TSInterfaceBody | TSInterfaceDeclaration | TSIntersectionType | TSIntrinsicKeyword | TSLiteralType | TSMappedType | TSMethodSignature | TSModuleBlock | TSModuleDeclaration | TSNamedTupleMember | TSNamespaceExportDeclaration | TSNeverKeyword | TSNonNullExpression | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSOptionalType | TSParameterProperty | TSParenthesizedType | TSPropertySignature | TSQualifiedName | TSRestType | TSSatisfiesExpression | TSStringKeyword | TSSymbolKeyword | TSTemplateLiteralType | TSThisType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeLiteral | TSTypeOperator | TSTypeParameter | TSTypeParameterDeclaration | TSTypeParameterInstantiation | TSTypePredicate | TSTypeQuery | TSTypeReference | TSUndefinedKeyword | TSUnionType | TSUnknownKeyword | TSVoidKeyword | TaggedTemplateExpression | TemplateElement | TemplateLiteral | ThisExpression | ThisTypeAnnotation | ThrowStatement | TopicReference | TryStatement | TupleExpression | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeCastExpression | TypeParameter | TypeParameterDeclaration | TypeParameterInstantiation | TypeofTypeAnnotation | UnaryExpression | UnionTypeAnnotation | UpdateExpression | V8IntrinsicIdentifier | VariableDeclaration | VariableDeclarator | Variance | VoidPattern | VoidTypeAnnotation | WhileStatement | WithStatement | YieldExpression;
+interface ArrayExpression extends BaseNode {
+ type: "ArrayExpression";
+ elements: (null | Expression | SpreadElement)[];
+}
+interface AssignmentExpression extends BaseNode {
+ type: "AssignmentExpression";
+ operator: string;
+ left: LVal | OptionalMemberExpression;
+ right: Expression;
+}
+interface BinaryExpression extends BaseNode {
+ type: "BinaryExpression";
+ operator: "+" | "-" | "/" | "%" | "*" | "**" | "&" | "|" | ">>" | ">>>" | "<<" | "^" | "==" | "===" | "!=" | "!==" | "in" | "instanceof" | ">" | "<" | ">=" | "<=" | "|>";
+ left: Expression | PrivateName;
+ right: Expression;
+}
+interface InterpreterDirective extends BaseNode {
+ type: "InterpreterDirective";
+ value: string;
+}
+interface Directive extends BaseNode {
+ type: "Directive";
+ value: DirectiveLiteral;
+}
+interface DirectiveLiteral extends BaseNode {
+ type: "DirectiveLiteral";
+ value: string;
+}
+interface BlockStatement extends BaseNode {
+ type: "BlockStatement";
+ body: Statement[];
+ directives: Directive[];
+}
+interface BreakStatement extends BaseNode {
+ type: "BreakStatement";
+ label?: Identifier | null;
+}
+interface CallExpression extends BaseNode {
+ type: "CallExpression";
+ callee: Expression | Super | V8IntrinsicIdentifier;
+ arguments: (Expression | SpreadElement | ArgumentPlaceholder)[];
+ optional?: boolean | null;
+ typeArguments?: TypeParameterInstantiation | null;
+ typeParameters?: TSTypeParameterInstantiation | null;
+}
+interface CatchClause extends BaseNode {
+ type: "CatchClause";
+ param?: Identifier | ArrayPattern | ObjectPattern | null;
+ body: BlockStatement;
+}
+interface ConditionalExpression extends BaseNode {
+ type: "ConditionalExpression";
+ test: Expression;
+ consequent: Expression;
+ alternate: Expression;
+}
+interface ContinueStatement extends BaseNode {
+ type: "ContinueStatement";
+ label?: Identifier | null;
+}
+interface DebuggerStatement extends BaseNode {
+ type: "DebuggerStatement";
+}
+interface DoWhileStatement extends BaseNode {
+ type: "DoWhileStatement";
+ test: Expression;
+ body: Statement;
+}
+interface EmptyStatement extends BaseNode {
+ type: "EmptyStatement";
+}
+interface ExpressionStatement extends BaseNode {
+ type: "ExpressionStatement";
+ expression: Expression;
+}
+interface File extends BaseNode {
+ type: "File";
+ program: Program;
+ comments?: (CommentBlock | CommentLine)[] | null;
+ tokens?: any[] | null;
+}
+interface ForInStatement extends BaseNode {
+ type: "ForInStatement";
+ left: VariableDeclaration | LVal;
+ right: Expression;
+ body: Statement;
+}
+interface ForStatement extends BaseNode {
+ type: "ForStatement";
+ init?: VariableDeclaration | Expression | null;
+ test?: Expression | null;
+ update?: Expression | null;
+ body: Statement;
+}
+interface FunctionDeclaration extends BaseNode {
+ type: "FunctionDeclaration";
+ id?: Identifier | null;
+ params: FunctionParameter[];
+ body: BlockStatement;
+ generator: boolean;
+ async: boolean;
+ declare?: boolean | null;
+ predicate?: DeclaredPredicate | InferredPredicate | null;
+ returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;
+ typeParameters?: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
+}
+interface FunctionExpression extends BaseNode {
+ type: "FunctionExpression";
+ id?: Identifier | null;
+ params: FunctionParameter[];
+ body: BlockStatement;
+ generator: boolean;
+ async: boolean;
+ predicate?: DeclaredPredicate | InferredPredicate | null;
+ returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;
+ typeParameters?: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
+}
+interface Identifier extends BaseNode {
+ type: "Identifier";
+ name: string;
+ decorators?: Decorator[] | null;
+ optional?: boolean | null;
+ typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;
+}
+interface IfStatement extends BaseNode {
+ type: "IfStatement";
+ test: Expression;
+ consequent: Statement;
+ alternate?: Statement | null;
+}
+interface LabeledStatement extends BaseNode {
+ type: "LabeledStatement";
+ label: Identifier;
+ body: Statement;
+}
+interface StringLiteral extends BaseNode {
+ type: "StringLiteral";
+ value: string;
+}
+interface NumericLiteral extends BaseNode {
+ type: "NumericLiteral";
+ value: number;
+}
+/**
+ * @deprecated Use `NumericLiteral`
+ */
+interface NumberLiteral$1 extends BaseNode {
+ type: "NumberLiteral";
+ value: number;
+}
+interface NullLiteral extends BaseNode {
+ type: "NullLiteral";
+}
+interface BooleanLiteral extends BaseNode {
+ type: "BooleanLiteral";
+ value: boolean;
+}
+interface RegExpLiteral extends BaseNode {
+ type: "RegExpLiteral";
+ pattern: string;
+ flags: string;
+}
+/**
+ * @deprecated Use `RegExpLiteral`
+ */
+interface RegexLiteral$1 extends BaseNode {
+ type: "RegexLiteral";
+ pattern: string;
+ flags: string;
+}
+interface LogicalExpression extends BaseNode {
+ type: "LogicalExpression";
+ operator: "||" | "&&" | "??";
+ left: Expression;
+ right: Expression;
+}
+interface MemberExpression extends BaseNode {
+ type: "MemberExpression";
+ object: Expression | Super;
+ property: Expression | Identifier | PrivateName;
+ computed: boolean;
+ optional?: boolean | null;
+}
+interface NewExpression extends BaseNode {
+ type: "NewExpression";
+ callee: Expression | Super | V8IntrinsicIdentifier;
+ arguments: (Expression | SpreadElement | ArgumentPlaceholder)[];
+ optional?: boolean | null;
+ typeArguments?: TypeParameterInstantiation | null;
+ typeParameters?: TSTypeParameterInstantiation | null;
+}
+interface Program extends BaseNode {
+ type: "Program";
+ body: Statement[];
+ directives: Directive[];
+ sourceType: "script" | "module";
+ interpreter?: InterpreterDirective | null;
+}
+interface ObjectExpression extends BaseNode {
+ type: "ObjectExpression";
+ properties: (ObjectMethod | ObjectProperty | SpreadElement)[];
+}
+interface ObjectMethod extends BaseNode {
+ type: "ObjectMethod";
+ kind: "method" | "get" | "set";
+ key: Expression | Identifier | StringLiteral | NumericLiteral | BigIntLiteral;
+ params: FunctionParameter[];
+ body: BlockStatement;
+ computed: boolean;
+ generator: boolean;
+ async: boolean;
+ decorators?: Decorator[] | null;
+ returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;
+ typeParameters?: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
+}
+interface ObjectProperty extends BaseNode {
+ type: "ObjectProperty";
+ key: Expression | Identifier | StringLiteral | NumericLiteral | BigIntLiteral | DecimalLiteral | PrivateName;
+ value: Expression | PatternLike;
+ computed: boolean;
+ shorthand: boolean;
+ decorators?: Decorator[] | null;
+}
+interface RestElement extends BaseNode {
+ type: "RestElement";
+ argument: Identifier | ArrayPattern | ObjectPattern | MemberExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression | RestElement | AssignmentPattern;
+ decorators?: Decorator[] | null;
+ optional?: boolean | null;
+ typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;
+}
+/**
+ * @deprecated Use `RestElement`
+ */
+interface RestProperty$1 extends BaseNode {
+ type: "RestProperty";
+ argument: Identifier | ArrayPattern | ObjectPattern | MemberExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression | RestElement | AssignmentPattern;
+ decorators?: Decorator[] | null;
+ optional?: boolean | null;
+ typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;
+}
+interface ReturnStatement extends BaseNode {
+ type: "ReturnStatement";
+ argument?: Expression | null;
+}
+interface SequenceExpression extends BaseNode {
+ type: "SequenceExpression";
+ expressions: Expression[];
+}
+interface ParenthesizedExpression extends BaseNode {
+ type: "ParenthesizedExpression";
+ expression: Expression;
+}
+interface SwitchCase extends BaseNode {
+ type: "SwitchCase";
+ test?: Expression | null;
+ consequent: Statement[];
+}
+interface SwitchStatement extends BaseNode {
+ type: "SwitchStatement";
+ discriminant: Expression;
+ cases: SwitchCase[];
+}
+interface ThisExpression extends BaseNode {
+ type: "ThisExpression";
+}
+interface ThrowStatement extends BaseNode {
+ type: "ThrowStatement";
+ argument: Expression;
+}
+interface TryStatement extends BaseNode {
+ type: "TryStatement";
+ block: BlockStatement;
+ handler?: CatchClause | null;
+ finalizer?: BlockStatement | null;
+}
+interface UnaryExpression extends BaseNode {
+ type: "UnaryExpression";
+ operator: "void" | "throw" | "delete" | "!" | "+" | "-" | "~" | "typeof";
+ argument: Expression;
+ prefix: boolean;
+}
+interface UpdateExpression extends BaseNode {
+ type: "UpdateExpression";
+ operator: "++" | "--";
+ argument: Expression;
+ prefix: boolean;
+}
+interface VariableDeclaration extends BaseNode {
+ type: "VariableDeclaration";
+ kind: "var" | "let" | "const" | "using" | "await using";
+ declarations: VariableDeclarator[];
+ declare?: boolean | null;
+}
+interface VariableDeclarator extends BaseNode {
+ type: "VariableDeclarator";
+ id: LVal | VoidPattern;
+ init?: Expression | null;
+ definite?: boolean | null;
+}
+interface WhileStatement extends BaseNode {
+ type: "WhileStatement";
+ test: Expression;
+ body: Statement;
+}
+interface WithStatement extends BaseNode {
+ type: "WithStatement";
+ object: Expression;
+ body: Statement;
+}
+interface AssignmentPattern extends BaseNode {
+ type: "AssignmentPattern";
+ left: Identifier | ObjectPattern | ArrayPattern | MemberExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression;
+ right: Expression;
+ decorators?: Decorator[] | null;
+ optional?: boolean | null;
+ typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;
+}
+interface ArrayPattern extends BaseNode {
+ type: "ArrayPattern";
+ elements: (null | PatternLike)[];
+ decorators?: Decorator[] | null;
+ optional?: boolean | null;
+ typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;
+}
+interface ArrowFunctionExpression extends BaseNode {
+ type: "ArrowFunctionExpression";
+ params: FunctionParameter[];
+ body: BlockStatement | Expression;
+ async: boolean;
+ expression: boolean;
+ generator?: boolean;
+ predicate?: DeclaredPredicate | InferredPredicate | null;
+ returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;
+ typeParameters?: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
+}
+interface ClassBody extends BaseNode {
+ type: "ClassBody";
+ body: (ClassMethod | ClassPrivateMethod | ClassProperty | ClassPrivateProperty | ClassAccessorProperty | TSDeclareMethod | TSIndexSignature | StaticBlock)[];
+}
+interface ClassExpression extends BaseNode {
+ type: "ClassExpression";
+ id?: Identifier | null;
+ superClass?: Expression | null;
+ body: ClassBody;
+ decorators?: Decorator[] | null;
+ implements?: (TSExpressionWithTypeArguments | ClassImplements)[] | null;
+ mixins?: InterfaceExtends | null;
+ superTypeParameters?: TypeParameterInstantiation | TSTypeParameterInstantiation | null;
+ typeParameters?: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
+}
+interface ClassDeclaration extends BaseNode {
+ type: "ClassDeclaration";
+ id?: Identifier | null;
+ superClass?: Expression | null;
+ body: ClassBody;
+ decorators?: Decorator[] | null;
+ abstract?: boolean | null;
+ declare?: boolean | null;
+ implements?: (TSExpressionWithTypeArguments | ClassImplements)[] | null;
+ mixins?: InterfaceExtends | null;
+ superTypeParameters?: TypeParameterInstantiation | TSTypeParameterInstantiation | null;
+ typeParameters?: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
+}
+interface ExportAllDeclaration extends BaseNode {
+ type: "ExportAllDeclaration";
+ source: StringLiteral;
+ attributes?: ImportAttribute[] | null;
+ /** @deprecated */
+ assertions?: ImportAttribute[] | null;
+ exportKind?: "type" | "value" | null;
+}
+interface ExportDefaultDeclaration extends BaseNode {
+ type: "ExportDefaultDeclaration";
+ declaration: TSDeclareFunction | FunctionDeclaration | ClassDeclaration | Expression;
+ exportKind?: "value" | null;
+}
+interface ExportNamedDeclaration extends BaseNode {
+ type: "ExportNamedDeclaration";
+ declaration?: Declaration | null;
+ specifiers: (ExportSpecifier | ExportDefaultSpecifier | ExportNamespaceSpecifier)[];
+ source?: StringLiteral | null;
+ attributes?: ImportAttribute[] | null;
+ /** @deprecated */
+ assertions?: ImportAttribute[] | null;
+ exportKind?: "type" | "value" | null;
+}
+interface ExportSpecifier extends BaseNode {
+ type: "ExportSpecifier";
+ local: Identifier;
+ exported: Identifier | StringLiteral;
+ exportKind?: "type" | "value" | null;
+}
+interface ForOfStatement extends BaseNode {
+ type: "ForOfStatement";
+ left: VariableDeclaration | LVal;
+ right: Expression;
+ body: Statement;
+ await: boolean;
+}
+interface ImportDeclaration extends BaseNode {
+ type: "ImportDeclaration";
+ specifiers: (ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier)[];
+ source: StringLiteral;
+ attributes?: ImportAttribute[] | null;
+ /** @deprecated */
+ assertions?: ImportAttribute[] | null;
+ importKind?: "type" | "typeof" | "value" | null;
+ module?: boolean | null;
+ phase?: "source" | "defer" | null;
+}
+interface ImportDefaultSpecifier extends BaseNode {
+ type: "ImportDefaultSpecifier";
+ local: Identifier;
+}
+interface ImportNamespaceSpecifier extends BaseNode {
+ type: "ImportNamespaceSpecifier";
+ local: Identifier;
+}
+interface ImportSpecifier extends BaseNode {
+ type: "ImportSpecifier";
+ local: Identifier;
+ imported: Identifier | StringLiteral;
+ importKind?: "type" | "typeof" | "value" | null;
+}
+interface ImportExpression extends BaseNode {
+ type: "ImportExpression";
+ source: Expression;
+ options?: Expression | null;
+ phase?: "source" | "defer" | null;
+}
+interface MetaProperty extends BaseNode {
+ type: "MetaProperty";
+ meta: Identifier;
+ property: Identifier;
+}
+interface ClassMethod extends BaseNode {
+ type: "ClassMethod";
+ kind: "get" | "set" | "method" | "constructor";
+ key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression;
+ params: (FunctionParameter | TSParameterProperty)[];
+ body: BlockStatement;
+ computed: boolean;
+ static: boolean;
+ generator: boolean;
+ async: boolean;
+ abstract?: boolean | null;
+ access?: "public" | "private" | "protected" | null;
+ accessibility?: "public" | "private" | "protected" | null;
+ decorators?: Decorator[] | null;
+ optional?: boolean | null;
+ override?: boolean;
+ returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;
+ typeParameters?: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
+}
+interface ObjectPattern extends BaseNode {
+ type: "ObjectPattern";
+ properties: (RestElement | ObjectProperty)[];
+ decorators?: Decorator[] | null;
+ optional?: boolean | null;
+ typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;
+}
+interface SpreadElement extends BaseNode {
+ type: "SpreadElement";
+ argument: Expression;
+}
+/**
+ * @deprecated Use `SpreadElement`
+ */
+interface SpreadProperty$1 extends BaseNode {
+ type: "SpreadProperty";
+ argument: Expression;
+}
+interface Super extends BaseNode {
+ type: "Super";
+}
+interface TaggedTemplateExpression extends BaseNode {
+ type: "TaggedTemplateExpression";
+ tag: Expression;
+ quasi: TemplateLiteral;
+ typeParameters?: TypeParameterInstantiation | TSTypeParameterInstantiation | null;
+}
+interface TemplateElement extends BaseNode {
+ type: "TemplateElement";
+ value: {
+ raw: string;
+ cooked?: string;
+ };
+ tail: boolean;
+}
+interface TemplateLiteral extends BaseNode {
+ type: "TemplateLiteral";
+ quasis: TemplateElement[];
+ expressions: (Expression | TSType)[];
+}
+interface YieldExpression extends BaseNode {
+ type: "YieldExpression";
+ argument?: Expression | null;
+ delegate: boolean;
+}
+interface AwaitExpression extends BaseNode {
+ type: "AwaitExpression";
+ argument: Expression;
+}
+interface Import extends BaseNode {
+ type: "Import";
+}
+interface BigIntLiteral extends BaseNode {
+ type: "BigIntLiteral";
+ value: string;
+}
+interface ExportNamespaceSpecifier extends BaseNode {
+ type: "ExportNamespaceSpecifier";
+ exported: Identifier;
+}
+interface OptionalMemberExpression extends BaseNode {
+ type: "OptionalMemberExpression";
+ object: Expression;
+ property: Expression | Identifier;
+ computed: boolean;
+ optional: boolean;
+}
+interface OptionalCallExpression extends BaseNode {
+ type: "OptionalCallExpression";
+ callee: Expression;
+ arguments: (Expression | SpreadElement | ArgumentPlaceholder)[];
+ optional: boolean;
+ typeArguments?: TypeParameterInstantiation | null;
+ typeParameters?: TSTypeParameterInstantiation | null;
+}
+interface ClassProperty extends BaseNode {
+ type: "ClassProperty";
+ key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression;
+ value?: Expression | null;
+ typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;
+ decorators?: Decorator[] | null;
+ computed: boolean;
+ static: boolean;
+ abstract?: boolean | null;
+ accessibility?: "public" | "private" | "protected" | null;
+ declare?: boolean | null;
+ definite?: boolean | null;
+ optional?: boolean | null;
+ override?: boolean;
+ readonly?: boolean | null;
+ variance?: Variance | null;
+}
+interface ClassAccessorProperty extends BaseNode {
+ type: "ClassAccessorProperty";
+ key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression | PrivateName;
+ value?: Expression | null;
+ typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;
+ decorators?: Decorator[] | null;
+ computed: boolean;
+ static: boolean;
+ abstract?: boolean | null;
+ accessibility?: "public" | "private" | "protected" | null;
+ declare?: boolean | null;
+ definite?: boolean | null;
+ optional?: boolean | null;
+ override?: boolean;
+ readonly?: boolean | null;
+ variance?: Variance | null;
+}
+interface ClassPrivateProperty extends BaseNode {
+ type: "ClassPrivateProperty";
+ key: PrivateName;
+ value?: Expression | null;
+ decorators?: Decorator[] | null;
+ static: boolean;
+ definite?: boolean | null;
+ optional?: boolean | null;
+ readonly?: boolean | null;
+ typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;
+ variance?: Variance | null;
+}
+interface ClassPrivateMethod extends BaseNode {
+ type: "ClassPrivateMethod";
+ kind: "get" | "set" | "method";
+ key: PrivateName;
+ params: (FunctionParameter | TSParameterProperty)[];
+ body: BlockStatement;
+ static: boolean;
+ abstract?: boolean | null;
+ access?: "public" | "private" | "protected" | null;
+ accessibility?: "public" | "private" | "protected" | null;
+ async?: boolean;
+ computed?: boolean;
+ decorators?: Decorator[] | null;
+ generator?: boolean;
+ optional?: boolean | null;
+ override?: boolean;
+ returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;
+ typeParameters?: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null;
+}
+interface PrivateName extends BaseNode {
+ type: "PrivateName";
+ id: Identifier;
+}
+interface StaticBlock extends BaseNode {
+ type: "StaticBlock";
+ body: Statement[];
+}
+interface ImportAttribute extends BaseNode {
+ type: "ImportAttribute";
+ key: Identifier | StringLiteral;
+ value: StringLiteral;
+}
+interface AnyTypeAnnotation extends BaseNode {
+ type: "AnyTypeAnnotation";
+}
+interface ArrayTypeAnnotation extends BaseNode {
+ type: "ArrayTypeAnnotation";
+ elementType: FlowType;
+}
+interface BooleanTypeAnnotation extends BaseNode {
+ type: "BooleanTypeAnnotation";
+}
+interface BooleanLiteralTypeAnnotation extends BaseNode {
+ type: "BooleanLiteralTypeAnnotation";
+ value: boolean;
+}
+interface NullLiteralTypeAnnotation extends BaseNode {
+ type: "NullLiteralTypeAnnotation";
+}
+interface ClassImplements extends BaseNode {
+ type: "ClassImplements";
+ id: Identifier;
+ typeParameters?: TypeParameterInstantiation | null;
+}
+interface DeclareClass extends BaseNode {
+ type: "DeclareClass";
+ id: Identifier;
+ typeParameters?: TypeParameterDeclaration | null;
+ extends?: InterfaceExtends[] | null;
+ body: ObjectTypeAnnotation;
+ implements?: ClassImplements[] | null;
+ mixins?: InterfaceExtends[] | null;
+}
+interface DeclareFunction extends BaseNode {
+ type: "DeclareFunction";
+ id: Identifier;
+ predicate?: DeclaredPredicate | null;
+}
+interface DeclareInterface extends BaseNode {
+ type: "DeclareInterface";
+ id: Identifier;
+ typeParameters?: TypeParameterDeclaration | null;
+ extends?: InterfaceExtends[] | null;
+ body: ObjectTypeAnnotation;
+}
+interface DeclareModule extends BaseNode {
+ type: "DeclareModule";
+ id: Identifier | StringLiteral;
+ body: BlockStatement;
+ kind?: "CommonJS" | "ES" | null;
+}
+interface DeclareModuleExports extends BaseNode {
+ type: "DeclareModuleExports";
+ typeAnnotation: TypeAnnotation;
+}
+interface DeclareTypeAlias extends BaseNode {
+ type: "DeclareTypeAlias";
+ id: Identifier;
+ typeParameters?: TypeParameterDeclaration | null;
+ right: FlowType;
+}
+interface DeclareOpaqueType extends BaseNode {
+ type: "DeclareOpaqueType";
+ id: Identifier;
+ typeParameters?: TypeParameterDeclaration | null;
+ supertype?: FlowType | null;
+ impltype?: FlowType | null;
+}
+interface DeclareVariable extends BaseNode {
+ type: "DeclareVariable";
+ id: Identifier;
+}
+interface DeclareExportDeclaration extends BaseNode {
+ type: "DeclareExportDeclaration";
+ declaration?: Flow | null;
+ specifiers?: (ExportSpecifier | ExportNamespaceSpecifier)[] | null;
+ source?: StringLiteral | null;
+ attributes?: ImportAttribute[] | null;
+ /** @deprecated */
+ assertions?: ImportAttribute[] | null;
+ default?: boolean | null;
+}
+interface DeclareExportAllDeclaration extends BaseNode {
+ type: "DeclareExportAllDeclaration";
+ source: StringLiteral;
+ attributes?: ImportAttribute[] | null;
+ /** @deprecated */
+ assertions?: ImportAttribute[] | null;
+ exportKind?: "type" | "value" | null;
+}
+interface DeclaredPredicate extends BaseNode {
+ type: "DeclaredPredicate";
+ value: Flow;
+}
+interface ExistsTypeAnnotation extends BaseNode {
+ type: "ExistsTypeAnnotation";
+}
+interface FunctionTypeAnnotation extends BaseNode {
+ type: "FunctionTypeAnnotation";
+ typeParameters?: TypeParameterDeclaration | null;
+ params: FunctionTypeParam[];
+ rest?: FunctionTypeParam | null;
+ returnType: FlowType;
+ this?: FunctionTypeParam | null;
+}
+interface FunctionTypeParam extends BaseNode {
+ type: "FunctionTypeParam";
+ name?: Identifier | null;
+ typeAnnotation: FlowType;
+ optional?: boolean | null;
+}
+interface GenericTypeAnnotation extends BaseNode {
+ type: "GenericTypeAnnotation";
+ id: Identifier | QualifiedTypeIdentifier;
+ typeParameters?: TypeParameterInstantiation | null;
+}
+interface InferredPredicate extends BaseNode {
+ type: "InferredPredicate";
+}
+interface InterfaceExtends extends BaseNode {
+ type: "InterfaceExtends";
+ id: Identifier | QualifiedTypeIdentifier;
+ typeParameters?: TypeParameterInstantiation | null;
+}
+interface InterfaceDeclaration extends BaseNode {
+ type: "InterfaceDeclaration";
+ id: Identifier;
+ typeParameters?: TypeParameterDeclaration | null;
+ extends?: InterfaceExtends[] | null;
+ body: ObjectTypeAnnotation;
+}
+interface InterfaceTypeAnnotation extends BaseNode {
+ type: "InterfaceTypeAnnotation";
+ extends?: InterfaceExtends[] | null;
+ body: ObjectTypeAnnotation;
+}
+interface IntersectionTypeAnnotation extends BaseNode {
+ type: "IntersectionTypeAnnotation";
+ types: FlowType[];
+}
+interface MixedTypeAnnotation extends BaseNode {
+ type: "MixedTypeAnnotation";
+}
+interface EmptyTypeAnnotation extends BaseNode {
+ type: "EmptyTypeAnnotation";
+}
+interface NullableTypeAnnotation extends BaseNode {
+ type: "NullableTypeAnnotation";
+ typeAnnotation: FlowType;
+}
+interface NumberLiteralTypeAnnotation extends BaseNode {
+ type: "NumberLiteralTypeAnnotation";
+ value: number;
+}
+interface NumberTypeAnnotation extends BaseNode {
+ type: "NumberTypeAnnotation";
+}
+interface ObjectTypeAnnotation extends BaseNode {
+ type: "ObjectTypeAnnotation";
+ properties: (ObjectTypeProperty | ObjectTypeSpreadProperty)[];
+ indexers?: ObjectTypeIndexer[];
+ callProperties?: ObjectTypeCallProperty[];
+ internalSlots?: ObjectTypeInternalSlot[];
+ exact: boolean;
+ inexact?: boolean | null;
+}
+interface ObjectTypeInternalSlot extends BaseNode {
+ type: "ObjectTypeInternalSlot";
+ id: Identifier;
+ value: FlowType;
+ optional: boolean;
+ static: boolean;
+ method: boolean;
+}
+interface ObjectTypeCallProperty extends BaseNode {
+ type: "ObjectTypeCallProperty";
+ value: FlowType;
+ static: boolean;
+}
+interface ObjectTypeIndexer extends BaseNode {
+ type: "ObjectTypeIndexer";
+ id?: Identifier | null;
+ key: FlowType;
+ value: FlowType;
+ variance?: Variance | null;
+ static: boolean;
+}
+interface ObjectTypeProperty extends BaseNode {
+ type: "ObjectTypeProperty";
+ key: Identifier | StringLiteral;
+ value: FlowType;
+ variance?: Variance | null;
+ kind: "init" | "get" | "set";
+ method: boolean;
+ optional: boolean;
+ proto: boolean;
+ static: boolean;
+}
+interface ObjectTypeSpreadProperty extends BaseNode {
+ type: "ObjectTypeSpreadProperty";
+ argument: FlowType;
+}
+interface OpaqueType extends BaseNode {
+ type: "OpaqueType";
+ id: Identifier;
+ typeParameters?: TypeParameterDeclaration | null;
+ supertype?: FlowType | null;
+ impltype: FlowType;
+}
+interface QualifiedTypeIdentifier extends BaseNode {
+ type: "QualifiedTypeIdentifier";
+ id: Identifier;
+ qualification: Identifier | QualifiedTypeIdentifier;
+}
+interface StringLiteralTypeAnnotation extends BaseNode {
+ type: "StringLiteralTypeAnnotation";
+ value: string;
+}
+interface StringTypeAnnotation extends BaseNode {
+ type: "StringTypeAnnotation";
+}
+interface SymbolTypeAnnotation extends BaseNode {
+ type: "SymbolTypeAnnotation";
+}
+interface ThisTypeAnnotation extends BaseNode {
+ type: "ThisTypeAnnotation";
+}
+interface TupleTypeAnnotation extends BaseNode {
+ type: "TupleTypeAnnotation";
+ types: FlowType[];
+}
+interface TypeofTypeAnnotation extends BaseNode {
+ type: "TypeofTypeAnnotation";
+ argument: FlowType;
+}
+interface TypeAlias extends BaseNode {
+ type: "TypeAlias";
+ id: Identifier;
+ typeParameters?: TypeParameterDeclaration | null;
+ right: FlowType;
+}
+interface TypeAnnotation extends BaseNode {
+ type: "TypeAnnotation";
+ typeAnnotation: FlowType;
+}
+interface TypeCastExpression extends BaseNode {
+ type: "TypeCastExpression";
+ expression: Expression;
+ typeAnnotation: TypeAnnotation;
+}
+interface TypeParameter extends BaseNode {
+ type: "TypeParameter";
+ bound?: TypeAnnotation | null;
+ default?: FlowType | null;
+ variance?: Variance | null;
+ name: string;
+}
+interface TypeParameterDeclaration extends BaseNode {
+ type: "TypeParameterDeclaration";
+ params: TypeParameter[];
+}
+interface TypeParameterInstantiation extends BaseNode {
+ type: "TypeParameterInstantiation";
+ params: FlowType[];
+}
+interface UnionTypeAnnotation extends BaseNode {
+ type: "UnionTypeAnnotation";
+ types: FlowType[];
+}
+interface Variance extends BaseNode {
+ type: "Variance";
+ kind: "minus" | "plus";
+}
+interface VoidTypeAnnotation extends BaseNode {
+ type: "VoidTypeAnnotation";
+}
+interface EnumDeclaration extends BaseNode {
+ type: "EnumDeclaration";
+ id: Identifier;
+ body: EnumBooleanBody | EnumNumberBody | EnumStringBody | EnumSymbolBody;
+}
+interface EnumBooleanBody extends BaseNode {
+ type: "EnumBooleanBody";
+ members: EnumBooleanMember[];
+ explicitType: boolean;
+ hasUnknownMembers: boolean;
+}
+interface EnumNumberBody extends BaseNode {
+ type: "EnumNumberBody";
+ members: EnumNumberMember[];
+ explicitType: boolean;
+ hasUnknownMembers: boolean;
+}
+interface EnumStringBody extends BaseNode {
+ type: "EnumStringBody";
+ members: (EnumStringMember | EnumDefaultedMember)[];
+ explicitType: boolean;
+ hasUnknownMembers: boolean;
+}
+interface EnumSymbolBody extends BaseNode {
+ type: "EnumSymbolBody";
+ members: EnumDefaultedMember[];
+ hasUnknownMembers: boolean;
+}
+interface EnumBooleanMember extends BaseNode {
+ type: "EnumBooleanMember";
+ id: Identifier;
+ init: BooleanLiteral;
+}
+interface EnumNumberMember extends BaseNode {
+ type: "EnumNumberMember";
+ id: Identifier;
+ init: NumericLiteral;
+}
+interface EnumStringMember extends BaseNode {
+ type: "EnumStringMember";
+ id: Identifier;
+ init: StringLiteral;
+}
+interface EnumDefaultedMember extends BaseNode {
+ type: "EnumDefaultedMember";
+ id: Identifier;
+}
+interface IndexedAccessType extends BaseNode {
+ type: "IndexedAccessType";
+ objectType: FlowType;
+ indexType: FlowType;
+}
+interface OptionalIndexedAccessType extends BaseNode {
+ type: "OptionalIndexedAccessType";
+ objectType: FlowType;
+ indexType: FlowType;
+ optional: boolean;
+}
+interface JSXAttribute extends BaseNode {
+ type: "JSXAttribute";
+ name: JSXIdentifier | JSXNamespacedName;
+ value?: JSXElement | JSXFragment | StringLiteral | JSXExpressionContainer | null;
+}
+interface JSXClosingElement extends BaseNode {
+ type: "JSXClosingElement";
+ name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName;
+}
+interface JSXElement extends BaseNode {
+ type: "JSXElement";
+ openingElement: JSXOpeningElement;
+ closingElement?: JSXClosingElement | null;
+ children: (JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment)[];
+ selfClosing?: boolean | null;
+}
+interface JSXEmptyExpression extends BaseNode {
+ type: "JSXEmptyExpression";
+}
+interface JSXExpressionContainer extends BaseNode {
+ type: "JSXExpressionContainer";
+ expression: Expression | JSXEmptyExpression;
+}
+interface JSXSpreadChild extends BaseNode {
+ type: "JSXSpreadChild";
+ expression: Expression;
+}
+interface JSXIdentifier extends BaseNode {
+ type: "JSXIdentifier";
+ name: string;
+}
+interface JSXMemberExpression extends BaseNode {
+ type: "JSXMemberExpression";
+ object: JSXMemberExpression | JSXIdentifier;
+ property: JSXIdentifier;
+}
+interface JSXNamespacedName extends BaseNode {
+ type: "JSXNamespacedName";
+ namespace: JSXIdentifier;
+ name: JSXIdentifier;
+}
+interface JSXOpeningElement extends BaseNode {
+ type: "JSXOpeningElement";
+ name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName;
+ attributes: (JSXAttribute | JSXSpreadAttribute)[];
+ selfClosing: boolean;
+ typeArguments?: TypeParameterInstantiation | null;
+ typeParameters?: TSTypeParameterInstantiation | null;
+}
+interface JSXSpreadAttribute extends BaseNode {
+ type: "JSXSpreadAttribute";
+ argument: Expression;
+}
+interface JSXText extends BaseNode {
+ type: "JSXText";
+ value: string;
+}
+interface JSXFragment extends BaseNode {
+ type: "JSXFragment";
+ openingFragment: JSXOpeningFragment;
+ closingFragment: JSXClosingFragment;
+ children: (JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment)[];
+}
+interface JSXOpeningFragment extends BaseNode {
+ type: "JSXOpeningFragment";
+}
+interface JSXClosingFragment extends BaseNode {
+ type: "JSXClosingFragment";
+}
+interface Noop extends BaseNode {
+ type: "Noop";
+}
+interface Placeholder extends BaseNode {
+ type: "Placeholder";
+ expectedNode: "Identifier" | "StringLiteral" | "Expression" | "Statement" | "Declaration" | "BlockStatement" | "ClassBody" | "Pattern";
+ name: Identifier;
+ decorators?: Decorator[] | null;
+ optional?: boolean | null;
+ typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;
+}
+interface V8IntrinsicIdentifier extends BaseNode {
+ type: "V8IntrinsicIdentifier";
+ name: string;
+}
+interface ArgumentPlaceholder extends BaseNode {
+ type: "ArgumentPlaceholder";
+}
+interface BindExpression extends BaseNode {
+ type: "BindExpression";
+ object: Expression;
+ callee: Expression;
+}
+interface Decorator extends BaseNode {
+ type: "Decorator";
+ expression: Expression;
+}
+interface DoExpression extends BaseNode {
+ type: "DoExpression";
+ body: BlockStatement;
+ async: boolean;
+}
+interface ExportDefaultSpecifier extends BaseNode {
+ type: "ExportDefaultSpecifier";
+ exported: Identifier;
+}
+interface RecordExpression extends BaseNode {
+ type: "RecordExpression";
+ properties: (ObjectProperty | SpreadElement)[];
+}
+interface TupleExpression extends BaseNode {
+ type: "TupleExpression";
+ elements: (Expression | SpreadElement)[];
+}
+interface DecimalLiteral extends BaseNode {
+ type: "DecimalLiteral";
+ value: string;
+}
+interface ModuleExpression extends BaseNode {
+ type: "ModuleExpression";
+ body: Program;
+}
+interface TopicReference extends BaseNode {
+ type: "TopicReference";
+}
+interface PipelineTopicExpression extends BaseNode {
+ type: "PipelineTopicExpression";
+ expression: Expression;
+}
+interface PipelineBareFunction extends BaseNode {
+ type: "PipelineBareFunction";
+ callee: Expression;
+}
+interface PipelinePrimaryTopicReference extends BaseNode {
+ type: "PipelinePrimaryTopicReference";
+}
+interface VoidPattern extends BaseNode {
+ type: "VoidPattern";
+}
+interface TSParameterProperty extends BaseNode {
+ type: "TSParameterProperty";
+ parameter: Identifier | AssignmentPattern;
+ accessibility?: "public" | "private" | "protected" | null;
+ decorators?: Decorator[] | null;
+ override?: boolean | null;
+ readonly?: boolean | null;
+}
+interface TSDeclareFunction extends BaseNode {
+ type: "TSDeclareFunction";
+ id?: Identifier | null;
+ typeParameters?: TSTypeParameterDeclaration | Noop | null;
+ params: FunctionParameter[];
+ returnType?: TSTypeAnnotation | Noop | null;
+ async?: boolean;
+ declare?: boolean | null;
+ generator?: boolean;
+}
+interface TSDeclareMethod extends BaseNode {
+ type: "TSDeclareMethod";
+ decorators?: Decorator[] | null;
+ key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression;
+ typeParameters?: TSTypeParameterDeclaration | Noop | null;
+ params: (FunctionParameter | TSParameterProperty)[];
+ returnType?: TSTypeAnnotation | Noop | null;
+ abstract?: boolean | null;
+ access?: "public" | "private" | "protected" | null;
+ accessibility?: "public" | "private" | "protected" | null;
+ async?: boolean;
+ computed?: boolean;
+ generator?: boolean;
+ kind?: "get" | "set" | "method" | "constructor";
+ optional?: boolean | null;
+ override?: boolean;
+ static?: boolean;
+}
+interface TSQualifiedName extends BaseNode {
+ type: "TSQualifiedName";
+ left: TSEntityName;
+ right: Identifier;
+}
+interface TSCallSignatureDeclaration extends BaseNode {
+ type: "TSCallSignatureDeclaration";
+ typeParameters?: TSTypeParameterDeclaration | null;
+ parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[];
+ typeAnnotation?: TSTypeAnnotation | null;
+}
+interface TSConstructSignatureDeclaration extends BaseNode {
+ type: "TSConstructSignatureDeclaration";
+ typeParameters?: TSTypeParameterDeclaration | null;
+ parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[];
+ typeAnnotation?: TSTypeAnnotation | null;
+}
+interface TSPropertySignature extends BaseNode {
+ type: "TSPropertySignature";
+ key: Expression;
+ typeAnnotation?: TSTypeAnnotation | null;
+ computed?: boolean;
+ kind?: "get" | "set" | null;
+ optional?: boolean | null;
+ readonly?: boolean | null;
+}
+interface TSMethodSignature extends BaseNode {
+ type: "TSMethodSignature";
+ key: Expression;
+ typeParameters?: TSTypeParameterDeclaration | null;
+ parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[];
+ typeAnnotation?: TSTypeAnnotation | null;
+ computed?: boolean;
+ kind: "method" | "get" | "set";
+ optional?: boolean | null;
+}
+interface TSIndexSignature extends BaseNode {
+ type: "TSIndexSignature";
+ parameters: Identifier[];
+ typeAnnotation?: TSTypeAnnotation | null;
+ readonly?: boolean | null;
+ static?: boolean | null;
+}
+interface TSAnyKeyword extends BaseNode {
+ type: "TSAnyKeyword";
+}
+interface TSBooleanKeyword extends BaseNode {
+ type: "TSBooleanKeyword";
+}
+interface TSBigIntKeyword extends BaseNode {
+ type: "TSBigIntKeyword";
+}
+interface TSIntrinsicKeyword extends BaseNode {
+ type: "TSIntrinsicKeyword";
+}
+interface TSNeverKeyword extends BaseNode {
+ type: "TSNeverKeyword";
+}
+interface TSNullKeyword extends BaseNode {
+ type: "TSNullKeyword";
+}
+interface TSNumberKeyword extends BaseNode {
+ type: "TSNumberKeyword";
+}
+interface TSObjectKeyword extends BaseNode {
+ type: "TSObjectKeyword";
+}
+interface TSStringKeyword extends BaseNode {
+ type: "TSStringKeyword";
+}
+interface TSSymbolKeyword extends BaseNode {
+ type: "TSSymbolKeyword";
+}
+interface TSUndefinedKeyword extends BaseNode {
+ type: "TSUndefinedKeyword";
+}
+interface TSUnknownKeyword extends BaseNode {
+ type: "TSUnknownKeyword";
+}
+interface TSVoidKeyword extends BaseNode {
+ type: "TSVoidKeyword";
+}
+interface TSThisType extends BaseNode {
+ type: "TSThisType";
+}
+interface TSFunctionType extends BaseNode {
+ type: "TSFunctionType";
+ typeParameters?: TSTypeParameterDeclaration | null;
+ parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[];
+ typeAnnotation?: TSTypeAnnotation | null;
+}
+interface TSConstructorType extends BaseNode {
+ type: "TSConstructorType";
+ typeParameters?: TSTypeParameterDeclaration | null;
+ parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[];
+ typeAnnotation?: TSTypeAnnotation | null;
+ abstract?: boolean | null;
+}
+interface TSTypeReference extends BaseNode {
+ type: "TSTypeReference";
+ typeName: TSEntityName;
+ typeParameters?: TSTypeParameterInstantiation | null;
+}
+interface TSTypePredicate extends BaseNode {
+ type: "TSTypePredicate";
+ parameterName: Identifier | TSThisType;
+ typeAnnotation?: TSTypeAnnotation | null;
+ asserts?: boolean | null;
+}
+interface TSTypeQuery extends BaseNode {
+ type: "TSTypeQuery";
+ exprName: TSEntityName | TSImportType;
+ typeParameters?: TSTypeParameterInstantiation | null;
+}
+interface TSTypeLiteral extends BaseNode {
+ type: "TSTypeLiteral";
+ members: TSTypeElement[];
+}
+interface TSArrayType extends BaseNode {
+ type: "TSArrayType";
+ elementType: TSType;
+}
+interface TSTupleType extends BaseNode {
+ type: "TSTupleType";
+ elementTypes: (TSType | TSNamedTupleMember)[];
+}
+interface TSOptionalType extends BaseNode {
+ type: "TSOptionalType";
+ typeAnnotation: TSType;
+}
+interface TSRestType extends BaseNode {
+ type: "TSRestType";
+ typeAnnotation: TSType;
+}
+interface TSNamedTupleMember extends BaseNode {
+ type: "TSNamedTupleMember";
+ label: Identifier;
+ elementType: TSType;
+ optional: boolean;
+}
+interface TSUnionType extends BaseNode {
+ type: "TSUnionType";
+ types: TSType[];
+}
+interface TSIntersectionType extends BaseNode {
+ type: "TSIntersectionType";
+ types: TSType[];
+}
+interface TSConditionalType extends BaseNode {
+ type: "TSConditionalType";
+ checkType: TSType;
+ extendsType: TSType;
+ trueType: TSType;
+ falseType: TSType;
+}
+interface TSInferType extends BaseNode {
+ type: "TSInferType";
+ typeParameter: TSTypeParameter;
+}
+interface TSParenthesizedType extends BaseNode {
+ type: "TSParenthesizedType";
+ typeAnnotation: TSType;
+}
+interface TSTypeOperator extends BaseNode {
+ type: "TSTypeOperator";
+ typeAnnotation: TSType;
+ operator: string;
+}
+interface TSIndexedAccessType extends BaseNode {
+ type: "TSIndexedAccessType";
+ objectType: TSType;
+ indexType: TSType;
+}
+interface TSMappedType extends BaseNode {
+ type: "TSMappedType";
+ typeParameter: TSTypeParameter;
+ typeAnnotation?: TSType | null;
+ nameType?: TSType | null;
+ optional?: true | false | "+" | "-" | null;
+ readonly?: true | false | "+" | "-" | null;
+}
+interface TSTemplateLiteralType extends BaseNode {
+ type: "TSTemplateLiteralType";
+ quasis: TemplateElement[];
+ types: TSType[];
+}
+interface TSLiteralType extends BaseNode {
+ type: "TSLiteralType";
+ literal: NumericLiteral | StringLiteral | BooleanLiteral | BigIntLiteral | TemplateLiteral | UnaryExpression;
+}
+interface TSExpressionWithTypeArguments extends BaseNode {
+ type: "TSExpressionWithTypeArguments";
+ expression: TSEntityName;
+ typeParameters?: TSTypeParameterInstantiation | null;
+}
+interface TSInterfaceDeclaration extends BaseNode {
+ type: "TSInterfaceDeclaration";
+ id: Identifier;
+ typeParameters?: TSTypeParameterDeclaration | null;
+ extends?: TSExpressionWithTypeArguments[] | null;
+ body: TSInterfaceBody;
+ declare?: boolean | null;
+}
+interface TSInterfaceBody extends BaseNode {
+ type: "TSInterfaceBody";
+ body: TSTypeElement[];
+}
+interface TSTypeAliasDeclaration extends BaseNode {
+ type: "TSTypeAliasDeclaration";
+ id: Identifier;
+ typeParameters?: TSTypeParameterDeclaration | null;
+ typeAnnotation: TSType;
+ declare?: boolean | null;
+}
+interface TSInstantiationExpression extends BaseNode {
+ type: "TSInstantiationExpression";
+ expression: Expression;
+ typeParameters?: TSTypeParameterInstantiation | null;
+}
+interface TSAsExpression extends BaseNode {
+ type: "TSAsExpression";
+ expression: Expression;
+ typeAnnotation: TSType;
+}
+interface TSSatisfiesExpression extends BaseNode {
+ type: "TSSatisfiesExpression";
+ expression: Expression;
+ typeAnnotation: TSType;
+}
+interface TSTypeAssertion extends BaseNode {
+ type: "TSTypeAssertion";
+ typeAnnotation: TSType;
+ expression: Expression;
+}
+interface TSEnumBody extends BaseNode {
+ type: "TSEnumBody";
+ members: TSEnumMember[];
+}
+interface TSEnumDeclaration extends BaseNode {
+ type: "TSEnumDeclaration";
+ id: Identifier;
+ members: TSEnumMember[];
+ body?: TSEnumBody | null;
+ const?: boolean | null;
+ declare?: boolean | null;
+ initializer?: Expression | null;
+}
+interface TSEnumMember extends BaseNode {
+ type: "TSEnumMember";
+ id: Identifier | StringLiteral;
+ initializer?: Expression | null;
+}
+interface TSModuleDeclaration extends BaseNode {
+ type: "TSModuleDeclaration";
+ id: Identifier | StringLiteral;
+ body: TSModuleBlock | TSModuleDeclaration;
+ declare?: boolean | null;
+ global?: boolean | null;
+ kind: "global" | "module" | "namespace";
+}
+interface TSModuleBlock extends BaseNode {
+ type: "TSModuleBlock";
+ body: Statement[];
+}
+interface TSImportType extends BaseNode {
+ type: "TSImportType";
+ argument: StringLiteral;
+ qualifier?: TSEntityName | null;
+ typeParameters?: TSTypeParameterInstantiation | null;
+ options?: ObjectExpression | null;
+}
+interface TSImportEqualsDeclaration extends BaseNode {
+ type: "TSImportEqualsDeclaration";
+ id: Identifier;
+ moduleReference: TSEntityName | TSExternalModuleReference;
+ importKind?: "type" | "value" | null;
+ isExport: boolean;
+}
+interface TSExternalModuleReference extends BaseNode {
+ type: "TSExternalModuleReference";
+ expression: StringLiteral;
+}
+interface TSNonNullExpression extends BaseNode {
+ type: "TSNonNullExpression";
+ expression: Expression;
+}
+interface TSExportAssignment extends BaseNode {
+ type: "TSExportAssignment";
+ expression: Expression;
+}
+interface TSNamespaceExportDeclaration extends BaseNode {
+ type: "TSNamespaceExportDeclaration";
+ id: Identifier;
+}
+interface TSTypeAnnotation extends BaseNode {
+ type: "TSTypeAnnotation";
+ typeAnnotation: TSType;
+}
+interface TSTypeParameterInstantiation extends BaseNode {
+ type: "TSTypeParameterInstantiation";
+ params: TSType[];
+}
+interface TSTypeParameterDeclaration extends BaseNode {
+ type: "TSTypeParameterDeclaration";
+ params: TSTypeParameter[];
+}
+interface TSTypeParameter extends BaseNode {
+ type: "TSTypeParameter";
+ constraint?: TSType | null;
+ default?: TSType | null;
+ name: string;
+ const?: boolean | null;
+ in?: boolean | null;
+ out?: boolean | null;
+}
+type Standardized = ArrayExpression | AssignmentExpression | BinaryExpression | InterpreterDirective | Directive | DirectiveLiteral | BlockStatement | BreakStatement | CallExpression | CatchClause | ConditionalExpression | ContinueStatement | DebuggerStatement | DoWhileStatement | EmptyStatement | ExpressionStatement | File | ForInStatement | ForStatement | FunctionDeclaration | FunctionExpression | Identifier | IfStatement | LabeledStatement | StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | RegExpLiteral | LogicalExpression | MemberExpression | NewExpression | Program | ObjectExpression | ObjectMethod | ObjectProperty | RestElement | ReturnStatement | SequenceExpression | ParenthesizedExpression | SwitchCase | SwitchStatement | ThisExpression | ThrowStatement | TryStatement | UnaryExpression | UpdateExpression | VariableDeclaration | VariableDeclarator | WhileStatement | WithStatement | AssignmentPattern | ArrayPattern | ArrowFunctionExpression | ClassBody | ClassExpression | ClassDeclaration | ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ExportSpecifier | ForOfStatement | ImportDeclaration | ImportDefaultSpecifier | ImportNamespaceSpecifier | ImportSpecifier | ImportExpression | MetaProperty | ClassMethod | ObjectPattern | SpreadElement | Super | TaggedTemplateExpression | TemplateElement | TemplateLiteral | YieldExpression | AwaitExpression | Import | BigIntLiteral | ExportNamespaceSpecifier | OptionalMemberExpression | OptionalCallExpression | ClassProperty | ClassAccessorProperty | ClassPrivateProperty | ClassPrivateMethod | PrivateName | StaticBlock | ImportAttribute;
+type Expression = ArrayExpression | AssignmentExpression | BinaryExpression | CallExpression | ConditionalExpression | FunctionExpression | Identifier | StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | RegExpLiteral | LogicalExpression | MemberExpression | NewExpression | ObjectExpression | SequenceExpression | ParenthesizedExpression | ThisExpression | UnaryExpression | UpdateExpression | ArrowFunctionExpression | ClassExpression | ImportExpression | MetaProperty | Super | TaggedTemplateExpression | TemplateLiteral | YieldExpression | AwaitExpression | Import | BigIntLiteral | OptionalMemberExpression | OptionalCallExpression | TypeCastExpression | JSXElement | JSXFragment | BindExpression | DoExpression | RecordExpression | TupleExpression | DecimalLiteral | ModuleExpression | TopicReference | PipelineTopicExpression | PipelineBareFunction | PipelinePrimaryTopicReference | TSInstantiationExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression;
+type Binary = BinaryExpression | LogicalExpression;
+type Scopable = BlockStatement | CatchClause | DoWhileStatement | ForInStatement | ForStatement | FunctionDeclaration | FunctionExpression | Program | ObjectMethod | SwitchStatement | WhileStatement | ArrowFunctionExpression | ClassExpression | ClassDeclaration | ForOfStatement | ClassMethod | ClassPrivateMethod | StaticBlock | TSModuleBlock;
+type BlockParent = BlockStatement | CatchClause | DoWhileStatement | ForInStatement | ForStatement | FunctionDeclaration | FunctionExpression | Program | ObjectMethod | SwitchStatement | WhileStatement | ArrowFunctionExpression | ForOfStatement | ClassMethod | ClassPrivateMethod | StaticBlock | TSModuleBlock;
+type Block = BlockStatement | Program | TSModuleBlock;
+type Statement = BlockStatement | BreakStatement | ContinueStatement | DebuggerStatement | DoWhileStatement | EmptyStatement | ExpressionStatement | ForInStatement | ForStatement | FunctionDeclaration | IfStatement | LabeledStatement | ReturnStatement | SwitchStatement | ThrowStatement | TryStatement | VariableDeclaration | WhileStatement | WithStatement | ClassDeclaration | ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ForOfStatement | ImportDeclaration | DeclareClass | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareTypeAlias | DeclareOpaqueType | DeclareVariable | DeclareExportDeclaration | DeclareExportAllDeclaration | InterfaceDeclaration | OpaqueType | TypeAlias | EnumDeclaration | TSDeclareFunction | TSInterfaceDeclaration | TSTypeAliasDeclaration | TSEnumDeclaration | TSModuleDeclaration | TSImportEqualsDeclaration | TSExportAssignment | TSNamespaceExportDeclaration;
+type Terminatorless = BreakStatement | ContinueStatement | ReturnStatement | ThrowStatement | YieldExpression | AwaitExpression;
+type CompletionStatement = BreakStatement | ContinueStatement | ReturnStatement | ThrowStatement;
+type Conditional = ConditionalExpression | IfStatement;
+type Loop = DoWhileStatement | ForInStatement | ForStatement | WhileStatement | ForOfStatement;
+type While = DoWhileStatement | WhileStatement;
+type ExpressionWrapper = ExpressionStatement | ParenthesizedExpression | TypeCastExpression;
+type For = ForInStatement | ForStatement | ForOfStatement;
+type ForXStatement = ForInStatement | ForOfStatement;
+type Function = FunctionDeclaration | FunctionExpression | ObjectMethod | ArrowFunctionExpression | ClassMethod | ClassPrivateMethod;
+type FunctionParent = FunctionDeclaration | FunctionExpression | ObjectMethod | ArrowFunctionExpression | ClassMethod | ClassPrivateMethod | StaticBlock | TSModuleBlock;
+type Pureish = FunctionDeclaration | FunctionExpression | StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | RegExpLiteral | ArrowFunctionExpression | BigIntLiteral | DecimalLiteral;
+type Declaration = FunctionDeclaration | VariableDeclaration | ClassDeclaration | ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ImportDeclaration | DeclareClass | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareTypeAlias | DeclareOpaqueType | DeclareVariable | DeclareExportDeclaration | DeclareExportAllDeclaration | InterfaceDeclaration | OpaqueType | TypeAlias | EnumDeclaration | TSDeclareFunction | TSInterfaceDeclaration | TSTypeAliasDeclaration | TSEnumDeclaration | TSModuleDeclaration | TSImportEqualsDeclaration;
+type FunctionParameter = Identifier | RestElement | AssignmentPattern | ArrayPattern | ObjectPattern | VoidPattern;
+type PatternLike = Identifier | MemberExpression | RestElement | AssignmentPattern | ArrayPattern | ObjectPattern | VoidPattern | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression;
+type LVal = Identifier | MemberExpression | RestElement | AssignmentPattern | ArrayPattern | ObjectPattern | TSParameterProperty | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression;
+type TSEntityName = Identifier | TSQualifiedName;
+type Literal = StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | RegExpLiteral | TemplateLiteral | BigIntLiteral | DecimalLiteral;
+type Immutable = StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | BigIntLiteral | JSXAttribute | JSXClosingElement | JSXElement | JSXExpressionContainer | JSXSpreadChild | JSXOpeningElement | JSXText | JSXFragment | JSXOpeningFragment | JSXClosingFragment | DecimalLiteral;
+type UserWhitespacable = ObjectMethod | ObjectProperty | ObjectTypeInternalSlot | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeProperty | ObjectTypeSpreadProperty;
+type Method = ObjectMethod | ClassMethod | ClassPrivateMethod;
+type ObjectMember = ObjectMethod | ObjectProperty;
+type Property = ObjectProperty | ClassProperty | ClassAccessorProperty | ClassPrivateProperty;
+type UnaryLike = UnaryExpression | SpreadElement;
+type Pattern = AssignmentPattern | ArrayPattern | ObjectPattern | VoidPattern;
+type Class = ClassExpression | ClassDeclaration;
+type ImportOrExportDeclaration = ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ImportDeclaration;
+type ExportDeclaration = ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration;
+type ModuleSpecifier = ExportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier | ImportSpecifier | ExportNamespaceSpecifier | ExportDefaultSpecifier;
+type Accessor = ClassAccessorProperty;
+type Private = ClassPrivateProperty | ClassPrivateMethod | PrivateName;
+type Flow = AnyTypeAnnotation | ArrayTypeAnnotation | BooleanTypeAnnotation | BooleanLiteralTypeAnnotation | NullLiteralTypeAnnotation | ClassImplements | DeclareClass | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareTypeAlias | DeclareOpaqueType | DeclareVariable | DeclareExportDeclaration | DeclareExportAllDeclaration | DeclaredPredicate | ExistsTypeAnnotation | FunctionTypeAnnotation | FunctionTypeParam | GenericTypeAnnotation | InferredPredicate | InterfaceExtends | InterfaceDeclaration | InterfaceTypeAnnotation | IntersectionTypeAnnotation | MixedTypeAnnotation | EmptyTypeAnnotation | NullableTypeAnnotation | NumberLiteralTypeAnnotation | NumberTypeAnnotation | ObjectTypeAnnotation | ObjectTypeInternalSlot | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | QualifiedTypeIdentifier | StringLiteralTypeAnnotation | StringTypeAnnotation | SymbolTypeAnnotation | ThisTypeAnnotation | TupleTypeAnnotation | TypeofTypeAnnotation | TypeAlias | TypeAnnotation | TypeCastExpression | TypeParameter | TypeParameterDeclaration | TypeParameterInstantiation | UnionTypeAnnotation | Variance | VoidTypeAnnotation | EnumDeclaration | EnumBooleanBody | EnumNumberBody | EnumStringBody | EnumSymbolBody | EnumBooleanMember | EnumNumberMember | EnumStringMember | EnumDefaultedMember | IndexedAccessType | OptionalIndexedAccessType;
+type FlowType = AnyTypeAnnotation | ArrayTypeAnnotation | BooleanTypeAnnotation | BooleanLiteralTypeAnnotation | NullLiteralTypeAnnotation | ExistsTypeAnnotation | FunctionTypeAnnotation | GenericTypeAnnotation | InterfaceTypeAnnotation | IntersectionTypeAnnotation | MixedTypeAnnotation | EmptyTypeAnnotation | NullableTypeAnnotation | NumberLiteralTypeAnnotation | NumberTypeAnnotation | ObjectTypeAnnotation | StringLiteralTypeAnnotation | StringTypeAnnotation | SymbolTypeAnnotation | ThisTypeAnnotation | TupleTypeAnnotation | TypeofTypeAnnotation | UnionTypeAnnotation | VoidTypeAnnotation | IndexedAccessType | OptionalIndexedAccessType;
+type FlowBaseAnnotation = AnyTypeAnnotation | BooleanTypeAnnotation | NullLiteralTypeAnnotation | MixedTypeAnnotation | EmptyTypeAnnotation | NumberTypeAnnotation | StringTypeAnnotation | SymbolTypeAnnotation | ThisTypeAnnotation | VoidTypeAnnotation;
+type FlowDeclaration = DeclareClass | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareTypeAlias | DeclareOpaqueType | DeclareVariable | DeclareExportDeclaration | DeclareExportAllDeclaration | InterfaceDeclaration | OpaqueType | TypeAlias;
+type FlowPredicate = DeclaredPredicate | InferredPredicate;
+type EnumBody = EnumBooleanBody | EnumNumberBody | EnumStringBody | EnumSymbolBody;
+type EnumMember = EnumBooleanMember | EnumNumberMember | EnumStringMember | EnumDefaultedMember;
+type JSX = JSXAttribute | JSXClosingElement | JSXElement | JSXEmptyExpression | JSXExpressionContainer | JSXSpreadChild | JSXIdentifier | JSXMemberExpression | JSXNamespacedName | JSXOpeningElement | JSXSpreadAttribute | JSXText | JSXFragment | JSXOpeningFragment | JSXClosingFragment;
+type Miscellaneous = Noop | Placeholder | V8IntrinsicIdentifier;
+type TypeScript = TSParameterProperty | TSDeclareFunction | TSDeclareMethod | TSQualifiedName | TSCallSignatureDeclaration | TSConstructSignatureDeclaration | TSPropertySignature | TSMethodSignature | TSIndexSignature | TSAnyKeyword | TSBooleanKeyword | TSBigIntKeyword | TSIntrinsicKeyword | TSNeverKeyword | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSStringKeyword | TSSymbolKeyword | TSUndefinedKeyword | TSUnknownKeyword | TSVoidKeyword | TSThisType | TSFunctionType | TSConstructorType | TSTypeReference | TSTypePredicate | TSTypeQuery | TSTypeLiteral | TSArrayType | TSTupleType | TSOptionalType | TSRestType | TSNamedTupleMember | TSUnionType | TSIntersectionType | TSConditionalType | TSInferType | TSParenthesizedType | TSTypeOperator | TSIndexedAccessType | TSMappedType | TSTemplateLiteralType | TSLiteralType | TSExpressionWithTypeArguments | TSInterfaceDeclaration | TSInterfaceBody | TSTypeAliasDeclaration | TSInstantiationExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSEnumBody | TSEnumDeclaration | TSEnumMember | TSModuleDeclaration | TSModuleBlock | TSImportType | TSImportEqualsDeclaration | TSExternalModuleReference | TSNonNullExpression | TSExportAssignment | TSNamespaceExportDeclaration | TSTypeAnnotation | TSTypeParameterInstantiation | TSTypeParameterDeclaration | TSTypeParameter;
+type TSTypeElement = TSCallSignatureDeclaration | TSConstructSignatureDeclaration | TSPropertySignature | TSMethodSignature | TSIndexSignature;
+type TSType = TSAnyKeyword | TSBooleanKeyword | TSBigIntKeyword | TSIntrinsicKeyword | TSNeverKeyword | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSStringKeyword | TSSymbolKeyword | TSUndefinedKeyword | TSUnknownKeyword | TSVoidKeyword | TSThisType | TSFunctionType | TSConstructorType | TSTypeReference | TSTypePredicate | TSTypeQuery | TSTypeLiteral | TSArrayType | TSTupleType | TSOptionalType | TSRestType | TSUnionType | TSIntersectionType | TSConditionalType | TSInferType | TSParenthesizedType | TSTypeOperator | TSIndexedAccessType | TSMappedType | TSTemplateLiteralType | TSLiteralType | TSExpressionWithTypeArguments | TSImportType;
+type TSBaseType = TSAnyKeyword | TSBooleanKeyword | TSBigIntKeyword | TSIntrinsicKeyword | TSNeverKeyword | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSStringKeyword | TSSymbolKeyword | TSUndefinedKeyword | TSUnknownKeyword | TSVoidKeyword | TSThisType | TSTemplateLiteralType | TSLiteralType;
+type ModuleDeclaration = ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ImportDeclaration;
+interface Aliases {
+ Standardized: Standardized;
+ Expression: Expression;
+ Binary: Binary;
+ Scopable: Scopable;
+ BlockParent: BlockParent;
+ Block: Block;
+ Statement: Statement;
+ Terminatorless: Terminatorless;
+ CompletionStatement: CompletionStatement;
+ Conditional: Conditional;
+ Loop: Loop;
+ While: While;
+ ExpressionWrapper: ExpressionWrapper;
+ For: For;
+ ForXStatement: ForXStatement;
+ Function: Function;
+ FunctionParent: FunctionParent;
+ Pureish: Pureish;
+ Declaration: Declaration;
+ FunctionParameter: FunctionParameter;
+ PatternLike: PatternLike;
+ LVal: LVal;
+ TSEntityName: TSEntityName;
+ Literal: Literal;
+ Immutable: Immutable;
+ UserWhitespacable: UserWhitespacable;
+ Method: Method;
+ ObjectMember: ObjectMember;
+ Property: Property;
+ UnaryLike: UnaryLike;
+ Pattern: Pattern;
+ Class: Class;
+ ImportOrExportDeclaration: ImportOrExportDeclaration;
+ ExportDeclaration: ExportDeclaration;
+ ModuleSpecifier: ModuleSpecifier;
+ Accessor: Accessor;
+ Private: Private;
+ Flow: Flow;
+ FlowType: FlowType;
+ FlowBaseAnnotation: FlowBaseAnnotation;
+ FlowDeclaration: FlowDeclaration;
+ FlowPredicate: FlowPredicate;
+ EnumBody: EnumBody;
+ EnumMember: EnumMember;
+ JSX: JSX;
+ Miscellaneous: Miscellaneous;
+ TypeScript: TypeScript;
+ TSTypeElement: TSTypeElement;
+ TSType: TSType;
+ TSBaseType: TSBaseType;
+ ModuleDeclaration: ModuleDeclaration;
+}
+type DeprecatedAliases = NumberLiteral$1 | RegexLiteral$1 | RestProperty$1 | SpreadProperty$1;
+interface ParentMaps {
+ AnyTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ ArgumentPlaceholder: CallExpression | NewExpression | OptionalCallExpression;
+ ArrayExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ ArrayPattern: ArrayPattern | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | CatchClause | ClassMethod | ClassPrivateMethod | ForInStatement | ForOfStatement | FunctionDeclaration | FunctionExpression | ObjectMethod | ObjectProperty | RestElement | TSCallSignatureDeclaration | TSConstructSignatureDeclaration | TSConstructorType | TSDeclareFunction | TSDeclareMethod | TSFunctionType | TSMethodSignature | VariableDeclarator;
+ ArrayTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ ArrowFunctionExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ AssignmentExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ AssignmentPattern: ArrayPattern | ArrowFunctionExpression | AssignmentExpression | ClassMethod | ClassPrivateMethod | ForInStatement | ForOfStatement | FunctionDeclaration | FunctionExpression | ObjectMethod | ObjectProperty | RestElement | TSDeclareFunction | TSDeclareMethod | TSParameterProperty | VariableDeclarator;
+ AwaitExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ BigIntLiteral: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSLiteralType | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ BinaryExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ BindExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ BlockStatement: ArrowFunctionExpression | BlockStatement | CatchClause | ClassMethod | ClassPrivateMethod | DeclareModule | DoExpression | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | FunctionDeclaration | FunctionExpression | IfStatement | LabeledStatement | ObjectMethod | Program | StaticBlock | SwitchCase | TSModuleBlock | TryStatement | WhileStatement | WithStatement;
+ BooleanLiteral: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | EnumBooleanMember | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSLiteralType | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ BooleanLiteralTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ BooleanTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ BreakStatement: BlockStatement | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ CallExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ CatchClause: TryStatement;
+ ClassAccessorProperty: ClassBody;
+ ClassBody: ClassDeclaration | ClassExpression;
+ ClassDeclaration: BlockStatement | DoWhileStatement | ExportDefaultDeclaration | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ ClassExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ ClassImplements: ClassDeclaration | ClassExpression | DeclareClass | DeclareExportDeclaration | DeclaredPredicate;
+ ClassMethod: ClassBody;
+ ClassPrivateMethod: ClassBody;
+ ClassPrivateProperty: ClassBody;
+ ClassProperty: ClassBody;
+ CommentBlock: File;
+ CommentLine: File;
+ ConditionalExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ ContinueStatement: BlockStatement | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ DebuggerStatement: BlockStatement | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ DecimalLiteral: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ DeclareClass: BlockStatement | DeclareExportDeclaration | DeclaredPredicate | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ DeclareExportAllDeclaration: BlockStatement | DeclareExportDeclaration | DeclaredPredicate | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ DeclareExportDeclaration: BlockStatement | DeclareExportDeclaration | DeclaredPredicate | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ DeclareFunction: BlockStatement | DeclareExportDeclaration | DeclaredPredicate | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ DeclareInterface: BlockStatement | DeclareExportDeclaration | DeclaredPredicate | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ DeclareModule: BlockStatement | DeclareExportDeclaration | DeclaredPredicate | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ DeclareModuleExports: BlockStatement | DeclareExportDeclaration | DeclaredPredicate | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ DeclareOpaqueType: BlockStatement | DeclareExportDeclaration | DeclaredPredicate | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ DeclareTypeAlias: BlockStatement | DeclareExportDeclaration | DeclaredPredicate | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ DeclareVariable: BlockStatement | DeclareExportDeclaration | DeclaredPredicate | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ DeclaredPredicate: ArrowFunctionExpression | DeclareExportDeclaration | DeclareFunction | DeclaredPredicate | FunctionDeclaration | FunctionExpression;
+ Decorator: ArrayPattern | AssignmentPattern | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateMethod | ClassPrivateProperty | ClassProperty | Identifier | ObjectMethod | ObjectPattern | ObjectProperty | Placeholder | RestElement | TSDeclareMethod | TSParameterProperty;
+ Directive: BlockStatement | Program;
+ DirectiveLiteral: Directive;
+ DoExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ DoWhileStatement: BlockStatement | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ EmptyStatement: BlockStatement | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ EmptyTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ EnumBooleanBody: DeclareExportDeclaration | DeclaredPredicate | EnumDeclaration;
+ EnumBooleanMember: DeclareExportDeclaration | DeclaredPredicate | EnumBooleanBody;
+ EnumDeclaration: BlockStatement | DeclareExportDeclaration | DeclaredPredicate | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ EnumDefaultedMember: DeclareExportDeclaration | DeclaredPredicate | EnumStringBody | EnumSymbolBody;
+ EnumNumberBody: DeclareExportDeclaration | DeclaredPredicate | EnumDeclaration;
+ EnumNumberMember: DeclareExportDeclaration | DeclaredPredicate | EnumNumberBody;
+ EnumStringBody: DeclareExportDeclaration | DeclaredPredicate | EnumDeclaration;
+ EnumStringMember: DeclareExportDeclaration | DeclaredPredicate | EnumStringBody;
+ EnumSymbolBody: DeclareExportDeclaration | DeclaredPredicate | EnumDeclaration;
+ ExistsTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ ExportAllDeclaration: BlockStatement | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ ExportDefaultDeclaration: BlockStatement | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ ExportDefaultSpecifier: ExportNamedDeclaration;
+ ExportNamedDeclaration: BlockStatement | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ ExportNamespaceSpecifier: DeclareExportDeclaration | ExportNamedDeclaration;
+ ExportSpecifier: DeclareExportDeclaration | ExportNamedDeclaration;
+ ExpressionStatement: BlockStatement | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ File: null;
+ ForInStatement: BlockStatement | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ ForOfStatement: BlockStatement | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ ForStatement: BlockStatement | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ FunctionDeclaration: BlockStatement | DoWhileStatement | ExportDefaultDeclaration | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ FunctionExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ FunctionTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ FunctionTypeParam: DeclareExportDeclaration | DeclaredPredicate | FunctionTypeAnnotation;
+ GenericTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ Identifier: ArrayExpression | ArrayPattern | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | BreakStatement | CallExpression | CatchClause | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassImplements | ClassMethod | ClassPrivateMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | ContinueStatement | DeclareClass | DeclareFunction | DeclareInterface | DeclareModule | DeclareOpaqueType | DeclareTypeAlias | DeclareVariable | Decorator | DoWhileStatement | EnumBooleanMember | EnumDeclaration | EnumDefaultedMember | EnumNumberMember | EnumStringMember | ExportDefaultDeclaration | ExportDefaultSpecifier | ExportNamespaceSpecifier | ExportSpecifier | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | FunctionDeclaration | FunctionExpression | FunctionTypeParam | GenericTypeAnnotation | IfStatement | ImportAttribute | ImportDefaultSpecifier | ImportExpression | ImportNamespaceSpecifier | ImportSpecifier | InterfaceDeclaration | InterfaceExtends | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LabeledStatement | LogicalExpression | MemberExpression | MetaProperty | NewExpression | ObjectMethod | ObjectProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | OpaqueType | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | Placeholder | PrivateName | QualifiedTypeIdentifier | RestElement | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSCallSignatureDeclaration | TSConstructSignatureDeclaration | TSConstructorType | TSDeclareFunction | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSExpressionWithTypeArguments | TSFunctionType | TSImportEqualsDeclaration | TSImportType | TSIndexSignature | TSInstantiationExpression | TSInterfaceDeclaration | TSMethodSignature | TSModuleDeclaration | TSNamedTupleMember | TSNamespaceExportDeclaration | TSNonNullExpression | TSParameterProperty | TSPropertySignature | TSQualifiedName | TSSatisfiesExpression | TSTypeAliasDeclaration | TSTypeAssertion | TSTypePredicate | TSTypeQuery | TSTypeReference | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeAlias | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ IfStatement: BlockStatement | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ Import: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ ImportAttribute: DeclareExportAllDeclaration | DeclareExportDeclaration | ExportAllDeclaration | ExportNamedDeclaration | ImportDeclaration;
+ ImportDeclaration: BlockStatement | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ ImportDefaultSpecifier: ImportDeclaration;
+ ImportExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ ImportNamespaceSpecifier: ImportDeclaration;
+ ImportSpecifier: ImportDeclaration;
+ IndexedAccessType: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ InferredPredicate: ArrowFunctionExpression | DeclareExportDeclaration | DeclaredPredicate | FunctionDeclaration | FunctionExpression;
+ InterfaceDeclaration: BlockStatement | DeclareExportDeclaration | DeclaredPredicate | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ InterfaceExtends: ClassDeclaration | ClassExpression | DeclareClass | DeclareExportDeclaration | DeclareInterface | DeclaredPredicate | InterfaceDeclaration | InterfaceTypeAnnotation;
+ InterfaceTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ InterpreterDirective: Program;
+ IntersectionTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ JSXAttribute: JSXOpeningElement;
+ JSXClosingElement: JSXElement;
+ JSXClosingFragment: JSXFragment;
+ JSXElement: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXAttribute | JSXElement | JSXExpressionContainer | JSXFragment | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ JSXEmptyExpression: JSXExpressionContainer;
+ JSXExpressionContainer: JSXAttribute | JSXElement | JSXFragment;
+ JSXFragment: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXAttribute | JSXElement | JSXExpressionContainer | JSXFragment | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ JSXIdentifier: JSXAttribute | JSXClosingElement | JSXMemberExpression | JSXNamespacedName | JSXOpeningElement;
+ JSXMemberExpression: JSXClosingElement | JSXMemberExpression | JSXOpeningElement;
+ JSXNamespacedName: JSXAttribute | JSXClosingElement | JSXOpeningElement;
+ JSXOpeningElement: JSXElement;
+ JSXOpeningFragment: JSXFragment;
+ JSXSpreadAttribute: JSXOpeningElement;
+ JSXSpreadChild: JSXElement | JSXFragment;
+ JSXText: JSXElement | JSXFragment;
+ LabeledStatement: BlockStatement | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ LogicalExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ MemberExpression: ArrayExpression | ArrayPattern | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | RestElement | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ MetaProperty: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ MixedTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ ModuleExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ NewExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ Noop: ArrayPattern | ArrowFunctionExpression | AssignmentPattern | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateMethod | ClassPrivateProperty | ClassProperty | FunctionDeclaration | FunctionExpression | Identifier | ObjectMethod | ObjectPattern | Placeholder | RestElement | TSDeclareFunction | TSDeclareMethod;
+ NullLiteral: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ NullLiteralTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ NullableTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ NumberLiteral: null;
+ NumberLiteralTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ NumberTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ NumericLiteral: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | EnumNumberMember | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSLiteralType | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ ObjectExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSImportType | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ ObjectMethod: ObjectExpression;
+ ObjectPattern: ArrayPattern | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | CatchClause | ClassMethod | ClassPrivateMethod | ForInStatement | ForOfStatement | FunctionDeclaration | FunctionExpression | ObjectMethod | ObjectProperty | RestElement | TSCallSignatureDeclaration | TSConstructSignatureDeclaration | TSConstructorType | TSDeclareFunction | TSDeclareMethod | TSFunctionType | TSMethodSignature | VariableDeclarator;
+ ObjectProperty: ObjectExpression | ObjectPattern | RecordExpression;
+ ObjectTypeAnnotation: ArrayTypeAnnotation | DeclareClass | DeclareExportDeclaration | DeclareInterface | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | InterfaceDeclaration | InterfaceTypeAnnotation | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ ObjectTypeCallProperty: DeclareExportDeclaration | DeclaredPredicate | ObjectTypeAnnotation;
+ ObjectTypeIndexer: DeclareExportDeclaration | DeclaredPredicate | ObjectTypeAnnotation;
+ ObjectTypeInternalSlot: DeclareExportDeclaration | DeclaredPredicate | ObjectTypeAnnotation;
+ ObjectTypeProperty: DeclareExportDeclaration | DeclaredPredicate | ObjectTypeAnnotation;
+ ObjectTypeSpreadProperty: DeclareExportDeclaration | DeclaredPredicate | ObjectTypeAnnotation;
+ OpaqueType: BlockStatement | DeclareExportDeclaration | DeclaredPredicate | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ OptionalCallExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ OptionalIndexedAccessType: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ OptionalMemberExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ ParenthesizedExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ PipelineBareFunction: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ PipelinePrimaryTopicReference: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ PipelineTopicExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ Placeholder: Node;
+ PrivateName: BinaryExpression | ClassAccessorProperty | ClassPrivateMethod | ClassPrivateProperty | MemberExpression | ObjectProperty;
+ Program: File | ModuleExpression;
+ QualifiedTypeIdentifier: DeclareExportDeclaration | DeclaredPredicate | GenericTypeAnnotation | InterfaceExtends | QualifiedTypeIdentifier;
+ RecordExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ RegExpLiteral: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ RegexLiteral: null;
+ RestElement: ArrayPattern | ArrowFunctionExpression | AssignmentExpression | ClassMethod | ClassPrivateMethod | ForInStatement | ForOfStatement | FunctionDeclaration | FunctionExpression | ObjectMethod | ObjectPattern | ObjectProperty | RestElement | TSCallSignatureDeclaration | TSConstructSignatureDeclaration | TSConstructorType | TSDeclareFunction | TSDeclareMethod | TSFunctionType | TSMethodSignature | VariableDeclarator;
+ RestProperty: null;
+ ReturnStatement: BlockStatement | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ SequenceExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ SpreadElement: ArrayExpression | CallExpression | NewExpression | ObjectExpression | OptionalCallExpression | RecordExpression | TupleExpression;
+ SpreadProperty: null;
+ StaticBlock: ClassBody;
+ StringLiteral: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | DeclareExportAllDeclaration | DeclareExportDeclaration | DeclareModule | Decorator | DoWhileStatement | EnumStringMember | ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ExportSpecifier | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportAttribute | ImportDeclaration | ImportExpression | ImportSpecifier | JSXAttribute | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | ObjectTypeProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSExternalModuleReference | TSImportType | TSInstantiationExpression | TSLiteralType | TSMethodSignature | TSModuleDeclaration | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ StringLiteralTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ StringTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ Super: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ SwitchCase: SwitchStatement;
+ SwitchStatement: BlockStatement | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ SymbolTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ TSAnyKeyword: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSArrayType: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSAsExpression: ArrayExpression | ArrayPattern | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | RestElement | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ TSBigIntKeyword: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSBooleanKeyword: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSCallSignatureDeclaration: TSInterfaceBody | TSTypeLiteral;
+ TSConditionalType: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSConstructSignatureDeclaration: TSInterfaceBody | TSTypeLiteral;
+ TSConstructorType: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSDeclareFunction: BlockStatement | DoWhileStatement | ExportDefaultDeclaration | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ TSDeclareMethod: ClassBody;
+ TSEnumBody: TSEnumDeclaration;
+ TSEnumDeclaration: BlockStatement | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ TSEnumMember: TSEnumBody | TSEnumDeclaration;
+ TSExportAssignment: BlockStatement | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ TSExpressionWithTypeArguments: ClassDeclaration | ClassExpression | TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSInterfaceDeclaration | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSExternalModuleReference: TSImportEqualsDeclaration;
+ TSFunctionType: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSImportEqualsDeclaration: BlockStatement | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ TSImportType: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSTypeQuery | TSUnionType | TemplateLiteral;
+ TSIndexSignature: ClassBody | TSInterfaceBody | TSTypeLiteral;
+ TSIndexedAccessType: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSInferType: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSInstantiationExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ TSInterfaceBody: TSInterfaceDeclaration;
+ TSInterfaceDeclaration: BlockStatement | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ TSIntersectionType: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSIntrinsicKeyword: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSLiteralType: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSMappedType: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSMethodSignature: TSInterfaceBody | TSTypeLiteral;
+ TSModuleBlock: TSModuleDeclaration;
+ TSModuleDeclaration: BlockStatement | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | TSModuleDeclaration | WhileStatement | WithStatement;
+ TSNamedTupleMember: TSTupleType;
+ TSNamespaceExportDeclaration: BlockStatement | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ TSNeverKeyword: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSNonNullExpression: ArrayExpression | ArrayPattern | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | RestElement | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ TSNullKeyword: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSNumberKeyword: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSObjectKeyword: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSOptionalType: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSParameterProperty: AssignmentExpression | ClassMethod | ClassPrivateMethod | ForInStatement | ForOfStatement | TSDeclareMethod | VariableDeclarator;
+ TSParenthesizedType: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSPropertySignature: TSInterfaceBody | TSTypeLiteral;
+ TSQualifiedName: TSExpressionWithTypeArguments | TSImportEqualsDeclaration | TSImportType | TSQualifiedName | TSTypeQuery | TSTypeReference;
+ TSRestType: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSSatisfiesExpression: ArrayExpression | ArrayPattern | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | RestElement | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ TSStringKeyword: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSSymbolKeyword: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSTemplateLiteralType: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSThisType: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSTypePredicate | TSUnionType | TemplateLiteral;
+ TSTupleType: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSTypeAliasDeclaration: BlockStatement | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ TSTypeAnnotation: ArrayPattern | ArrowFunctionExpression | AssignmentPattern | ClassAccessorProperty | ClassMethod | ClassPrivateMethod | ClassPrivateProperty | ClassProperty | FunctionDeclaration | FunctionExpression | Identifier | ObjectMethod | ObjectPattern | Placeholder | RestElement | TSCallSignatureDeclaration | TSConstructSignatureDeclaration | TSConstructorType | TSDeclareFunction | TSDeclareMethod | TSFunctionType | TSIndexSignature | TSMethodSignature | TSPropertySignature | TSTypePredicate;
+ TSTypeAssertion: ArrayExpression | ArrayPattern | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | RestElement | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ TSTypeLiteral: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSTypeOperator: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSTypeParameter: TSInferType | TSMappedType | TSTypeParameterDeclaration;
+ TSTypeParameterDeclaration: ArrowFunctionExpression | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateMethod | FunctionDeclaration | FunctionExpression | ObjectMethod | TSCallSignatureDeclaration | TSConstructSignatureDeclaration | TSConstructorType | TSDeclareFunction | TSDeclareMethod | TSFunctionType | TSInterfaceDeclaration | TSMethodSignature | TSTypeAliasDeclaration;
+ TSTypeParameterInstantiation: CallExpression | ClassDeclaration | ClassExpression | JSXOpeningElement | NewExpression | OptionalCallExpression | TSExpressionWithTypeArguments | TSImportType | TSInstantiationExpression | TSTypeQuery | TSTypeReference | TaggedTemplateExpression;
+ TSTypePredicate: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSTypeQuery: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSTypeReference: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSUndefinedKeyword: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSUnionType: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSUnknownKeyword: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TSVoidKeyword: TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTemplateLiteralType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
+ TaggedTemplateExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ TemplateElement: TSTemplateLiteralType | TemplateLiteral;
+ TemplateLiteral: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSLiteralType | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ ThisExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ ThisTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ ThrowStatement: BlockStatement | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ TopicReference: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ TryStatement: BlockStatement | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ TupleExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ TupleTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ TypeAlias: BlockStatement | DeclareExportDeclaration | DeclaredPredicate | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ TypeAnnotation: ArrayPattern | ArrowFunctionExpression | AssignmentPattern | ClassAccessorProperty | ClassMethod | ClassPrivateMethod | ClassPrivateProperty | ClassProperty | DeclareExportDeclaration | DeclareModuleExports | DeclaredPredicate | FunctionDeclaration | FunctionExpression | Identifier | ObjectMethod | ObjectPattern | Placeholder | RestElement | TypeCastExpression | TypeParameter;
+ TypeCastExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | DeclareExportDeclaration | DeclaredPredicate | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ TypeParameter: DeclareExportDeclaration | DeclaredPredicate | TypeParameterDeclaration;
+ TypeParameterDeclaration: ArrowFunctionExpression | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateMethod | DeclareClass | DeclareExportDeclaration | DeclareInterface | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionDeclaration | FunctionExpression | FunctionTypeAnnotation | InterfaceDeclaration | ObjectMethod | OpaqueType | TypeAlias;
+ TypeParameterInstantiation: CallExpression | ClassDeclaration | ClassExpression | ClassImplements | DeclareExportDeclaration | DeclaredPredicate | GenericTypeAnnotation | InterfaceExtends | JSXOpeningElement | NewExpression | OptionalCallExpression | TaggedTemplateExpression;
+ TypeofTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ UnaryExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSLiteralType | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ UnionTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ UpdateExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+ V8IntrinsicIdentifier: CallExpression | NewExpression;
+ VariableDeclaration: BlockStatement | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ VariableDeclarator: VariableDeclaration;
+ Variance: ClassAccessorProperty | ClassPrivateProperty | ClassProperty | DeclareExportDeclaration | DeclaredPredicate | ObjectTypeIndexer | ObjectTypeProperty | TypeParameter;
+ VoidPattern: ArrayPattern | ArrowFunctionExpression | ClassMethod | ClassPrivateMethod | FunctionDeclaration | FunctionExpression | ObjectMethod | ObjectProperty | TSDeclareFunction | TSDeclareMethod | VariableDeclarator;
+ VoidTypeAnnotation: ArrayTypeAnnotation | DeclareExportDeclaration | DeclareOpaqueType | DeclareTypeAlias | DeclaredPredicate | FunctionTypeAnnotation | FunctionTypeParam | IndexedAccessType | IntersectionTypeAnnotation | NullableTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalIndexedAccessType | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeParameter | TypeParameterInstantiation | TypeofTypeAnnotation | UnionTypeAnnotation;
+ WhileStatement: BlockStatement | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ WithStatement: BlockStatement | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
+ YieldExpression: ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BinaryExpression | BindExpression | CallExpression | ClassAccessorProperty | ClassDeclaration | ClassExpression | ClassMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | Decorator | DoWhileStatement | ExportDefaultDeclaration | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | ImportExpression | JSXExpressionContainer | JSXSpreadAttribute | JSXSpreadChild | LogicalExpression | MemberExpression | NewExpression | ObjectMethod | ObjectProperty | OptionalCallExpression | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelineTopicExpression | ReturnStatement | SequenceExpression | SpreadElement | SwitchCase | SwitchStatement | TSAsExpression | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSInstantiationExpression | TSMethodSignature | TSNonNullExpression | TSPropertySignature | TSSatisfiesExpression | TSTypeAssertion | TaggedTemplateExpression | TemplateLiteral | ThrowStatement | TupleExpression | TypeCastExpression | UnaryExpression | UpdateExpression | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
+}
+
+/** @deprecated */ declare function bigIntLiteral(value: string): BigIntLiteral;
+declare function bigIntLiteral(value: bigint): BigIntLiteral;
+declare function arrayExpression(elements?: (null | Expression | SpreadElement)[]): ArrayExpression;
+declare function assignmentExpression(operator: string, left: LVal | OptionalMemberExpression, right: Expression): AssignmentExpression;
+declare function binaryExpression(operator: "+" | "-" | "/" | "%" | "*" | "**" | "&" | "|" | ">>" | ">>>" | "<<" | "^" | "==" | "===" | "!=" | "!==" | "in" | "instanceof" | ">" | "<" | ">=" | "<=" | "|>", left: Expression | PrivateName, right: Expression): BinaryExpression;
+declare function interpreterDirective(value: string): InterpreterDirective;
+declare function directive(value: DirectiveLiteral): Directive;
+declare function directiveLiteral(value: string): DirectiveLiteral;
+declare function blockStatement(body: Statement[], directives?: Directive[]): BlockStatement;
+declare function breakStatement(label?: Identifier | null): BreakStatement;
+declare function callExpression(callee: Expression | Super | V8IntrinsicIdentifier, _arguments: (Expression | SpreadElement | ArgumentPlaceholder)[]): CallExpression;
+declare function catchClause(param: Identifier | ArrayPattern | ObjectPattern | null | undefined, body: BlockStatement): CatchClause;
+declare function conditionalExpression(test: Expression, consequent: Expression, alternate: Expression): ConditionalExpression;
+declare function continueStatement(label?: Identifier | null): ContinueStatement;
+declare function debuggerStatement(): DebuggerStatement;
+declare function doWhileStatement(test: Expression, body: Statement): DoWhileStatement;
+declare function emptyStatement(): EmptyStatement;
+declare function expressionStatement(expression: Expression): ExpressionStatement;
+declare function file(program: Program, comments?: (CommentBlock | CommentLine)[] | null, tokens?: any[] | null): File;
+declare function forInStatement(left: VariableDeclaration | LVal, right: Expression, body: Statement): ForInStatement;
+declare function forStatement(init: VariableDeclaration | Expression | null | undefined, test: Expression | null | undefined, update: Expression | null | undefined, body: Statement): ForStatement;
+declare function functionDeclaration(id: Identifier | null | undefined, params: FunctionParameter[], body: BlockStatement, generator?: boolean, async?: boolean): FunctionDeclaration;
+declare function functionExpression(id: Identifier | null | undefined, params: FunctionParameter[], body: BlockStatement, generator?: boolean, async?: boolean): FunctionExpression;
+declare function identifier(name: string): Identifier;
+declare function ifStatement(test: Expression, consequent: Statement, alternate?: Statement | null): IfStatement;
+declare function labeledStatement(label: Identifier, body: Statement): LabeledStatement;
+declare function stringLiteral(value: string): StringLiteral;
+declare function numericLiteral(value: number): NumericLiteral;
+declare function nullLiteral(): NullLiteral;
+declare function booleanLiteral(value: boolean): BooleanLiteral;
+declare function regExpLiteral(pattern: string, flags?: string): RegExpLiteral;
+declare function logicalExpression(operator: "||" | "&&" | "??", left: Expression, right: Expression): LogicalExpression;
+declare function memberExpression(object: Expression | Super, property: Expression | Identifier | PrivateName, computed?: boolean, optional?: boolean | null): MemberExpression;
+declare function newExpression(callee: Expression | Super | V8IntrinsicIdentifier, _arguments: (Expression | SpreadElement | ArgumentPlaceholder)[]): NewExpression;
+declare function program(body: Statement[], directives?: Directive[], sourceType?: "script" | "module", interpreter?: InterpreterDirective | null): Program;
+declare function objectExpression(properties: (ObjectMethod | ObjectProperty | SpreadElement)[]): ObjectExpression;
+declare function objectMethod(kind: "method" | "get" | "set" | undefined, key: Expression | Identifier | StringLiteral | NumericLiteral | BigIntLiteral, params: FunctionParameter[], body: BlockStatement, computed?: boolean, generator?: boolean, async?: boolean): ObjectMethod;
+declare function objectProperty(key: Expression | Identifier | StringLiteral | NumericLiteral | BigIntLiteral | DecimalLiteral | PrivateName, value: Expression | PatternLike, computed?: boolean, shorthand?: boolean, decorators?: Decorator[] | null): ObjectProperty;
+declare function restElement(argument: Identifier | ArrayPattern | ObjectPattern | MemberExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression | RestElement | AssignmentPattern): RestElement;
+declare function returnStatement(argument?: Expression | null): ReturnStatement;
+declare function sequenceExpression(expressions: Expression[]): SequenceExpression;
+declare function parenthesizedExpression(expression: Expression): ParenthesizedExpression;
+declare function switchCase(test: Expression | null | undefined, consequent: Statement[]): SwitchCase;
+declare function switchStatement(discriminant: Expression, cases: SwitchCase[]): SwitchStatement;
+declare function thisExpression(): ThisExpression;
+declare function throwStatement(argument: Expression): ThrowStatement;
+declare function tryStatement(block: BlockStatement, handler?: CatchClause | null, finalizer?: BlockStatement | null): TryStatement;
+declare function unaryExpression(operator: "void" | "throw" | "delete" | "!" | "+" | "-" | "~" | "typeof", argument: Expression, prefix?: boolean): UnaryExpression;
+declare function updateExpression(operator: "++" | "--", argument: Expression, prefix?: boolean): UpdateExpression;
+declare function variableDeclaration(kind: "var" | "let" | "const" | "using" | "await using", declarations: VariableDeclarator[]): VariableDeclaration;
+declare function variableDeclarator(id: LVal | VoidPattern, init?: Expression | null): VariableDeclarator;
+declare function whileStatement(test: Expression, body: Statement): WhileStatement;
+declare function withStatement(object: Expression, body: Statement): WithStatement;
+declare function assignmentPattern(left: Identifier | ObjectPattern | ArrayPattern | MemberExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression, right: Expression): AssignmentPattern;
+declare function arrayPattern(elements: (null | PatternLike)[]): ArrayPattern;
+declare function arrowFunctionExpression(params: FunctionParameter[], body: BlockStatement | Expression, async?: boolean): ArrowFunctionExpression;
+declare function classBody(body: (ClassMethod | ClassPrivateMethod | ClassProperty | ClassPrivateProperty | ClassAccessorProperty | TSDeclareMethod | TSIndexSignature | StaticBlock)[]): ClassBody;
+declare function classExpression(id: Identifier | null | undefined, superClass: Expression | null | undefined, body: ClassBody, decorators?: Decorator[] | null): ClassExpression;
+declare function classDeclaration(id: Identifier | null | undefined, superClass: Expression | null | undefined, body: ClassBody, decorators?: Decorator[] | null): ClassDeclaration;
+declare function exportAllDeclaration(source: StringLiteral, attributes?: ImportAttribute[] | null): ExportAllDeclaration;
+declare function exportDefaultDeclaration(declaration: TSDeclareFunction | FunctionDeclaration | ClassDeclaration | Expression): ExportDefaultDeclaration;
+declare function exportNamedDeclaration(declaration?: Declaration | null, specifiers?: (ExportSpecifier | ExportDefaultSpecifier | ExportNamespaceSpecifier)[], source?: StringLiteral | null, attributes?: ImportAttribute[] | null): ExportNamedDeclaration;
+declare function exportSpecifier(local: Identifier, exported: Identifier | StringLiteral): ExportSpecifier;
+declare function forOfStatement(left: VariableDeclaration | LVal, right: Expression, body: Statement, _await?: boolean): ForOfStatement;
+declare function importDeclaration(specifiers: (ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier)[], source: StringLiteral, attributes?: ImportAttribute[] | null): ImportDeclaration;
+declare function importDefaultSpecifier(local: Identifier): ImportDefaultSpecifier;
+declare function importNamespaceSpecifier(local: Identifier): ImportNamespaceSpecifier;
+declare function importSpecifier(local: Identifier, imported: Identifier | StringLiteral): ImportSpecifier;
+declare function importExpression(source: Expression, options?: Expression | null): ImportExpression;
+declare function metaProperty(meta: Identifier, property: Identifier): MetaProperty;
+declare function classMethod(kind: "get" | "set" | "method" | "constructor" | undefined, key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression, params: (FunctionParameter | TSParameterProperty)[], body: BlockStatement, computed?: boolean, _static?: boolean, generator?: boolean, async?: boolean): ClassMethod;
+declare function objectPattern(properties: (RestElement | ObjectProperty)[]): ObjectPattern;
+declare function spreadElement(argument: Expression): SpreadElement;
+declare function _super(): Super;
+
+declare function taggedTemplateExpression(tag: Expression, quasi: TemplateLiteral): TaggedTemplateExpression;
+declare function templateElement(value: {
+ raw: string;
+ cooked?: string;
+}, tail?: boolean): TemplateElement;
+declare function templateLiteral(quasis: TemplateElement[], expressions: (Expression | TSType)[]): TemplateLiteral;
+declare function yieldExpression(argument?: Expression | null, delegate?: boolean): YieldExpression;
+declare function awaitExpression(argument: Expression): AwaitExpression;
+declare function _import(): Import;
+
+declare function exportNamespaceSpecifier(exported: Identifier): ExportNamespaceSpecifier;
+declare function optionalMemberExpression(object: Expression, property: Expression | Identifier, computed: boolean | undefined, optional: boolean): OptionalMemberExpression;
+declare function optionalCallExpression(callee: Expression, _arguments: (Expression | SpreadElement | ArgumentPlaceholder)[], optional: boolean): OptionalCallExpression;
+declare function classProperty(key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression, value?: Expression | null, typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null, decorators?: Decorator[] | null, computed?: boolean, _static?: boolean): ClassProperty;
+declare function classAccessorProperty(key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression | PrivateName, value?: Expression | null, typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null, decorators?: Decorator[] | null, computed?: boolean, _static?: boolean): ClassAccessorProperty;
+declare function classPrivateProperty(key: PrivateName, value?: Expression | null, decorators?: Decorator[] | null, _static?: boolean): ClassPrivateProperty;
+declare function classPrivateMethod(kind: "get" | "set" | "method" | undefined, key: PrivateName, params: (FunctionParameter | TSParameterProperty)[], body: BlockStatement, _static?: boolean): ClassPrivateMethod;
+declare function privateName(id: Identifier): PrivateName;
+declare function staticBlock(body: Statement[]): StaticBlock;
+declare function importAttribute(key: Identifier | StringLiteral, value: StringLiteral): ImportAttribute;
+declare function anyTypeAnnotation(): AnyTypeAnnotation;
+declare function arrayTypeAnnotation(elementType: FlowType): ArrayTypeAnnotation;
+declare function booleanTypeAnnotation(): BooleanTypeAnnotation;
+declare function booleanLiteralTypeAnnotation(value: boolean): BooleanLiteralTypeAnnotation;
+declare function nullLiteralTypeAnnotation(): NullLiteralTypeAnnotation;
+declare function classImplements(id: Identifier, typeParameters?: TypeParameterInstantiation | null): ClassImplements;
+declare function declareClass(id: Identifier, typeParameters: TypeParameterDeclaration | null | undefined, _extends: InterfaceExtends[] | null | undefined, body: ObjectTypeAnnotation): DeclareClass;
+declare function declareFunction(id: Identifier): DeclareFunction;
+declare function declareInterface(id: Identifier, typeParameters: TypeParameterDeclaration | null | undefined, _extends: InterfaceExtends[] | null | undefined, body: ObjectTypeAnnotation): DeclareInterface;
+declare function declareModule(id: Identifier | StringLiteral, body: BlockStatement, kind?: "CommonJS" | "ES" | null): DeclareModule;
+declare function declareModuleExports(typeAnnotation: TypeAnnotation): DeclareModuleExports;
+declare function declareTypeAlias(id: Identifier, typeParameters: TypeParameterDeclaration | null | undefined, right: FlowType): DeclareTypeAlias;
+declare function declareOpaqueType(id: Identifier, typeParameters?: TypeParameterDeclaration | null, supertype?: FlowType | null): DeclareOpaqueType;
+declare function declareVariable(id: Identifier): DeclareVariable;
+declare function declareExportDeclaration(declaration?: Flow | null, specifiers?: (ExportSpecifier | ExportNamespaceSpecifier)[] | null, source?: StringLiteral | null, attributes?: ImportAttribute[] | null): DeclareExportDeclaration;
+declare function declareExportAllDeclaration(source: StringLiteral, attributes?: ImportAttribute[] | null): DeclareExportAllDeclaration;
+declare function declaredPredicate(value: Flow): DeclaredPredicate;
+declare function existsTypeAnnotation(): ExistsTypeAnnotation;
+declare function functionTypeAnnotation(typeParameters: TypeParameterDeclaration | null | undefined, params: FunctionTypeParam[], rest: FunctionTypeParam | null | undefined, returnType: FlowType): FunctionTypeAnnotation;
+declare function functionTypeParam(name: Identifier | null | undefined, typeAnnotation: FlowType): FunctionTypeParam;
+declare function genericTypeAnnotation(id: Identifier | QualifiedTypeIdentifier, typeParameters?: TypeParameterInstantiation | null): GenericTypeAnnotation;
+declare function inferredPredicate(): InferredPredicate;
+declare function interfaceExtends(id: Identifier | QualifiedTypeIdentifier, typeParameters?: TypeParameterInstantiation | null): InterfaceExtends;
+declare function interfaceDeclaration(id: Identifier, typeParameters: TypeParameterDeclaration | null | undefined, _extends: InterfaceExtends[] | null | undefined, body: ObjectTypeAnnotation): InterfaceDeclaration;
+declare function interfaceTypeAnnotation(_extends: InterfaceExtends[] | null | undefined, body: ObjectTypeAnnotation): InterfaceTypeAnnotation;
+declare function intersectionTypeAnnotation(types: FlowType[]): IntersectionTypeAnnotation;
+declare function mixedTypeAnnotation(): MixedTypeAnnotation;
+declare function emptyTypeAnnotation(): EmptyTypeAnnotation;
+declare function nullableTypeAnnotation(typeAnnotation: FlowType): NullableTypeAnnotation;
+declare function numberLiteralTypeAnnotation(value: number): NumberLiteralTypeAnnotation;
+declare function numberTypeAnnotation(): NumberTypeAnnotation;
+declare function objectTypeAnnotation(properties: (ObjectTypeProperty | ObjectTypeSpreadProperty)[], indexers?: ObjectTypeIndexer[], callProperties?: ObjectTypeCallProperty[], internalSlots?: ObjectTypeInternalSlot[], exact?: boolean): ObjectTypeAnnotation;
+declare function objectTypeInternalSlot(id: Identifier, value: FlowType, optional: boolean, _static: boolean, method: boolean): ObjectTypeInternalSlot;
+declare function objectTypeCallProperty(value: FlowType): ObjectTypeCallProperty;
+declare function objectTypeIndexer(id: Identifier | null | undefined, key: FlowType, value: FlowType, variance?: Variance | null): ObjectTypeIndexer;
+declare function objectTypeProperty(key: Identifier | StringLiteral, value: FlowType, variance?: Variance | null): ObjectTypeProperty;
+declare function objectTypeSpreadProperty(argument: FlowType): ObjectTypeSpreadProperty;
+declare function opaqueType(id: Identifier, typeParameters: TypeParameterDeclaration | null | undefined, supertype: FlowType | null | undefined, impltype: FlowType): OpaqueType;
+declare function qualifiedTypeIdentifier(id: Identifier, qualification: Identifier | QualifiedTypeIdentifier): QualifiedTypeIdentifier;
+declare function stringLiteralTypeAnnotation(value: string): StringLiteralTypeAnnotation;
+declare function stringTypeAnnotation(): StringTypeAnnotation;
+declare function symbolTypeAnnotation(): SymbolTypeAnnotation;
+declare function thisTypeAnnotation(): ThisTypeAnnotation;
+declare function tupleTypeAnnotation(types: FlowType[]): TupleTypeAnnotation;
+declare function typeofTypeAnnotation(argument: FlowType): TypeofTypeAnnotation;
+declare function typeAlias(id: Identifier, typeParameters: TypeParameterDeclaration | null | undefined, right: FlowType): TypeAlias;
+declare function typeAnnotation(typeAnnotation: FlowType): TypeAnnotation;
+declare function typeCastExpression(expression: Expression, typeAnnotation: TypeAnnotation): TypeCastExpression;
+declare function typeParameter(bound?: TypeAnnotation | null, _default?: FlowType | null, variance?: Variance | null): TypeParameter;
+declare function typeParameterDeclaration(params: TypeParameter[]): TypeParameterDeclaration;
+declare function typeParameterInstantiation(params: FlowType[]): TypeParameterInstantiation;
+declare function unionTypeAnnotation(types: FlowType[]): UnionTypeAnnotation;
+declare function variance(kind: "minus" | "plus"): Variance;
+declare function voidTypeAnnotation(): VoidTypeAnnotation;
+declare function enumDeclaration(id: Identifier, body: EnumBooleanBody | EnumNumberBody | EnumStringBody | EnumSymbolBody): EnumDeclaration;
+declare function enumBooleanBody(members: EnumBooleanMember[]): EnumBooleanBody;
+declare function enumNumberBody(members: EnumNumberMember[]): EnumNumberBody;
+declare function enumStringBody(members: (EnumStringMember | EnumDefaultedMember)[]): EnumStringBody;
+declare function enumSymbolBody(members: EnumDefaultedMember[]): EnumSymbolBody;
+declare function enumBooleanMember(id: Identifier): EnumBooleanMember;
+declare function enumNumberMember(id: Identifier, init: NumericLiteral): EnumNumberMember;
+declare function enumStringMember(id: Identifier, init: StringLiteral): EnumStringMember;
+declare function enumDefaultedMember(id: Identifier): EnumDefaultedMember;
+declare function indexedAccessType(objectType: FlowType, indexType: FlowType): IndexedAccessType;
+declare function optionalIndexedAccessType(objectType: FlowType, indexType: FlowType): OptionalIndexedAccessType;
+declare function jsxAttribute(name: JSXIdentifier | JSXNamespacedName, value?: JSXElement | JSXFragment | StringLiteral | JSXExpressionContainer | null): JSXAttribute;
+
+declare function jsxClosingElement(name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName): JSXClosingElement;
+
+declare function jsxElement(openingElement: JSXOpeningElement, closingElement: JSXClosingElement | null | undefined, children: (JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment)[], selfClosing?: boolean | null): JSXElement;
+
+declare function jsxEmptyExpression(): JSXEmptyExpression;
+
+declare function jsxExpressionContainer(expression: Expression | JSXEmptyExpression): JSXExpressionContainer;
+
+declare function jsxSpreadChild(expression: Expression): JSXSpreadChild;
+
+declare function jsxIdentifier(name: string): JSXIdentifier;
+
+declare function jsxMemberExpression(object: JSXMemberExpression | JSXIdentifier, property: JSXIdentifier): JSXMemberExpression;
+
+declare function jsxNamespacedName(namespace: JSXIdentifier, name: JSXIdentifier): JSXNamespacedName;
+
+declare function jsxOpeningElement(name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName, attributes: (JSXAttribute | JSXSpreadAttribute)[], selfClosing?: boolean): JSXOpeningElement;
+
+declare function jsxSpreadAttribute(argument: Expression): JSXSpreadAttribute;
+
+declare function jsxText(value: string): JSXText;
+
+declare function jsxFragment(openingFragment: JSXOpeningFragment, closingFragment: JSXClosingFragment, children: (JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment)[]): JSXFragment;
+
+declare function jsxOpeningFragment(): JSXOpeningFragment;
+
+declare function jsxClosingFragment(): JSXClosingFragment;
+
+declare function noop(): Noop;
+declare function placeholder(expectedNode: "Identifier" | "StringLiteral" | "Expression" | "Statement" | "Declaration" | "BlockStatement" | "ClassBody" | "Pattern", name: Identifier): Placeholder;
+declare function v8IntrinsicIdentifier(name: string): V8IntrinsicIdentifier;
+declare function argumentPlaceholder(): ArgumentPlaceholder;
+declare function bindExpression(object: Expression, callee: Expression): BindExpression;
+declare function decorator(expression: Expression): Decorator;
+declare function doExpression(body: BlockStatement, async?: boolean): DoExpression;
+declare function exportDefaultSpecifier(exported: Identifier): ExportDefaultSpecifier;
+declare function recordExpression(properties: (ObjectProperty | SpreadElement)[]): RecordExpression;
+declare function tupleExpression(elements?: (Expression | SpreadElement)[]): TupleExpression;
+declare function decimalLiteral(value: string): DecimalLiteral;
+declare function moduleExpression(body: Program): ModuleExpression;
+declare function topicReference(): TopicReference;
+declare function pipelineTopicExpression(expression: Expression): PipelineTopicExpression;
+declare function pipelineBareFunction(callee: Expression): PipelineBareFunction;
+declare function pipelinePrimaryTopicReference(): PipelinePrimaryTopicReference;
+declare function voidPattern(): VoidPattern;
+declare function tsParameterProperty(parameter: Identifier | AssignmentPattern): TSParameterProperty;
+
+declare function tsDeclareFunction(id: Identifier | null | undefined, typeParameters: TSTypeParameterDeclaration | Noop | null | undefined, params: FunctionParameter[], returnType?: TSTypeAnnotation | Noop | null): TSDeclareFunction;
+
+declare function tsDeclareMethod(decorators: Decorator[] | null | undefined, key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression, typeParameters: TSTypeParameterDeclaration | Noop | null | undefined, params: (FunctionParameter | TSParameterProperty)[], returnType?: TSTypeAnnotation | Noop | null): TSDeclareMethod;
+
+declare function tsQualifiedName(left: TSEntityName, right: Identifier): TSQualifiedName;
+
+declare function tsCallSignatureDeclaration(typeParameters: TSTypeParameterDeclaration | null | undefined, parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[], typeAnnotation?: TSTypeAnnotation | null): TSCallSignatureDeclaration;
+
+declare function tsConstructSignatureDeclaration(typeParameters: TSTypeParameterDeclaration | null | undefined, parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[], typeAnnotation?: TSTypeAnnotation | null): TSConstructSignatureDeclaration;
+
+declare function tsPropertySignature(key: Expression, typeAnnotation?: TSTypeAnnotation | null): TSPropertySignature;
+
+declare function tsMethodSignature(key: Expression, typeParameters: TSTypeParameterDeclaration | null | undefined, parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[], typeAnnotation?: TSTypeAnnotation | null): TSMethodSignature;
+
+declare function tsIndexSignature(parameters: Identifier[], typeAnnotation?: TSTypeAnnotation | null): TSIndexSignature;
+
+declare function tsAnyKeyword(): TSAnyKeyword;
+
+declare function tsBooleanKeyword(): TSBooleanKeyword;
+
+declare function tsBigIntKeyword(): TSBigIntKeyword;
+
+declare function tsIntrinsicKeyword(): TSIntrinsicKeyword;
+
+declare function tsNeverKeyword(): TSNeverKeyword;
+
+declare function tsNullKeyword(): TSNullKeyword;
+
+declare function tsNumberKeyword(): TSNumberKeyword;
+
+declare function tsObjectKeyword(): TSObjectKeyword;
+
+declare function tsStringKeyword(): TSStringKeyword;
+
+declare function tsSymbolKeyword(): TSSymbolKeyword;
+
+declare function tsUndefinedKeyword(): TSUndefinedKeyword;
+
+declare function tsUnknownKeyword(): TSUnknownKeyword;
+
+declare function tsVoidKeyword(): TSVoidKeyword;
+
+declare function tsThisType(): TSThisType;
+
+declare function tsFunctionType(typeParameters: TSTypeParameterDeclaration | null | undefined, parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[], typeAnnotation?: TSTypeAnnotation | null): TSFunctionType;
+
+declare function tsConstructorType(typeParameters: TSTypeParameterDeclaration | null | undefined, parameters: (ArrayPattern | Identifier | ObjectPattern | RestElement)[], typeAnnotation?: TSTypeAnnotation | null): TSConstructorType;
+
+declare function tsTypeReference(typeName: TSEntityName, typeParameters?: TSTypeParameterInstantiation | null): TSTypeReference;
+
+declare function tsTypePredicate(parameterName: Identifier | TSThisType, typeAnnotation?: TSTypeAnnotation | null, asserts?: boolean | null): TSTypePredicate;
+
+declare function tsTypeQuery(exprName: TSEntityName | TSImportType, typeParameters?: TSTypeParameterInstantiation | null): TSTypeQuery;
+
+declare function tsTypeLiteral(members: TSTypeElement[]): TSTypeLiteral;
+
+declare function tsArrayType(elementType: TSType): TSArrayType;
+
+declare function tsTupleType(elementTypes: (TSType | TSNamedTupleMember)[]): TSTupleType;
+
+declare function tsOptionalType(typeAnnotation: TSType): TSOptionalType;
+
+declare function tsRestType(typeAnnotation: TSType): TSRestType;
+
+declare function tsNamedTupleMember(label: Identifier, elementType: TSType, optional?: boolean): TSNamedTupleMember;
+
+declare function tsUnionType(types: TSType[]): TSUnionType;
+
+declare function tsIntersectionType(types: TSType[]): TSIntersectionType;
+
+declare function tsConditionalType(checkType: TSType, extendsType: TSType, trueType: TSType, falseType: TSType): TSConditionalType;
+
+declare function tsInferType(typeParameter: TSTypeParameter): TSInferType;
+
+declare function tsParenthesizedType(typeAnnotation: TSType): TSParenthesizedType;
+
+declare function tsTypeOperator(typeAnnotation: TSType, operator?: string): TSTypeOperator;
+
+declare function tsIndexedAccessType(objectType: TSType, indexType: TSType): TSIndexedAccessType;
+
+declare function tsMappedType(typeParameter: TSTypeParameter, typeAnnotation?: TSType | null, nameType?: TSType | null): TSMappedType;
+
+declare function tsTemplateLiteralType(quasis: TemplateElement[], types: TSType[]): TSTemplateLiteralType;
+
+declare function tsLiteralType(literal: NumericLiteral | StringLiteral | BooleanLiteral | BigIntLiteral | TemplateLiteral | UnaryExpression): TSLiteralType;
+
+declare function tsExpressionWithTypeArguments(expression: TSEntityName, typeParameters?: TSTypeParameterInstantiation | null): TSExpressionWithTypeArguments;
+
+declare function tsInterfaceDeclaration(id: Identifier, typeParameters: TSTypeParameterDeclaration | null | undefined, _extends: TSExpressionWithTypeArguments[] | null | undefined, body: TSInterfaceBody): TSInterfaceDeclaration;
+
+declare function tsInterfaceBody(body: TSTypeElement[]): TSInterfaceBody;
+
+declare function tsTypeAliasDeclaration(id: Identifier, typeParameters: TSTypeParameterDeclaration | null | undefined, typeAnnotation: TSType): TSTypeAliasDeclaration;
+
+declare function tsInstantiationExpression(expression: Expression, typeParameters?: TSTypeParameterInstantiation | null): TSInstantiationExpression;
+
+declare function tsAsExpression(expression: Expression, typeAnnotation: TSType): TSAsExpression;
+
+declare function tsSatisfiesExpression(expression: Expression, typeAnnotation: TSType): TSSatisfiesExpression;
+
+declare function tsTypeAssertion(typeAnnotation: TSType, expression: Expression): TSTypeAssertion;
+
+declare function tsEnumBody(members: TSEnumMember[]): TSEnumBody;
+
+declare function tsEnumDeclaration(id: Identifier, members: TSEnumMember[]): TSEnumDeclaration;
+
+declare function tsEnumMember(id: Identifier | StringLiteral, initializer?: Expression | null): TSEnumMember;
+
+declare function tsModuleDeclaration(id: Identifier | StringLiteral, body: TSModuleBlock | TSModuleDeclaration): TSModuleDeclaration;
+
+declare function tsModuleBlock(body: Statement[]): TSModuleBlock;
+
+declare function tsImportType(argument: StringLiteral, qualifier?: TSEntityName | null, typeParameters?: TSTypeParameterInstantiation | null): TSImportType;
+
+declare function tsImportEqualsDeclaration(id: Identifier, moduleReference: TSEntityName | TSExternalModuleReference): TSImportEqualsDeclaration;
+
+declare function tsExternalModuleReference(expression: StringLiteral): TSExternalModuleReference;
+
+declare function tsNonNullExpression(expression: Expression): TSNonNullExpression;
+
+declare function tsExportAssignment(expression: Expression): TSExportAssignment;
+
+declare function tsNamespaceExportDeclaration(id: Identifier): TSNamespaceExportDeclaration;
+
+declare function tsTypeAnnotation(typeAnnotation: TSType): TSTypeAnnotation;
+
+declare function tsTypeParameterInstantiation(params: TSType[]): TSTypeParameterInstantiation;
+
+declare function tsTypeParameterDeclaration(params: TSTypeParameter[]): TSTypeParameterDeclaration;
+
+declare function tsTypeParameter(constraint: TSType | null | undefined, _default: TSType | null | undefined, name: string): TSTypeParameter;
+
+/** @deprecated */
+declare function NumberLiteral(value: number): NumericLiteral;
+
+/** @deprecated */
+declare function RegexLiteral(pattern: string, flags?: string): RegExpLiteral;
+
+/** @deprecated */
+declare function RestProperty(argument: Identifier | ArrayPattern | ObjectPattern | MemberExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression | RestElement | AssignmentPattern): RestElement;
+
+/** @deprecated */
+declare function SpreadProperty(argument: Expression): SpreadElement;
+
+declare function buildUndefinedNode(): UnaryExpression;
+
+/**
+ * Create a clone of a `node` including only properties belonging to the node.
+ * If the second parameter is `false`, cloneNode performs a shallow clone.
+ * If the third parameter is true, the cloned nodes exclude location properties.
+ */
+declare function cloneNode<T extends Node>(node: T, deep?: boolean, withoutLoc?: boolean): T;
+
+/**
+ * Create a shallow clone of a `node`, including only
+ * properties belonging to the node.
+ * @deprecated Use t.cloneNode instead.
+ */
+declare function clone<T extends Node>(node: T): T;
+
+/**
+ * Create a deep clone of a `node` and all of it's child nodes
+ * including only properties belonging to the node.
+ * @deprecated Use t.cloneNode instead.
+ */
+declare function cloneDeep<T extends Node>(node: T): T;
+
+/**
+ * Create a deep clone of a `node` and all of it's child nodes
+ * including only properties belonging to the node.
+ * excluding `_private` and location properties.
+ */
+declare function cloneDeepWithoutLoc<T extends Node>(node: T): T;
+
+/**
+ * Create a shallow clone of a `node` excluding `_private` and location properties.
+ */
+declare function cloneWithoutLoc<T extends Node>(node: T): T;
+
+/**
+ * Add comment of certain type to a node.
+ */
+declare function addComment<T extends Node>(node: T, type: CommentTypeShorthand, content: string, line?: boolean): T;
+
+/**
+ * Add comments of certain type to a node.
+ */
+declare function addComments<T extends Node>(node: T, type: CommentTypeShorthand, comments: Comment[]): T;
+
+declare function inheritInnerComments(child: Node, parent: Node): void;
+
+declare function inheritLeadingComments(child: Node, parent: Node): void;
+
+/**
+ * Inherit all unique comments from `parent` node to `child` node.
+ */
+declare function inheritsComments<T extends Node>(child: T, parent: Node): T;
+
+declare function inheritTrailingComments(child: Node, parent: Node): void;
+
+/**
+ * Remove comment properties from a node.
+ */
+declare function removeComments<T extends Node>(node: T): T;
+
+declare const STANDARDIZED_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const EXPRESSION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const BINARY_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const SCOPABLE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const BLOCKPARENT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const BLOCK_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const STATEMENT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const TERMINATORLESS_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const COMPLETIONSTATEMENT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const CONDITIONAL_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const LOOP_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const WHILE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const EXPRESSIONWRAPPER_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const FOR_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const FORXSTATEMENT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const FUNCTION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const FUNCTIONPARENT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const PUREISH_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const DECLARATION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const FUNCTIONPARAMETER_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const PATTERNLIKE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const LVAL_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const TSENTITYNAME_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const LITERAL_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const IMMUTABLE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const USERWHITESPACABLE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const METHOD_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const OBJECTMEMBER_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const PROPERTY_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const UNARYLIKE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const PATTERN_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const CLASS_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const IMPORTOREXPORTDECLARATION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const EXPORTDECLARATION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const MODULESPECIFIER_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const ACCESSOR_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const PRIVATE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const FLOW_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const FLOWTYPE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const FLOWBASEANNOTATION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const FLOWDECLARATION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const FLOWPREDICATE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const ENUMBODY_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const ENUMMEMBER_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const JSX_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const MISCELLANEOUS_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const TYPESCRIPT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const TSTYPEELEMENT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const TSTYPE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const TSBASETYPE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+/**
+ * @deprecated migrate to IMPORTOREXPORTDECLARATION_TYPES.
+ */
+declare const MODULEDECLARATION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSTemplateLiteralType" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidPattern" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+
+declare const STATEMENT_OR_BLOCK_KEYS: string[];
+declare const FLATTENABLE_KEYS: string[];
+declare const FOR_INIT_KEYS: string[];
+declare const COMMENT_KEYS: readonly ["leadingComments", "trailingComments", "innerComments"];
+declare const LOGICAL_OPERATORS: string[];
+declare const UPDATE_OPERATORS: string[];
+declare const BOOLEAN_NUMBER_BINARY_OPERATORS: string[];
+declare const EQUALITY_BINARY_OPERATORS: string[];
+declare const COMPARISON_BINARY_OPERATORS: string[];
+declare const BOOLEAN_BINARY_OPERATORS: string[];
+declare const NUMBER_BINARY_OPERATORS: string[];
+declare const BINARY_OPERATORS: string[];
+declare const ASSIGNMENT_OPERATORS: string[];
+declare const BOOLEAN_UNARY_OPERATORS: string[];
+declare const NUMBER_UNARY_OPERATORS: string[];
+declare const STRING_UNARY_OPERATORS: string[];
+declare const UNARY_OPERATORS: string[];
+declare const INHERIT_KEYS: {
+ readonly optional: readonly ["typeAnnotation", "typeParameters", "returnType"];
+ readonly force: readonly ["start", "loc", "end"];
+};
+
+/**
+ * Ensure the `key` (defaults to "body") of a `node` is a block.
+ * Casting it to a block if it is not.
+ *
+ * Returns the BlockStatement
+ */
+declare function ensureBlock(node: Node, key?: string): BlockStatement;
+
+declare function toBindingIdentifierName(name: string): string;
+
+declare function toBlock(node: Statement | Expression, parent?: Node): BlockStatement;
+
+declare function toComputedKey(node: ObjectMember | ObjectProperty | ClassMethod | ClassProperty | ClassAccessorProperty | MemberExpression | OptionalMemberExpression, key?: Expression | PrivateName): PrivateName | Expression;
+
+declare const _default$3: {
+ (node: Function): FunctionExpression;
+ (node: Class): ClassExpression;
+ (node: ExpressionStatement | Expression | Class | Function): Expression;
+};
+//# sourceMappingURL=toExpression.d.ts.map
+
+declare function toIdentifier(input: string): string;
+
+declare function toKeyAlias(node: Method | Property, key?: Node): string;
+declare namespace toKeyAlias {
+ var uid: number;
+ var increment: () => number;
+}
+//# sourceMappingURL=toKeyAlias.d.ts.map
+
+declare const _default$2: {
+ (node: AssignmentExpression, ignore?: boolean): ExpressionStatement;
+ <T extends Statement>(node: T, ignore: false): T;
+ <T extends Statement>(node: T, ignore?: boolean): T | false;
+ (node: Class, ignore: false): ClassDeclaration;
+ (node: Class, ignore?: boolean): ClassDeclaration | false;
+ (node: Function, ignore: false): FunctionDeclaration;
+ (node: Function, ignore?: boolean): FunctionDeclaration | false;
+ (node: Node, ignore: false): Statement;
+ (node: Node, ignore?: boolean): Statement | false;
+};
+//# sourceMappingURL=toStatement.d.ts.map
+
+declare const _default$1: {
+ (value: undefined): Identifier;
+ (value: boolean): BooleanLiteral;
+ (value: null): NullLiteral;
+ (value: string): StringLiteral;
+ (value: number): NumericLiteral | BinaryExpression | UnaryExpression;
+ (value: bigint): BigIntLiteral;
+ (value: RegExp): RegExpLiteral;
+ (value: readonly unknown[]): ArrayExpression;
+ (value: object): ObjectExpression;
+ (value: unknown): Expression;
+};
+//# sourceMappingURL=valueToNode.d.ts.map
+
+declare const VISITOR_KEYS: Record<string, string[]>;
+declare const ALIAS_KEYS: Partial<Record<NodeTypesWithoutComment, string[]>>;
+declare const FLIPPED_ALIAS_KEYS: Record<string, NodeTypesWithoutComment[]>;
+declare const NODE_FIELDS: Record<string, FieldDefinitions>;
+declare const BUILDER_KEYS: Record<string, string[]>;
+declare const DEPRECATED_KEYS: Record<string, NodeTypesWithoutComment>;
+declare const NODE_PARENT_VALIDATIONS: Record<string, Validator>;
+declare function getType(val: any): "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" | "array" | "null";
+type NodeTypesWithoutComment = Node["type"] | keyof Aliases;
+type NodeTypes = NodeTypesWithoutComment | Comment["type"];
+type PrimitiveTypes = ReturnType<typeof getType>;
+type FieldDefinitions = Record<string, FieldOptions>;
+type ValidatorImpl = (node?: Node, key?: string | {
+ toString(): string;
+}, val?: any) => void;
+type ValidatorType = {
+ type: PrimitiveTypes;
+} & ValidatorImpl;
+type ValidatorEach = {
+ each: Validator;
+} & ValidatorImpl;
+type ValidatorChainOf = {
+ chainOf: readonly Validator[];
+} & ValidatorImpl;
+type ValidatorOneOf = {
+ oneOf: readonly any[];
+} & ValidatorImpl;
+type ValidatorOneOfNodeTypes = {
+ oneOfNodeTypes: readonly NodeTypes[];
+} & ValidatorImpl;
+type ValidatorOneOfNodeOrValueTypes = {
+ oneOfNodeOrValueTypes: readonly (NodeTypes | PrimitiveTypes)[];
+} & ValidatorImpl;
+type ValidatorShapeOf = {
+ shapeOf: Record<string, FieldOptions>;
+} & ValidatorImpl;
+type Validator = ValidatorType | ValidatorEach | ValidatorChainOf | ValidatorOneOf | ValidatorOneOfNodeTypes | ValidatorOneOfNodeOrValueTypes | ValidatorShapeOf | ValidatorImpl;
+type FieldOptions = {
+ default?: string | number | boolean | [];
+ optional?: boolean;
+ deprecated?: boolean;
+ validate?: Validator;
+};
+
+declare const PLACEHOLDERS: readonly ["Identifier", "StringLiteral", "Expression", "Statement", "Declaration", "BlockStatement", "ClassBody", "Pattern"];
+declare const PLACEHOLDERS_ALIAS: Record<string, string[]>;
+declare const PLACEHOLDERS_FLIPPED_ALIAS: Record<string, string[]>;
+
+declare const DEPRECATED_ALIASES: {
+ ModuleDeclaration: string;
+};
+
+declare const TYPES: string[];
+//# sourceMappingURL=index.d.ts.map
+
+/**
+ * Append a node to a member expression.
+ */
+declare function appendToMemberExpression(member: MemberExpression, append: MemberExpression["property"], computed?: boolean): MemberExpression;
+
+/**
+ * Inherit all contextual properties from `parent` node to `child` node.
+ */
+declare function inherits<T extends Node | null | undefined>(child: T, parent: Node | null | undefined): T;
+
+/**
+ * Prepend a node to a member expression.
+ */
+declare function prependToMemberExpression<T extends Pick<MemberExpression, "object" | "property">>(member: T, prepend: MemberExpression["object"]): T;
+
+type Options$1 = {
+ preserveComments?: boolean;
+};
+/**
+ * Remove all of the _* properties from a node along with the additional metadata
+ * properties like location data and raw token data.
+ */
+declare function removeProperties(node: Node, opts?: Options$1): void;
+
+declare function removePropertiesDeep<T extends Node>(tree: T, opts?: {
+ preserveComments: boolean;
+} | null): T;
+
+/**
+ * Dedupe type annotations.
+ */
+declare function removeTypeDuplicates(nodesIn: readonly (FlowType | false | null | undefined)[]): FlowType[];
+
+/**
+ * For the given node, generate a map from assignment id names to the identifier node.
+ * Unlike getBindingIdentifiers, this function does not handle declarations and imports.
+ * @param node the assignment expression or forXstatement
+ * @returns an object map
+ * @see getBindingIdentifiers
+ */
+declare function getAssignmentIdentifiers(node: Node | Node[]): Record<string, Identifier>;
+
+declare function getBindingIdentifiers(node: Node, duplicates: true, outerOnly?: boolean, newBindingsOnly?: boolean): Record<string, Identifier[]>;
+declare function getBindingIdentifiers(node: Node, duplicates?: false, outerOnly?: boolean, newBindingsOnly?: boolean): Record<string, Identifier>;
+declare function getBindingIdentifiers(node: Node, duplicates?: boolean, outerOnly?: boolean, newBindingsOnly?: boolean): Record<string, Identifier> | Record<string, Identifier[]>;
+declare namespace getBindingIdentifiers {
+ var keys: KeysMap;
+}
+/**
+ * Mapping of types to their identifier keys.
+ */
+type KeysMap = {
+ [N in Node as N["type"]]?: (keyof N)[];
+};
+//# sourceMappingURL=getBindingIdentifiers.d.ts.map
+
+declare const _default: {
+ (node: Node, duplicates: true): Record<string, Identifier[]>;
+ (node: Node, duplicates?: false): Record<string, Identifier>;
+ (node: Node, duplicates?: boolean): Record<string, Identifier> | Record<string, Identifier[]>;
+};
+//# sourceMappingURL=getOuterBindingIdentifiers.d.ts.map
+
+type GetFunctionNameResult = {
+ name: string;
+ originalNode: Node;
+} | null;
+declare function getFunctionName(node: ObjectMethod | ClassMethod): GetFunctionNameResult;
+declare function getFunctionName(node: Function | Class, parent: Node): GetFunctionNameResult;
+
+type TraversalAncestors = {
+ node: Node;
+ key: string;
+ index?: number;
+}[];
+type TraversalHandler<T> = (this: undefined, node: Node, parent: TraversalAncestors, state: T) => void;
+type TraversalHandlers<T> = {
+ enter?: TraversalHandler<T>;
+ exit?: TraversalHandler<T>;
+};
+/**
+ * A general AST traversal with both prefix and postfix handlers, and a
+ * state object. Exposes ancestry data to each handler so that more complex
+ * AST data can be taken into account.
+ */
+declare function traverse<T>(node: Node, handlers: TraversalHandler<T> | TraversalHandlers<T>, state?: T): void;
+
+declare const _skip: unique symbol;
+declare const _stop: unique symbol;
+/**
+ * A prefix AST traversal implementation meant for simple searching and processing.
+ * @param enter The callback can return `traverseFast.skip` to skip the subtree of the current node, or `traverseFast.stop` to stop the traversal.
+ * @returns `true` if the traversal was stopped by callback, `false` otherwise.
+ */
+declare function traverseFast<Options = object>(node: Node | null | undefined, enter: (node: Node, opts?: Options) => void | typeof traverseFast.skip | typeof traverseFast.stop, opts?: Options): boolean;
+declare namespace traverseFast {
+ var skip: typeof _skip;
+ var stop: typeof _stop;
+}
+//# sourceMappingURL=traverseFast.d.ts.map
+
+declare function shallowEqual<T extends object>(actual: object, expected: T): actual is T;
+
+declare function is<T extends Node["type"]>(type: T, node: Node | null | undefined, opts?: undefined): node is Extract<Node, {
+ type: T;
+}>;
+declare function is<T extends Node["type"], P extends Extract<Node, {
+ type: T;
+}>>(type: T, n: Node | null | undefined, required: Partial<P>): n is P;
+declare function is<P extends Node>(type: string, node: Node | null | undefined, opts: Partial<P>): node is P;
+declare function is(type: string, node: Node | null | undefined, opts?: Partial<Node>): node is Node;
+
+/**
+ * Check if the input `node` is a binding identifier.
+ */
+declare function isBinding(node: Node, parent: Node, grandparent?: Node): boolean;
+
+/**
+ * Check if the input `node` is block scoped.
+ */
+declare function isBlockScoped(node: Node | null | undefined): boolean;
+
+/**
+ * Check if the input `node` is definitely immutable.
+ */
+declare function isImmutable(node: Node): boolean;
+
+/**
+ * Check if the input `node` is a `let` variable declaration.
+ */
+declare function isLet(node: Node): boolean;
+
+declare function isNode(node: any): node is Node;
+
+/**
+ * Check if two nodes are equivalent
+ */
+declare function isNodesEquivalent<T extends Partial<Node>>(a: T, b: any): b is T;
+
+/**
+ * Test if a `placeholderType` is a `targetType` or if `targetType` is an alias of `placeholderType`.
+ */
+declare function isPlaceholderType(placeholderType: string, targetType: string): boolean;
+
+/**
+ * Check if the input `node` is a reference to a bound variable.
+ */
+declare function isReferenced(node: Node | null | undefined, parent: Node, grandparent?: Node): boolean;
+
+/**
+ * Check if the input `node` is a scope.
+ */
+declare function isScope(node: Node | null | undefined, parent: Node): boolean;
+
+/**
+ * Check if the input `specifier` is a `default` import or export.
+ */
+declare function isSpecifierDefault(specifier: ModuleSpecifier): boolean;
+
+declare function isType<T extends Node["type"]>(nodeType: string, targetType: T): nodeType is T;
+declare function isType(nodeType: string | null | undefined, targetType: string): boolean;
+
+/**
+ * Check if the input `name` is a valid identifier name according to the ES3 specification.
+ *
+ * Additional ES3 reserved words are
+ */
+declare function isValidES3Identifier(name: string): boolean;
+
+/**
+ * Check if the input `name` is a valid identifier name
+ * and isn't a reserved word.
+ */
+declare function isValidIdentifier(name: string, reserved?: boolean): boolean;
+
+/**
+ * Check if the input `node` is a variable declaration.
+ */
+declare function isVar(node: Node | null | undefined): boolean;
+
+/**
+ * Determines whether or not the input node `member` matches the
+ * input `match`.
+ *
+ * For example, given the match `React.createClass` it would match the
+ * parsed nodes of `React.createClass` and `React["createClass"]`.
+ */
+declare function matchesPattern(member: Node | null | undefined, match: string | string[], allowPartial?: boolean): boolean;
+
+declare function validate(node: Node | undefined | null, key: string, val: unknown): void;
+
+/**
+ * Build a function that when called will return whether or not the
+ * input `node` `MemberExpression` matches the input `match`.
+ *
+ * For example, given the match `React.createClass` it would match the
+ * parsed nodes of `React.createClass` and `React["createClass"]`.
+ */
+declare function buildMatchMemberExpression(match: string, allowPartial?: boolean): (member: Node) => boolean;
+
+type Options<Obj> = Partial<{
+ [Prop in Exclude<keyof Obj, "type">]: Obj[Prop] extends Node ? Node : Obj[Prop] extends Node[] ? Node[] : Obj[Prop];
+}>;
+declare function isArrayExpression(node: Node | null | undefined): node is ArrayExpression;
+declare function isArrayExpression<Opts extends Options<ArrayExpression>>(node: Node | null | undefined, opts?: Opts | null): node is ArrayExpression & Opts;
+declare function isAssignmentExpression(node: Node | null | undefined): node is AssignmentExpression;
+declare function isAssignmentExpression<Opts extends Options<AssignmentExpression>>(node: Node | null | undefined, opts?: Opts | null): node is AssignmentExpression & Opts;
+declare function isBinaryExpression(node: Node | null | undefined): node is BinaryExpression;
+declare function isBinaryExpression<Opts extends Options<BinaryExpression>>(node: Node | null | undefined, opts?: Opts | null): node is BinaryExpression & Opts;
+declare function isInterpreterDirective(node: Node | null | undefined): node is InterpreterDirective;
+declare function isInterpreterDirective<Opts extends Options<InterpreterDirective>>(node: Node | null | undefined, opts?: Opts | null): node is InterpreterDirective & Opts;
+declare function isDirective(node: Node | null | undefined): node is Directive;
+declare function isDirective<Opts extends Options<Directive>>(node: Node | null | undefined, opts?: Opts | null): node is Directive & Opts;
+declare function isDirectiveLiteral(node: Node | null | undefined): node is DirectiveLiteral;
+declare function isDirectiveLiteral<Opts extends Options<DirectiveLiteral>>(node: Node | null | undefined, opts?: Opts | null): node is DirectiveLiteral & Opts;
+declare function isBlockStatement(node: Node | null | undefined): node is BlockStatement;
+declare function isBlockStatement<Opts extends Options<BlockStatement>>(node: Node | null | undefined, opts?: Opts | null): node is BlockStatement & Opts;
+declare function isBreakStatement(node: Node | null | undefined): node is BreakStatement;
+declare function isBreakStatement<Opts extends Options<BreakStatement>>(node: Node | null | undefined, opts?: Opts | null): node is BreakStatement & Opts;
+declare function isCallExpression(node: Node | null | undefined): node is CallExpression;
+declare function isCallExpression<Opts extends Options<CallExpression>>(node: Node | null | undefined, opts?: Opts | null): node is CallExpression & Opts;
+declare function isCatchClause(node: Node | null | undefined): node is CatchClause;
+declare function isCatchClause<Opts extends Options<CatchClause>>(node: Node | null | undefined, opts?: Opts | null): node is CatchClause & Opts;
+declare function isConditionalExpression(node: Node | null | undefined): node is ConditionalExpression;
+declare function isConditionalExpression<Opts extends Options<ConditionalExpression>>(node: Node | null | undefined, opts?: Opts | null): node is ConditionalExpression & Opts;
+declare function isContinueStatement(node: Node | null | undefined): node is ContinueStatement;
+declare function isContinueStatement<Opts extends Options<ContinueStatement>>(node: Node | null | undefined, opts?: Opts | null): node is ContinueStatement & Opts;
+declare function isDebuggerStatement(node: Node | null | undefined): node is DebuggerStatement;
+declare function isDebuggerStatement<Opts extends Options<DebuggerStatement>>(node: Node | null | undefined, opts?: Opts | null): node is DebuggerStatement & Opts;
+declare function isDoWhileStatement(node: Node | null | undefined): node is DoWhileStatement;
+declare function isDoWhileStatement<Opts extends Options<DoWhileStatement>>(node: Node | null | undefined, opts?: Opts | null): node is DoWhileStatement & Opts;
+declare function isEmptyStatement(node: Node | null | undefined): node is EmptyStatement;
+declare function isEmptyStatement<Opts extends Options<EmptyStatement>>(node: Node | null | undefined, opts?: Opts | null): node is EmptyStatement & Opts;
+declare function isExpressionStatement(node: Node | null | undefined): node is ExpressionStatement;
+declare function isExpressionStatement<Opts extends Options<ExpressionStatement>>(node: Node | null | undefined, opts?: Opts | null): node is ExpressionStatement & Opts;
+declare function isFile(node: Node | null | undefined): node is File;
+declare function isFile<Opts extends Options<File>>(node: Node | null | undefined, opts?: Opts | null): node is File & Opts;
+declare function isForInStatement(node: Node | null | undefined): node is ForInStatement;
+declare function isForInStatement<Opts extends Options<ForInStatement>>(node: Node | null | undefined, opts?: Opts | null): node is ForInStatement & Opts;
+declare function isForStatement(node: Node | null | undefined): node is ForStatement;
+declare function isForStatement<Opts extends Options<ForStatement>>(node: Node | null | undefined, opts?: Opts | null): node is ForStatement & Opts;
+declare function isFunctionDeclaration(node: Node | null | undefined): node is FunctionDeclaration;
+declare function isFunctionDeclaration<Opts extends Options<FunctionDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is FunctionDeclaration & Opts;
+declare function isFunctionExpression(node: Node | null | undefined): node is FunctionExpression;
+declare function isFunctionExpression<Opts extends Options<FunctionExpression>>(node: Node | null | undefined, opts?: Opts | null): node is FunctionExpression & Opts;
+declare function isIdentifier(node: Node | null | undefined): node is Identifier;
+declare function isIdentifier<Opts extends Options<Identifier>>(node: Node | null | undefined, opts?: Opts | null): node is Identifier & Opts;
+declare function isIfStatement(node: Node | null | undefined): node is IfStatement;
+declare function isIfStatement<Opts extends Options<IfStatement>>(node: Node | null | undefined, opts?: Opts | null): node is IfStatement & Opts;
+declare function isLabeledStatement(node: Node | null | undefined): node is LabeledStatement;
+declare function isLabeledStatement<Opts extends Options<LabeledStatement>>(node: Node | null | undefined, opts?: Opts | null): node is LabeledStatement & Opts;
+declare function isStringLiteral(node: Node | null | undefined): node is StringLiteral;
+declare function isStringLiteral<Opts extends Options<StringLiteral>>(node: Node | null | undefined, opts?: Opts | null): node is StringLiteral & Opts;
+declare function isNumericLiteral(node: Node | null | undefined): node is NumericLiteral;
+declare function isNumericLiteral<Opts extends Options<NumericLiteral>>(node: Node | null | undefined, opts?: Opts | null): node is NumericLiteral & Opts;
+declare function isNullLiteral(node: Node | null | undefined): node is NullLiteral;
+declare function isNullLiteral<Opts extends Options<NullLiteral>>(node: Node | null | undefined, opts?: Opts | null): node is NullLiteral & Opts;
+declare function isBooleanLiteral(node: Node | null | undefined): node is BooleanLiteral;
+declare function isBooleanLiteral<Opts extends Options<BooleanLiteral>>(node: Node | null | undefined, opts?: Opts | null): node is BooleanLiteral & Opts;
+declare function isRegExpLiteral(node: Node | null | undefined): node is RegExpLiteral;
+declare function isRegExpLiteral<Opts extends Options<RegExpLiteral>>(node: Node | null | undefined, opts?: Opts | null): node is RegExpLiteral & Opts;
+declare function isLogicalExpression(node: Node | null | undefined): node is LogicalExpression;
+declare function isLogicalExpression<Opts extends Options<LogicalExpression>>(node: Node | null | undefined, opts?: Opts | null): node is LogicalExpression & Opts;
+declare function isMemberExpression(node: Node | null | undefined): node is MemberExpression;
+declare function isMemberExpression<Opts extends Options<MemberExpression>>(node: Node | null | undefined, opts?: Opts | null): node is MemberExpression & Opts;
+declare function isNewExpression(node: Node | null | undefined): node is NewExpression;
+declare function isNewExpression<Opts extends Options<NewExpression>>(node: Node | null | undefined, opts?: Opts | null): node is NewExpression & Opts;
+declare function isProgram(node: Node | null | undefined): node is Program;
+declare function isProgram<Opts extends Options<Program>>(node: Node | null | undefined, opts?: Opts | null): node is Program & Opts;
+declare function isObjectExpression(node: Node | null | undefined): node is ObjectExpression;
+declare function isObjectExpression<Opts extends Options<ObjectExpression>>(node: Node | null | undefined, opts?: Opts | null): node is ObjectExpression & Opts;
+declare function isObjectMethod(node: Node | null | undefined): node is ObjectMethod;
+declare function isObjectMethod<Opts extends Options<ObjectMethod>>(node: Node | null | undefined, opts?: Opts | null): node is ObjectMethod & Opts;
+declare function isObjectProperty(node: Node | null | undefined): node is ObjectProperty;
+declare function isObjectProperty<Opts extends Options<ObjectProperty>>(node: Node | null | undefined, opts?: Opts | null): node is ObjectProperty & Opts;
+declare function isRestElement(node: Node | null | undefined): node is RestElement;
+declare function isRestElement<Opts extends Options<RestElement>>(node: Node | null | undefined, opts?: Opts | null): node is RestElement & Opts;
+declare function isReturnStatement(node: Node | null | undefined): node is ReturnStatement;
+declare function isReturnStatement<Opts extends Options<ReturnStatement>>(node: Node | null | undefined, opts?: Opts | null): node is ReturnStatement & Opts;
+declare function isSequenceExpression(node: Node | null | undefined): node is SequenceExpression;
+declare function isSequenceExpression<Opts extends Options<SequenceExpression>>(node: Node | null | undefined, opts?: Opts | null): node is SequenceExpression & Opts;
+declare function isParenthesizedExpression(node: Node | null | undefined): node is ParenthesizedExpression;
+declare function isParenthesizedExpression<Opts extends Options<ParenthesizedExpression>>(node: Node | null | undefined, opts?: Opts | null): node is ParenthesizedExpression & Opts;
+declare function isSwitchCase(node: Node | null | undefined): node is SwitchCase;
+declare function isSwitchCase<Opts extends Options<SwitchCase>>(node: Node | null | undefined, opts?: Opts | null): node is SwitchCase & Opts;
+declare function isSwitchStatement(node: Node | null | undefined): node is SwitchStatement;
+declare function isSwitchStatement<Opts extends Options<SwitchStatement>>(node: Node | null | undefined, opts?: Opts | null): node is SwitchStatement & Opts;
+declare function isThisExpression(node: Node | null | undefined): node is ThisExpression;
+declare function isThisExpression<Opts extends Options<ThisExpression>>(node: Node | null | undefined, opts?: Opts | null): node is ThisExpression & Opts;
+declare function isThrowStatement(node: Node | null | undefined): node is ThrowStatement;
+declare function isThrowStatement<Opts extends Options<ThrowStatement>>(node: Node | null | undefined, opts?: Opts | null): node is ThrowStatement & Opts;
+declare function isTryStatement(node: Node | null | undefined): node is TryStatement;
+declare function isTryStatement<Opts extends Options<TryStatement>>(node: Node | null | undefined, opts?: Opts | null): node is TryStatement & Opts;
+declare function isUnaryExpression(node: Node | null | undefined): node is UnaryExpression;
+declare function isUnaryExpression<Opts extends Options<UnaryExpression>>(node: Node | null | undefined, opts?: Opts | null): node is UnaryExpression & Opts;
+declare function isUpdateExpression(node: Node | null | undefined): node is UpdateExpression;
+declare function isUpdateExpression<Opts extends Options<UpdateExpression>>(node: Node | null | undefined, opts?: Opts | null): node is UpdateExpression & Opts;
+declare function isVariableDeclaration(node: Node | null | undefined): node is VariableDeclaration;
+declare function isVariableDeclaration<Opts extends Options<VariableDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is VariableDeclaration & Opts;
+declare function isVariableDeclarator(node: Node | null | undefined): node is VariableDeclarator;
+declare function isVariableDeclarator<Opts extends Options<VariableDeclarator>>(node: Node | null | undefined, opts?: Opts | null): node is VariableDeclarator & Opts;
+declare function isWhileStatement(node: Node | null | undefined): node is WhileStatement;
+declare function isWhileStatement<Opts extends Options<WhileStatement>>(node: Node | null | undefined, opts?: Opts | null): node is WhileStatement & Opts;
+declare function isWithStatement(node: Node | null | undefined): node is WithStatement;
+declare function isWithStatement<Opts extends Options<WithStatement>>(node: Node | null | undefined, opts?: Opts | null): node is WithStatement & Opts;
+declare function isAssignmentPattern(node: Node | null | undefined): node is AssignmentPattern;
+declare function isAssignmentPattern<Opts extends Options<AssignmentPattern>>(node: Node | null | undefined, opts?: Opts | null): node is AssignmentPattern & Opts;
+declare function isArrayPattern(node: Node | null | undefined): node is ArrayPattern;
+declare function isArrayPattern<Opts extends Options<ArrayPattern>>(node: Node | null | undefined, opts?: Opts | null): node is ArrayPattern & Opts;
+declare function isArrowFunctionExpression(node: Node | null | undefined): node is ArrowFunctionExpression;
+declare function isArrowFunctionExpression<Opts extends Options<ArrowFunctionExpression>>(node: Node | null | undefined, opts?: Opts | null): node is ArrowFunctionExpression & Opts;
+declare function isClassBody(node: Node | null | undefined): node is ClassBody;
+declare function isClassBody<Opts extends Options<ClassBody>>(node: Node | null | undefined, opts?: Opts | null): node is ClassBody & Opts;
+declare function isClassExpression(node: Node | null | undefined): node is ClassExpression;
+declare function isClassExpression<Opts extends Options<ClassExpression>>(node: Node | null | undefined, opts?: Opts | null): node is ClassExpression & Opts;
+declare function isClassDeclaration(node: Node | null | undefined): node is ClassDeclaration;
+declare function isClassDeclaration<Opts extends Options<ClassDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is ClassDeclaration & Opts;
+declare function isExportAllDeclaration(node: Node | null | undefined): node is ExportAllDeclaration;
+declare function isExportAllDeclaration<Opts extends Options<ExportAllDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is ExportAllDeclaration & Opts;
+declare function isExportDefaultDeclaration(node: Node | null | undefined): node is ExportDefaultDeclaration;
+declare function isExportDefaultDeclaration<Opts extends Options<ExportDefaultDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is ExportDefaultDeclaration & Opts;
+declare function isExportNamedDeclaration(node: Node | null | undefined): node is ExportNamedDeclaration;
+declare function isExportNamedDeclaration<Opts extends Options<ExportNamedDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is ExportNamedDeclaration & Opts;
+declare function isExportSpecifier(node: Node | null | undefined): node is ExportSpecifier;
+declare function isExportSpecifier<Opts extends Options<ExportSpecifier>>(node: Node | null | undefined, opts?: Opts | null): node is ExportSpecifier & Opts;
+declare function isForOfStatement(node: Node | null | undefined): node is ForOfStatement;
+declare function isForOfStatement<Opts extends Options<ForOfStatement>>(node: Node | null | undefined, opts?: Opts | null): node is ForOfStatement & Opts;
+declare function isImportDeclaration(node: Node | null | undefined): node is ImportDeclaration;
+declare function isImportDeclaration<Opts extends Options<ImportDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is ImportDeclaration & Opts;
+declare function isImportDefaultSpecifier(node: Node | null | undefined): node is ImportDefaultSpecifier;
+declare function isImportDefaultSpecifier<Opts extends Options<ImportDefaultSpecifier>>(node: Node | null | undefined, opts?: Opts | null): node is ImportDefaultSpecifier & Opts;
+declare function isImportNamespaceSpecifier(node: Node | null | undefined): node is ImportNamespaceSpecifier;
+declare function isImportNamespaceSpecifier<Opts extends Options<ImportNamespaceSpecifier>>(node: Node | null | undefined, opts?: Opts | null): node is ImportNamespaceSpecifier & Opts;
+declare function isImportSpecifier(node: Node | null | undefined): node is ImportSpecifier;
+declare function isImportSpecifier<Opts extends Options<ImportSpecifier>>(node: Node | null | undefined, opts?: Opts | null): node is ImportSpecifier & Opts;
+declare function isImportExpression(node: Node | null | undefined): node is ImportExpression;
+declare function isImportExpression<Opts extends Options<ImportExpression>>(node: Node | null | undefined, opts?: Opts | null): node is ImportExpression & Opts;
+declare function isMetaProperty(node: Node | null | undefined): node is MetaProperty;
+declare function isMetaProperty<Opts extends Options<MetaProperty>>(node: Node | null | undefined, opts?: Opts | null): node is MetaProperty & Opts;
+declare function isClassMethod(node: Node | null | undefined): node is ClassMethod;
+declare function isClassMethod<Opts extends Options<ClassMethod>>(node: Node | null | undefined, opts?: Opts | null): node is ClassMethod & Opts;
+declare function isObjectPattern(node: Node | null | undefined): node is ObjectPattern;
+declare function isObjectPattern<Opts extends Options<ObjectPattern>>(node: Node | null | undefined, opts?: Opts | null): node is ObjectPattern & Opts;
+declare function isSpreadElement(node: Node | null | undefined): node is SpreadElement;
+declare function isSpreadElement<Opts extends Options<SpreadElement>>(node: Node | null | undefined, opts?: Opts | null): node is SpreadElement & Opts;
+declare function isSuper(node: Node | null | undefined): node is Super;
+declare function isSuper<Opts extends Options<Super>>(node: Node | null | undefined, opts?: Opts | null): node is Super & Opts;
+declare function isTaggedTemplateExpression(node: Node | null | undefined): node is TaggedTemplateExpression;
+declare function isTaggedTemplateExpression<Opts extends Options<TaggedTemplateExpression>>(node: Node | null | undefined, opts?: Opts | null): node is TaggedTemplateExpression & Opts;
+declare function isTemplateElement(node: Node | null | undefined): node is TemplateElement;
+declare function isTemplateElement<Opts extends Options<TemplateElement>>(node: Node | null | undefined, opts?: Opts | null): node is TemplateElement & Opts;
+declare function isTemplateLiteral(node: Node | null | undefined): node is TemplateLiteral;
+declare function isTemplateLiteral<Opts extends Options<TemplateLiteral>>(node: Node | null | undefined, opts?: Opts | null): node is TemplateLiteral & Opts;
+declare function isYieldExpression(node: Node | null | undefined): node is YieldExpression;
+declare function isYieldExpression<Opts extends Options<YieldExpression>>(node: Node | null | undefined, opts?: Opts | null): node is YieldExpression & Opts;
+declare function isAwaitExpression(node: Node | null | undefined): node is AwaitExpression;
+declare function isAwaitExpression<Opts extends Options<AwaitExpression>>(node: Node | null | undefined, opts?: Opts | null): node is AwaitExpression & Opts;
+declare function isImport(node: Node | null | undefined): node is Import;
+declare function isImport<Opts extends Options<Import>>(node: Node | null | undefined, opts?: Opts | null): node is Import & Opts;
+declare function isBigIntLiteral(node: Node | null | undefined): node is BigIntLiteral;
+declare function isBigIntLiteral<Opts extends Options<BigIntLiteral>>(node: Node | null | undefined, opts?: Opts | null): node is BigIntLiteral & Opts;
+declare function isExportNamespaceSpecifier(node: Node | null | undefined): node is ExportNamespaceSpecifier;
+declare function isExportNamespaceSpecifier<Opts extends Options<ExportNamespaceSpecifier>>(node: Node | null | undefined, opts?: Opts | null): node is ExportNamespaceSpecifier & Opts;
+declare function isOptionalMemberExpression(node: Node | null | undefined): node is OptionalMemberExpression;
+declare function isOptionalMemberExpression<Opts extends Options<OptionalMemberExpression>>(node: Node | null | undefined, opts?: Opts | null): node is OptionalMemberExpression & Opts;
+declare function isOptionalCallExpression(node: Node | null | undefined): node is OptionalCallExpression;
+declare function isOptionalCallExpression<Opts extends Options<OptionalCallExpression>>(node: Node | null | undefined, opts?: Opts | null): node is OptionalCallExpression & Opts;
+declare function isClassProperty(node: Node | null | undefined): node is ClassProperty;
+declare function isClassProperty<Opts extends Options<ClassProperty>>(node: Node | null | undefined, opts?: Opts | null): node is ClassProperty & Opts;
+declare function isClassAccessorProperty(node: Node | null | undefined): node is ClassAccessorProperty;
+declare function isClassAccessorProperty<Opts extends Options<ClassAccessorProperty>>(node: Node | null | undefined, opts?: Opts | null): node is ClassAccessorProperty & Opts;
+declare function isClassPrivateProperty(node: Node | null | undefined): node is ClassPrivateProperty;
+declare function isClassPrivateProperty<Opts extends Options<ClassPrivateProperty>>(node: Node | null | undefined, opts?: Opts | null): node is ClassPrivateProperty & Opts;
+declare function isClassPrivateMethod(node: Node | null | undefined): node is ClassPrivateMethod;
+declare function isClassPrivateMethod<Opts extends Options<ClassPrivateMethod>>(node: Node | null | undefined, opts?: Opts | null): node is ClassPrivateMethod & Opts;
+declare function isPrivateName(node: Node | null | undefined): node is PrivateName;
+declare function isPrivateName<Opts extends Options<PrivateName>>(node: Node | null | undefined, opts?: Opts | null): node is PrivateName & Opts;
+declare function isStaticBlock(node: Node | null | undefined): node is StaticBlock;
+declare function isStaticBlock<Opts extends Options<StaticBlock>>(node: Node | null | undefined, opts?: Opts | null): node is StaticBlock & Opts;
+declare function isImportAttribute(node: Node | null | undefined): node is ImportAttribute;
+declare function isImportAttribute<Opts extends Options<ImportAttribute>>(node: Node | null | undefined, opts?: Opts | null): node is ImportAttribute & Opts;
+declare function isAnyTypeAnnotation(node: Node | null | undefined): node is AnyTypeAnnotation;
+declare function isAnyTypeAnnotation<Opts extends Options<AnyTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is AnyTypeAnnotation & Opts;
+declare function isArrayTypeAnnotation(node: Node | null | undefined): node is ArrayTypeAnnotation;
+declare function isArrayTypeAnnotation<Opts extends Options<ArrayTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is ArrayTypeAnnotation & Opts;
+declare function isBooleanTypeAnnotation(node: Node | null | undefined): node is BooleanTypeAnnotation;
+declare function isBooleanTypeAnnotation<Opts extends Options<BooleanTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is BooleanTypeAnnotation & Opts;
+declare function isBooleanLiteralTypeAnnotation(node: Node | null | undefined): node is BooleanLiteralTypeAnnotation;
+declare function isBooleanLiteralTypeAnnotation<Opts extends Options<BooleanLiteralTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is BooleanLiteralTypeAnnotation & Opts;
+declare function isNullLiteralTypeAnnotation(node: Node | null | undefined): node is NullLiteralTypeAnnotation;
+declare function isNullLiteralTypeAnnotation<Opts extends Options<NullLiteralTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is NullLiteralTypeAnnotation & Opts;
+declare function isClassImplements(node: Node | null | undefined): node is ClassImplements;
+declare function isClassImplements<Opts extends Options<ClassImplements>>(node: Node | null | undefined, opts?: Opts | null): node is ClassImplements & Opts;
+declare function isDeclareClass(node: Node | null | undefined): node is DeclareClass;
+declare function isDeclareClass<Opts extends Options<DeclareClass>>(node: Node | null | undefined, opts?: Opts | null): node is DeclareClass & Opts;
+declare function isDeclareFunction(node: Node | null | undefined): node is DeclareFunction;
+declare function isDeclareFunction<Opts extends Options<DeclareFunction>>(node: Node | null | undefined, opts?: Opts | null): node is DeclareFunction & Opts;
+declare function isDeclareInterface(node: Node | null | undefined): node is DeclareInterface;
+declare function isDeclareInterface<Opts extends Options<DeclareInterface>>(node: Node | null | undefined, opts?: Opts | null): node is DeclareInterface & Opts;
+declare function isDeclareModule(node: Node | null | undefined): node is DeclareModule;
+declare function isDeclareModule<Opts extends Options<DeclareModule>>(node: Node | null | undefined, opts?: Opts | null): node is DeclareModule & Opts;
+declare function isDeclareModuleExports(node: Node | null | undefined): node is DeclareModuleExports;
+declare function isDeclareModuleExports<Opts extends Options<DeclareModuleExports>>(node: Node | null | undefined, opts?: Opts | null): node is DeclareModuleExports & Opts;
+declare function isDeclareTypeAlias(node: Node | null | undefined): node is DeclareTypeAlias;
+declare function isDeclareTypeAlias<Opts extends Options<DeclareTypeAlias>>(node: Node | null | undefined, opts?: Opts | null): node is DeclareTypeAlias & Opts;
+declare function isDeclareOpaqueType(node: Node | null | undefined): node is DeclareOpaqueType;
+declare function isDeclareOpaqueType<Opts extends Options<DeclareOpaqueType>>(node: Node | null | undefined, opts?: Opts | null): node is DeclareOpaqueType & Opts;
+declare function isDeclareVariable(node: Node | null | undefined): node is DeclareVariable;
+declare function isDeclareVariable<Opts extends Options<DeclareVariable>>(node: Node | null | undefined, opts?: Opts | null): node is DeclareVariable & Opts;
+declare function isDeclareExportDeclaration(node: Node | null | undefined): node is DeclareExportDeclaration;
+declare function isDeclareExportDeclaration<Opts extends Options<DeclareExportDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is DeclareExportDeclaration & Opts;
+declare function isDeclareExportAllDeclaration(node: Node | null | undefined): node is DeclareExportAllDeclaration;
+declare function isDeclareExportAllDeclaration<Opts extends Options<DeclareExportAllDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is DeclareExportAllDeclaration & Opts;
+declare function isDeclaredPredicate(node: Node | null | undefined): node is DeclaredPredicate;
+declare function isDeclaredPredicate<Opts extends Options<DeclaredPredicate>>(node: Node | null | undefined, opts?: Opts | null): node is DeclaredPredicate & Opts;
+declare function isExistsTypeAnnotation(node: Node | null | undefined): node is ExistsTypeAnnotation;
+declare function isExistsTypeAnnotation<Opts extends Options<ExistsTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is ExistsTypeAnnotation & Opts;
+declare function isFunctionTypeAnnotation(node: Node | null | undefined): node is FunctionTypeAnnotation;
+declare function isFunctionTypeAnnotation<Opts extends Options<FunctionTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is FunctionTypeAnnotation & Opts;
+declare function isFunctionTypeParam(node: Node | null | undefined): node is FunctionTypeParam;
+declare function isFunctionTypeParam<Opts extends Options<FunctionTypeParam>>(node: Node | null | undefined, opts?: Opts | null): node is FunctionTypeParam & Opts;
+declare function isGenericTypeAnnotation(node: Node | null | undefined): node is GenericTypeAnnotation;
+declare function isGenericTypeAnnotation<Opts extends Options<GenericTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is GenericTypeAnnotation & Opts;
+declare function isInferredPredicate(node: Node | null | undefined): node is InferredPredicate;
+declare function isInferredPredicate<Opts extends Options<InferredPredicate>>(node: Node | null | undefined, opts?: Opts | null): node is InferredPredicate & Opts;
+declare function isInterfaceExtends(node: Node | null | undefined): node is InterfaceExtends;
+declare function isInterfaceExtends<Opts extends Options<InterfaceExtends>>(node: Node | null | undefined, opts?: Opts | null): node is InterfaceExtends & Opts;
+declare function isInterfaceDeclaration(node: Node | null | undefined): node is InterfaceDeclaration;
+declare function isInterfaceDeclaration<Opts extends Options<InterfaceDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is InterfaceDeclaration & Opts;
+declare function isInterfaceTypeAnnotation(node: Node | null | undefined): node is InterfaceTypeAnnotation;
+declare function isInterfaceTypeAnnotation<Opts extends Options<InterfaceTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is InterfaceTypeAnnotation & Opts;
+declare function isIntersectionTypeAnnotation(node: Node | null | undefined): node is IntersectionTypeAnnotation;
+declare function isIntersectionTypeAnnotation<Opts extends Options<IntersectionTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is IntersectionTypeAnnotation & Opts;
+declare function isMixedTypeAnnotation(node: Node | null | undefined): node is MixedTypeAnnotation;
+declare function isMixedTypeAnnotation<Opts extends Options<MixedTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is MixedTypeAnnotation & Opts;
+declare function isEmptyTypeAnnotation(node: Node | null | undefined): node is EmptyTypeAnnotation;
+declare function isEmptyTypeAnnotation<Opts extends Options<EmptyTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is EmptyTypeAnnotation & Opts;
+declare function isNullableTypeAnnotation(node: Node | null | undefined): node is NullableTypeAnnotation;
+declare function isNullableTypeAnnotation<Opts extends Options<NullableTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is NullableTypeAnnotation & Opts;
+declare function isNumberLiteralTypeAnnotation(node: Node | null | undefined): node is NumberLiteralTypeAnnotation;
+declare function isNumberLiteralTypeAnnotation<Opts extends Options<NumberLiteralTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is NumberLiteralTypeAnnotation & Opts;
+declare function isNumberTypeAnnotation(node: Node | null | undefined): node is NumberTypeAnnotation;
+declare function isNumberTypeAnnotation<Opts extends Options<NumberTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is NumberTypeAnnotation & Opts;
+declare function isObjectTypeAnnotation(node: Node | null | undefined): node is ObjectTypeAnnotation;
+declare function isObjectTypeAnnotation<Opts extends Options<ObjectTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is ObjectTypeAnnotation & Opts;
+declare function isObjectTypeInternalSlot(node: Node | null | undefined): node is ObjectTypeInternalSlot;
+declare function isObjectTypeInternalSlot<Opts extends Options<ObjectTypeInternalSlot>>(node: Node | null | undefined, opts?: Opts | null): node is ObjectTypeInternalSlot & Opts;
+declare function isObjectTypeCallProperty(node: Node | null | undefined): node is ObjectTypeCallProperty;
+declare function isObjectTypeCallProperty<Opts extends Options<ObjectTypeCallProperty>>(node: Node | null | undefined, opts?: Opts | null): node is ObjectTypeCallProperty & Opts;
+declare function isObjectTypeIndexer(node: Node | null | undefined): node is ObjectTypeIndexer;
+declare function isObjectTypeIndexer<Opts extends Options<ObjectTypeIndexer>>(node: Node | null | undefined, opts?: Opts | null): node is ObjectTypeIndexer & Opts;
+declare function isObjectTypeProperty(node: Node | null | undefined): node is ObjectTypeProperty;
+declare function isObjectTypeProperty<Opts extends Options<ObjectTypeProperty>>(node: Node | null | undefined, opts?: Opts | null): node is ObjectTypeProperty & Opts;
+declare function isObjectTypeSpreadProperty(node: Node | null | undefined): node is ObjectTypeSpreadProperty;
+declare function isObjectTypeSpreadProperty<Opts extends Options<ObjectTypeSpreadProperty>>(node: Node | null | undefined, opts?: Opts | null): node is ObjectTypeSpreadProperty & Opts;
+declare function isOpaqueType(node: Node | null | undefined): node is OpaqueType;
+declare function isOpaqueType<Opts extends Options<OpaqueType>>(node: Node | null | undefined, opts?: Opts | null): node is OpaqueType & Opts;
+declare function isQualifiedTypeIdentifier(node: Node | null | undefined): node is QualifiedTypeIdentifier;
+declare function isQualifiedTypeIdentifier<Opts extends Options<QualifiedTypeIdentifier>>(node: Node | null | undefined, opts?: Opts | null): node is QualifiedTypeIdentifier & Opts;
+declare function isStringLiteralTypeAnnotation(node: Node | null | undefined): node is StringLiteralTypeAnnotation;
+declare function isStringLiteralTypeAnnotation<Opts extends Options<StringLiteralTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is StringLiteralTypeAnnotation & Opts;
+declare function isStringTypeAnnotation(node: Node | null | undefined): node is StringTypeAnnotation;
+declare function isStringTypeAnnotation<Opts extends Options<StringTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is StringTypeAnnotation & Opts;
+declare function isSymbolTypeAnnotation(node: Node | null | undefined): node is SymbolTypeAnnotation;
+declare function isSymbolTypeAnnotation<Opts extends Options<SymbolTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is SymbolTypeAnnotation & Opts;
+declare function isThisTypeAnnotation(node: Node | null | undefined): node is ThisTypeAnnotation;
+declare function isThisTypeAnnotation<Opts extends Options<ThisTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is ThisTypeAnnotation & Opts;
+declare function isTupleTypeAnnotation(node: Node | null | undefined): node is TupleTypeAnnotation;
+declare function isTupleTypeAnnotation<Opts extends Options<TupleTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is TupleTypeAnnotation & Opts;
+declare function isTypeofTypeAnnotation(node: Node | null | undefined): node is TypeofTypeAnnotation;
+declare function isTypeofTypeAnnotation<Opts extends Options<TypeofTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is TypeofTypeAnnotation & Opts;
+declare function isTypeAlias(node: Node | null | undefined): node is TypeAlias;
+declare function isTypeAlias<Opts extends Options<TypeAlias>>(node: Node | null | undefined, opts?: Opts | null): node is TypeAlias & Opts;
+declare function isTypeAnnotation(node: Node | null | undefined): node is TypeAnnotation;
+declare function isTypeAnnotation<Opts extends Options<TypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is TypeAnnotation & Opts;
+declare function isTypeCastExpression(node: Node | null | undefined): node is TypeCastExpression;
+declare function isTypeCastExpression<Opts extends Options<TypeCastExpression>>(node: Node | null | undefined, opts?: Opts | null): node is TypeCastExpression & Opts;
+declare function isTypeParameter(node: Node | null | undefined): node is TypeParameter;
+declare function isTypeParameter<Opts extends Options<TypeParameter>>(node: Node | null | undefined, opts?: Opts | null): node is TypeParameter & Opts;
+declare function isTypeParameterDeclaration(node: Node | null | undefined): node is TypeParameterDeclaration;
+declare function isTypeParameterDeclaration<Opts extends Options<TypeParameterDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is TypeParameterDeclaration & Opts;
+declare function isTypeParameterInstantiation(node: Node | null | undefined): node is TypeParameterInstantiation;
+declare function isTypeParameterInstantiation<Opts extends Options<TypeParameterInstantiation>>(node: Node | null | undefined, opts?: Opts | null): node is TypeParameterInstantiation & Opts;
+declare function isUnionTypeAnnotation(node: Node | null | undefined): node is UnionTypeAnnotation;
+declare function isUnionTypeAnnotation<Opts extends Options<UnionTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is UnionTypeAnnotation & Opts;
+declare function isVariance(node: Node | null | undefined): node is Variance;
+declare function isVariance<Opts extends Options<Variance>>(node: Node | null | undefined, opts?: Opts | null): node is Variance & Opts;
+declare function isVoidTypeAnnotation(node: Node | null | undefined): node is VoidTypeAnnotation;
+declare function isVoidTypeAnnotation<Opts extends Options<VoidTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is VoidTypeAnnotation & Opts;
+declare function isEnumDeclaration(node: Node | null | undefined): node is EnumDeclaration;
+declare function isEnumDeclaration<Opts extends Options<EnumDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is EnumDeclaration & Opts;
+declare function isEnumBooleanBody(node: Node | null | undefined): node is EnumBooleanBody;
+declare function isEnumBooleanBody<Opts extends Options<EnumBooleanBody>>(node: Node | null | undefined, opts?: Opts | null): node is EnumBooleanBody & Opts;
+declare function isEnumNumberBody(node: Node | null | undefined): node is EnumNumberBody;
+declare function isEnumNumberBody<Opts extends Options<EnumNumberBody>>(node: Node | null | undefined, opts?: Opts | null): node is EnumNumberBody & Opts;
+declare function isEnumStringBody(node: Node | null | undefined): node is EnumStringBody;
+declare function isEnumStringBody<Opts extends Options<EnumStringBody>>(node: Node | null | undefined, opts?: Opts | null): node is EnumStringBody & Opts;
+declare function isEnumSymbolBody(node: Node | null | undefined): node is EnumSymbolBody;
+declare function isEnumSymbolBody<Opts extends Options<EnumSymbolBody>>(node: Node | null | undefined, opts?: Opts | null): node is EnumSymbolBody & Opts;
+declare function isEnumBooleanMember(node: Node | null | undefined): node is EnumBooleanMember;
+declare function isEnumBooleanMember<Opts extends Options<EnumBooleanMember>>(node: Node | null | undefined, opts?: Opts | null): node is EnumBooleanMember & Opts;
+declare function isEnumNumberMember(node: Node | null | undefined): node is EnumNumberMember;
+declare function isEnumNumberMember<Opts extends Options<EnumNumberMember>>(node: Node | null | undefined, opts?: Opts | null): node is EnumNumberMember & Opts;
+declare function isEnumStringMember(node: Node | null | undefined): node is EnumStringMember;
+declare function isEnumStringMember<Opts extends Options<EnumStringMember>>(node: Node | null | undefined, opts?: Opts | null): node is EnumStringMember & Opts;
+declare function isEnumDefaultedMember(node: Node | null | undefined): node is EnumDefaultedMember;
+declare function isEnumDefaultedMember<Opts extends Options<EnumDefaultedMember>>(node: Node | null | undefined, opts?: Opts | null): node is EnumDefaultedMember & Opts;
+declare function isIndexedAccessType(node: Node | null | undefined): node is IndexedAccessType;
+declare function isIndexedAccessType<Opts extends Options<IndexedAccessType>>(node: Node | null | undefined, opts?: Opts | null): node is IndexedAccessType & Opts;
+declare function isOptionalIndexedAccessType(node: Node | null | undefined): node is OptionalIndexedAccessType;
+declare function isOptionalIndexedAccessType<Opts extends Options<OptionalIndexedAccessType>>(node: Node | null | undefined, opts?: Opts | null): node is OptionalIndexedAccessType & Opts;
+declare function isJSXAttribute(node: Node | null | undefined): node is JSXAttribute;
+declare function isJSXAttribute<Opts extends Options<JSXAttribute>>(node: Node | null | undefined, opts?: Opts | null): node is JSXAttribute & Opts;
+declare function isJSXClosingElement(node: Node | null | undefined): node is JSXClosingElement;
+declare function isJSXClosingElement<Opts extends Options<JSXClosingElement>>(node: Node | null | undefined, opts?: Opts | null): node is JSXClosingElement & Opts;
+declare function isJSXElement(node: Node | null | undefined): node is JSXElement;
+declare function isJSXElement<Opts extends Options<JSXElement>>(node: Node | null | undefined, opts?: Opts | null): node is JSXElement & Opts;
+declare function isJSXEmptyExpression(node: Node | null | undefined): node is JSXEmptyExpression;
+declare function isJSXEmptyExpression<Opts extends Options<JSXEmptyExpression>>(node: Node | null | undefined, opts?: Opts | null): node is JSXEmptyExpression & Opts;
+declare function isJSXExpressionContainer(node: Node | null | undefined): node is JSXExpressionContainer;
+declare function isJSXExpressionContainer<Opts extends Options<JSXExpressionContainer>>(node: Node | null | undefined, opts?: Opts | null): node is JSXExpressionContainer & Opts;
+declare function isJSXSpreadChild(node: Node | null | undefined): node is JSXSpreadChild;
+declare function isJSXSpreadChild<Opts extends Options<JSXSpreadChild>>(node: Node | null | undefined, opts?: Opts | null): node is JSXSpreadChild & Opts;
+declare function isJSXIdentifier(node: Node | null | undefined): node is JSXIdentifier;
+declare function isJSXIdentifier<Opts extends Options<JSXIdentifier>>(node: Node | null | undefined, opts?: Opts | null): node is JSXIdentifier & Opts;
+declare function isJSXMemberExpression(node: Node | null | undefined): node is JSXMemberExpression;
+declare function isJSXMemberExpression<Opts extends Options<JSXMemberExpression>>(node: Node | null | undefined, opts?: Opts | null): node is JSXMemberExpression & Opts;
+declare function isJSXNamespacedName(node: Node | null | undefined): node is JSXNamespacedName;
+declare function isJSXNamespacedName<Opts extends Options<JSXNamespacedName>>(node: Node | null | undefined, opts?: Opts | null): node is JSXNamespacedName & Opts;
+declare function isJSXOpeningElement(node: Node | null | undefined): node is JSXOpeningElement;
+declare function isJSXOpeningElement<Opts extends Options<JSXOpeningElement>>(node: Node | null | undefined, opts?: Opts | null): node is JSXOpeningElement & Opts;
+declare function isJSXSpreadAttribute(node: Node | null | undefined): node is JSXSpreadAttribute;
+declare function isJSXSpreadAttribute<Opts extends Options<JSXSpreadAttribute>>(node: Node | null | undefined, opts?: Opts | null): node is JSXSpreadAttribute & Opts;
+declare function isJSXText(node: Node | null | undefined): node is JSXText;
+declare function isJSXText<Opts extends Options<JSXText>>(node: Node | null | undefined, opts?: Opts | null): node is JSXText & Opts;
+declare function isJSXFragment(node: Node | null | undefined): node is JSXFragment;
+declare function isJSXFragment<Opts extends Options<JSXFragment>>(node: Node | null | undefined, opts?: Opts | null): node is JSXFragment & Opts;
+declare function isJSXOpeningFragment(node: Node | null | undefined): node is JSXOpeningFragment;
+declare function isJSXOpeningFragment<Opts extends Options<JSXOpeningFragment>>(node: Node | null | undefined, opts?: Opts | null): node is JSXOpeningFragment & Opts;
+declare function isJSXClosingFragment(node: Node | null | undefined): node is JSXClosingFragment;
+declare function isJSXClosingFragment<Opts extends Options<JSXClosingFragment>>(node: Node | null | undefined, opts?: Opts | null): node is JSXClosingFragment & Opts;
+declare function isNoop(node: Node | null | undefined): node is Noop;
+declare function isNoop<Opts extends Options<Noop>>(node: Node | null | undefined, opts?: Opts | null): node is Noop & Opts;
+declare function isPlaceholder(node: Node | null | undefined): node is Placeholder;
+declare function isPlaceholder<Opts extends Options<Placeholder>>(node: Node | null | undefined, opts?: Opts | null): node is Placeholder & Opts;
+declare function isV8IntrinsicIdentifier(node: Node | null | undefined): node is V8IntrinsicIdentifier;
+declare function isV8IntrinsicIdentifier<Opts extends Options<V8IntrinsicIdentifier>>(node: Node | null | undefined, opts?: Opts | null): node is V8IntrinsicIdentifier & Opts;
+declare function isArgumentPlaceholder(node: Node | null | undefined): node is ArgumentPlaceholder;
+declare function isArgumentPlaceholder<Opts extends Options<ArgumentPlaceholder>>(node: Node | null | undefined, opts?: Opts | null): node is ArgumentPlaceholder & Opts;
+declare function isBindExpression(node: Node | null | undefined): node is BindExpression;
+declare function isBindExpression<Opts extends Options<BindExpression>>(node: Node | null | undefined, opts?: Opts | null): node is BindExpression & Opts;
+declare function isDecorator(node: Node | null | undefined): node is Decorator;
+declare function isDecorator<Opts extends Options<Decorator>>(node: Node | null | undefined, opts?: Opts | null): node is Decorator & Opts;
+declare function isDoExpression(node: Node | null | undefined): node is DoExpression;
+declare function isDoExpression<Opts extends Options<DoExpression>>(node: Node | null | undefined, opts?: Opts | null): node is DoExpression & Opts;
+declare function isExportDefaultSpecifier(node: Node | null | undefined): node is ExportDefaultSpecifier;
+declare function isExportDefaultSpecifier<Opts extends Options<ExportDefaultSpecifier>>(node: Node | null | undefined, opts?: Opts | null): node is ExportDefaultSpecifier & Opts;
+declare function isRecordExpression(node: Node | null | undefined): node is RecordExpression;
+declare function isRecordExpression<Opts extends Options<RecordExpression>>(node: Node | null | undefined, opts?: Opts | null): node is RecordExpression & Opts;
+declare function isTupleExpression(node: Node | null | undefined): node is TupleExpression;
+declare function isTupleExpression<Opts extends Options<TupleExpression>>(node: Node | null | undefined, opts?: Opts | null): node is TupleExpression & Opts;
+declare function isDecimalLiteral(node: Node | null | undefined): node is DecimalLiteral;
+declare function isDecimalLiteral<Opts extends Options<DecimalLiteral>>(node: Node | null | undefined, opts?: Opts | null): node is DecimalLiteral & Opts;
+declare function isModuleExpression(node: Node | null | undefined): node is ModuleExpression;
+declare function isModuleExpression<Opts extends Options<ModuleExpression>>(node: Node | null | undefined, opts?: Opts | null): node is ModuleExpression & Opts;
+declare function isTopicReference(node: Node | null | undefined): node is TopicReference;
+declare function isTopicReference<Opts extends Options<TopicReference>>(node: Node | null | undefined, opts?: Opts | null): node is TopicReference & Opts;
+declare function isPipelineTopicExpression(node: Node | null | undefined): node is PipelineTopicExpression;
+declare function isPipelineTopicExpression<Opts extends Options<PipelineTopicExpression>>(node: Node | null | undefined, opts?: Opts | null): node is PipelineTopicExpression & Opts;
+declare function isPipelineBareFunction(node: Node | null | undefined): node is PipelineBareFunction;
+declare function isPipelineBareFunction<Opts extends Options<PipelineBareFunction>>(node: Node | null | undefined, opts?: Opts | null): node is PipelineBareFunction & Opts;
+declare function isPipelinePrimaryTopicReference(node: Node | null | undefined): node is PipelinePrimaryTopicReference;
+declare function isPipelinePrimaryTopicReference<Opts extends Options<PipelinePrimaryTopicReference>>(node: Node | null | undefined, opts?: Opts | null): node is PipelinePrimaryTopicReference & Opts;
+declare function isVoidPattern(node: Node | null | undefined): node is VoidPattern;
+declare function isVoidPattern<Opts extends Options<VoidPattern>>(node: Node | null | undefined, opts?: Opts | null): node is VoidPattern & Opts;
+declare function isTSParameterProperty(node: Node | null | undefined): node is TSParameterProperty;
+declare function isTSParameterProperty<Opts extends Options<TSParameterProperty>>(node: Node | null | undefined, opts?: Opts | null): node is TSParameterProperty & Opts;
+declare function isTSDeclareFunction(node: Node | null | undefined): node is TSDeclareFunction;
+declare function isTSDeclareFunction<Opts extends Options<TSDeclareFunction>>(node: Node | null | undefined, opts?: Opts | null): node is TSDeclareFunction & Opts;
+declare function isTSDeclareMethod(node: Node | null | undefined): node is TSDeclareMethod;
+declare function isTSDeclareMethod<Opts extends Options<TSDeclareMethod>>(node: Node | null | undefined, opts?: Opts | null): node is TSDeclareMethod & Opts;
+declare function isTSQualifiedName(node: Node | null | undefined): node is TSQualifiedName;
+declare function isTSQualifiedName<Opts extends Options<TSQualifiedName>>(node: Node | null | undefined, opts?: Opts | null): node is TSQualifiedName & Opts;
+declare function isTSCallSignatureDeclaration(node: Node | null | undefined): node is TSCallSignatureDeclaration;
+declare function isTSCallSignatureDeclaration<Opts extends Options<TSCallSignatureDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is TSCallSignatureDeclaration & Opts;
+declare function isTSConstructSignatureDeclaration(node: Node | null | undefined): node is TSConstructSignatureDeclaration;
+declare function isTSConstructSignatureDeclaration<Opts extends Options<TSConstructSignatureDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is TSConstructSignatureDeclaration & Opts;
+declare function isTSPropertySignature(node: Node | null | undefined): node is TSPropertySignature;
+declare function isTSPropertySignature<Opts extends Options<TSPropertySignature>>(node: Node | null | undefined, opts?: Opts | null): node is TSPropertySignature & Opts;
+declare function isTSMethodSignature(node: Node | null | undefined): node is TSMethodSignature;
+declare function isTSMethodSignature<Opts extends Options<TSMethodSignature>>(node: Node | null | undefined, opts?: Opts | null): node is TSMethodSignature & Opts;
+declare function isTSIndexSignature(node: Node | null | undefined): node is TSIndexSignature;
+declare function isTSIndexSignature<Opts extends Options<TSIndexSignature>>(node: Node | null | undefined, opts?: Opts | null): node is TSIndexSignature & Opts;
+declare function isTSAnyKeyword(node: Node | null | undefined): node is TSAnyKeyword;
+declare function isTSAnyKeyword<Opts extends Options<TSAnyKeyword>>(node: Node | null | undefined, opts?: Opts | null): node is TSAnyKeyword & Opts;
+declare function isTSBooleanKeyword(node: Node | null | undefined): node is TSBooleanKeyword;
+declare function isTSBooleanKeyword<Opts extends Options<TSBooleanKeyword>>(node: Node | null | undefined, opts?: Opts | null): node is TSBooleanKeyword & Opts;
+declare function isTSBigIntKeyword(node: Node | null | undefined): node is TSBigIntKeyword;
+declare function isTSBigIntKeyword<Opts extends Options<TSBigIntKeyword>>(node: Node | null | undefined, opts?: Opts | null): node is TSBigIntKeyword & Opts;
+declare function isTSIntrinsicKeyword(node: Node | null | undefined): node is TSIntrinsicKeyword;
+declare function isTSIntrinsicKeyword<Opts extends Options<TSIntrinsicKeyword>>(node: Node | null | undefined, opts?: Opts | null): node is TSIntrinsicKeyword & Opts;
+declare function isTSNeverKeyword(node: Node | null | undefined): node is TSNeverKeyword;
+declare function isTSNeverKeyword<Opts extends Options<TSNeverKeyword>>(node: Node | null | undefined, opts?: Opts | null): node is TSNeverKeyword & Opts;
+declare function isTSNullKeyword(node: Node | null | undefined): node is TSNullKeyword;
+declare function isTSNullKeyword<Opts extends Options<TSNullKeyword>>(node: Node | null | undefined, opts?: Opts | null): node is TSNullKeyword & Opts;
+declare function isTSNumberKeyword(node: Node | null | undefined): node is TSNumberKeyword;
+declare function isTSNumberKeyword<Opts extends Options<TSNumberKeyword>>(node: Node | null | undefined, opts?: Opts | null): node is TSNumberKeyword & Opts;
+declare function isTSObjectKeyword(node: Node | null | undefined): node is TSObjectKeyword;
+declare function isTSObjectKeyword<Opts extends Options<TSObjectKeyword>>(node: Node | null | undefined, opts?: Opts | null): node is TSObjectKeyword & Opts;
+declare function isTSStringKeyword(node: Node | null | undefined): node is TSStringKeyword;
+declare function isTSStringKeyword<Opts extends Options<TSStringKeyword>>(node: Node | null | undefined, opts?: Opts | null): node is TSStringKeyword & Opts;
+declare function isTSSymbolKeyword(node: Node | null | undefined): node is TSSymbolKeyword;
+declare function isTSSymbolKeyword<Opts extends Options<TSSymbolKeyword>>(node: Node | null | undefined, opts?: Opts | null): node is TSSymbolKeyword & Opts;
+declare function isTSUndefinedKeyword(node: Node | null | undefined): node is TSUndefinedKeyword;
+declare function isTSUndefinedKeyword<Opts extends Options<TSUndefinedKeyword>>(node: Node | null | undefined, opts?: Opts | null): node is TSUndefinedKeyword & Opts;
+declare function isTSUnknownKeyword(node: Node | null | undefined): node is TSUnknownKeyword;
+declare function isTSUnknownKeyword<Opts extends Options<TSUnknownKeyword>>(node: Node | null | undefined, opts?: Opts | null): node is TSUnknownKeyword & Opts;
+declare function isTSVoidKeyword(node: Node | null | undefined): node is TSVoidKeyword;
+declare function isTSVoidKeyword<Opts extends Options<TSVoidKeyword>>(node: Node | null | undefined, opts?: Opts | null): node is TSVoidKeyword & Opts;
+declare function isTSThisType(node: Node | null | undefined): node is TSThisType;
+declare function isTSThisType<Opts extends Options<TSThisType>>(node: Node | null | undefined, opts?: Opts | null): node is TSThisType & Opts;
+declare function isTSFunctionType(node: Node | null | undefined): node is TSFunctionType;
+declare function isTSFunctionType<Opts extends Options<TSFunctionType>>(node: Node | null | undefined, opts?: Opts | null): node is TSFunctionType & Opts;
+declare function isTSConstructorType(node: Node | null | undefined): node is TSConstructorType;
+declare function isTSConstructorType<Opts extends Options<TSConstructorType>>(node: Node | null | undefined, opts?: Opts | null): node is TSConstructorType & Opts;
+declare function isTSTypeReference(node: Node | null | undefined): node is TSTypeReference;
+declare function isTSTypeReference<Opts extends Options<TSTypeReference>>(node: Node | null | undefined, opts?: Opts | null): node is TSTypeReference & Opts;
+declare function isTSTypePredicate(node: Node | null | undefined): node is TSTypePredicate;
+declare function isTSTypePredicate<Opts extends Options<TSTypePredicate>>(node: Node | null | undefined, opts?: Opts | null): node is TSTypePredicate & Opts;
+declare function isTSTypeQuery(node: Node | null | undefined): node is TSTypeQuery;
+declare function isTSTypeQuery<Opts extends Options<TSTypeQuery>>(node: Node | null | undefined, opts?: Opts | null): node is TSTypeQuery & Opts;
+declare function isTSTypeLiteral(node: Node | null | undefined): node is TSTypeLiteral;
+declare function isTSTypeLiteral<Opts extends Options<TSTypeLiteral>>(node: Node | null | undefined, opts?: Opts | null): node is TSTypeLiteral & Opts;
+declare function isTSArrayType(node: Node | null | undefined): node is TSArrayType;
+declare function isTSArrayType<Opts extends Options<TSArrayType>>(node: Node | null | undefined, opts?: Opts | null): node is TSArrayType & Opts;
+declare function isTSTupleType(node: Node | null | undefined): node is TSTupleType;
+declare function isTSTupleType<Opts extends Options<TSTupleType>>(node: Node | null | undefined, opts?: Opts | null): node is TSTupleType & Opts;
+declare function isTSOptionalType(node: Node | null | undefined): node is TSOptionalType;
+declare function isTSOptionalType<Opts extends Options<TSOptionalType>>(node: Node | null | undefined, opts?: Opts | null): node is TSOptionalType & Opts;
+declare function isTSRestType(node: Node | null | undefined): node is TSRestType;
+declare function isTSRestType<Opts extends Options<TSRestType>>(node: Node | null | undefined, opts?: Opts | null): node is TSRestType & Opts;
+declare function isTSNamedTupleMember(node: Node | null | undefined): node is TSNamedTupleMember;
+declare function isTSNamedTupleMember<Opts extends Options<TSNamedTupleMember>>(node: Node | null | undefined, opts?: Opts | null): node is TSNamedTupleMember & Opts;
+declare function isTSUnionType(node: Node | null | undefined): node is TSUnionType;
+declare function isTSUnionType<Opts extends Options<TSUnionType>>(node: Node | null | undefined, opts?: Opts | null): node is TSUnionType & Opts;
+declare function isTSIntersectionType(node: Node | null | undefined): node is TSIntersectionType;
+declare function isTSIntersectionType<Opts extends Options<TSIntersectionType>>(node: Node | null | undefined, opts?: Opts | null): node is TSIntersectionType & Opts;
+declare function isTSConditionalType(node: Node | null | undefined): node is TSConditionalType;
+declare function isTSConditionalType<Opts extends Options<TSConditionalType>>(node: Node | null | undefined, opts?: Opts | null): node is TSConditionalType & Opts;
+declare function isTSInferType(node: Node | null | undefined): node is TSInferType;
+declare function isTSInferType<Opts extends Options<TSInferType>>(node: Node | null | undefined, opts?: Opts | null): node is TSInferType & Opts;
+declare function isTSParenthesizedType(node: Node | null | undefined): node is TSParenthesizedType;
+declare function isTSParenthesizedType<Opts extends Options<TSParenthesizedType>>(node: Node | null | undefined, opts?: Opts | null): node is TSParenthesizedType & Opts;
+declare function isTSTypeOperator(node: Node | null | undefined): node is TSTypeOperator;
+declare function isTSTypeOperator<Opts extends Options<TSTypeOperator>>(node: Node | null | undefined, opts?: Opts | null): node is TSTypeOperator & Opts;
+declare function isTSIndexedAccessType(node: Node | null | undefined): node is TSIndexedAccessType;
+declare function isTSIndexedAccessType<Opts extends Options<TSIndexedAccessType>>(node: Node | null | undefined, opts?: Opts | null): node is TSIndexedAccessType & Opts;
+declare function isTSMappedType(node: Node | null | undefined): node is TSMappedType;
+declare function isTSMappedType<Opts extends Options<TSMappedType>>(node: Node | null | undefined, opts?: Opts | null): node is TSMappedType & Opts;
+declare function isTSTemplateLiteralType(node: Node | null | undefined): node is TSTemplateLiteralType;
+declare function isTSTemplateLiteralType<Opts extends Options<TSTemplateLiteralType>>(node: Node | null | undefined, opts?: Opts | null): node is TSTemplateLiteralType & Opts;
+declare function isTSLiteralType(node: Node | null | undefined): node is TSLiteralType;
+declare function isTSLiteralType<Opts extends Options<TSLiteralType>>(node: Node | null | undefined, opts?: Opts | null): node is TSLiteralType & Opts;
+declare function isTSExpressionWithTypeArguments(node: Node | null | undefined): node is TSExpressionWithTypeArguments;
+declare function isTSExpressionWithTypeArguments<Opts extends Options<TSExpressionWithTypeArguments>>(node: Node | null | undefined, opts?: Opts | null): node is TSExpressionWithTypeArguments & Opts;
+declare function isTSInterfaceDeclaration(node: Node | null | undefined): node is TSInterfaceDeclaration;
+declare function isTSInterfaceDeclaration<Opts extends Options<TSInterfaceDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is TSInterfaceDeclaration & Opts;
+declare function isTSInterfaceBody(node: Node | null | undefined): node is TSInterfaceBody;
+declare function isTSInterfaceBody<Opts extends Options<TSInterfaceBody>>(node: Node | null | undefined, opts?: Opts | null): node is TSInterfaceBody & Opts;
+declare function isTSTypeAliasDeclaration(node: Node | null | undefined): node is TSTypeAliasDeclaration;
+declare function isTSTypeAliasDeclaration<Opts extends Options<TSTypeAliasDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is TSTypeAliasDeclaration & Opts;
+declare function isTSInstantiationExpression(node: Node | null | undefined): node is TSInstantiationExpression;
+declare function isTSInstantiationExpression<Opts extends Options<TSInstantiationExpression>>(node: Node | null | undefined, opts?: Opts | null): node is TSInstantiationExpression & Opts;
+declare function isTSAsExpression(node: Node | null | undefined): node is TSAsExpression;
+declare function isTSAsExpression<Opts extends Options<TSAsExpression>>(node: Node | null | undefined, opts?: Opts | null): node is TSAsExpression & Opts;
+declare function isTSSatisfiesExpression(node: Node | null | undefined): node is TSSatisfiesExpression;
+declare function isTSSatisfiesExpression<Opts extends Options<TSSatisfiesExpression>>(node: Node | null | undefined, opts?: Opts | null): node is TSSatisfiesExpression & Opts;
+declare function isTSTypeAssertion(node: Node | null | undefined): node is TSTypeAssertion;
+declare function isTSTypeAssertion<Opts extends Options<TSTypeAssertion>>(node: Node | null | undefined, opts?: Opts | null): node is TSTypeAssertion & Opts;
+declare function isTSEnumBody(node: Node | null | undefined): node is TSEnumBody;
+declare function isTSEnumBody<Opts extends Options<TSEnumBody>>(node: Node | null | undefined, opts?: Opts | null): node is TSEnumBody & Opts;
+declare function isTSEnumDeclaration(node: Node | null | undefined): node is TSEnumDeclaration;
+declare function isTSEnumDeclaration<Opts extends Options<TSEnumDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is TSEnumDeclaration & Opts;
+declare function isTSEnumMember(node: Node | null | undefined): node is TSEnumMember;
+declare function isTSEnumMember<Opts extends Options<TSEnumMember>>(node: Node | null | undefined, opts?: Opts | null): node is TSEnumMember & Opts;
+declare function isTSModuleDeclaration(node: Node | null | undefined): node is TSModuleDeclaration;
+declare function isTSModuleDeclaration<Opts extends Options<TSModuleDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is TSModuleDeclaration & Opts;
+declare function isTSModuleBlock(node: Node | null | undefined): node is TSModuleBlock;
+declare function isTSModuleBlock<Opts extends Options<TSModuleBlock>>(node: Node | null | undefined, opts?: Opts | null): node is TSModuleBlock & Opts;
+declare function isTSImportType(node: Node | null | undefined): node is TSImportType;
+declare function isTSImportType<Opts extends Options<TSImportType>>(node: Node | null | undefined, opts?: Opts | null): node is TSImportType & Opts;
+declare function isTSImportEqualsDeclaration(node: Node | null | undefined): node is TSImportEqualsDeclaration;
+declare function isTSImportEqualsDeclaration<Opts extends Options<TSImportEqualsDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is TSImportEqualsDeclaration & Opts;
+declare function isTSExternalModuleReference(node: Node | null | undefined): node is TSExternalModuleReference;
+declare function isTSExternalModuleReference<Opts extends Options<TSExternalModuleReference>>(node: Node | null | undefined, opts?: Opts | null): node is TSExternalModuleReference & Opts;
+declare function isTSNonNullExpression(node: Node | null | undefined): node is TSNonNullExpression;
+declare function isTSNonNullExpression<Opts extends Options<TSNonNullExpression>>(node: Node | null | undefined, opts?: Opts | null): node is TSNonNullExpression & Opts;
+declare function isTSExportAssignment(node: Node | null | undefined): node is TSExportAssignment;
+declare function isTSExportAssignment<Opts extends Options<TSExportAssignment>>(node: Node | null | undefined, opts?: Opts | null): node is TSExportAssignment & Opts;
+declare function isTSNamespaceExportDeclaration(node: Node | null | undefined): node is TSNamespaceExportDeclaration;
+declare function isTSNamespaceExportDeclaration<Opts extends Options<TSNamespaceExportDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is TSNamespaceExportDeclaration & Opts;
+declare function isTSTypeAnnotation(node: Node | null | undefined): node is TSTypeAnnotation;
+declare function isTSTypeAnnotation<Opts extends Options<TSTypeAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is TSTypeAnnotation & Opts;
+declare function isTSTypeParameterInstantiation(node: Node | null | undefined): node is TSTypeParameterInstantiation;
+declare function isTSTypeParameterInstantiation<Opts extends Options<TSTypeParameterInstantiation>>(node: Node | null | undefined, opts?: Opts | null): node is TSTypeParameterInstantiation & Opts;
+declare function isTSTypeParameterDeclaration(node: Node | null | undefined): node is TSTypeParameterDeclaration;
+declare function isTSTypeParameterDeclaration<Opts extends Options<TSTypeParameterDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is TSTypeParameterDeclaration & Opts;
+declare function isTSTypeParameter(node: Node | null | undefined): node is TSTypeParameter;
+declare function isTSTypeParameter<Opts extends Options<TSTypeParameter>>(node: Node | null | undefined, opts?: Opts | null): node is TSTypeParameter & Opts;
+declare function isStandardized(node: Node | null | undefined): node is Standardized;
+declare function isStandardized<Opts extends Options<Standardized>>(node: Node | null | undefined, opts?: Opts | null): node is Standardized & Opts;
+declare function isExpression(node: Node | null | undefined): node is Expression;
+declare function isExpression<Opts extends Options<Expression>>(node: Node | null | undefined, opts?: Opts | null): node is Expression & Opts;
+declare function isBinary(node: Node | null | undefined): node is Binary;
+declare function isBinary<Opts extends Options<Binary>>(node: Node | null | undefined, opts?: Opts | null): node is Binary & Opts;
+declare function isScopable(node: Node | null | undefined): node is Scopable;
+declare function isScopable<Opts extends Options<Scopable>>(node: Node | null | undefined, opts?: Opts | null): node is Scopable & Opts;
+declare function isBlockParent(node: Node | null | undefined): node is BlockParent;
+declare function isBlockParent<Opts extends Options<BlockParent>>(node: Node | null | undefined, opts?: Opts | null): node is BlockParent & Opts;
+declare function isBlock(node: Node | null | undefined): node is Block;
+declare function isBlock<Opts extends Options<Block>>(node: Node | null | undefined, opts?: Opts | null): node is Block & Opts;
+declare function isStatement(node: Node | null | undefined): node is Statement;
+declare function isStatement<Opts extends Options<Statement>>(node: Node | null | undefined, opts?: Opts | null): node is Statement & Opts;
+declare function isTerminatorless(node: Node | null | undefined): node is Terminatorless;
+declare function isTerminatorless<Opts extends Options<Terminatorless>>(node: Node | null | undefined, opts?: Opts | null): node is Terminatorless & Opts;
+declare function isCompletionStatement(node: Node | null | undefined): node is CompletionStatement;
+declare function isCompletionStatement<Opts extends Options<CompletionStatement>>(node: Node | null | undefined, opts?: Opts | null): node is CompletionStatement & Opts;
+declare function isConditional(node: Node | null | undefined): node is Conditional;
+declare function isConditional<Opts extends Options<Conditional>>(node: Node | null | undefined, opts?: Opts | null): node is Conditional & Opts;
+declare function isLoop(node: Node | null | undefined): node is Loop;
+declare function isLoop<Opts extends Options<Loop>>(node: Node | null | undefined, opts?: Opts | null): node is Loop & Opts;
+declare function isWhile(node: Node | null | undefined): node is While;
+declare function isWhile<Opts extends Options<While>>(node: Node | null | undefined, opts?: Opts | null): node is While & Opts;
+declare function isExpressionWrapper(node: Node | null | undefined): node is ExpressionWrapper;
+declare function isExpressionWrapper<Opts extends Options<ExpressionWrapper>>(node: Node | null | undefined, opts?: Opts | null): node is ExpressionWrapper & Opts;
+declare function isFor(node: Node | null | undefined): node is For;
+declare function isFor<Opts extends Options<For>>(node: Node | null | undefined, opts?: Opts | null): node is For & Opts;
+declare function isForXStatement(node: Node | null | undefined): node is ForXStatement;
+declare function isForXStatement<Opts extends Options<ForXStatement>>(node: Node | null | undefined, opts?: Opts | null): node is ForXStatement & Opts;
+declare function isFunction(node: Node | null | undefined): node is Function;
+declare function isFunction<Opts extends Options<Function>>(node: Node | null | undefined, opts?: Opts | null): node is Function & Opts;
+declare function isFunctionParent(node: Node | null | undefined): node is FunctionParent;
+declare function isFunctionParent<Opts extends Options<FunctionParent>>(node: Node | null | undefined, opts?: Opts | null): node is FunctionParent & Opts;
+declare function isPureish(node: Node | null | undefined): node is Pureish;
+declare function isPureish<Opts extends Options<Pureish>>(node: Node | null | undefined, opts?: Opts | null): node is Pureish & Opts;
+declare function isDeclaration(node: Node | null | undefined): node is Declaration;
+declare function isDeclaration<Opts extends Options<Declaration>>(node: Node | null | undefined, opts?: Opts | null): node is Declaration & Opts;
+declare function isFunctionParameter(node: Node | null | undefined): node is FunctionParameter;
+declare function isFunctionParameter<Opts extends Options<FunctionParameter>>(node: Node | null | undefined, opts?: Opts | null): node is FunctionParameter & Opts;
+declare function isPatternLike(node: Node | null | undefined): node is PatternLike;
+declare function isPatternLike<Opts extends Options<PatternLike>>(node: Node | null | undefined, opts?: Opts | null): node is PatternLike & Opts;
+declare function isLVal(node: Node | null | undefined): node is LVal;
+declare function isLVal<Opts extends Options<LVal>>(node: Node | null | undefined, opts?: Opts | null): node is LVal & Opts;
+declare function isTSEntityName(node: Node | null | undefined): node is TSEntityName;
+declare function isTSEntityName<Opts extends Options<TSEntityName>>(node: Node | null | undefined, opts?: Opts | null): node is TSEntityName & Opts;
+declare function isLiteral(node: Node | null | undefined): node is Literal;
+declare function isLiteral<Opts extends Options<Literal>>(node: Node | null | undefined, opts?: Opts | null): node is Literal & Opts;
+declare function isUserWhitespacable(node: Node | null | undefined): node is UserWhitespacable;
+declare function isUserWhitespacable<Opts extends Options<UserWhitespacable>>(node: Node | null | undefined, opts?: Opts | null): node is UserWhitespacable & Opts;
+declare function isMethod(node: Node | null | undefined): node is Method;
+declare function isMethod<Opts extends Options<Method>>(node: Node | null | undefined, opts?: Opts | null): node is Method & Opts;
+declare function isObjectMember(node: Node | null | undefined): node is ObjectMember;
+declare function isObjectMember<Opts extends Options<ObjectMember>>(node: Node | null | undefined, opts?: Opts | null): node is ObjectMember & Opts;
+declare function isProperty(node: Node | null | undefined): node is Property;
+declare function isProperty<Opts extends Options<Property>>(node: Node | null | undefined, opts?: Opts | null): node is Property & Opts;
+declare function isUnaryLike(node: Node | null | undefined): node is UnaryLike;
+declare function isUnaryLike<Opts extends Options<UnaryLike>>(node: Node | null | undefined, opts?: Opts | null): node is UnaryLike & Opts;
+declare function isPattern(node: Node | null | undefined): node is Pattern;
+declare function isPattern<Opts extends Options<Pattern>>(node: Node | null | undefined, opts?: Opts | null): node is Pattern & Opts;
+declare function isClass(node: Node | null | undefined): node is Class;
+declare function isClass<Opts extends Options<Class>>(node: Node | null | undefined, opts?: Opts | null): node is Class & Opts;
+declare function isImportOrExportDeclaration(node: Node | null | undefined): node is ImportOrExportDeclaration;
+declare function isImportOrExportDeclaration<Opts extends Options<ImportOrExportDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is ImportOrExportDeclaration & Opts;
+declare function isExportDeclaration(node: Node | null | undefined): node is ExportDeclaration;
+declare function isExportDeclaration<Opts extends Options<ExportDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is ExportDeclaration & Opts;
+declare function isModuleSpecifier(node: Node | null | undefined): node is ModuleSpecifier;
+declare function isModuleSpecifier<Opts extends Options<ModuleSpecifier>>(node: Node | null | undefined, opts?: Opts | null): node is ModuleSpecifier & Opts;
+declare function isAccessor(node: Node | null | undefined): node is Accessor;
+declare function isAccessor<Opts extends Options<Accessor>>(node: Node | null | undefined, opts?: Opts | null): node is Accessor & Opts;
+declare function isPrivate(node: Node | null | undefined): node is Private;
+declare function isPrivate<Opts extends Options<Private>>(node: Node | null | undefined, opts?: Opts | null): node is Private & Opts;
+declare function isFlow(node: Node | null | undefined): node is Flow;
+declare function isFlow<Opts extends Options<Flow>>(node: Node | null | undefined, opts?: Opts | null): node is Flow & Opts;
+declare function isFlowType(node: Node | null | undefined): node is FlowType;
+declare function isFlowType<Opts extends Options<FlowType>>(node: Node | null | undefined, opts?: Opts | null): node is FlowType & Opts;
+declare function isFlowBaseAnnotation(node: Node | null | undefined): node is FlowBaseAnnotation;
+declare function isFlowBaseAnnotation<Opts extends Options<FlowBaseAnnotation>>(node: Node | null | undefined, opts?: Opts | null): node is FlowBaseAnnotation & Opts;
+declare function isFlowDeclaration(node: Node | null | undefined): node is FlowDeclaration;
+declare function isFlowDeclaration<Opts extends Options<FlowDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is FlowDeclaration & Opts;
+declare function isFlowPredicate(node: Node | null | undefined): node is FlowPredicate;
+declare function isFlowPredicate<Opts extends Options<FlowPredicate>>(node: Node | null | undefined, opts?: Opts | null): node is FlowPredicate & Opts;
+declare function isEnumBody(node: Node | null | undefined): node is EnumBody;
+declare function isEnumBody<Opts extends Options<EnumBody>>(node: Node | null | undefined, opts?: Opts | null): node is EnumBody & Opts;
+declare function isEnumMember(node: Node | null | undefined): node is EnumMember;
+declare function isEnumMember<Opts extends Options<EnumMember>>(node: Node | null | undefined, opts?: Opts | null): node is EnumMember & Opts;
+declare function isJSX(node: Node | null | undefined): node is JSX;
+declare function isJSX<Opts extends Options<JSX>>(node: Node | null | undefined, opts?: Opts | null): node is JSX & Opts;
+declare function isMiscellaneous(node: Node | null | undefined): node is Miscellaneous;
+declare function isMiscellaneous<Opts extends Options<Miscellaneous>>(node: Node | null | undefined, opts?: Opts | null): node is Miscellaneous & Opts;
+declare function isTypeScript(node: Node | null | undefined): node is TypeScript;
+declare function isTypeScript<Opts extends Options<TypeScript>>(node: Node | null | undefined, opts?: Opts | null): node is TypeScript & Opts;
+declare function isTSTypeElement(node: Node | null | undefined): node is TSTypeElement;
+declare function isTSTypeElement<Opts extends Options<TSTypeElement>>(node: Node | null | undefined, opts?: Opts | null): node is TSTypeElement & Opts;
+declare function isTSType(node: Node | null | undefined): node is TSType;
+declare function isTSType<Opts extends Options<TSType>>(node: Node | null | undefined, opts?: Opts | null): node is TSType & Opts;
+declare function isTSBaseType(node: Node | null | undefined): node is TSBaseType;
+declare function isTSBaseType<Opts extends Options<TSBaseType>>(node: Node | null | undefined, opts?: Opts | null): node is TSBaseType & Opts;
+/**
+ * @deprecated Use `isNumericLiteral`
+ */
+declare function isNumberLiteral(node: Node | null | undefined): boolean;
+declare function isNumberLiteral<Opts extends Options<NumberLiteral$1>>(node: Node | null | undefined, opts?: Opts | null): boolean;
+/**
+ * @deprecated Use `isRegExpLiteral`
+ */
+declare function isRegexLiteral(node: Node | null | undefined): boolean;
+declare function isRegexLiteral<Opts extends Options<RegexLiteral$1>>(node: Node | null | undefined, opts?: Opts | null): boolean;
+/**
+ * @deprecated Use `isRestElement`
+ */
+declare function isRestProperty(node: Node | null | undefined): boolean;
+declare function isRestProperty<Opts extends Options<RestProperty$1>>(node: Node | null | undefined, opts?: Opts | null): boolean;
+/**
+ * @deprecated Use `isSpreadElement`
+ */
+declare function isSpreadProperty(node: Node | null | undefined): boolean;
+declare function isSpreadProperty<Opts extends Options<SpreadProperty$1>>(node: Node | null | undefined, opts?: Opts | null): boolean;
+/**
+ * @deprecated Use `isImportOrExportDeclaration`
+ */
+declare function isModuleDeclaration<Opts extends Options<ModuleDeclaration>>(node: Node | null | undefined, opts?: Opts | null): node is ImportOrExportDeclaration & Opts;
+
+declare function deprecationWarning(oldName: string, newName: string, prefix?: string, cacheKey?: string): void;
+
+declare const react: {
+ isReactComponent: (member: Node) => boolean;
+ isCompatTag: typeof isCompatTag;
+ buildChildren: typeof buildChildren;
+};
+
+export { ACCESSOR_TYPES, ALIAS_KEYS, ASSIGNMENT_OPERATORS, Accessor, Aliases, AnyTypeAnnotation, ArgumentPlaceholder, ArrayExpression, ArrayPattern, ArrayTypeAnnotation, ArrowFunctionExpression, AssignmentExpression, AssignmentPattern, AwaitExpression, BINARY_OPERATORS, BINARY_TYPES, BLOCKPARENT_TYPES, BLOCK_TYPES, BOOLEAN_BINARY_OPERATORS, BOOLEAN_NUMBER_BINARY_OPERATORS, BOOLEAN_UNARY_OPERATORS, BUILDER_KEYS, BigIntLiteral, Binary, BinaryExpression, BindExpression, Block, BlockParent, BlockStatement, BooleanLiteral, BooleanLiteralTypeAnnotation, BooleanTypeAnnotation, BreakStatement, CLASS_TYPES, COMMENT_KEYS, COMPARISON_BINARY_OPERATORS, COMPLETIONSTATEMENT_TYPES, CONDITIONAL_TYPES, CallExpression, CatchClause, Class, ClassAccessorProperty, ClassBody, ClassDeclaration, ClassExpression, ClassImplements, ClassMethod, ClassPrivateMethod, ClassPrivateProperty, ClassProperty, Comment, CommentBlock, CommentLine, CommentTypeShorthand, CompletionStatement, Conditional, ConditionalExpression, ContinueStatement, DECLARATION_TYPES, DEPRECATED_ALIASES, DEPRECATED_KEYS, DebuggerStatement, DecimalLiteral, Declaration, DeclareClass, DeclareExportAllDeclaration, DeclareExportDeclaration, DeclareFunction, DeclareInterface, DeclareModule, DeclareModuleExports, DeclareOpaqueType, DeclareTypeAlias, DeclareVariable, DeclaredPredicate, Decorator, DeprecatedAliases, Directive, DirectiveLiteral, DoExpression, DoWhileStatement, ENUMBODY_TYPES, ENUMMEMBER_TYPES, EQUALITY_BINARY_OPERATORS, EXPORTDECLARATION_TYPES, EXPRESSIONWRAPPER_TYPES, EXPRESSION_TYPES, EmptyStatement, EmptyTypeAnnotation, EnumBody, EnumBooleanBody, EnumBooleanMember, EnumDeclaration, EnumDefaultedMember, EnumMember, EnumNumberBody, EnumNumberMember, EnumStringBody, EnumStringMember, EnumSymbolBody, ExistsTypeAnnotation, ExportAllDeclaration, ExportDeclaration, ExportDefaultDeclaration, ExportDefaultSpecifier, ExportNamedDeclaration, ExportNamespaceSpecifier, ExportSpecifier, Expression, ExpressionStatement, ExpressionWrapper, FLATTENABLE_KEYS, FLIPPED_ALIAS_KEYS, FLOWBASEANNOTATION_TYPES, FLOWDECLARATION_TYPES, FLOWPREDICATE_TYPES, FLOWTYPE_TYPES, FLOW_TYPES, FORXSTATEMENT_TYPES, FOR_INIT_KEYS, FOR_TYPES, FUNCTIONPARAMETER_TYPES, FUNCTIONPARENT_TYPES, FUNCTION_TYPES, FieldOptions, File, Flow, FlowBaseAnnotation, FlowDeclaration, FlowPredicate, FlowType, For, ForInStatement, ForOfStatement, ForStatement, ForXStatement, Function, FunctionDeclaration, FunctionExpression, FunctionParameter, FunctionParent, FunctionTypeAnnotation, FunctionTypeParam, GenericTypeAnnotation, IMMUTABLE_TYPES, IMPORTOREXPORTDECLARATION_TYPES, INHERIT_KEYS, Identifier, IfStatement, Immutable, Import, ImportAttribute, ImportDeclaration, ImportDefaultSpecifier, ImportExpression, ImportNamespaceSpecifier, ImportOrExportDeclaration, ImportSpecifier, IndexedAccessType, InferredPredicate, InterfaceDeclaration, InterfaceExtends, InterfaceTypeAnnotation, InterpreterDirective, IntersectionTypeAnnotation, JSX, JSXAttribute, JSXClosingElement, JSXClosingFragment, JSXElement, JSXEmptyExpression, JSXExpressionContainer, JSXFragment, JSXIdentifier, JSXMemberExpression, JSXNamespacedName, JSXOpeningElement, JSXOpeningFragment, JSXSpreadAttribute, JSXSpreadChild, JSXText, JSX_TYPES, LITERAL_TYPES, LOGICAL_OPERATORS, LOOP_TYPES, LVAL_TYPES, LVal, LabeledStatement, Literal, LogicalExpression, Loop, METHOD_TYPES, MISCELLANEOUS_TYPES, MODULEDECLARATION_TYPES, MODULESPECIFIER_TYPES, MemberExpression, MetaProperty, Method, Miscellaneous, MixedTypeAnnotation, ModuleDeclaration, ModuleExpression, ModuleSpecifier, NODE_FIELDS, NODE_PARENT_VALIDATIONS, NUMBER_BINARY_OPERATORS, NUMBER_UNARY_OPERATORS, NewExpression, Node, Noop, NullLiteral, NullLiteralTypeAnnotation, NullableTypeAnnotation, NumberLiteral$1 as NumberLiteral, NumberLiteralTypeAnnotation, NumberTypeAnnotation, NumericLiteral, OBJECTMEMBER_TYPES, ObjectExpression, ObjectMember, ObjectMethod, ObjectPattern, ObjectProperty, ObjectTypeAnnotation, ObjectTypeCallProperty, ObjectTypeIndexer, ObjectTypeInternalSlot, ObjectTypeProperty, ObjectTypeSpreadProperty, OpaqueType, OptionalCallExpression, OptionalIndexedAccessType, OptionalMemberExpression, PATTERNLIKE_TYPES, PATTERN_TYPES, PLACEHOLDERS, PLACEHOLDERS_ALIAS, PLACEHOLDERS_FLIPPED_ALIAS, PRIVATE_TYPES, PROPERTY_TYPES, PUREISH_TYPES, ParentMaps, ParenthesizedExpression, Pattern, PatternLike, PipelineBareFunction, PipelinePrimaryTopicReference, PipelineTopicExpression, Placeholder, Private, PrivateName, Program, Property, Pureish, QualifiedTypeIdentifier, RecordExpression, RegExpLiteral, RegexLiteral$1 as RegexLiteral, Options$1 as RemovePropertiesOptions, RestElement, RestProperty$1 as RestProperty, ReturnStatement, SCOPABLE_TYPES, STANDARDIZED_TYPES, STATEMENT_OR_BLOCK_KEYS, STATEMENT_TYPES, STRING_UNARY_OPERATORS, Scopable, SequenceExpression, SourceLocation, SpreadElement, SpreadProperty$1 as SpreadProperty, Standardized, Statement, StaticBlock, StringLiteral, StringLiteralTypeAnnotation, StringTypeAnnotation, Super, SwitchCase, SwitchStatement, SymbolTypeAnnotation, TERMINATORLESS_TYPES, TSAnyKeyword, TSArrayType, TSAsExpression, TSBASETYPE_TYPES, TSBaseType, TSBigIntKeyword, TSBooleanKeyword, TSCallSignatureDeclaration, TSConditionalType, TSConstructSignatureDeclaration, TSConstructorType, TSDeclareFunction, TSDeclareMethod, TSENTITYNAME_TYPES, TSEntityName, TSEnumBody, TSEnumDeclaration, TSEnumMember, TSExportAssignment, TSExpressionWithTypeArguments, TSExternalModuleReference, TSFunctionType, TSImportEqualsDeclaration, TSImportType, TSIndexSignature, TSIndexedAccessType, TSInferType, TSInstantiationExpression, TSInterfaceBody, TSInterfaceDeclaration, TSIntersectionType, TSIntrinsicKeyword, TSLiteralType, TSMappedType, TSMethodSignature, TSModuleBlock, TSModuleDeclaration, TSNamedTupleMember, TSNamespaceExportDeclaration, TSNeverKeyword, TSNonNullExpression, TSNullKeyword, TSNumberKeyword, TSObjectKeyword, TSOptionalType, TSParameterProperty, TSParenthesizedType, TSPropertySignature, TSQualifiedName, TSRestType, TSSatisfiesExpression, TSStringKeyword, TSSymbolKeyword, TSTYPEELEMENT_TYPES, TSTYPE_TYPES, TSTemplateLiteralType, TSThisType, TSTupleType, TSType, TSTypeAliasDeclaration, TSTypeAnnotation, TSTypeAssertion, TSTypeElement, TSTypeLiteral, TSTypeOperator, TSTypeParameter, TSTypeParameterDeclaration, TSTypeParameterInstantiation, TSTypePredicate, TSTypeQuery, TSTypeReference, TSUndefinedKeyword, TSUnionType, TSUnknownKeyword, TSVoidKeyword, TYPES, TYPESCRIPT_TYPES, TaggedTemplateExpression, TemplateElement, TemplateLiteral, Terminatorless, ThisExpression, ThisTypeAnnotation, ThrowStatement, TopicReference, TraversalAncestors, TraversalHandler, TraversalHandlers, TryStatement, TupleExpression, TupleTypeAnnotation, TypeAlias, TypeAnnotation, TypeCastExpression, TypeParameter, TypeParameterDeclaration, TypeParameterInstantiation, TypeScript, TypeofTypeAnnotation, UNARYLIKE_TYPES, UNARY_OPERATORS, UPDATE_OPERATORS, USERWHITESPACABLE_TYPES, UnaryExpression, UnaryLike, UnionTypeAnnotation, UpdateExpression, UserWhitespacable, V8IntrinsicIdentifier, VISITOR_KEYS, VariableDeclaration, VariableDeclarator, Variance, VoidPattern, VoidTypeAnnotation, WHILE_TYPES, While, WhileStatement, WithStatement, YieldExpression, deprecationWarning as __internal__deprecationWarning, addComment, addComments, anyTypeAnnotation, appendToMemberExpression, argumentPlaceholder, arrayExpression, arrayPattern, arrayTypeAnnotation, arrowFunctionExpression, assertAccessor, assertAnyTypeAnnotation, assertArgumentPlaceholder, assertArrayExpression, assertArrayPattern, assertArrayTypeAnnotation, assertArrowFunctionExpression, assertAssignmentExpression, assertAssignmentPattern, assertAwaitExpression, assertBigIntLiteral, assertBinary, assertBinaryExpression, assertBindExpression, assertBlock, assertBlockParent, assertBlockStatement, assertBooleanLiteral, assertBooleanLiteralTypeAnnotation, assertBooleanTypeAnnotation, assertBreakStatement, assertCallExpression, assertCatchClause, assertClass, assertClassAccessorProperty, assertClassBody, assertClassDeclaration, assertClassExpression, assertClassImplements, assertClassMethod, assertClassPrivateMethod, assertClassPrivateProperty, assertClassProperty, assertCompletionStatement, assertConditional, assertConditionalExpression, assertContinueStatement, assertDebuggerStatement, assertDecimalLiteral, assertDeclaration, assertDeclareClass, assertDeclareExportAllDeclaration, assertDeclareExportDeclaration, assertDeclareFunction, assertDeclareInterface, assertDeclareModule, assertDeclareModuleExports, assertDeclareOpaqueType, assertDeclareTypeAlias, assertDeclareVariable, assertDeclaredPredicate, assertDecorator, assertDirective, assertDirectiveLiteral, assertDoExpression, assertDoWhileStatement, assertEmptyStatement, assertEmptyTypeAnnotation, assertEnumBody, assertEnumBooleanBody, assertEnumBooleanMember, assertEnumDeclaration, assertEnumDefaultedMember, assertEnumMember, assertEnumNumberBody, assertEnumNumberMember, assertEnumStringBody, assertEnumStringMember, assertEnumSymbolBody, assertExistsTypeAnnotation, assertExportAllDeclaration, assertExportDeclaration, assertExportDefaultDeclaration, assertExportDefaultSpecifier, assertExportNamedDeclaration, assertExportNamespaceSpecifier, assertExportSpecifier, assertExpression, assertExpressionStatement, assertExpressionWrapper, assertFile, assertFlow, assertFlowBaseAnnotation, assertFlowDeclaration, assertFlowPredicate, assertFlowType, assertFor, assertForInStatement, assertForOfStatement, assertForStatement, assertForXStatement, assertFunction, assertFunctionDeclaration, assertFunctionExpression, assertFunctionParameter, assertFunctionParent, assertFunctionTypeAnnotation, assertFunctionTypeParam, assertGenericTypeAnnotation, assertIdentifier, assertIfStatement, assertImmutable, assertImport, assertImportAttribute, assertImportDeclaration, assertImportDefaultSpecifier, assertImportExpression, assertImportNamespaceSpecifier, assertImportOrExportDeclaration, assertImportSpecifier, assertIndexedAccessType, assertInferredPredicate, assertInterfaceDeclaration, assertInterfaceExtends, assertInterfaceTypeAnnotation, assertInterpreterDirective, assertIntersectionTypeAnnotation, assertJSX, assertJSXAttribute, assertJSXClosingElement, assertJSXClosingFragment, assertJSXElement, assertJSXEmptyExpression, assertJSXExpressionContainer, assertJSXFragment, assertJSXIdentifier, assertJSXMemberExpression, assertJSXNamespacedName, assertJSXOpeningElement, assertJSXOpeningFragment, assertJSXSpreadAttribute, assertJSXSpreadChild, assertJSXText, assertLVal, assertLabeledStatement, assertLiteral, assertLogicalExpression, assertLoop, assertMemberExpression, assertMetaProperty, assertMethod, assertMiscellaneous, assertMixedTypeAnnotation, assertModuleDeclaration, assertModuleExpression, assertModuleSpecifier, assertNewExpression, assertNode, assertNoop, assertNullLiteral, assertNullLiteralTypeAnnotation, assertNullableTypeAnnotation, assertNumberLiteral, assertNumberLiteralTypeAnnotation, assertNumberTypeAnnotation, assertNumericLiteral, assertObjectExpression, assertObjectMember, assertObjectMethod, assertObjectPattern, assertObjectProperty, assertObjectTypeAnnotation, assertObjectTypeCallProperty, assertObjectTypeIndexer, assertObjectTypeInternalSlot, assertObjectTypeProperty, assertObjectTypeSpreadProperty, assertOpaqueType, assertOptionalCallExpression, assertOptionalIndexedAccessType, assertOptionalMemberExpression, assertParenthesizedExpression, assertPattern, assertPatternLike, assertPipelineBareFunction, assertPipelinePrimaryTopicReference, assertPipelineTopicExpression, assertPlaceholder, assertPrivate, assertPrivateName, assertProgram, assertProperty, assertPureish, assertQualifiedTypeIdentifier, assertRecordExpression, assertRegExpLiteral, assertRegexLiteral, assertRestElement, assertRestProperty, assertReturnStatement, assertScopable, assertSequenceExpression, assertSpreadElement, assertSpreadProperty, assertStandardized, assertStatement, assertStaticBlock, assertStringLiteral, assertStringLiteralTypeAnnotation, assertStringTypeAnnotation, assertSuper, assertSwitchCase, assertSwitchStatement, assertSymbolTypeAnnotation, assertTSAnyKeyword, assertTSArrayType, assertTSAsExpression, assertTSBaseType, assertTSBigIntKeyword, assertTSBooleanKeyword, assertTSCallSignatureDeclaration, assertTSConditionalType, assertTSConstructSignatureDeclaration, assertTSConstructorType, assertTSDeclareFunction, assertTSDeclareMethod, assertTSEntityName, assertTSEnumBody, assertTSEnumDeclaration, assertTSEnumMember, assertTSExportAssignment, assertTSExpressionWithTypeArguments, assertTSExternalModuleReference, assertTSFunctionType, assertTSImportEqualsDeclaration, assertTSImportType, assertTSIndexSignature, assertTSIndexedAccessType, assertTSInferType, assertTSInstantiationExpression, assertTSInterfaceBody, assertTSInterfaceDeclaration, assertTSIntersectionType, assertTSIntrinsicKeyword, assertTSLiteralType, assertTSMappedType, assertTSMethodSignature, assertTSModuleBlock, assertTSModuleDeclaration, assertTSNamedTupleMember, assertTSNamespaceExportDeclaration, assertTSNeverKeyword, assertTSNonNullExpression, assertTSNullKeyword, assertTSNumberKeyword, assertTSObjectKeyword, assertTSOptionalType, assertTSParameterProperty, assertTSParenthesizedType, assertTSPropertySignature, assertTSQualifiedName, assertTSRestType, assertTSSatisfiesExpression, assertTSStringKeyword, assertTSSymbolKeyword, assertTSTemplateLiteralType, assertTSThisType, assertTSTupleType, assertTSType, assertTSTypeAliasDeclaration, assertTSTypeAnnotation, assertTSTypeAssertion, assertTSTypeElement, assertTSTypeLiteral, assertTSTypeOperator, assertTSTypeParameter, assertTSTypeParameterDeclaration, assertTSTypeParameterInstantiation, assertTSTypePredicate, assertTSTypeQuery, assertTSTypeReference, assertTSUndefinedKeyword, assertTSUnionType, assertTSUnknownKeyword, assertTSVoidKeyword, assertTaggedTemplateExpression, assertTemplateElement, assertTemplateLiteral, assertTerminatorless, assertThisExpression, assertThisTypeAnnotation, assertThrowStatement, assertTopicReference, assertTryStatement, assertTupleExpression, assertTupleTypeAnnotation, assertTypeAlias, assertTypeAnnotation, assertTypeCastExpression, assertTypeParameter, assertTypeParameterDeclaration, assertTypeParameterInstantiation, assertTypeScript, assertTypeofTypeAnnotation, assertUnaryExpression, assertUnaryLike, assertUnionTypeAnnotation, assertUpdateExpression, assertUserWhitespacable, assertV8IntrinsicIdentifier, assertVariableDeclaration, assertVariableDeclarator, assertVariance, assertVoidPattern, assertVoidTypeAnnotation, assertWhile, assertWhileStatement, assertWithStatement, assertYieldExpression, assignmentExpression, assignmentPattern, awaitExpression, bigIntLiteral, binaryExpression, bindExpression, blockStatement, booleanLiteral, booleanLiteralTypeAnnotation, booleanTypeAnnotation, breakStatement, buildMatchMemberExpression, buildUndefinedNode, callExpression, catchClause, classAccessorProperty, classBody, classDeclaration, classExpression, classImplements, classMethod, classPrivateMethod, classPrivateProperty, classProperty, clone, cloneDeep, cloneDeepWithoutLoc, cloneNode, cloneWithoutLoc, conditionalExpression, continueStatement, createFlowUnionType, createTSUnionType, _default$4 as createTypeAnnotationBasedOnTypeof, createFlowUnionType as createUnionTypeAnnotation, debuggerStatement, decimalLiteral, declareClass, declareExportAllDeclaration, declareExportDeclaration, declareFunction, declareInterface, declareModule, declareModuleExports, declareOpaqueType, declareTypeAlias, declareVariable, declaredPredicate, decorator, directive, directiveLiteral, doExpression, doWhileStatement, emptyStatement, emptyTypeAnnotation, ensureBlock, enumBooleanBody, enumBooleanMember, enumDeclaration, enumDefaultedMember, enumNumberBody, enumNumberMember, enumStringBody, enumStringMember, enumSymbolBody, existsTypeAnnotation, exportAllDeclaration, exportDefaultDeclaration, exportDefaultSpecifier, exportNamedDeclaration, exportNamespaceSpecifier, exportSpecifier, expressionStatement, file, forInStatement, forOfStatement, forStatement, functionDeclaration, functionExpression, functionTypeAnnotation, functionTypeParam, genericTypeAnnotation, getAssignmentIdentifiers, getBindingIdentifiers, getFunctionName, _default as getOuterBindingIdentifiers, identifier, ifStatement, _import as import, importAttribute, importDeclaration, importDefaultSpecifier, importExpression, importNamespaceSpecifier, importSpecifier, indexedAccessType, inferredPredicate, inheritInnerComments, inheritLeadingComments, inheritTrailingComments, inherits, inheritsComments, interfaceDeclaration, interfaceExtends, interfaceTypeAnnotation, interpreterDirective, intersectionTypeAnnotation, is, isAccessor, isAnyTypeAnnotation, isArgumentPlaceholder, isArrayExpression, isArrayPattern, isArrayTypeAnnotation, isArrowFunctionExpression, isAssignmentExpression, isAssignmentPattern, isAwaitExpression, isBigIntLiteral, isBinary, isBinaryExpression, isBindExpression, isBinding, isBlock, isBlockParent, isBlockScoped, isBlockStatement, isBooleanLiteral, isBooleanLiteralTypeAnnotation, isBooleanTypeAnnotation, isBreakStatement, isCallExpression, isCatchClause, isClass, isClassAccessorProperty, isClassBody, isClassDeclaration, isClassExpression, isClassImplements, isClassMethod, isClassPrivateMethod, isClassPrivateProperty, isClassProperty, isCompletionStatement, isConditional, isConditionalExpression, isContinueStatement, isDebuggerStatement, isDecimalLiteral, isDeclaration, isDeclareClass, isDeclareExportAllDeclaration, isDeclareExportDeclaration, isDeclareFunction, isDeclareInterface, isDeclareModule, isDeclareModuleExports, isDeclareOpaqueType, isDeclareTypeAlias, isDeclareVariable, isDeclaredPredicate, isDecorator, isDirective, isDirectiveLiteral, isDoExpression, isDoWhileStatement, isEmptyStatement, isEmptyTypeAnnotation, isEnumBody, isEnumBooleanBody, isEnumBooleanMember, isEnumDeclaration, isEnumDefaultedMember, isEnumMember, isEnumNumberBody, isEnumNumberMember, isEnumStringBody, isEnumStringMember, isEnumSymbolBody, isExistsTypeAnnotation, isExportAllDeclaration, isExportDeclaration, isExportDefaultDeclaration, isExportDefaultSpecifier, isExportNamedDeclaration, isExportNamespaceSpecifier, isExportSpecifier, isExpression, isExpressionStatement, isExpressionWrapper, isFile, isFlow, isFlowBaseAnnotation, isFlowDeclaration, isFlowPredicate, isFlowType, isFor, isForInStatement, isForOfStatement, isForStatement, isForXStatement, isFunction, isFunctionDeclaration, isFunctionExpression, isFunctionParameter, isFunctionParent, isFunctionTypeAnnotation, isFunctionTypeParam, isGenericTypeAnnotation, isIdentifier, isIfStatement, isImmutable, isImport, isImportAttribute, isImportDeclaration, isImportDefaultSpecifier, isImportExpression, isImportNamespaceSpecifier, isImportOrExportDeclaration, isImportSpecifier, isIndexedAccessType, isInferredPredicate, isInterfaceDeclaration, isInterfaceExtends, isInterfaceTypeAnnotation, isInterpreterDirective, isIntersectionTypeAnnotation, isJSX, isJSXAttribute, isJSXClosingElement, isJSXClosingFragment, isJSXElement, isJSXEmptyExpression, isJSXExpressionContainer, isJSXFragment, isJSXIdentifier, isJSXMemberExpression, isJSXNamespacedName, isJSXOpeningElement, isJSXOpeningFragment, isJSXSpreadAttribute, isJSXSpreadChild, isJSXText, isLVal, isLabeledStatement, isLet, isLiteral, isLogicalExpression, isLoop, isMemberExpression, isMetaProperty, isMethod, isMiscellaneous, isMixedTypeAnnotation, isModuleDeclaration, isModuleExpression, isModuleSpecifier, isNewExpression, isNode, isNodesEquivalent, isNoop, isNullLiteral, isNullLiteralTypeAnnotation, isNullableTypeAnnotation, isNumberLiteral, isNumberLiteralTypeAnnotation, isNumberTypeAnnotation, isNumericLiteral, isObjectExpression, isObjectMember, isObjectMethod, isObjectPattern, isObjectProperty, isObjectTypeAnnotation, isObjectTypeCallProperty, isObjectTypeIndexer, isObjectTypeInternalSlot, isObjectTypeProperty, isObjectTypeSpreadProperty, isOpaqueType, isOptionalCallExpression, isOptionalIndexedAccessType, isOptionalMemberExpression, isParenthesizedExpression, isPattern, isPatternLike, isPipelineBareFunction, isPipelinePrimaryTopicReference, isPipelineTopicExpression, isPlaceholder, isPlaceholderType, isPrivate, isPrivateName, isProgram, isProperty, isPureish, isQualifiedTypeIdentifier, isRecordExpression, isReferenced, isRegExpLiteral, isRegexLiteral, isRestElement, isRestProperty, isReturnStatement, isScopable, isScope, isSequenceExpression, isSpecifierDefault, isSpreadElement, isSpreadProperty, isStandardized, isStatement, isStaticBlock, isStringLiteral, isStringLiteralTypeAnnotation, isStringTypeAnnotation, isSuper, isSwitchCase, isSwitchStatement, isSymbolTypeAnnotation, isTSAnyKeyword, isTSArrayType, isTSAsExpression, isTSBaseType, isTSBigIntKeyword, isTSBooleanKeyword, isTSCallSignatureDeclaration, isTSConditionalType, isTSConstructSignatureDeclaration, isTSConstructorType, isTSDeclareFunction, isTSDeclareMethod, isTSEntityName, isTSEnumBody, isTSEnumDeclaration, isTSEnumMember, isTSExportAssignment, isTSExpressionWithTypeArguments, isTSExternalModuleReference, isTSFunctionType, isTSImportEqualsDeclaration, isTSImportType, isTSIndexSignature, isTSIndexedAccessType, isTSInferType, isTSInstantiationExpression, isTSInterfaceBody, isTSInterfaceDeclaration, isTSIntersectionType, isTSIntrinsicKeyword, isTSLiteralType, isTSMappedType, isTSMethodSignature, isTSModuleBlock, isTSModuleDeclaration, isTSNamedTupleMember, isTSNamespaceExportDeclaration, isTSNeverKeyword, isTSNonNullExpression, isTSNullKeyword, isTSNumberKeyword, isTSObjectKeyword, isTSOptionalType, isTSParameterProperty, isTSParenthesizedType, isTSPropertySignature, isTSQualifiedName, isTSRestType, isTSSatisfiesExpression, isTSStringKeyword, isTSSymbolKeyword, isTSTemplateLiteralType, isTSThisType, isTSTupleType, isTSType, isTSTypeAliasDeclaration, isTSTypeAnnotation, isTSTypeAssertion, isTSTypeElement, isTSTypeLiteral, isTSTypeOperator, isTSTypeParameter, isTSTypeParameterDeclaration, isTSTypeParameterInstantiation, isTSTypePredicate, isTSTypeQuery, isTSTypeReference, isTSUndefinedKeyword, isTSUnionType, isTSUnknownKeyword, isTSVoidKeyword, isTaggedTemplateExpression, isTemplateElement, isTemplateLiteral, isTerminatorless, isThisExpression, isThisTypeAnnotation, isThrowStatement, isTopicReference, isTryStatement, isTupleExpression, isTupleTypeAnnotation, isType, isTypeAlias, isTypeAnnotation, isTypeCastExpression, isTypeParameter, isTypeParameterDeclaration, isTypeParameterInstantiation, isTypeScript, isTypeofTypeAnnotation, isUnaryExpression, isUnaryLike, isUnionTypeAnnotation, isUpdateExpression, isUserWhitespacable, isV8IntrinsicIdentifier, isValidES3Identifier, isValidIdentifier, isVar, isVariableDeclaration, isVariableDeclarator, isVariance, isVoidPattern, isVoidTypeAnnotation, isWhile, isWhileStatement, isWithStatement, isYieldExpression, jsxAttribute as jSXAttribute, jsxClosingElement as jSXClosingElement, jsxClosingFragment as jSXClosingFragment, jsxElement as jSXElement, jsxEmptyExpression as jSXEmptyExpression, jsxExpressionContainer as jSXExpressionContainer, jsxFragment as jSXFragment, jsxIdentifier as jSXIdentifier, jsxMemberExpression as jSXMemberExpression, jsxNamespacedName as jSXNamespacedName, jsxOpeningElement as jSXOpeningElement, jsxOpeningFragment as jSXOpeningFragment, jsxSpreadAttribute as jSXSpreadAttribute, jsxSpreadChild as jSXSpreadChild, jsxText as jSXText, jsxAttribute, jsxClosingElement, jsxClosingFragment, jsxElement, jsxEmptyExpression, jsxExpressionContainer, jsxFragment, jsxIdentifier, jsxMemberExpression, jsxNamespacedName, jsxOpeningElement, jsxOpeningFragment, jsxSpreadAttribute, jsxSpreadChild, jsxText, labeledStatement, logicalExpression, matchesPattern, memberExpression, metaProperty, mixedTypeAnnotation, moduleExpression, newExpression, noop, nullLiteral, nullLiteralTypeAnnotation, nullableTypeAnnotation, NumberLiteral as numberLiteral, numberLiteralTypeAnnotation, numberTypeAnnotation, numericLiteral, objectExpression, objectMethod, objectPattern, objectProperty, objectTypeAnnotation, objectTypeCallProperty, objectTypeIndexer, objectTypeInternalSlot, objectTypeProperty, objectTypeSpreadProperty, opaqueType, optionalCallExpression, optionalIndexedAccessType, optionalMemberExpression, parenthesizedExpression, pipelineBareFunction, pipelinePrimaryTopicReference, pipelineTopicExpression, placeholder, prependToMemberExpression, privateName, program, qualifiedTypeIdentifier, react, recordExpression, regExpLiteral, RegexLiteral as regexLiteral, removeComments, removeProperties, removePropertiesDeep, removeTypeDuplicates, restElement, RestProperty as restProperty, returnStatement, sequenceExpression, shallowEqual, spreadElement, SpreadProperty as spreadProperty, staticBlock, stringLiteral, stringLiteralTypeAnnotation, stringTypeAnnotation, _super as super, switchCase, switchStatement, symbolTypeAnnotation, tsAnyKeyword as tSAnyKeyword, tsArrayType as tSArrayType, tsAsExpression as tSAsExpression, tsBigIntKeyword as tSBigIntKeyword, tsBooleanKeyword as tSBooleanKeyword, tsCallSignatureDeclaration as tSCallSignatureDeclaration, tsConditionalType as tSConditionalType, tsConstructSignatureDeclaration as tSConstructSignatureDeclaration, tsConstructorType as tSConstructorType, tsDeclareFunction as tSDeclareFunction, tsDeclareMethod as tSDeclareMethod, tsEnumBody as tSEnumBody, tsEnumDeclaration as tSEnumDeclaration, tsEnumMember as tSEnumMember, tsExportAssignment as tSExportAssignment, tsExpressionWithTypeArguments as tSExpressionWithTypeArguments, tsExternalModuleReference as tSExternalModuleReference, tsFunctionType as tSFunctionType, tsImportEqualsDeclaration as tSImportEqualsDeclaration, tsImportType as tSImportType, tsIndexSignature as tSIndexSignature, tsIndexedAccessType as tSIndexedAccessType, tsInferType as tSInferType, tsInstantiationExpression as tSInstantiationExpression, tsInterfaceBody as tSInterfaceBody, tsInterfaceDeclaration as tSInterfaceDeclaration, tsIntersectionType as tSIntersectionType, tsIntrinsicKeyword as tSIntrinsicKeyword, tsLiteralType as tSLiteralType, tsMappedType as tSMappedType, tsMethodSignature as tSMethodSignature, tsModuleBlock as tSModuleBlock, tsModuleDeclaration as tSModuleDeclaration, tsNamedTupleMember as tSNamedTupleMember, tsNamespaceExportDeclaration as tSNamespaceExportDeclaration, tsNeverKeyword as tSNeverKeyword, tsNonNullExpression as tSNonNullExpression, tsNullKeyword as tSNullKeyword, tsNumberKeyword as tSNumberKeyword, tsObjectKeyword as tSObjectKeyword, tsOptionalType as tSOptionalType, tsParameterProperty as tSParameterProperty, tsParenthesizedType as tSParenthesizedType, tsPropertySignature as tSPropertySignature, tsQualifiedName as tSQualifiedName, tsRestType as tSRestType, tsSatisfiesExpression as tSSatisfiesExpression, tsStringKeyword as tSStringKeyword, tsSymbolKeyword as tSSymbolKeyword, tsTemplateLiteralType as tSTemplateLiteralType, tsThisType as tSThisType, tsTupleType as tSTupleType, tsTypeAliasDeclaration as tSTypeAliasDeclaration, tsTypeAnnotation as tSTypeAnnotation, tsTypeAssertion as tSTypeAssertion, tsTypeLiteral as tSTypeLiteral, tsTypeOperator as tSTypeOperator, tsTypeParameter as tSTypeParameter, tsTypeParameterDeclaration as tSTypeParameterDeclaration, tsTypeParameterInstantiation as tSTypeParameterInstantiation, tsTypePredicate as tSTypePredicate, tsTypeQuery as tSTypeQuery, tsTypeReference as tSTypeReference, tsUndefinedKeyword as tSUndefinedKeyword, tsUnionType as tSUnionType, tsUnknownKeyword as tSUnknownKeyword, tsVoidKeyword as tSVoidKeyword, taggedTemplateExpression, templateElement, templateLiteral, thisExpression, thisTypeAnnotation, throwStatement, toBindingIdentifierName, toBlock, toComputedKey, _default$3 as toExpression, toIdentifier, toKeyAlias, _default$2 as toStatement, topicReference, traverse, traverseFast, tryStatement, tsAnyKeyword, tsArrayType, tsAsExpression, tsBigIntKeyword, tsBooleanKeyword, tsCallSignatureDeclaration, tsConditionalType, tsConstructSignatureDeclaration, tsConstructorType, tsDeclareFunction, tsDeclareMethod, tsEnumBody, tsEnumDeclaration, tsEnumMember, tsExportAssignment, tsExpressionWithTypeArguments, tsExternalModuleReference, tsFunctionType, tsImportEqualsDeclaration, tsImportType, tsIndexSignature, tsIndexedAccessType, tsInferType, tsInstantiationExpression, tsInterfaceBody, tsInterfaceDeclaration, tsIntersectionType, tsIntrinsicKeyword, tsLiteralType, tsMappedType, tsMethodSignature, tsModuleBlock, tsModuleDeclaration, tsNamedTupleMember, tsNamespaceExportDeclaration, tsNeverKeyword, tsNonNullExpression, tsNullKeyword, tsNumberKeyword, tsObjectKeyword, tsOptionalType, tsParameterProperty, tsParenthesizedType, tsPropertySignature, tsQualifiedName, tsRestType, tsSatisfiesExpression, tsStringKeyword, tsSymbolKeyword, tsTemplateLiteralType, tsThisType, tsTupleType, tsTypeAliasDeclaration, tsTypeAnnotation, tsTypeAssertion, tsTypeLiteral, tsTypeOperator, tsTypeParameter, tsTypeParameterDeclaration, tsTypeParameterInstantiation, tsTypePredicate, tsTypeQuery, tsTypeReference, tsUndefinedKeyword, tsUnionType, tsUnknownKeyword, tsVoidKeyword, tupleExpression, tupleTypeAnnotation, typeAlias, typeAnnotation, typeCastExpression, typeParameter, typeParameterDeclaration, typeParameterInstantiation, typeofTypeAnnotation, unaryExpression, unionTypeAnnotation, updateExpression, v8IntrinsicIdentifier, validate, _default$1 as valueToNode, variableDeclaration, variableDeclarator, variance, voidPattern, voidTypeAnnotation, whileStatement, withStatement, yieldExpression };
diff --git a/vanilla/node_modules/@babel/types/lib/index.js b/vanilla/node_modules/@babel/types/lib/index.js
new file mode 100644
index 0000000..3d1c187
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/index.js
@@ -0,0 +1,582 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+var _exportNames = {
+ react: true,
+ assertNode: true,
+ createTypeAnnotationBasedOnTypeof: true,
+ createUnionTypeAnnotation: true,
+ createFlowUnionType: true,
+ createTSUnionType: true,
+ cloneNode: true,
+ clone: true,
+ cloneDeep: true,
+ cloneDeepWithoutLoc: true,
+ cloneWithoutLoc: true,
+ addComment: true,
+ addComments: true,
+ inheritInnerComments: true,
+ inheritLeadingComments: true,
+ inheritsComments: true,
+ inheritTrailingComments: true,
+ removeComments: true,
+ ensureBlock: true,
+ toBindingIdentifierName: true,
+ toBlock: true,
+ toComputedKey: true,
+ toExpression: true,
+ toIdentifier: true,
+ toKeyAlias: true,
+ toStatement: true,
+ valueToNode: true,
+ appendToMemberExpression: true,
+ inherits: true,
+ prependToMemberExpression: true,
+ removeProperties: true,
+ removePropertiesDeep: true,
+ removeTypeDuplicates: true,
+ getAssignmentIdentifiers: true,
+ getBindingIdentifiers: true,
+ getOuterBindingIdentifiers: true,
+ getFunctionName: true,
+ traverse: true,
+ traverseFast: true,
+ shallowEqual: true,
+ is: true,
+ isBinding: true,
+ isBlockScoped: true,
+ isImmutable: true,
+ isLet: true,
+ isNode: true,
+ isNodesEquivalent: true,
+ isPlaceholderType: true,
+ isReferenced: true,
+ isScope: true,
+ isSpecifierDefault: true,
+ isType: true,
+ isValidES3Identifier: true,
+ isValidIdentifier: true,
+ isVar: true,
+ matchesPattern: true,
+ validate: true,
+ buildMatchMemberExpression: true,
+ __internal__deprecationWarning: true
+};
+Object.defineProperty(exports, "__internal__deprecationWarning", {
+ enumerable: true,
+ get: function () {
+ return _deprecationWarning.default;
+ }
+});
+Object.defineProperty(exports, "addComment", {
+ enumerable: true,
+ get: function () {
+ return _addComment.default;
+ }
+});
+Object.defineProperty(exports, "addComments", {
+ enumerable: true,
+ get: function () {
+ return _addComments.default;
+ }
+});
+Object.defineProperty(exports, "appendToMemberExpression", {
+ enumerable: true,
+ get: function () {
+ return _appendToMemberExpression.default;
+ }
+});
+Object.defineProperty(exports, "assertNode", {
+ enumerable: true,
+ get: function () {
+ return _assertNode.default;
+ }
+});
+Object.defineProperty(exports, "buildMatchMemberExpression", {
+ enumerable: true,
+ get: function () {
+ return _buildMatchMemberExpression.default;
+ }
+});
+Object.defineProperty(exports, "clone", {
+ enumerable: true,
+ get: function () {
+ return _clone.default;
+ }
+});
+Object.defineProperty(exports, "cloneDeep", {
+ enumerable: true,
+ get: function () {
+ return _cloneDeep.default;
+ }
+});
+Object.defineProperty(exports, "cloneDeepWithoutLoc", {
+ enumerable: true,
+ get: function () {
+ return _cloneDeepWithoutLoc.default;
+ }
+});
+Object.defineProperty(exports, "cloneNode", {
+ enumerable: true,
+ get: function () {
+ return _cloneNode.default;
+ }
+});
+Object.defineProperty(exports, "cloneWithoutLoc", {
+ enumerable: true,
+ get: function () {
+ return _cloneWithoutLoc.default;
+ }
+});
+Object.defineProperty(exports, "createFlowUnionType", {
+ enumerable: true,
+ get: function () {
+ return _createFlowUnionType.default;
+ }
+});
+Object.defineProperty(exports, "createTSUnionType", {
+ enumerable: true,
+ get: function () {
+ return _createTSUnionType.default;
+ }
+});
+Object.defineProperty(exports, "createTypeAnnotationBasedOnTypeof", {
+ enumerable: true,
+ get: function () {
+ return _createTypeAnnotationBasedOnTypeof.default;
+ }
+});
+Object.defineProperty(exports, "createUnionTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _createFlowUnionType.default;
+ }
+});
+Object.defineProperty(exports, "ensureBlock", {
+ enumerable: true,
+ get: function () {
+ return _ensureBlock.default;
+ }
+});
+Object.defineProperty(exports, "getAssignmentIdentifiers", {
+ enumerable: true,
+ get: function () {
+ return _getAssignmentIdentifiers.default;
+ }
+});
+Object.defineProperty(exports, "getBindingIdentifiers", {
+ enumerable: true,
+ get: function () {
+ return _getBindingIdentifiers.default;
+ }
+});
+Object.defineProperty(exports, "getFunctionName", {
+ enumerable: true,
+ get: function () {
+ return _getFunctionName.default;
+ }
+});
+Object.defineProperty(exports, "getOuterBindingIdentifiers", {
+ enumerable: true,
+ get: function () {
+ return _getOuterBindingIdentifiers.default;
+ }
+});
+Object.defineProperty(exports, "inheritInnerComments", {
+ enumerable: true,
+ get: function () {
+ return _inheritInnerComments.default;
+ }
+});
+Object.defineProperty(exports, "inheritLeadingComments", {
+ enumerable: true,
+ get: function () {
+ return _inheritLeadingComments.default;
+ }
+});
+Object.defineProperty(exports, "inheritTrailingComments", {
+ enumerable: true,
+ get: function () {
+ return _inheritTrailingComments.default;
+ }
+});
+Object.defineProperty(exports, "inherits", {
+ enumerable: true,
+ get: function () {
+ return _inherits.default;
+ }
+});
+Object.defineProperty(exports, "inheritsComments", {
+ enumerable: true,
+ get: function () {
+ return _inheritsComments.default;
+ }
+});
+Object.defineProperty(exports, "is", {
+ enumerable: true,
+ get: function () {
+ return _is.default;
+ }
+});
+Object.defineProperty(exports, "isBinding", {
+ enumerable: true,
+ get: function () {
+ return _isBinding.default;
+ }
+});
+Object.defineProperty(exports, "isBlockScoped", {
+ enumerable: true,
+ get: function () {
+ return _isBlockScoped.default;
+ }
+});
+Object.defineProperty(exports, "isImmutable", {
+ enumerable: true,
+ get: function () {
+ return _isImmutable.default;
+ }
+});
+Object.defineProperty(exports, "isLet", {
+ enumerable: true,
+ get: function () {
+ return _isLet.default;
+ }
+});
+Object.defineProperty(exports, "isNode", {
+ enumerable: true,
+ get: function () {
+ return _isNode.default;
+ }
+});
+Object.defineProperty(exports, "isNodesEquivalent", {
+ enumerable: true,
+ get: function () {
+ return _isNodesEquivalent.default;
+ }
+});
+Object.defineProperty(exports, "isPlaceholderType", {
+ enumerable: true,
+ get: function () {
+ return _isPlaceholderType.default;
+ }
+});
+Object.defineProperty(exports, "isReferenced", {
+ enumerable: true,
+ get: function () {
+ return _isReferenced.default;
+ }
+});
+Object.defineProperty(exports, "isScope", {
+ enumerable: true,
+ get: function () {
+ return _isScope.default;
+ }
+});
+Object.defineProperty(exports, "isSpecifierDefault", {
+ enumerable: true,
+ get: function () {
+ return _isSpecifierDefault.default;
+ }
+});
+Object.defineProperty(exports, "isType", {
+ enumerable: true,
+ get: function () {
+ return _isType.default;
+ }
+});
+Object.defineProperty(exports, "isValidES3Identifier", {
+ enumerable: true,
+ get: function () {
+ return _isValidES3Identifier.default;
+ }
+});
+Object.defineProperty(exports, "isValidIdentifier", {
+ enumerable: true,
+ get: function () {
+ return _isValidIdentifier.default;
+ }
+});
+Object.defineProperty(exports, "isVar", {
+ enumerable: true,
+ get: function () {
+ return _isVar.default;
+ }
+});
+Object.defineProperty(exports, "matchesPattern", {
+ enumerable: true,
+ get: function () {
+ return _matchesPattern.default;
+ }
+});
+Object.defineProperty(exports, "prependToMemberExpression", {
+ enumerable: true,
+ get: function () {
+ return _prependToMemberExpression.default;
+ }
+});
+exports.react = void 0;
+Object.defineProperty(exports, "removeComments", {
+ enumerable: true,
+ get: function () {
+ return _removeComments.default;
+ }
+});
+Object.defineProperty(exports, "removeProperties", {
+ enumerable: true,
+ get: function () {
+ return _removeProperties.default;
+ }
+});
+Object.defineProperty(exports, "removePropertiesDeep", {
+ enumerable: true,
+ get: function () {
+ return _removePropertiesDeep.default;
+ }
+});
+Object.defineProperty(exports, "removeTypeDuplicates", {
+ enumerable: true,
+ get: function () {
+ return _removeTypeDuplicates.default;
+ }
+});
+Object.defineProperty(exports, "shallowEqual", {
+ enumerable: true,
+ get: function () {
+ return _shallowEqual.default;
+ }
+});
+Object.defineProperty(exports, "toBindingIdentifierName", {
+ enumerable: true,
+ get: function () {
+ return _toBindingIdentifierName.default;
+ }
+});
+Object.defineProperty(exports, "toBlock", {
+ enumerable: true,
+ get: function () {
+ return _toBlock.default;
+ }
+});
+Object.defineProperty(exports, "toComputedKey", {
+ enumerable: true,
+ get: function () {
+ return _toComputedKey.default;
+ }
+});
+Object.defineProperty(exports, "toExpression", {
+ enumerable: true,
+ get: function () {
+ return _toExpression.default;
+ }
+});
+Object.defineProperty(exports, "toIdentifier", {
+ enumerable: true,
+ get: function () {
+ return _toIdentifier.default;
+ }
+});
+Object.defineProperty(exports, "toKeyAlias", {
+ enumerable: true,
+ get: function () {
+ return _toKeyAlias.default;
+ }
+});
+Object.defineProperty(exports, "toStatement", {
+ enumerable: true,
+ get: function () {
+ return _toStatement.default;
+ }
+});
+Object.defineProperty(exports, "traverse", {
+ enumerable: true,
+ get: function () {
+ return _traverse.default;
+ }
+});
+Object.defineProperty(exports, "traverseFast", {
+ enumerable: true,
+ get: function () {
+ return _traverseFast.default;
+ }
+});
+Object.defineProperty(exports, "validate", {
+ enumerable: true,
+ get: function () {
+ return _validate.default;
+ }
+});
+Object.defineProperty(exports, "valueToNode", {
+ enumerable: true,
+ get: function () {
+ return _valueToNode.default;
+ }
+});
+var _isReactComponent = require("./validators/react/isReactComponent.js");
+var _isCompatTag = require("./validators/react/isCompatTag.js");
+var _buildChildren = require("./builders/react/buildChildren.js");
+var _assertNode = require("./asserts/assertNode.js");
+var _index = require("./asserts/generated/index.js");
+Object.keys(_index).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _index[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _index[key];
+ }
+ });
+});
+var _createTypeAnnotationBasedOnTypeof = require("./builders/flow/createTypeAnnotationBasedOnTypeof.js");
+var _createFlowUnionType = require("./builders/flow/createFlowUnionType.js");
+var _createTSUnionType = require("./builders/typescript/createTSUnionType.js");
+var _productions = require("./builders/productions.js");
+Object.keys(_productions).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _productions[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _productions[key];
+ }
+ });
+});
+var _index2 = require("./builders/generated/index.js");
+Object.keys(_index2).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _index2[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _index2[key];
+ }
+ });
+});
+var _cloneNode = require("./clone/cloneNode.js");
+var _clone = require("./clone/clone.js");
+var _cloneDeep = require("./clone/cloneDeep.js");
+var _cloneDeepWithoutLoc = require("./clone/cloneDeepWithoutLoc.js");
+var _cloneWithoutLoc = require("./clone/cloneWithoutLoc.js");
+var _addComment = require("./comments/addComment.js");
+var _addComments = require("./comments/addComments.js");
+var _inheritInnerComments = require("./comments/inheritInnerComments.js");
+var _inheritLeadingComments = require("./comments/inheritLeadingComments.js");
+var _inheritsComments = require("./comments/inheritsComments.js");
+var _inheritTrailingComments = require("./comments/inheritTrailingComments.js");
+var _removeComments = require("./comments/removeComments.js");
+var _index3 = require("./constants/generated/index.js");
+Object.keys(_index3).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _index3[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _index3[key];
+ }
+ });
+});
+var _index4 = require("./constants/index.js");
+Object.keys(_index4).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _index4[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _index4[key];
+ }
+ });
+});
+var _ensureBlock = require("./converters/ensureBlock.js");
+var _toBindingIdentifierName = require("./converters/toBindingIdentifierName.js");
+var _toBlock = require("./converters/toBlock.js");
+var _toComputedKey = require("./converters/toComputedKey.js");
+var _toExpression = require("./converters/toExpression.js");
+var _toIdentifier = require("./converters/toIdentifier.js");
+var _toKeyAlias = require("./converters/toKeyAlias.js");
+var _toStatement = require("./converters/toStatement.js");
+var _valueToNode = require("./converters/valueToNode.js");
+var _index5 = require("./definitions/index.js");
+Object.keys(_index5).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _index5[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _index5[key];
+ }
+ });
+});
+var _appendToMemberExpression = require("./modifications/appendToMemberExpression.js");
+var _inherits = require("./modifications/inherits.js");
+var _prependToMemberExpression = require("./modifications/prependToMemberExpression.js");
+var _removeProperties = require("./modifications/removeProperties.js");
+var _removePropertiesDeep = require("./modifications/removePropertiesDeep.js");
+var _removeTypeDuplicates = require("./modifications/flow/removeTypeDuplicates.js");
+var _getAssignmentIdentifiers = require("./retrievers/getAssignmentIdentifiers.js");
+var _getBindingIdentifiers = require("./retrievers/getBindingIdentifiers.js");
+var _getOuterBindingIdentifiers = require("./retrievers/getOuterBindingIdentifiers.js");
+var _getFunctionName = require("./retrievers/getFunctionName.js");
+var _traverse = require("./traverse/traverse.js");
+Object.keys(_traverse).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _traverse[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _traverse[key];
+ }
+ });
+});
+var _traverseFast = require("./traverse/traverseFast.js");
+var _shallowEqual = require("./utils/shallowEqual.js");
+var _is = require("./validators/is.js");
+var _isBinding = require("./validators/isBinding.js");
+var _isBlockScoped = require("./validators/isBlockScoped.js");
+var _isImmutable = require("./validators/isImmutable.js");
+var _isLet = require("./validators/isLet.js");
+var _isNode = require("./validators/isNode.js");
+var _isNodesEquivalent = require("./validators/isNodesEquivalent.js");
+var _isPlaceholderType = require("./validators/isPlaceholderType.js");
+var _isReferenced = require("./validators/isReferenced.js");
+var _isScope = require("./validators/isScope.js");
+var _isSpecifierDefault = require("./validators/isSpecifierDefault.js");
+var _isType = require("./validators/isType.js");
+var _isValidES3Identifier = require("./validators/isValidES3Identifier.js");
+var _isValidIdentifier = require("./validators/isValidIdentifier.js");
+var _isVar = require("./validators/isVar.js");
+var _matchesPattern = require("./validators/matchesPattern.js");
+var _validate = require("./validators/validate.js");
+var _buildMatchMemberExpression = require("./validators/buildMatchMemberExpression.js");
+var _index6 = require("./validators/generated/index.js");
+Object.keys(_index6).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _index6[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _index6[key];
+ }
+ });
+});
+var _deprecationWarning = require("./utils/deprecationWarning.js");
+var _toSequenceExpression = require("./converters/toSequenceExpression.js");
+const react = exports.react = {
+ isReactComponent: _isReactComponent.default,
+ isCompatTag: _isCompatTag.default,
+ buildChildren: _buildChildren.default
+};
+exports.toSequenceExpression = _toSequenceExpression.default;
+if (process.env.BABEL_TYPES_8_BREAKING) {
+ console.warn("BABEL_TYPES_8_BREAKING is not supported anymore. Use the latest Babel 8.0.0 pre-release instead!");
+}
+
+//# sourceMappingURL=index.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/index.js.flow b/vanilla/node_modules/@babel/types/lib/index.js.flow
new file mode 100644
index 0000000..772d5ac
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/index.js.flow
@@ -0,0 +1,2650 @@
+// NOTE: This file is autogenerated. Do not modify.
+// See packages/babel-types/scripts/generators/flow.ts for script used.
+
+declare class BabelNodeComment {
+ value: string;
+ start: number;
+ end: number;
+ loc: BabelNodeSourceLocation;
+}
+
+declare class BabelNodeCommentBlock extends BabelNodeComment {
+ type: "CommentBlock";
+}
+
+declare class BabelNodeCommentLine extends BabelNodeComment {
+ type: "CommentLine";
+}
+
+declare class BabelNodeSourceLocation {
+ start: {
+ line: number;
+ column: number;
+ };
+
+ end: {
+ line: number;
+ column: number;
+ };
+}
+
+declare class BabelNode {
+ leadingComments?: Array<BabelNodeComment>;
+ innerComments?: Array<BabelNodeComment>;
+ trailingComments?: Array<BabelNodeComment>;
+ start: ?number;
+ end: ?number;
+ loc: ?BabelNodeSourceLocation;
+ extra?: { [string]: mixed };
+}
+
+declare class BabelNodeArrayExpression extends BabelNode {
+ type: "ArrayExpression";
+ elements?: (null | BabelNodeExpression | BabelNodeSpreadElement)[];
+}
+
+declare class BabelNodeAssignmentExpression extends BabelNode {
+ type: "AssignmentExpression";
+ operator: string;
+ left: BabelNodeLVal | BabelNodeOptionalMemberExpression;
+ right: BabelNodeExpression;
+}
+
+declare class BabelNodeBinaryExpression extends BabelNode {
+ type: "BinaryExpression";
+ operator: "+" | "-" | "/" | "%" | "*" | "**" | "&" | "|" | ">>" | ">>>" | "<<" | "^" | "==" | "===" | "!=" | "!==" | "in" | "instanceof" | ">" | "<" | ">=" | "<=" | "|>";
+ left: BabelNodeExpression | BabelNodePrivateName;
+ right: BabelNodeExpression;
+}
+
+declare class BabelNodeInterpreterDirective extends BabelNode {
+ type: "InterpreterDirective";
+ value: string;
+}
+
+declare class BabelNodeDirective extends BabelNode {
+ type: "Directive";
+ value: BabelNodeDirectiveLiteral;
+}
+
+declare class BabelNodeDirectiveLiteral extends BabelNode {
+ type: "DirectiveLiteral";
+ value: string;
+}
+
+declare class BabelNodeBlockStatement extends BabelNode {
+ type: "BlockStatement";
+ body: BabelNodeStatement[];
+ directives?: BabelNodeDirective[];
+}
+
+declare class BabelNodeBreakStatement extends BabelNode {
+ type: "BreakStatement";
+ label?: BabelNodeIdentifier;
+}
+
+declare class BabelNodeCallExpression extends BabelNode {
+ type: "CallExpression";
+ callee: BabelNodeExpression | BabelNodeSuper | BabelNodeV8IntrinsicIdentifier;
+ arguments: (BabelNodeExpression | BabelNodeSpreadElement | BabelNodeArgumentPlaceholder)[];
+ optional?: boolean;
+ typeArguments?: BabelNodeTypeParameterInstantiation;
+ typeParameters?: BabelNodeTSTypeParameterInstantiation;
+}
+
+declare class BabelNodeCatchClause extends BabelNode {
+ type: "CatchClause";
+ param?: BabelNodeIdentifier | BabelNodeArrayPattern | BabelNodeObjectPattern;
+ body: BabelNodeBlockStatement;
+}
+
+declare class BabelNodeConditionalExpression extends BabelNode {
+ type: "ConditionalExpression";
+ test: BabelNodeExpression;
+ consequent: BabelNodeExpression;
+ alternate: BabelNodeExpression;
+}
+
+declare class BabelNodeContinueStatement extends BabelNode {
+ type: "ContinueStatement";
+ label?: BabelNodeIdentifier;
+}
+
+declare class BabelNodeDebuggerStatement extends BabelNode {
+ type: "DebuggerStatement";
+}
+
+declare class BabelNodeDoWhileStatement extends BabelNode {
+ type: "DoWhileStatement";
+ test: BabelNodeExpression;
+ body: BabelNodeStatement;
+}
+
+declare class BabelNodeEmptyStatement extends BabelNode {
+ type: "EmptyStatement";
+}
+
+declare class BabelNodeExpressionStatement extends BabelNode {
+ type: "ExpressionStatement";
+ expression: BabelNodeExpression;
+}
+
+declare class BabelNodeFile extends BabelNode {
+ type: "File";
+ program: BabelNodeProgram;
+ comments?: (BabelNodeCommentBlock | BabelNodeCommentLine)[];
+ tokens?: any[];
+}
+
+declare class BabelNodeForInStatement extends BabelNode {
+ type: "ForInStatement";
+ left: BabelNodeVariableDeclaration | BabelNodeLVal;
+ right: BabelNodeExpression;
+ body: BabelNodeStatement;
+}
+
+declare class BabelNodeForStatement extends BabelNode {
+ type: "ForStatement";
+ init?: BabelNodeVariableDeclaration | BabelNodeExpression;
+ test?: BabelNodeExpression;
+ update?: BabelNodeExpression;
+ body: BabelNodeStatement;
+}
+
+declare class BabelNodeFunctionDeclaration extends BabelNode {
+ type: "FunctionDeclaration";
+ id?: BabelNodeIdentifier;
+ params: BabelNodeFunctionParameter[];
+ body: BabelNodeBlockStatement;
+ generator?: boolean;
+ async?: boolean;
+ declare?: boolean;
+ predicate?: BabelNodeDeclaredPredicate | BabelNodeInferredPredicate;
+ returnType?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
+}
+
+declare class BabelNodeFunctionExpression extends BabelNode {
+ type: "FunctionExpression";
+ id?: BabelNodeIdentifier;
+ params: BabelNodeFunctionParameter[];
+ body: BabelNodeBlockStatement;
+ generator?: boolean;
+ async?: boolean;
+ predicate?: BabelNodeDeclaredPredicate | BabelNodeInferredPredicate;
+ returnType?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
+}
+
+declare class BabelNodeIdentifier extends BabelNode {
+ type: "Identifier";
+ name: string;
+ decorators?: BabelNodeDecorator[];
+ optional?: boolean;
+ typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+}
+
+declare class BabelNodeIfStatement extends BabelNode {
+ type: "IfStatement";
+ test: BabelNodeExpression;
+ consequent: BabelNodeStatement;
+ alternate?: BabelNodeStatement;
+}
+
+declare class BabelNodeLabeledStatement extends BabelNode {
+ type: "LabeledStatement";
+ label: BabelNodeIdentifier;
+ body: BabelNodeStatement;
+}
+
+declare class BabelNodeStringLiteral extends BabelNode {
+ type: "StringLiteral";
+ value: string;
+}
+
+declare class BabelNodeNumericLiteral extends BabelNode {
+ type: "NumericLiteral";
+ value: number;
+}
+
+declare class BabelNodeNullLiteral extends BabelNode {
+ type: "NullLiteral";
+}
+
+declare class BabelNodeBooleanLiteral extends BabelNode {
+ type: "BooleanLiteral";
+ value: boolean;
+}
+
+declare class BabelNodeRegExpLiteral extends BabelNode {
+ type: "RegExpLiteral";
+ pattern: string;
+ flags?: string;
+}
+
+declare class BabelNodeLogicalExpression extends BabelNode {
+ type: "LogicalExpression";
+ operator: "||" | "&&" | "??";
+ left: BabelNodeExpression;
+ right: BabelNodeExpression;
+}
+
+declare class BabelNodeMemberExpression extends BabelNode {
+ type: "MemberExpression";
+ object: BabelNodeExpression | BabelNodeSuper;
+ property: BabelNodeExpression | BabelNodeIdentifier | BabelNodePrivateName;
+ computed?: boolean;
+ optional?: boolean;
+}
+
+declare class BabelNodeNewExpression extends BabelNode {
+ type: "NewExpression";
+ callee: BabelNodeExpression | BabelNodeSuper | BabelNodeV8IntrinsicIdentifier;
+ arguments: (BabelNodeExpression | BabelNodeSpreadElement | BabelNodeArgumentPlaceholder)[];
+ optional?: boolean;
+ typeArguments?: BabelNodeTypeParameterInstantiation;
+ typeParameters?: BabelNodeTSTypeParameterInstantiation;
+}
+
+declare class BabelNodeProgram extends BabelNode {
+ type: "Program";
+ body: BabelNodeStatement[];
+ directives?: BabelNodeDirective[];
+ sourceType?: "script" | "module";
+ interpreter?: BabelNodeInterpreterDirective;
+}
+
+declare class BabelNodeObjectExpression extends BabelNode {
+ type: "ObjectExpression";
+ properties: (BabelNodeObjectMethod | BabelNodeObjectProperty | BabelNodeSpreadElement)[];
+}
+
+declare class BabelNodeObjectMethod extends BabelNode {
+ type: "ObjectMethod";
+ kind?: "method" | "get" | "set";
+ key: BabelNodeExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral;
+ params: BabelNodeFunctionParameter[];
+ body: BabelNodeBlockStatement;
+ computed?: boolean;
+ generator?: boolean;
+ async?: boolean;
+ decorators?: BabelNodeDecorator[];
+ returnType?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
+}
+
+declare class BabelNodeObjectProperty extends BabelNode {
+ type: "ObjectProperty";
+ key: BabelNodeExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral | BabelNodeDecimalLiteral | BabelNodePrivateName;
+ value: BabelNodeExpression | BabelNodePatternLike;
+ computed?: boolean;
+ shorthand?: boolean;
+ decorators?: BabelNodeDecorator[];
+}
+
+declare class BabelNodeRestElement extends BabelNode {
+ type: "RestElement";
+ argument: BabelNodeIdentifier | BabelNodeArrayPattern | BabelNodeObjectPattern | BabelNodeMemberExpression | BabelNodeTSAsExpression | BabelNodeTSSatisfiesExpression | BabelNodeTSTypeAssertion | BabelNodeTSNonNullExpression | BabelNodeRestElement | BabelNodeAssignmentPattern;
+ decorators?: BabelNodeDecorator[];
+ optional?: boolean;
+ typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+}
+
+declare class BabelNodeReturnStatement extends BabelNode {
+ type: "ReturnStatement";
+ argument?: BabelNodeExpression;
+}
+
+declare class BabelNodeSequenceExpression extends BabelNode {
+ type: "SequenceExpression";
+ expressions: BabelNodeExpression[];
+}
+
+declare class BabelNodeParenthesizedExpression extends BabelNode {
+ type: "ParenthesizedExpression";
+ expression: BabelNodeExpression;
+}
+
+declare class BabelNodeSwitchCase extends BabelNode {
+ type: "SwitchCase";
+ test?: BabelNodeExpression;
+ consequent: BabelNodeStatement[];
+}
+
+declare class BabelNodeSwitchStatement extends BabelNode {
+ type: "SwitchStatement";
+ discriminant: BabelNodeExpression;
+ cases: BabelNodeSwitchCase[];
+}
+
+declare class BabelNodeThisExpression extends BabelNode {
+ type: "ThisExpression";
+}
+
+declare class BabelNodeThrowStatement extends BabelNode {
+ type: "ThrowStatement";
+ argument: BabelNodeExpression;
+}
+
+declare class BabelNodeTryStatement extends BabelNode {
+ type: "TryStatement";
+ block: BabelNodeBlockStatement;
+ handler?: BabelNodeCatchClause;
+ finalizer?: BabelNodeBlockStatement;
+}
+
+declare class BabelNodeUnaryExpression extends BabelNode {
+ type: "UnaryExpression";
+ operator: "void" | "throw" | "delete" | "!" | "+" | "-" | "~" | "typeof";
+ argument: BabelNodeExpression;
+ prefix?: boolean;
+}
+
+declare class BabelNodeUpdateExpression extends BabelNode {
+ type: "UpdateExpression";
+ operator: "++" | "--";
+ argument: BabelNodeExpression;
+ prefix?: boolean;
+}
+
+declare class BabelNodeVariableDeclaration extends BabelNode {
+ type: "VariableDeclaration";
+ kind: "var" | "let" | "const" | "using" | "await using";
+ declarations: BabelNodeVariableDeclarator[];
+ declare?: boolean;
+}
+
+declare class BabelNodeVariableDeclarator extends BabelNode {
+ type: "VariableDeclarator";
+ id: BabelNodeLVal | BabelNodeVoidPattern;
+ init?: BabelNodeExpression;
+ definite?: boolean;
+}
+
+declare class BabelNodeWhileStatement extends BabelNode {
+ type: "WhileStatement";
+ test: BabelNodeExpression;
+ body: BabelNodeStatement;
+}
+
+declare class BabelNodeWithStatement extends BabelNode {
+ type: "WithStatement";
+ object: BabelNodeExpression;
+ body: BabelNodeStatement;
+}
+
+declare class BabelNodeAssignmentPattern extends BabelNode {
+ type: "AssignmentPattern";
+ left: BabelNodeIdentifier | BabelNodeObjectPattern | BabelNodeArrayPattern | BabelNodeMemberExpression | BabelNodeTSAsExpression | BabelNodeTSSatisfiesExpression | BabelNodeTSTypeAssertion | BabelNodeTSNonNullExpression;
+ right: BabelNodeExpression;
+ decorators?: BabelNodeDecorator[];
+ optional?: boolean;
+ typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+}
+
+declare class BabelNodeArrayPattern extends BabelNode {
+ type: "ArrayPattern";
+ elements: (null | BabelNodePatternLike)[];
+ decorators?: BabelNodeDecorator[];
+ optional?: boolean;
+ typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+}
+
+declare class BabelNodeArrowFunctionExpression extends BabelNode {
+ type: "ArrowFunctionExpression";
+ params: BabelNodeFunctionParameter[];
+ body: BabelNodeBlockStatement | BabelNodeExpression;
+ async?: boolean;
+ expression: boolean;
+ generator?: boolean;
+ predicate?: BabelNodeDeclaredPredicate | BabelNodeInferredPredicate;
+ returnType?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
+}
+
+declare class BabelNodeClassBody extends BabelNode {
+ type: "ClassBody";
+ body: (BabelNodeClassMethod | BabelNodeClassPrivateMethod | BabelNodeClassProperty | BabelNodeClassPrivateProperty | BabelNodeClassAccessorProperty | BabelNodeTSDeclareMethod | BabelNodeTSIndexSignature | BabelNodeStaticBlock)[];
+}
+
+declare class BabelNodeClassExpression extends BabelNode {
+ type: "ClassExpression";
+ id?: BabelNodeIdentifier;
+ superClass?: BabelNodeExpression;
+ body: BabelNodeClassBody;
+ decorators?: BabelNodeDecorator[];
+ mixins?: BabelNodeInterfaceExtends;
+ superTypeParameters?: BabelNodeTypeParameterInstantiation | BabelNodeTSTypeParameterInstantiation;
+ typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
+}
+
+declare class BabelNodeClassDeclaration extends BabelNode {
+ type: "ClassDeclaration";
+ id?: BabelNodeIdentifier;
+ superClass?: BabelNodeExpression;
+ body: BabelNodeClassBody;
+ decorators?: BabelNodeDecorator[];
+ abstract?: boolean;
+ declare?: boolean;
+ mixins?: BabelNodeInterfaceExtends;
+ superTypeParameters?: BabelNodeTypeParameterInstantiation | BabelNodeTSTypeParameterInstantiation;
+ typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
+}
+
+declare class BabelNodeExportAllDeclaration extends BabelNode {
+ type: "ExportAllDeclaration";
+ source: BabelNodeStringLiteral;
+ attributes?: BabelNodeImportAttribute[];
+ assertions?: BabelNodeImportAttribute[];
+ exportKind?: "type" | "value";
+}
+
+declare class BabelNodeExportDefaultDeclaration extends BabelNode {
+ type: "ExportDefaultDeclaration";
+ declaration: BabelNodeTSDeclareFunction | BabelNodeFunctionDeclaration | BabelNodeClassDeclaration | BabelNodeExpression;
+ exportKind?: "value";
+}
+
+declare class BabelNodeExportNamedDeclaration extends BabelNode {
+ type: "ExportNamedDeclaration";
+ declaration?: BabelNodeDeclaration;
+ specifiers?: (BabelNodeExportSpecifier | BabelNodeExportDefaultSpecifier | BabelNodeExportNamespaceSpecifier)[];
+ source?: BabelNodeStringLiteral;
+ attributes?: BabelNodeImportAttribute[];
+ assertions?: BabelNodeImportAttribute[];
+ exportKind?: "type" | "value";
+}
+
+declare class BabelNodeExportSpecifier extends BabelNode {
+ type: "ExportSpecifier";
+ local: BabelNodeIdentifier;
+ exported: BabelNodeIdentifier | BabelNodeStringLiteral;
+ exportKind?: "type" | "value";
+}
+
+declare class BabelNodeForOfStatement extends BabelNode {
+ type: "ForOfStatement";
+ left: BabelNodeVariableDeclaration | BabelNodeLVal;
+ right: BabelNodeExpression;
+ body: BabelNodeStatement;
+}
+
+declare class BabelNodeImportDeclaration extends BabelNode {
+ type: "ImportDeclaration";
+ specifiers: (BabelNodeImportSpecifier | BabelNodeImportDefaultSpecifier | BabelNodeImportNamespaceSpecifier)[];
+ source: BabelNodeStringLiteral;
+ attributes?: BabelNodeImportAttribute[];
+ assertions?: BabelNodeImportAttribute[];
+ importKind?: "type" | "typeof" | "value";
+ module?: boolean;
+ phase?: "source" | "defer";
+}
+
+declare class BabelNodeImportDefaultSpecifier extends BabelNode {
+ type: "ImportDefaultSpecifier";
+ local: BabelNodeIdentifier;
+}
+
+declare class BabelNodeImportNamespaceSpecifier extends BabelNode {
+ type: "ImportNamespaceSpecifier";
+ local: BabelNodeIdentifier;
+}
+
+declare class BabelNodeImportSpecifier extends BabelNode {
+ type: "ImportSpecifier";
+ local: BabelNodeIdentifier;
+ imported: BabelNodeIdentifier | BabelNodeStringLiteral;
+ importKind?: "type" | "typeof" | "value";
+}
+
+declare class BabelNodeImportExpression extends BabelNode {
+ type: "ImportExpression";
+ source: BabelNodeExpression;
+ options?: BabelNodeExpression;
+ phase?: "source" | "defer";
+}
+
+declare class BabelNodeMetaProperty extends BabelNode {
+ type: "MetaProperty";
+ meta: BabelNodeIdentifier;
+ property: BabelNodeIdentifier;
+}
+
+declare class BabelNodeClassMethod extends BabelNode {
+ type: "ClassMethod";
+ kind?: "get" | "set" | "method" | "constructor";
+ key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral | BabelNodeExpression;
+ params: (BabelNodeFunctionParameter | BabelNodeTSParameterProperty)[];
+ body: BabelNodeBlockStatement;
+ computed?: boolean;
+ generator?: boolean;
+ async?: boolean;
+ abstract?: boolean;
+ access?: "public" | "private" | "protected";
+ accessibility?: "public" | "private" | "protected";
+ decorators?: BabelNodeDecorator[];
+ optional?: boolean;
+ override?: boolean;
+ returnType?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
+}
+
+declare class BabelNodeObjectPattern extends BabelNode {
+ type: "ObjectPattern";
+ properties: (BabelNodeRestElement | BabelNodeObjectProperty)[];
+ decorators?: BabelNodeDecorator[];
+ optional?: boolean;
+ typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+}
+
+declare class BabelNodeSpreadElement extends BabelNode {
+ type: "SpreadElement";
+ argument: BabelNodeExpression;
+}
+
+declare class BabelNodeSuper extends BabelNode {
+ type: "Super";
+}
+
+declare class BabelNodeTaggedTemplateExpression extends BabelNode {
+ type: "TaggedTemplateExpression";
+ tag: BabelNodeExpression;
+ quasi: BabelNodeTemplateLiteral;
+ typeParameters?: BabelNodeTypeParameterInstantiation | BabelNodeTSTypeParameterInstantiation;
+}
+
+declare class BabelNodeTemplateElement extends BabelNode {
+ type: "TemplateElement";
+ value: { raw: string, cooked?: string };
+ tail?: boolean;
+}
+
+declare class BabelNodeTemplateLiteral extends BabelNode {
+ type: "TemplateLiteral";
+ quasis: BabelNodeTemplateElement[];
+ expressions: (BabelNodeExpression | BabelNodeTSType)[];
+}
+
+declare class BabelNodeYieldExpression extends BabelNode {
+ type: "YieldExpression";
+ argument?: BabelNodeExpression;
+ delegate?: boolean;
+}
+
+declare class BabelNodeAwaitExpression extends BabelNode {
+ type: "AwaitExpression";
+ argument: BabelNodeExpression;
+}
+
+declare class BabelNodeImport extends BabelNode {
+ type: "Import";
+}
+
+declare class BabelNodeBigIntLiteral extends BabelNode {
+ type: "BigIntLiteral";
+ value: string;
+}
+
+declare class BabelNodeExportNamespaceSpecifier extends BabelNode {
+ type: "ExportNamespaceSpecifier";
+ exported: BabelNodeIdentifier;
+}
+
+declare class BabelNodeOptionalMemberExpression extends BabelNode {
+ type: "OptionalMemberExpression";
+ object: BabelNodeExpression;
+ property: BabelNodeExpression | BabelNodeIdentifier;
+ computed?: boolean;
+ optional: boolean;
+}
+
+declare class BabelNodeOptionalCallExpression extends BabelNode {
+ type: "OptionalCallExpression";
+ callee: BabelNodeExpression;
+ arguments: (BabelNodeExpression | BabelNodeSpreadElement | BabelNodeArgumentPlaceholder)[];
+ optional: boolean;
+ typeArguments?: BabelNodeTypeParameterInstantiation;
+ typeParameters?: BabelNodeTSTypeParameterInstantiation;
+}
+
+declare class BabelNodeClassProperty extends BabelNode {
+ type: "ClassProperty";
+ key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral | BabelNodeExpression;
+ value?: BabelNodeExpression;
+ typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ decorators?: BabelNodeDecorator[];
+ computed?: boolean;
+ abstract?: boolean;
+ accessibility?: "public" | "private" | "protected";
+ declare?: boolean;
+ definite?: boolean;
+ optional?: boolean;
+ override?: boolean;
+ readonly?: boolean;
+ variance?: BabelNodeVariance;
+}
+
+declare class BabelNodeClassAccessorProperty extends BabelNode {
+ type: "ClassAccessorProperty";
+ key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral | BabelNodeExpression | BabelNodePrivateName;
+ value?: BabelNodeExpression;
+ typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ decorators?: BabelNodeDecorator[];
+ computed?: boolean;
+ abstract?: boolean;
+ accessibility?: "public" | "private" | "protected";
+ declare?: boolean;
+ definite?: boolean;
+ optional?: boolean;
+ override?: boolean;
+ readonly?: boolean;
+ variance?: BabelNodeVariance;
+}
+
+declare class BabelNodeClassPrivateProperty extends BabelNode {
+ type: "ClassPrivateProperty";
+ key: BabelNodePrivateName;
+ value?: BabelNodeExpression;
+ decorators?: BabelNodeDecorator[];
+ definite?: boolean;
+ optional?: boolean;
+ readonly?: boolean;
+ typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ variance?: BabelNodeVariance;
+}
+
+declare class BabelNodeClassPrivateMethod extends BabelNode {
+ type: "ClassPrivateMethod";
+ kind?: "get" | "set" | "method";
+ key: BabelNodePrivateName;
+ params: (BabelNodeFunctionParameter | BabelNodeTSParameterProperty)[];
+ body: BabelNodeBlockStatement;
+ abstract?: boolean;
+ access?: "public" | "private" | "protected";
+ accessibility?: "public" | "private" | "protected";
+ async?: boolean;
+ computed?: boolean;
+ decorators?: BabelNodeDecorator[];
+ generator?: boolean;
+ optional?: boolean;
+ override?: boolean;
+ returnType?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
+}
+
+declare class BabelNodePrivateName extends BabelNode {
+ type: "PrivateName";
+ id: BabelNodeIdentifier;
+}
+
+declare class BabelNodeStaticBlock extends BabelNode {
+ type: "StaticBlock";
+ body: BabelNodeStatement[];
+}
+
+declare class BabelNodeImportAttribute extends BabelNode {
+ type: "ImportAttribute";
+ key: BabelNodeIdentifier | BabelNodeStringLiteral;
+ value: BabelNodeStringLiteral;
+}
+
+declare class BabelNodeAnyTypeAnnotation extends BabelNode {
+ type: "AnyTypeAnnotation";
+}
+
+declare class BabelNodeArrayTypeAnnotation extends BabelNode {
+ type: "ArrayTypeAnnotation";
+ elementType: BabelNodeFlowType;
+}
+
+declare class BabelNodeBooleanTypeAnnotation extends BabelNode {
+ type: "BooleanTypeAnnotation";
+}
+
+declare class BabelNodeBooleanLiteralTypeAnnotation extends BabelNode {
+ type: "BooleanLiteralTypeAnnotation";
+ value: boolean;
+}
+
+declare class BabelNodeNullLiteralTypeAnnotation extends BabelNode {
+ type: "NullLiteralTypeAnnotation";
+}
+
+declare class BabelNodeClassImplements extends BabelNode {
+ type: "ClassImplements";
+ id: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTypeParameterInstantiation;
+}
+
+declare class BabelNodeDeclareClass extends BabelNode {
+ type: "DeclareClass";
+ id: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTypeParameterDeclaration;
+ body: BabelNodeObjectTypeAnnotation;
+ mixins?: BabelNodeInterfaceExtends[];
+}
+
+declare class BabelNodeDeclareFunction extends BabelNode {
+ type: "DeclareFunction";
+ id: BabelNodeIdentifier;
+ predicate?: BabelNodeDeclaredPredicate;
+}
+
+declare class BabelNodeDeclareInterface extends BabelNode {
+ type: "DeclareInterface";
+ id: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTypeParameterDeclaration;
+ body: BabelNodeObjectTypeAnnotation;
+}
+
+declare class BabelNodeDeclareModule extends BabelNode {
+ type: "DeclareModule";
+ id: BabelNodeIdentifier | BabelNodeStringLiteral;
+ body: BabelNodeBlockStatement;
+ kind?: "CommonJS" | "ES";
+}
+
+declare class BabelNodeDeclareModuleExports extends BabelNode {
+ type: "DeclareModuleExports";
+ typeAnnotation: BabelNodeTypeAnnotation;
+}
+
+declare class BabelNodeDeclareTypeAlias extends BabelNode {
+ type: "DeclareTypeAlias";
+ id: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTypeParameterDeclaration;
+ right: BabelNodeFlowType;
+}
+
+declare class BabelNodeDeclareOpaqueType extends BabelNode {
+ type: "DeclareOpaqueType";
+ id: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTypeParameterDeclaration;
+ supertype?: BabelNodeFlowType;
+ impltype?: BabelNodeFlowType;
+}
+
+declare class BabelNodeDeclareVariable extends BabelNode {
+ type: "DeclareVariable";
+ id: BabelNodeIdentifier;
+}
+
+declare class BabelNodeDeclareExportDeclaration extends BabelNode {
+ type: "DeclareExportDeclaration";
+ declaration?: BabelNodeFlow;
+ specifiers?: (BabelNodeExportSpecifier | BabelNodeExportNamespaceSpecifier)[];
+ source?: BabelNodeStringLiteral;
+ attributes?: BabelNodeImportAttribute[];
+ assertions?: BabelNodeImportAttribute[];
+}
+
+declare class BabelNodeDeclareExportAllDeclaration extends BabelNode {
+ type: "DeclareExportAllDeclaration";
+ source: BabelNodeStringLiteral;
+ attributes?: BabelNodeImportAttribute[];
+ assertions?: BabelNodeImportAttribute[];
+ exportKind?: "type" | "value";
+}
+
+declare class BabelNodeDeclaredPredicate extends BabelNode {
+ type: "DeclaredPredicate";
+ value: BabelNodeFlow;
+}
+
+declare class BabelNodeExistsTypeAnnotation extends BabelNode {
+ type: "ExistsTypeAnnotation";
+}
+
+declare class BabelNodeFunctionTypeAnnotation extends BabelNode {
+ type: "FunctionTypeAnnotation";
+ typeParameters?: BabelNodeTypeParameterDeclaration;
+ params: BabelNodeFunctionTypeParam[];
+ rest?: BabelNodeFunctionTypeParam;
+ returnType: BabelNodeFlowType;
+}
+
+declare class BabelNodeFunctionTypeParam extends BabelNode {
+ type: "FunctionTypeParam";
+ name?: BabelNodeIdentifier;
+ typeAnnotation: BabelNodeFlowType;
+ optional?: boolean;
+}
+
+declare class BabelNodeGenericTypeAnnotation extends BabelNode {
+ type: "GenericTypeAnnotation";
+ id: BabelNodeIdentifier | BabelNodeQualifiedTypeIdentifier;
+ typeParameters?: BabelNodeTypeParameterInstantiation;
+}
+
+declare class BabelNodeInferredPredicate extends BabelNode {
+ type: "InferredPredicate";
+}
+
+declare class BabelNodeInterfaceExtends extends BabelNode {
+ type: "InterfaceExtends";
+ id: BabelNodeIdentifier | BabelNodeQualifiedTypeIdentifier;
+ typeParameters?: BabelNodeTypeParameterInstantiation;
+}
+
+declare class BabelNodeInterfaceDeclaration extends BabelNode {
+ type: "InterfaceDeclaration";
+ id: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTypeParameterDeclaration;
+ body: BabelNodeObjectTypeAnnotation;
+}
+
+declare class BabelNodeInterfaceTypeAnnotation extends BabelNode {
+ type: "InterfaceTypeAnnotation";
+ body: BabelNodeObjectTypeAnnotation;
+}
+
+declare class BabelNodeIntersectionTypeAnnotation extends BabelNode {
+ type: "IntersectionTypeAnnotation";
+ types: BabelNodeFlowType[];
+}
+
+declare class BabelNodeMixedTypeAnnotation extends BabelNode {
+ type: "MixedTypeAnnotation";
+}
+
+declare class BabelNodeEmptyTypeAnnotation extends BabelNode {
+ type: "EmptyTypeAnnotation";
+}
+
+declare class BabelNodeNullableTypeAnnotation extends BabelNode {
+ type: "NullableTypeAnnotation";
+ typeAnnotation: BabelNodeFlowType;
+}
+
+declare class BabelNodeNumberLiteralTypeAnnotation extends BabelNode {
+ type: "NumberLiteralTypeAnnotation";
+ value: number;
+}
+
+declare class BabelNodeNumberTypeAnnotation extends BabelNode {
+ type: "NumberTypeAnnotation";
+}
+
+declare class BabelNodeObjectTypeAnnotation extends BabelNode {
+ type: "ObjectTypeAnnotation";
+ properties: (BabelNodeObjectTypeProperty | BabelNodeObjectTypeSpreadProperty)[];
+ indexers?: BabelNodeObjectTypeIndexer[];
+ callProperties?: BabelNodeObjectTypeCallProperty[];
+ internalSlots?: BabelNodeObjectTypeInternalSlot[];
+ exact?: boolean;
+ inexact?: boolean;
+}
+
+declare class BabelNodeObjectTypeInternalSlot extends BabelNode {
+ type: "ObjectTypeInternalSlot";
+ id: BabelNodeIdentifier;
+ value: BabelNodeFlowType;
+ optional: boolean;
+ method: boolean;
+}
+
+declare class BabelNodeObjectTypeCallProperty extends BabelNode {
+ type: "ObjectTypeCallProperty";
+ value: BabelNodeFlowType;
+}
+
+declare class BabelNodeObjectTypeIndexer extends BabelNode {
+ type: "ObjectTypeIndexer";
+ id?: BabelNodeIdentifier;
+ key: BabelNodeFlowType;
+ value: BabelNodeFlowType;
+ variance?: BabelNodeVariance;
+}
+
+declare class BabelNodeObjectTypeProperty extends BabelNode {
+ type: "ObjectTypeProperty";
+ key: BabelNodeIdentifier | BabelNodeStringLiteral;
+ value: BabelNodeFlowType;
+ variance?: BabelNodeVariance;
+ kind: "init" | "get" | "set";
+ method: boolean;
+ optional: boolean;
+ proto: boolean;
+}
+
+declare class BabelNodeObjectTypeSpreadProperty extends BabelNode {
+ type: "ObjectTypeSpreadProperty";
+ argument: BabelNodeFlowType;
+}
+
+declare class BabelNodeOpaqueType extends BabelNode {
+ type: "OpaqueType";
+ id: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTypeParameterDeclaration;
+ supertype?: BabelNodeFlowType;
+ impltype: BabelNodeFlowType;
+}
+
+declare class BabelNodeQualifiedTypeIdentifier extends BabelNode {
+ type: "QualifiedTypeIdentifier";
+ id: BabelNodeIdentifier;
+ qualification: BabelNodeIdentifier | BabelNodeQualifiedTypeIdentifier;
+}
+
+declare class BabelNodeStringLiteralTypeAnnotation extends BabelNode {
+ type: "StringLiteralTypeAnnotation";
+ value: string;
+}
+
+declare class BabelNodeStringTypeAnnotation extends BabelNode {
+ type: "StringTypeAnnotation";
+}
+
+declare class BabelNodeSymbolTypeAnnotation extends BabelNode {
+ type: "SymbolTypeAnnotation";
+}
+
+declare class BabelNodeThisTypeAnnotation extends BabelNode {
+ type: "ThisTypeAnnotation";
+}
+
+declare class BabelNodeTupleTypeAnnotation extends BabelNode {
+ type: "TupleTypeAnnotation";
+ types: BabelNodeFlowType[];
+}
+
+declare class BabelNodeTypeofTypeAnnotation extends BabelNode {
+ type: "TypeofTypeAnnotation";
+ argument: BabelNodeFlowType;
+}
+
+declare class BabelNodeTypeAlias extends BabelNode {
+ type: "TypeAlias";
+ id: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTypeParameterDeclaration;
+ right: BabelNodeFlowType;
+}
+
+declare class BabelNodeTypeAnnotation extends BabelNode {
+ type: "TypeAnnotation";
+ typeAnnotation: BabelNodeFlowType;
+}
+
+declare class BabelNodeTypeCastExpression extends BabelNode {
+ type: "TypeCastExpression";
+ expression: BabelNodeExpression;
+ typeAnnotation: BabelNodeTypeAnnotation;
+}
+
+declare class BabelNodeTypeParameter extends BabelNode {
+ type: "TypeParameter";
+ bound?: BabelNodeTypeAnnotation;
+ variance?: BabelNodeVariance;
+ name: string;
+}
+
+declare class BabelNodeTypeParameterDeclaration extends BabelNode {
+ type: "TypeParameterDeclaration";
+ params: BabelNodeTypeParameter[];
+}
+
+declare class BabelNodeTypeParameterInstantiation extends BabelNode {
+ type: "TypeParameterInstantiation";
+ params: BabelNodeFlowType[];
+}
+
+declare class BabelNodeUnionTypeAnnotation extends BabelNode {
+ type: "UnionTypeAnnotation";
+ types: BabelNodeFlowType[];
+}
+
+declare class BabelNodeVariance extends BabelNode {
+ type: "Variance";
+ kind: "minus" | "plus";
+}
+
+declare class BabelNodeVoidTypeAnnotation extends BabelNode {
+ type: "VoidTypeAnnotation";
+}
+
+declare class BabelNodeEnumDeclaration extends BabelNode {
+ type: "EnumDeclaration";
+ id: BabelNodeIdentifier;
+ body: BabelNodeEnumBooleanBody | BabelNodeEnumNumberBody | BabelNodeEnumStringBody | BabelNodeEnumSymbolBody;
+}
+
+declare class BabelNodeEnumBooleanBody extends BabelNode {
+ type: "EnumBooleanBody";
+ members: BabelNodeEnumBooleanMember[];
+ explicitType: boolean;
+ hasUnknownMembers: boolean;
+}
+
+declare class BabelNodeEnumNumberBody extends BabelNode {
+ type: "EnumNumberBody";
+ members: BabelNodeEnumNumberMember[];
+ explicitType: boolean;
+ hasUnknownMembers: boolean;
+}
+
+declare class BabelNodeEnumStringBody extends BabelNode {
+ type: "EnumStringBody";
+ members: (BabelNodeEnumStringMember | BabelNodeEnumDefaultedMember)[];
+ explicitType: boolean;
+ hasUnknownMembers: boolean;
+}
+
+declare class BabelNodeEnumSymbolBody extends BabelNode {
+ type: "EnumSymbolBody";
+ members: BabelNodeEnumDefaultedMember[];
+ hasUnknownMembers: boolean;
+}
+
+declare class BabelNodeEnumBooleanMember extends BabelNode {
+ type: "EnumBooleanMember";
+ id: BabelNodeIdentifier;
+ init: BabelNodeBooleanLiteral;
+}
+
+declare class BabelNodeEnumNumberMember extends BabelNode {
+ type: "EnumNumberMember";
+ id: BabelNodeIdentifier;
+ init: BabelNodeNumericLiteral;
+}
+
+declare class BabelNodeEnumStringMember extends BabelNode {
+ type: "EnumStringMember";
+ id: BabelNodeIdentifier;
+ init: BabelNodeStringLiteral;
+}
+
+declare class BabelNodeEnumDefaultedMember extends BabelNode {
+ type: "EnumDefaultedMember";
+ id: BabelNodeIdentifier;
+}
+
+declare class BabelNodeIndexedAccessType extends BabelNode {
+ type: "IndexedAccessType";
+ objectType: BabelNodeFlowType;
+ indexType: BabelNodeFlowType;
+}
+
+declare class BabelNodeOptionalIndexedAccessType extends BabelNode {
+ type: "OptionalIndexedAccessType";
+ objectType: BabelNodeFlowType;
+ indexType: BabelNodeFlowType;
+ optional: boolean;
+}
+
+declare class BabelNodeJSXAttribute extends BabelNode {
+ type: "JSXAttribute";
+ name: BabelNodeJSXIdentifier | BabelNodeJSXNamespacedName;
+ value?: BabelNodeJSXElement | BabelNodeJSXFragment | BabelNodeStringLiteral | BabelNodeJSXExpressionContainer;
+}
+
+declare class BabelNodeJSXClosingElement extends BabelNode {
+ type: "JSXClosingElement";
+ name: BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeJSXNamespacedName;
+}
+
+declare class BabelNodeJSXElement extends BabelNode {
+ type: "JSXElement";
+ openingElement: BabelNodeJSXOpeningElement;
+ closingElement?: BabelNodeJSXClosingElement;
+ children: (BabelNodeJSXText | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXElement | BabelNodeJSXFragment)[];
+ selfClosing?: boolean;
+}
+
+declare class BabelNodeJSXEmptyExpression extends BabelNode {
+ type: "JSXEmptyExpression";
+}
+
+declare class BabelNodeJSXExpressionContainer extends BabelNode {
+ type: "JSXExpressionContainer";
+ expression: BabelNodeExpression | BabelNodeJSXEmptyExpression;
+}
+
+declare class BabelNodeJSXSpreadChild extends BabelNode {
+ type: "JSXSpreadChild";
+ expression: BabelNodeExpression;
+}
+
+declare class BabelNodeJSXIdentifier extends BabelNode {
+ type: "JSXIdentifier";
+ name: string;
+}
+
+declare class BabelNodeJSXMemberExpression extends BabelNode {
+ type: "JSXMemberExpression";
+ object: BabelNodeJSXMemberExpression | BabelNodeJSXIdentifier;
+ property: BabelNodeJSXIdentifier;
+}
+
+declare class BabelNodeJSXNamespacedName extends BabelNode {
+ type: "JSXNamespacedName";
+ namespace: BabelNodeJSXIdentifier;
+ name: BabelNodeJSXIdentifier;
+}
+
+declare class BabelNodeJSXOpeningElement extends BabelNode {
+ type: "JSXOpeningElement";
+ name: BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeJSXNamespacedName;
+ attributes: (BabelNodeJSXAttribute | BabelNodeJSXSpreadAttribute)[];
+ selfClosing?: boolean;
+ typeArguments?: BabelNodeTypeParameterInstantiation;
+ typeParameters?: BabelNodeTSTypeParameterInstantiation;
+}
+
+declare class BabelNodeJSXSpreadAttribute extends BabelNode {
+ type: "JSXSpreadAttribute";
+ argument: BabelNodeExpression;
+}
+
+declare class BabelNodeJSXText extends BabelNode {
+ type: "JSXText";
+ value: string;
+}
+
+declare class BabelNodeJSXFragment extends BabelNode {
+ type: "JSXFragment";
+ openingFragment: BabelNodeJSXOpeningFragment;
+ closingFragment: BabelNodeJSXClosingFragment;
+ children: (BabelNodeJSXText | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXElement | BabelNodeJSXFragment)[];
+}
+
+declare class BabelNodeJSXOpeningFragment extends BabelNode {
+ type: "JSXOpeningFragment";
+}
+
+declare class BabelNodeJSXClosingFragment extends BabelNode {
+ type: "JSXClosingFragment";
+}
+
+declare class BabelNodeNoop extends BabelNode {
+ type: "Noop";
+}
+
+declare class BabelNodePlaceholder extends BabelNode {
+ type: "Placeholder";
+ expectedNode: "Identifier" | "StringLiteral" | "Expression" | "Statement" | "Declaration" | "BlockStatement" | "ClassBody" | "Pattern";
+ name: BabelNodeIdentifier;
+ decorators?: BabelNodeDecorator[];
+ optional?: boolean;
+ typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+}
+
+declare class BabelNodeV8IntrinsicIdentifier extends BabelNode {
+ type: "V8IntrinsicIdentifier";
+ name: string;
+}
+
+declare class BabelNodeArgumentPlaceholder extends BabelNode {
+ type: "ArgumentPlaceholder";
+}
+
+declare class BabelNodeBindExpression extends BabelNode {
+ type: "BindExpression";
+ object: BabelNodeExpression;
+ callee: BabelNodeExpression;
+}
+
+declare class BabelNodeDecorator extends BabelNode {
+ type: "Decorator";
+ expression: BabelNodeExpression;
+}
+
+declare class BabelNodeDoExpression extends BabelNode {
+ type: "DoExpression";
+ body: BabelNodeBlockStatement;
+ async?: boolean;
+}
+
+declare class BabelNodeExportDefaultSpecifier extends BabelNode {
+ type: "ExportDefaultSpecifier";
+ exported: BabelNodeIdentifier;
+}
+
+declare class BabelNodeRecordExpression extends BabelNode {
+ type: "RecordExpression";
+ properties: (BabelNodeObjectProperty | BabelNodeSpreadElement)[];
+}
+
+declare class BabelNodeTupleExpression extends BabelNode {
+ type: "TupleExpression";
+ elements?: (BabelNodeExpression | BabelNodeSpreadElement)[];
+}
+
+declare class BabelNodeDecimalLiteral extends BabelNode {
+ type: "DecimalLiteral";
+ value: string;
+}
+
+declare class BabelNodeModuleExpression extends BabelNode {
+ type: "ModuleExpression";
+ body: BabelNodeProgram;
+}
+
+declare class BabelNodeTopicReference extends BabelNode {
+ type: "TopicReference";
+}
+
+declare class BabelNodePipelineTopicExpression extends BabelNode {
+ type: "PipelineTopicExpression";
+ expression: BabelNodeExpression;
+}
+
+declare class BabelNodePipelineBareFunction extends BabelNode {
+ type: "PipelineBareFunction";
+ callee: BabelNodeExpression;
+}
+
+declare class BabelNodePipelinePrimaryTopicReference extends BabelNode {
+ type: "PipelinePrimaryTopicReference";
+}
+
+declare class BabelNodeVoidPattern extends BabelNode {
+ type: "VoidPattern";
+}
+
+declare class BabelNodeTSParameterProperty extends BabelNode {
+ type: "TSParameterProperty";
+ parameter: BabelNodeIdentifier | BabelNodeAssignmentPattern;
+ accessibility?: "public" | "private" | "protected";
+ decorators?: BabelNodeDecorator[];
+ override?: boolean;
+ readonly?: boolean;
+}
+
+declare class BabelNodeTSDeclareFunction extends BabelNode {
+ type: "TSDeclareFunction";
+ id?: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
+ params: BabelNodeFunctionParameter[];
+ returnType?: BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ async?: boolean;
+ declare?: boolean;
+ generator?: boolean;
+}
+
+declare class BabelNodeTSDeclareMethod extends BabelNode {
+ type: "TSDeclareMethod";
+ decorators?: BabelNodeDecorator[];
+ key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral | BabelNodeExpression;
+ typeParameters?: BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
+ params: (BabelNodeFunctionParameter | BabelNodeTSParameterProperty)[];
+ returnType?: BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ abstract?: boolean;
+ access?: "public" | "private" | "protected";
+ accessibility?: "public" | "private" | "protected";
+ async?: boolean;
+ computed?: boolean;
+ generator?: boolean;
+ kind?: "get" | "set" | "method" | "constructor";
+ optional?: boolean;
+ override?: boolean;
+}
+
+declare class BabelNodeTSQualifiedName extends BabelNode {
+ type: "TSQualifiedName";
+ left: BabelNodeTSEntityName;
+ right: BabelNodeIdentifier;
+}
+
+declare class BabelNodeTSCallSignatureDeclaration extends BabelNode {
+ type: "TSCallSignatureDeclaration";
+ typeParameters?: BabelNodeTSTypeParameterDeclaration;
+ parameters: (BabelNodeArrayPattern | BabelNodeIdentifier | BabelNodeObjectPattern | BabelNodeRestElement)[];
+ typeAnnotation?: BabelNodeTSTypeAnnotation;
+}
+
+declare class BabelNodeTSConstructSignatureDeclaration extends BabelNode {
+ type: "TSConstructSignatureDeclaration";
+ typeParameters?: BabelNodeTSTypeParameterDeclaration;
+ parameters: (BabelNodeArrayPattern | BabelNodeIdentifier | BabelNodeObjectPattern | BabelNodeRestElement)[];
+ typeAnnotation?: BabelNodeTSTypeAnnotation;
+}
+
+declare class BabelNodeTSPropertySignature extends BabelNode {
+ type: "TSPropertySignature";
+ key: BabelNodeExpression;
+ typeAnnotation?: BabelNodeTSTypeAnnotation;
+ computed?: boolean;
+ kind?: "get" | "set";
+ optional?: boolean;
+ readonly?: boolean;
+}
+
+declare class BabelNodeTSMethodSignature extends BabelNode {
+ type: "TSMethodSignature";
+ key: BabelNodeExpression;
+ typeParameters?: BabelNodeTSTypeParameterDeclaration;
+ parameters: (BabelNodeArrayPattern | BabelNodeIdentifier | BabelNodeObjectPattern | BabelNodeRestElement)[];
+ typeAnnotation?: BabelNodeTSTypeAnnotation;
+ computed?: boolean;
+ kind: "method" | "get" | "set";
+ optional?: boolean;
+}
+
+declare class BabelNodeTSIndexSignature extends BabelNode {
+ type: "TSIndexSignature";
+ parameters: BabelNodeIdentifier[];
+ typeAnnotation?: BabelNodeTSTypeAnnotation;
+ readonly?: boolean;
+}
+
+declare class BabelNodeTSAnyKeyword extends BabelNode {
+ type: "TSAnyKeyword";
+}
+
+declare class BabelNodeTSBooleanKeyword extends BabelNode {
+ type: "TSBooleanKeyword";
+}
+
+declare class BabelNodeTSBigIntKeyword extends BabelNode {
+ type: "TSBigIntKeyword";
+}
+
+declare class BabelNodeTSIntrinsicKeyword extends BabelNode {
+ type: "TSIntrinsicKeyword";
+}
+
+declare class BabelNodeTSNeverKeyword extends BabelNode {
+ type: "TSNeverKeyword";
+}
+
+declare class BabelNodeTSNullKeyword extends BabelNode {
+ type: "TSNullKeyword";
+}
+
+declare class BabelNodeTSNumberKeyword extends BabelNode {
+ type: "TSNumberKeyword";
+}
+
+declare class BabelNodeTSObjectKeyword extends BabelNode {
+ type: "TSObjectKeyword";
+}
+
+declare class BabelNodeTSStringKeyword extends BabelNode {
+ type: "TSStringKeyword";
+}
+
+declare class BabelNodeTSSymbolKeyword extends BabelNode {
+ type: "TSSymbolKeyword";
+}
+
+declare class BabelNodeTSUndefinedKeyword extends BabelNode {
+ type: "TSUndefinedKeyword";
+}
+
+declare class BabelNodeTSUnknownKeyword extends BabelNode {
+ type: "TSUnknownKeyword";
+}
+
+declare class BabelNodeTSVoidKeyword extends BabelNode {
+ type: "TSVoidKeyword";
+}
+
+declare class BabelNodeTSThisType extends BabelNode {
+ type: "TSThisType";
+}
+
+declare class BabelNodeTSFunctionType extends BabelNode {
+ type: "TSFunctionType";
+ typeParameters?: BabelNodeTSTypeParameterDeclaration;
+ parameters: (BabelNodeArrayPattern | BabelNodeIdentifier | BabelNodeObjectPattern | BabelNodeRestElement)[];
+ typeAnnotation?: BabelNodeTSTypeAnnotation;
+}
+
+declare class BabelNodeTSConstructorType extends BabelNode {
+ type: "TSConstructorType";
+ typeParameters?: BabelNodeTSTypeParameterDeclaration;
+ parameters: (BabelNodeArrayPattern | BabelNodeIdentifier | BabelNodeObjectPattern | BabelNodeRestElement)[];
+ typeAnnotation?: BabelNodeTSTypeAnnotation;
+ abstract?: boolean;
+}
+
+declare class BabelNodeTSTypeReference extends BabelNode {
+ type: "TSTypeReference";
+ typeName: BabelNodeTSEntityName;
+ typeParameters?: BabelNodeTSTypeParameterInstantiation;
+}
+
+declare class BabelNodeTSTypePredicate extends BabelNode {
+ type: "TSTypePredicate";
+ parameterName: BabelNodeIdentifier | BabelNodeTSThisType;
+ typeAnnotation?: BabelNodeTSTypeAnnotation;
+ asserts?: boolean;
+}
+
+declare class BabelNodeTSTypeQuery extends BabelNode {
+ type: "TSTypeQuery";
+ exprName: BabelNodeTSEntityName | BabelNodeTSImportType;
+ typeParameters?: BabelNodeTSTypeParameterInstantiation;
+}
+
+declare class BabelNodeTSTypeLiteral extends BabelNode {
+ type: "TSTypeLiteral";
+ members: BabelNodeTSTypeElement[];
+}
+
+declare class BabelNodeTSArrayType extends BabelNode {
+ type: "TSArrayType";
+ elementType: BabelNodeTSType;
+}
+
+declare class BabelNodeTSTupleType extends BabelNode {
+ type: "TSTupleType";
+ elementTypes: (BabelNodeTSType | BabelNodeTSNamedTupleMember)[];
+}
+
+declare class BabelNodeTSOptionalType extends BabelNode {
+ type: "TSOptionalType";
+ typeAnnotation: BabelNodeTSType;
+}
+
+declare class BabelNodeTSRestType extends BabelNode {
+ type: "TSRestType";
+ typeAnnotation: BabelNodeTSType;
+}
+
+declare class BabelNodeTSNamedTupleMember extends BabelNode {
+ type: "TSNamedTupleMember";
+ label: BabelNodeIdentifier;
+ elementType: BabelNodeTSType;
+ optional?: boolean;
+}
+
+declare class BabelNodeTSUnionType extends BabelNode {
+ type: "TSUnionType";
+ types: BabelNodeTSType[];
+}
+
+declare class BabelNodeTSIntersectionType extends BabelNode {
+ type: "TSIntersectionType";
+ types: BabelNodeTSType[];
+}
+
+declare class BabelNodeTSConditionalType extends BabelNode {
+ type: "TSConditionalType";
+ checkType: BabelNodeTSType;
+ extendsType: BabelNodeTSType;
+ trueType: BabelNodeTSType;
+ falseType: BabelNodeTSType;
+}
+
+declare class BabelNodeTSInferType extends BabelNode {
+ type: "TSInferType";
+ typeParameter: BabelNodeTSTypeParameter;
+}
+
+declare class BabelNodeTSParenthesizedType extends BabelNode {
+ type: "TSParenthesizedType";
+ typeAnnotation: BabelNodeTSType;
+}
+
+declare class BabelNodeTSTypeOperator extends BabelNode {
+ type: "TSTypeOperator";
+ typeAnnotation: BabelNodeTSType;
+ operator?: string;
+}
+
+declare class BabelNodeTSIndexedAccessType extends BabelNode {
+ type: "TSIndexedAccessType";
+ objectType: BabelNodeTSType;
+ indexType: BabelNodeTSType;
+}
+
+declare class BabelNodeTSMappedType extends BabelNode {
+ type: "TSMappedType";
+ typeParameter: BabelNodeTSTypeParameter;
+ typeAnnotation?: BabelNodeTSType;
+ nameType?: BabelNodeTSType;
+ optional?: true | false | "+" | "-";
+ readonly?: true | false | "+" | "-";
+}
+
+declare class BabelNodeTSTemplateLiteralType extends BabelNode {
+ type: "TSTemplateLiteralType";
+ quasis: BabelNodeTemplateElement[];
+ types: BabelNodeTSType[];
+}
+
+declare class BabelNodeTSLiteralType extends BabelNode {
+ type: "TSLiteralType";
+ literal: BabelNodeNumericLiteral | BabelNodeStringLiteral | BabelNodeBooleanLiteral | BabelNodeBigIntLiteral | BabelNodeTemplateLiteral | BabelNodeUnaryExpression;
+}
+
+declare class BabelNodeTSExpressionWithTypeArguments extends BabelNode {
+ type: "TSExpressionWithTypeArguments";
+ expression: BabelNodeTSEntityName;
+ typeParameters?: BabelNodeTSTypeParameterInstantiation;
+}
+
+declare class BabelNodeTSInterfaceDeclaration extends BabelNode {
+ type: "TSInterfaceDeclaration";
+ id: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTSTypeParameterDeclaration;
+ body: BabelNodeTSInterfaceBody;
+ declare?: boolean;
+}
+
+declare class BabelNodeTSInterfaceBody extends BabelNode {
+ type: "TSInterfaceBody";
+ body: BabelNodeTSTypeElement[];
+}
+
+declare class BabelNodeTSTypeAliasDeclaration extends BabelNode {
+ type: "TSTypeAliasDeclaration";
+ id: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTSTypeParameterDeclaration;
+ typeAnnotation: BabelNodeTSType;
+ declare?: boolean;
+}
+
+declare class BabelNodeTSInstantiationExpression extends BabelNode {
+ type: "TSInstantiationExpression";
+ expression: BabelNodeExpression;
+ typeParameters?: BabelNodeTSTypeParameterInstantiation;
+}
+
+declare class BabelNodeTSAsExpression extends BabelNode {
+ type: "TSAsExpression";
+ expression: BabelNodeExpression;
+ typeAnnotation: BabelNodeTSType;
+}
+
+declare class BabelNodeTSSatisfiesExpression extends BabelNode {
+ type: "TSSatisfiesExpression";
+ expression: BabelNodeExpression;
+ typeAnnotation: BabelNodeTSType;
+}
+
+declare class BabelNodeTSTypeAssertion extends BabelNode {
+ type: "TSTypeAssertion";
+ typeAnnotation: BabelNodeTSType;
+ expression: BabelNodeExpression;
+}
+
+declare class BabelNodeTSEnumBody extends BabelNode {
+ type: "TSEnumBody";
+ members: BabelNodeTSEnumMember[];
+}
+
+declare class BabelNodeTSEnumDeclaration extends BabelNode {
+ type: "TSEnumDeclaration";
+ id: BabelNodeIdentifier;
+ members: BabelNodeTSEnumMember[];
+ body?: BabelNodeTSEnumBody;
+ declare?: boolean;
+ initializer?: BabelNodeExpression;
+}
+
+declare class BabelNodeTSEnumMember extends BabelNode {
+ type: "TSEnumMember";
+ id: BabelNodeIdentifier | BabelNodeStringLiteral;
+ initializer?: BabelNodeExpression;
+}
+
+declare class BabelNodeTSModuleDeclaration extends BabelNode {
+ type: "TSModuleDeclaration";
+ id: BabelNodeIdentifier | BabelNodeStringLiteral;
+ body: BabelNodeTSModuleBlock | BabelNodeTSModuleDeclaration;
+ declare?: boolean;
+ global?: boolean;
+ kind: "global" | "module" | "namespace";
+}
+
+declare class BabelNodeTSModuleBlock extends BabelNode {
+ type: "TSModuleBlock";
+ body: BabelNodeStatement[];
+}
+
+declare class BabelNodeTSImportType extends BabelNode {
+ type: "TSImportType";
+ argument: BabelNodeStringLiteral;
+ qualifier?: BabelNodeTSEntityName;
+ typeParameters?: BabelNodeTSTypeParameterInstantiation;
+ options?: BabelNodeObjectExpression;
+}
+
+declare class BabelNodeTSImportEqualsDeclaration extends BabelNode {
+ type: "TSImportEqualsDeclaration";
+ id: BabelNodeIdentifier;
+ moduleReference: BabelNodeTSEntityName | BabelNodeTSExternalModuleReference;
+ importKind?: "type" | "value";
+ isExport: boolean;
+}
+
+declare class BabelNodeTSExternalModuleReference extends BabelNode {
+ type: "TSExternalModuleReference";
+ expression: BabelNodeStringLiteral;
+}
+
+declare class BabelNodeTSNonNullExpression extends BabelNode {
+ type: "TSNonNullExpression";
+ expression: BabelNodeExpression;
+}
+
+declare class BabelNodeTSExportAssignment extends BabelNode {
+ type: "TSExportAssignment";
+ expression: BabelNodeExpression;
+}
+
+declare class BabelNodeTSNamespaceExportDeclaration extends BabelNode {
+ type: "TSNamespaceExportDeclaration";
+ id: BabelNodeIdentifier;
+}
+
+declare class BabelNodeTSTypeAnnotation extends BabelNode {
+ type: "TSTypeAnnotation";
+ typeAnnotation: BabelNodeTSType;
+}
+
+declare class BabelNodeTSTypeParameterInstantiation extends BabelNode {
+ type: "TSTypeParameterInstantiation";
+ params: BabelNodeTSType[];
+}
+
+declare class BabelNodeTSTypeParameterDeclaration extends BabelNode {
+ type: "TSTypeParameterDeclaration";
+ params: BabelNodeTSTypeParameter[];
+}
+
+declare class BabelNodeTSTypeParameter extends BabelNode {
+ type: "TSTypeParameter";
+ constraint?: BabelNodeTSType;
+ name: string;
+ out?: boolean;
+}
+
+type BabelNodeStandardized = BabelNodeArrayExpression | BabelNodeAssignmentExpression | BabelNodeBinaryExpression | BabelNodeInterpreterDirective | BabelNodeDirective | BabelNodeDirectiveLiteral | BabelNodeBlockStatement | BabelNodeBreakStatement | BabelNodeCallExpression | BabelNodeCatchClause | BabelNodeConditionalExpression | BabelNodeContinueStatement | BabelNodeDebuggerStatement | BabelNodeDoWhileStatement | BabelNodeEmptyStatement | BabelNodeExpressionStatement | BabelNodeFile | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeIdentifier | BabelNodeIfStatement | BabelNodeLabeledStatement | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeRegExpLiteral | BabelNodeLogicalExpression | BabelNodeMemberExpression | BabelNodeNewExpression | BabelNodeProgram | BabelNodeObjectExpression | BabelNodeObjectMethod | BabelNodeObjectProperty | BabelNodeRestElement | BabelNodeReturnStatement | BabelNodeSequenceExpression | BabelNodeParenthesizedExpression | BabelNodeSwitchCase | BabelNodeSwitchStatement | BabelNodeThisExpression | BabelNodeThrowStatement | BabelNodeTryStatement | BabelNodeUnaryExpression | BabelNodeUpdateExpression | BabelNodeVariableDeclaration | BabelNodeVariableDeclarator | BabelNodeWhileStatement | BabelNodeWithStatement | BabelNodeAssignmentPattern | BabelNodeArrayPattern | BabelNodeArrowFunctionExpression | BabelNodeClassBody | BabelNodeClassExpression | BabelNodeClassDeclaration | BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration | BabelNodeExportSpecifier | BabelNodeForOfStatement | BabelNodeImportDeclaration | BabelNodeImportDefaultSpecifier | BabelNodeImportNamespaceSpecifier | BabelNodeImportSpecifier | BabelNodeImportExpression | BabelNodeMetaProperty | BabelNodeClassMethod | BabelNodeObjectPattern | BabelNodeSpreadElement | BabelNodeSuper | BabelNodeTaggedTemplateExpression | BabelNodeTemplateElement | BabelNodeTemplateLiteral | BabelNodeYieldExpression | BabelNodeAwaitExpression | BabelNodeImport | BabelNodeBigIntLiteral | BabelNodeExportNamespaceSpecifier | BabelNodeOptionalMemberExpression | BabelNodeOptionalCallExpression | BabelNodeClassProperty | BabelNodeClassAccessorProperty | BabelNodeClassPrivateProperty | BabelNodeClassPrivateMethod | BabelNodePrivateName | BabelNodeStaticBlock | BabelNodeImportAttribute;
+type BabelNodeExpression = BabelNodeArrayExpression | BabelNodeAssignmentExpression | BabelNodeBinaryExpression | BabelNodeCallExpression | BabelNodeConditionalExpression | BabelNodeFunctionExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeRegExpLiteral | BabelNodeLogicalExpression | BabelNodeMemberExpression | BabelNodeNewExpression | BabelNodeObjectExpression | BabelNodeSequenceExpression | BabelNodeParenthesizedExpression | BabelNodeThisExpression | BabelNodeUnaryExpression | BabelNodeUpdateExpression | BabelNodeArrowFunctionExpression | BabelNodeClassExpression | BabelNodeImportExpression | BabelNodeMetaProperty | BabelNodeSuper | BabelNodeTaggedTemplateExpression | BabelNodeTemplateLiteral | BabelNodeYieldExpression | BabelNodeAwaitExpression | BabelNodeImport | BabelNodeBigIntLiteral | BabelNodeOptionalMemberExpression | BabelNodeOptionalCallExpression | BabelNodeTypeCastExpression | BabelNodeJSXElement | BabelNodeJSXFragment | BabelNodeBindExpression | BabelNodeDoExpression | BabelNodeRecordExpression | BabelNodeTupleExpression | BabelNodeDecimalLiteral | BabelNodeModuleExpression | BabelNodeTopicReference | BabelNodePipelineTopicExpression | BabelNodePipelineBareFunction | BabelNodePipelinePrimaryTopicReference | BabelNodeTSInstantiationExpression | BabelNodeTSAsExpression | BabelNodeTSSatisfiesExpression | BabelNodeTSTypeAssertion | BabelNodeTSNonNullExpression;
+type BabelNodeBinary = BabelNodeBinaryExpression | BabelNodeLogicalExpression;
+type BabelNodeScopable = BabelNodeBlockStatement | BabelNodeCatchClause | BabelNodeDoWhileStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeProgram | BabelNodeObjectMethod | BabelNodeSwitchStatement | BabelNodeWhileStatement | BabelNodeArrowFunctionExpression | BabelNodeClassExpression | BabelNodeClassDeclaration | BabelNodeForOfStatement | BabelNodeClassMethod | BabelNodeClassPrivateMethod | BabelNodeStaticBlock | BabelNodeTSModuleBlock;
+type BabelNodeBlockParent = BabelNodeBlockStatement | BabelNodeCatchClause | BabelNodeDoWhileStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeProgram | BabelNodeObjectMethod | BabelNodeSwitchStatement | BabelNodeWhileStatement | BabelNodeArrowFunctionExpression | BabelNodeForOfStatement | BabelNodeClassMethod | BabelNodeClassPrivateMethod | BabelNodeStaticBlock | BabelNodeTSModuleBlock;
+type BabelNodeBlock = BabelNodeBlockStatement | BabelNodeProgram | BabelNodeTSModuleBlock;
+type BabelNodeStatement = BabelNodeBlockStatement | BabelNodeBreakStatement | BabelNodeContinueStatement | BabelNodeDebuggerStatement | BabelNodeDoWhileStatement | BabelNodeEmptyStatement | BabelNodeExpressionStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeIfStatement | BabelNodeLabeledStatement | BabelNodeReturnStatement | BabelNodeSwitchStatement | BabelNodeThrowStatement | BabelNodeTryStatement | BabelNodeVariableDeclaration | BabelNodeWhileStatement | BabelNodeWithStatement | BabelNodeClassDeclaration | BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration | BabelNodeForOfStatement | BabelNodeImportDeclaration | BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareOpaqueType | BabelNodeDeclareVariable | BabelNodeDeclareExportDeclaration | BabelNodeDeclareExportAllDeclaration | BabelNodeInterfaceDeclaration | BabelNodeOpaqueType | BabelNodeTypeAlias | BabelNodeEnumDeclaration | BabelNodeTSDeclareFunction | BabelNodeTSInterfaceDeclaration | BabelNodeTSTypeAliasDeclaration | BabelNodeTSEnumDeclaration | BabelNodeTSModuleDeclaration | BabelNodeTSImportEqualsDeclaration | BabelNodeTSExportAssignment | BabelNodeTSNamespaceExportDeclaration;
+type BabelNodeTerminatorless = BabelNodeBreakStatement | BabelNodeContinueStatement | BabelNodeReturnStatement | BabelNodeThrowStatement | BabelNodeYieldExpression | BabelNodeAwaitExpression;
+type BabelNodeCompletionStatement = BabelNodeBreakStatement | BabelNodeContinueStatement | BabelNodeReturnStatement | BabelNodeThrowStatement;
+type BabelNodeConditional = BabelNodeConditionalExpression | BabelNodeIfStatement;
+type BabelNodeLoop = BabelNodeDoWhileStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeWhileStatement | BabelNodeForOfStatement;
+type BabelNodeWhile = BabelNodeDoWhileStatement | BabelNodeWhileStatement;
+type BabelNodeExpressionWrapper = BabelNodeExpressionStatement | BabelNodeParenthesizedExpression | BabelNodeTypeCastExpression;
+type BabelNodeFor = BabelNodeForInStatement | BabelNodeForStatement | BabelNodeForOfStatement;
+type BabelNodeForXStatement = BabelNodeForInStatement | BabelNodeForOfStatement;
+type BabelNodeFunction = BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeObjectMethod | BabelNodeArrowFunctionExpression | BabelNodeClassMethod | BabelNodeClassPrivateMethod;
+type BabelNodeFunctionParent = BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeObjectMethod | BabelNodeArrowFunctionExpression | BabelNodeClassMethod | BabelNodeClassPrivateMethod | BabelNodeStaticBlock | BabelNodeTSModuleBlock;
+type BabelNodePureish = BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeRegExpLiteral | BabelNodeArrowFunctionExpression | BabelNodeBigIntLiteral | BabelNodeDecimalLiteral;
+type BabelNodeDeclaration = BabelNodeFunctionDeclaration | BabelNodeVariableDeclaration | BabelNodeClassDeclaration | BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration | BabelNodeImportDeclaration | BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareOpaqueType | BabelNodeDeclareVariable | BabelNodeDeclareExportDeclaration | BabelNodeDeclareExportAllDeclaration | BabelNodeInterfaceDeclaration | BabelNodeOpaqueType | BabelNodeTypeAlias | BabelNodeEnumDeclaration | BabelNodeTSDeclareFunction | BabelNodeTSInterfaceDeclaration | BabelNodeTSTypeAliasDeclaration | BabelNodeTSEnumDeclaration | BabelNodeTSModuleDeclaration | BabelNodeTSImportEqualsDeclaration;
+type BabelNodeFunctionParameter = BabelNodeIdentifier | BabelNodeRestElement | BabelNodeAssignmentPattern | BabelNodeArrayPattern | BabelNodeObjectPattern | BabelNodeVoidPattern;
+type BabelNodePatternLike = BabelNodeIdentifier | BabelNodeMemberExpression | BabelNodeRestElement | BabelNodeAssignmentPattern | BabelNodeArrayPattern | BabelNodeObjectPattern | BabelNodeVoidPattern | BabelNodeTSAsExpression | BabelNodeTSSatisfiesExpression | BabelNodeTSTypeAssertion | BabelNodeTSNonNullExpression;
+type BabelNodeLVal = BabelNodeIdentifier | BabelNodeMemberExpression | BabelNodeRestElement | BabelNodeAssignmentPattern | BabelNodeArrayPattern | BabelNodeObjectPattern | BabelNodeTSParameterProperty | BabelNodeTSAsExpression | BabelNodeTSSatisfiesExpression | BabelNodeTSTypeAssertion | BabelNodeTSNonNullExpression;
+type BabelNodeTSEntityName = BabelNodeIdentifier | BabelNodeTSQualifiedName;
+type BabelNodeLiteral = BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeRegExpLiteral | BabelNodeTemplateLiteral | BabelNodeBigIntLiteral | BabelNodeDecimalLiteral;
+type BabelNodeImmutable = BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeBigIntLiteral | BabelNodeJSXAttribute | BabelNodeJSXClosingElement | BabelNodeJSXElement | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXOpeningElement | BabelNodeJSXText | BabelNodeJSXFragment | BabelNodeJSXOpeningFragment | BabelNodeJSXClosingFragment | BabelNodeDecimalLiteral;
+type BabelNodeUserWhitespacable = BabelNodeObjectMethod | BabelNodeObjectProperty | BabelNodeObjectTypeInternalSlot | BabelNodeObjectTypeCallProperty | BabelNodeObjectTypeIndexer | BabelNodeObjectTypeProperty | BabelNodeObjectTypeSpreadProperty;
+type BabelNodeMethod = BabelNodeObjectMethod | BabelNodeClassMethod | BabelNodeClassPrivateMethod;
+type BabelNodeObjectMember = BabelNodeObjectMethod | BabelNodeObjectProperty;
+type BabelNodeProperty = BabelNodeObjectProperty | BabelNodeClassProperty | BabelNodeClassAccessorProperty | BabelNodeClassPrivateProperty;
+type BabelNodeUnaryLike = BabelNodeUnaryExpression | BabelNodeSpreadElement;
+type BabelNodePattern = BabelNodeAssignmentPattern | BabelNodeArrayPattern | BabelNodeObjectPattern | BabelNodeVoidPattern;
+type BabelNodeClass = BabelNodeClassExpression | BabelNodeClassDeclaration;
+type BabelNodeImportOrExportDeclaration = BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration | BabelNodeImportDeclaration;
+type BabelNodeExportDeclaration = BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration;
+type BabelNodeModuleSpecifier = BabelNodeExportSpecifier | BabelNodeImportDefaultSpecifier | BabelNodeImportNamespaceSpecifier | BabelNodeImportSpecifier | BabelNodeExportNamespaceSpecifier | BabelNodeExportDefaultSpecifier;
+type BabelNodeAccessor = BabelNodeClassAccessorProperty;
+type BabelNodePrivate = BabelNodeClassPrivateProperty | BabelNodeClassPrivateMethod | BabelNodePrivateName;
+type BabelNodeFlow = BabelNodeAnyTypeAnnotation | BabelNodeArrayTypeAnnotation | BabelNodeBooleanTypeAnnotation | BabelNodeBooleanLiteralTypeAnnotation | BabelNodeNullLiteralTypeAnnotation | BabelNodeClassImplements | BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareOpaqueType | BabelNodeDeclareVariable | BabelNodeDeclareExportDeclaration | BabelNodeDeclareExportAllDeclaration | BabelNodeDeclaredPredicate | BabelNodeExistsTypeAnnotation | BabelNodeFunctionTypeAnnotation | BabelNodeFunctionTypeParam | BabelNodeGenericTypeAnnotation | BabelNodeInferredPredicate | BabelNodeInterfaceExtends | BabelNodeInterfaceDeclaration | BabelNodeInterfaceTypeAnnotation | BabelNodeIntersectionTypeAnnotation | BabelNodeMixedTypeAnnotation | BabelNodeEmptyTypeAnnotation | BabelNodeNullableTypeAnnotation | BabelNodeNumberLiteralTypeAnnotation | BabelNodeNumberTypeAnnotation | BabelNodeObjectTypeAnnotation | BabelNodeObjectTypeInternalSlot | BabelNodeObjectTypeCallProperty | BabelNodeObjectTypeIndexer | BabelNodeObjectTypeProperty | BabelNodeObjectTypeSpreadProperty | BabelNodeOpaqueType | BabelNodeQualifiedTypeIdentifier | BabelNodeStringLiteralTypeAnnotation | BabelNodeStringTypeAnnotation | BabelNodeSymbolTypeAnnotation | BabelNodeThisTypeAnnotation | BabelNodeTupleTypeAnnotation | BabelNodeTypeofTypeAnnotation | BabelNodeTypeAlias | BabelNodeTypeAnnotation | BabelNodeTypeCastExpression | BabelNodeTypeParameter | BabelNodeTypeParameterDeclaration | BabelNodeTypeParameterInstantiation | BabelNodeUnionTypeAnnotation | BabelNodeVariance | BabelNodeVoidTypeAnnotation | BabelNodeEnumDeclaration | BabelNodeEnumBooleanBody | BabelNodeEnumNumberBody | BabelNodeEnumStringBody | BabelNodeEnumSymbolBody | BabelNodeEnumBooleanMember | BabelNodeEnumNumberMember | BabelNodeEnumStringMember | BabelNodeEnumDefaultedMember | BabelNodeIndexedAccessType | BabelNodeOptionalIndexedAccessType;
+type BabelNodeFlowType = BabelNodeAnyTypeAnnotation | BabelNodeArrayTypeAnnotation | BabelNodeBooleanTypeAnnotation | BabelNodeBooleanLiteralTypeAnnotation | BabelNodeNullLiteralTypeAnnotation | BabelNodeExistsTypeAnnotation | BabelNodeFunctionTypeAnnotation | BabelNodeGenericTypeAnnotation | BabelNodeInterfaceTypeAnnotation | BabelNodeIntersectionTypeAnnotation | BabelNodeMixedTypeAnnotation | BabelNodeEmptyTypeAnnotation | BabelNodeNullableTypeAnnotation | BabelNodeNumberLiteralTypeAnnotation | BabelNodeNumberTypeAnnotation | BabelNodeObjectTypeAnnotation | BabelNodeStringLiteralTypeAnnotation | BabelNodeStringTypeAnnotation | BabelNodeSymbolTypeAnnotation | BabelNodeThisTypeAnnotation | BabelNodeTupleTypeAnnotation | BabelNodeTypeofTypeAnnotation | BabelNodeUnionTypeAnnotation | BabelNodeVoidTypeAnnotation | BabelNodeIndexedAccessType | BabelNodeOptionalIndexedAccessType;
+type BabelNodeFlowBaseAnnotation = BabelNodeAnyTypeAnnotation | BabelNodeBooleanTypeAnnotation | BabelNodeNullLiteralTypeAnnotation | BabelNodeMixedTypeAnnotation | BabelNodeEmptyTypeAnnotation | BabelNodeNumberTypeAnnotation | BabelNodeStringTypeAnnotation | BabelNodeSymbolTypeAnnotation | BabelNodeThisTypeAnnotation | BabelNodeVoidTypeAnnotation;
+type BabelNodeFlowDeclaration = BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareOpaqueType | BabelNodeDeclareVariable | BabelNodeDeclareExportDeclaration | BabelNodeDeclareExportAllDeclaration | BabelNodeInterfaceDeclaration | BabelNodeOpaqueType | BabelNodeTypeAlias;
+type BabelNodeFlowPredicate = BabelNodeDeclaredPredicate | BabelNodeInferredPredicate;
+type BabelNodeEnumBody = BabelNodeEnumBooleanBody | BabelNodeEnumNumberBody | BabelNodeEnumStringBody | BabelNodeEnumSymbolBody;
+type BabelNodeEnumMember = BabelNodeEnumBooleanMember | BabelNodeEnumNumberMember | BabelNodeEnumStringMember | BabelNodeEnumDefaultedMember;
+type BabelNodeJSX = BabelNodeJSXAttribute | BabelNodeJSXClosingElement | BabelNodeJSXElement | BabelNodeJSXEmptyExpression | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeJSXNamespacedName | BabelNodeJSXOpeningElement | BabelNodeJSXSpreadAttribute | BabelNodeJSXText | BabelNodeJSXFragment | BabelNodeJSXOpeningFragment | BabelNodeJSXClosingFragment;
+type BabelNodeMiscellaneous = BabelNodeNoop | BabelNodePlaceholder | BabelNodeV8IntrinsicIdentifier;
+type BabelNodeTypeScript = BabelNodeTSParameterProperty | BabelNodeTSDeclareFunction | BabelNodeTSDeclareMethod | BabelNodeTSQualifiedName | BabelNodeTSCallSignatureDeclaration | BabelNodeTSConstructSignatureDeclaration | BabelNodeTSPropertySignature | BabelNodeTSMethodSignature | BabelNodeTSIndexSignature | BabelNodeTSAnyKeyword | BabelNodeTSBooleanKeyword | BabelNodeTSBigIntKeyword | BabelNodeTSIntrinsicKeyword | BabelNodeTSNeverKeyword | BabelNodeTSNullKeyword | BabelNodeTSNumberKeyword | BabelNodeTSObjectKeyword | BabelNodeTSStringKeyword | BabelNodeTSSymbolKeyword | BabelNodeTSUndefinedKeyword | BabelNodeTSUnknownKeyword | BabelNodeTSVoidKeyword | BabelNodeTSThisType | BabelNodeTSFunctionType | BabelNodeTSConstructorType | BabelNodeTSTypeReference | BabelNodeTSTypePredicate | BabelNodeTSTypeQuery | BabelNodeTSTypeLiteral | BabelNodeTSArrayType | BabelNodeTSTupleType | BabelNodeTSOptionalType | BabelNodeTSRestType | BabelNodeTSNamedTupleMember | BabelNodeTSUnionType | BabelNodeTSIntersectionType | BabelNodeTSConditionalType | BabelNodeTSInferType | BabelNodeTSParenthesizedType | BabelNodeTSTypeOperator | BabelNodeTSIndexedAccessType | BabelNodeTSMappedType | BabelNodeTSTemplateLiteralType | BabelNodeTSLiteralType | BabelNodeTSExpressionWithTypeArguments | BabelNodeTSInterfaceDeclaration | BabelNodeTSInterfaceBody | BabelNodeTSTypeAliasDeclaration | BabelNodeTSInstantiationExpression | BabelNodeTSAsExpression | BabelNodeTSSatisfiesExpression | BabelNodeTSTypeAssertion | BabelNodeTSEnumBody | BabelNodeTSEnumDeclaration | BabelNodeTSEnumMember | BabelNodeTSModuleDeclaration | BabelNodeTSModuleBlock | BabelNodeTSImportType | BabelNodeTSImportEqualsDeclaration | BabelNodeTSExternalModuleReference | BabelNodeTSNonNullExpression | BabelNodeTSExportAssignment | BabelNodeTSNamespaceExportDeclaration | BabelNodeTSTypeAnnotation | BabelNodeTSTypeParameterInstantiation | BabelNodeTSTypeParameterDeclaration | BabelNodeTSTypeParameter;
+type BabelNodeTSTypeElement = BabelNodeTSCallSignatureDeclaration | BabelNodeTSConstructSignatureDeclaration | BabelNodeTSPropertySignature | BabelNodeTSMethodSignature | BabelNodeTSIndexSignature;
+type BabelNodeTSType = BabelNodeTSAnyKeyword | BabelNodeTSBooleanKeyword | BabelNodeTSBigIntKeyword | BabelNodeTSIntrinsicKeyword | BabelNodeTSNeverKeyword | BabelNodeTSNullKeyword | BabelNodeTSNumberKeyword | BabelNodeTSObjectKeyword | BabelNodeTSStringKeyword | BabelNodeTSSymbolKeyword | BabelNodeTSUndefinedKeyword | BabelNodeTSUnknownKeyword | BabelNodeTSVoidKeyword | BabelNodeTSThisType | BabelNodeTSFunctionType | BabelNodeTSConstructorType | BabelNodeTSTypeReference | BabelNodeTSTypePredicate | BabelNodeTSTypeQuery | BabelNodeTSTypeLiteral | BabelNodeTSArrayType | BabelNodeTSTupleType | BabelNodeTSOptionalType | BabelNodeTSRestType | BabelNodeTSUnionType | BabelNodeTSIntersectionType | BabelNodeTSConditionalType | BabelNodeTSInferType | BabelNodeTSParenthesizedType | BabelNodeTSTypeOperator | BabelNodeTSIndexedAccessType | BabelNodeTSMappedType | BabelNodeTSTemplateLiteralType | BabelNodeTSLiteralType | BabelNodeTSExpressionWithTypeArguments | BabelNodeTSImportType;
+type BabelNodeTSBaseType = BabelNodeTSAnyKeyword | BabelNodeTSBooleanKeyword | BabelNodeTSBigIntKeyword | BabelNodeTSIntrinsicKeyword | BabelNodeTSNeverKeyword | BabelNodeTSNullKeyword | BabelNodeTSNumberKeyword | BabelNodeTSObjectKeyword | BabelNodeTSStringKeyword | BabelNodeTSSymbolKeyword | BabelNodeTSUndefinedKeyword | BabelNodeTSUnknownKeyword | BabelNodeTSVoidKeyword | BabelNodeTSThisType | BabelNodeTSTemplateLiteralType | BabelNodeTSLiteralType;
+type BabelNodeModuleDeclaration = BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration | BabelNodeImportDeclaration;
+
+declare module "@babel/types" {
+ declare export function arrayExpression(elements?: (null | BabelNodeExpression | BabelNodeSpreadElement)[]): BabelNodeArrayExpression;
+ declare export function assignmentExpression(operator: string, left: BabelNodeLVal | BabelNodeOptionalMemberExpression, right: BabelNodeExpression): BabelNodeAssignmentExpression;
+ declare export function binaryExpression(operator: "+" | "-" | "/" | "%" | "*" | "**" | "&" | "|" | ">>" | ">>>" | "<<" | "^" | "==" | "===" | "!=" | "!==" | "in" | "instanceof" | ">" | "<" | ">=" | "<=" | "|>", left: BabelNodeExpression | BabelNodePrivateName, right: BabelNodeExpression): BabelNodeBinaryExpression;
+ declare export function interpreterDirective(value: string): BabelNodeInterpreterDirective;
+ declare export function directive(value: BabelNodeDirectiveLiteral): BabelNodeDirective;
+ declare export function directiveLiteral(value: string): BabelNodeDirectiveLiteral;
+ declare export function blockStatement(body: BabelNodeStatement[], directives?: BabelNodeDirective[]): BabelNodeBlockStatement;
+ declare export function breakStatement(label?: BabelNodeIdentifier): BabelNodeBreakStatement;
+ declare export function callExpression(callee: BabelNodeExpression | BabelNodeSuper | BabelNodeV8IntrinsicIdentifier, _arguments: (BabelNodeExpression | BabelNodeSpreadElement | BabelNodeArgumentPlaceholder)[]): BabelNodeCallExpression;
+ declare export function catchClause(param?: BabelNodeIdentifier | BabelNodeArrayPattern | BabelNodeObjectPattern, body: BabelNodeBlockStatement): BabelNodeCatchClause;
+ declare export function conditionalExpression(test: BabelNodeExpression, consequent: BabelNodeExpression, alternate: BabelNodeExpression): BabelNodeConditionalExpression;
+ declare export function continueStatement(label?: BabelNodeIdentifier): BabelNodeContinueStatement;
+ declare export function debuggerStatement(): BabelNodeDebuggerStatement;
+ declare export function doWhileStatement(test: BabelNodeExpression, body: BabelNodeStatement): BabelNodeDoWhileStatement;
+ declare export function emptyStatement(): BabelNodeEmptyStatement;
+ declare export function expressionStatement(expression: BabelNodeExpression): BabelNodeExpressionStatement;
+ declare export function file(program: BabelNodeProgram, comments?: (BabelNodeCommentBlock | BabelNodeCommentLine)[], tokens?: any[]): BabelNodeFile;
+ declare export function forInStatement(left: BabelNodeVariableDeclaration | BabelNodeLVal, right: BabelNodeExpression, body: BabelNodeStatement): BabelNodeForInStatement;
+ declare export function forStatement(init?: BabelNodeVariableDeclaration | BabelNodeExpression, test?: BabelNodeExpression, update?: BabelNodeExpression, body: BabelNodeStatement): BabelNodeForStatement;
+ declare export function functionDeclaration(id?: BabelNodeIdentifier, params: BabelNodeFunctionParameter[], body: BabelNodeBlockStatement, generator?: boolean, async?: boolean): BabelNodeFunctionDeclaration;
+ declare export function functionExpression(id?: BabelNodeIdentifier, params: BabelNodeFunctionParameter[], body: BabelNodeBlockStatement, generator?: boolean, async?: boolean): BabelNodeFunctionExpression;
+ declare export function identifier(name: string): BabelNodeIdentifier;
+ declare export function ifStatement(test: BabelNodeExpression, consequent: BabelNodeStatement, alternate?: BabelNodeStatement): BabelNodeIfStatement;
+ declare export function labeledStatement(label: BabelNodeIdentifier, body: BabelNodeStatement): BabelNodeLabeledStatement;
+ declare export function stringLiteral(value: string): BabelNodeStringLiteral;
+ declare export function numericLiteral(value: number): BabelNodeNumericLiteral;
+ declare export function nullLiteral(): BabelNodeNullLiteral;
+ declare export function booleanLiteral(value: boolean): BabelNodeBooleanLiteral;
+ declare export function regExpLiteral(pattern: string, flags?: string): BabelNodeRegExpLiteral;
+ declare export function logicalExpression(operator: "||" | "&&" | "??", left: BabelNodeExpression, right: BabelNodeExpression): BabelNodeLogicalExpression;
+ declare export function memberExpression(object: BabelNodeExpression | BabelNodeSuper, property: BabelNodeExpression | BabelNodeIdentifier | BabelNodePrivateName, computed?: boolean, optional?: boolean): BabelNodeMemberExpression;
+ declare export function newExpression(callee: BabelNodeExpression | BabelNodeSuper | BabelNodeV8IntrinsicIdentifier, _arguments: (BabelNodeExpression | BabelNodeSpreadElement | BabelNodeArgumentPlaceholder)[]): BabelNodeNewExpression;
+ declare export function program(body: BabelNodeStatement[], directives?: BabelNodeDirective[], sourceType?: "script" | "module", interpreter?: BabelNodeInterpreterDirective): BabelNodeProgram;
+ declare export function objectExpression(properties: (BabelNodeObjectMethod | BabelNodeObjectProperty | BabelNodeSpreadElement)[]): BabelNodeObjectExpression;
+ declare export function objectMethod(kind?: "method" | "get" | "set", key: BabelNodeExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral, params: BabelNodeFunctionParameter[], body: BabelNodeBlockStatement, computed?: boolean, generator?: boolean, async?: boolean): BabelNodeObjectMethod;
+ declare export function objectProperty(key: BabelNodeExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral | BabelNodeDecimalLiteral | BabelNodePrivateName, value: BabelNodeExpression | BabelNodePatternLike, computed?: boolean, shorthand?: boolean, decorators?: BabelNodeDecorator[]): BabelNodeObjectProperty;
+ declare export function restElement(argument: BabelNodeIdentifier | BabelNodeArrayPattern | BabelNodeObjectPattern | BabelNodeMemberExpression | BabelNodeTSAsExpression | BabelNodeTSSatisfiesExpression | BabelNodeTSTypeAssertion | BabelNodeTSNonNullExpression | BabelNodeRestElement | BabelNodeAssignmentPattern): BabelNodeRestElement;
+ declare export function returnStatement(argument?: BabelNodeExpression): BabelNodeReturnStatement;
+ declare export function sequenceExpression(expressions: BabelNodeExpression[]): BabelNodeSequenceExpression;
+ declare export function parenthesizedExpression(expression: BabelNodeExpression): BabelNodeParenthesizedExpression;
+ declare export function switchCase(test?: BabelNodeExpression, consequent: BabelNodeStatement[]): BabelNodeSwitchCase;
+ declare export function switchStatement(discriminant: BabelNodeExpression, cases: BabelNodeSwitchCase[]): BabelNodeSwitchStatement;
+ declare export function thisExpression(): BabelNodeThisExpression;
+ declare export function throwStatement(argument: BabelNodeExpression): BabelNodeThrowStatement;
+ declare export function tryStatement(block: BabelNodeBlockStatement, handler?: BabelNodeCatchClause, finalizer?: BabelNodeBlockStatement): BabelNodeTryStatement;
+ declare export function unaryExpression(operator: "void" | "throw" | "delete" | "!" | "+" | "-" | "~" | "typeof", argument: BabelNodeExpression, prefix?: boolean): BabelNodeUnaryExpression;
+ declare export function updateExpression(operator: "++" | "--", argument: BabelNodeExpression, prefix?: boolean): BabelNodeUpdateExpression;
+ declare export function variableDeclaration(kind: "var" | "let" | "const" | "using" | "await using", declarations: BabelNodeVariableDeclarator[]): BabelNodeVariableDeclaration;
+ declare export function variableDeclarator(id: BabelNodeLVal | BabelNodeVoidPattern, init?: BabelNodeExpression): BabelNodeVariableDeclarator;
+ declare export function whileStatement(test: BabelNodeExpression, body: BabelNodeStatement): BabelNodeWhileStatement;
+ declare export function withStatement(object: BabelNodeExpression, body: BabelNodeStatement): BabelNodeWithStatement;
+ declare export function assignmentPattern(left: BabelNodeIdentifier | BabelNodeObjectPattern | BabelNodeArrayPattern | BabelNodeMemberExpression | BabelNodeTSAsExpression | BabelNodeTSSatisfiesExpression | BabelNodeTSTypeAssertion | BabelNodeTSNonNullExpression, right: BabelNodeExpression): BabelNodeAssignmentPattern;
+ declare export function arrayPattern(elements: (null | BabelNodePatternLike)[]): BabelNodeArrayPattern;
+ declare export function arrowFunctionExpression(params: BabelNodeFunctionParameter[], body: BabelNodeBlockStatement | BabelNodeExpression, async?: boolean): BabelNodeArrowFunctionExpression;
+ declare export function classBody(body: (BabelNodeClassMethod | BabelNodeClassPrivateMethod | BabelNodeClassProperty | BabelNodeClassPrivateProperty | BabelNodeClassAccessorProperty | BabelNodeTSDeclareMethod | BabelNodeTSIndexSignature | BabelNodeStaticBlock)[]): BabelNodeClassBody;
+ declare export function classExpression(id?: BabelNodeIdentifier, superClass?: BabelNodeExpression, body: BabelNodeClassBody, decorators?: BabelNodeDecorator[]): BabelNodeClassExpression;
+ declare export function classDeclaration(id?: BabelNodeIdentifier, superClass?: BabelNodeExpression, body: BabelNodeClassBody, decorators?: BabelNodeDecorator[]): BabelNodeClassDeclaration;
+ declare export function exportAllDeclaration(source: BabelNodeStringLiteral, attributes?: BabelNodeImportAttribute[]): BabelNodeExportAllDeclaration;
+ declare export function exportDefaultDeclaration(declaration: BabelNodeTSDeclareFunction | BabelNodeFunctionDeclaration | BabelNodeClassDeclaration | BabelNodeExpression): BabelNodeExportDefaultDeclaration;
+ declare export function exportNamedDeclaration(declaration?: BabelNodeDeclaration, specifiers?: (BabelNodeExportSpecifier | BabelNodeExportDefaultSpecifier | BabelNodeExportNamespaceSpecifier)[], source?: BabelNodeStringLiteral, attributes?: BabelNodeImportAttribute[]): BabelNodeExportNamedDeclaration;
+ declare export function exportSpecifier(local: BabelNodeIdentifier, exported: BabelNodeIdentifier | BabelNodeStringLiteral): BabelNodeExportSpecifier;
+ declare export function forOfStatement(left: BabelNodeVariableDeclaration | BabelNodeLVal, right: BabelNodeExpression, body: BabelNodeStatement, _await?: boolean): BabelNodeForOfStatement;
+ declare export function importDeclaration(specifiers: (BabelNodeImportSpecifier | BabelNodeImportDefaultSpecifier | BabelNodeImportNamespaceSpecifier)[], source: BabelNodeStringLiteral, attributes?: BabelNodeImportAttribute[]): BabelNodeImportDeclaration;
+ declare export function importDefaultSpecifier(local: BabelNodeIdentifier): BabelNodeImportDefaultSpecifier;
+ declare export function importNamespaceSpecifier(local: BabelNodeIdentifier): BabelNodeImportNamespaceSpecifier;
+ declare export function importSpecifier(local: BabelNodeIdentifier, imported: BabelNodeIdentifier | BabelNodeStringLiteral): BabelNodeImportSpecifier;
+ declare export function importExpression(source: BabelNodeExpression, options?: BabelNodeExpression): BabelNodeImportExpression;
+ declare export function metaProperty(meta: BabelNodeIdentifier, property: BabelNodeIdentifier): BabelNodeMetaProperty;
+ declare export function classMethod(kind?: "get" | "set" | "method" | "constructor", key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral | BabelNodeExpression, params: (BabelNodeFunctionParameter | BabelNodeTSParameterProperty)[], body: BabelNodeBlockStatement, computed?: boolean, _static?: boolean, generator?: boolean, async?: boolean): BabelNodeClassMethod;
+ declare export function objectPattern(properties: (BabelNodeRestElement | BabelNodeObjectProperty)[]): BabelNodeObjectPattern;
+ declare export function spreadElement(argument: BabelNodeExpression): BabelNodeSpreadElement;
+ declare function _super(): BabelNodeSuper;
+ declare export { _super as super }
+ declare export function taggedTemplateExpression(tag: BabelNodeExpression, quasi: BabelNodeTemplateLiteral): BabelNodeTaggedTemplateExpression;
+ declare export function templateElement(value: { raw: string, cooked?: string }, tail?: boolean): BabelNodeTemplateElement;
+ declare export function templateLiteral(quasis: BabelNodeTemplateElement[], expressions: (BabelNodeExpression | BabelNodeTSType)[]): BabelNodeTemplateLiteral;
+ declare export function yieldExpression(argument?: BabelNodeExpression, delegate?: boolean): BabelNodeYieldExpression;
+ declare export function awaitExpression(argument: BabelNodeExpression): BabelNodeAwaitExpression;
+ declare function _import(): BabelNodeImport;
+ declare export { _import as import }
+ declare export function bigIntLiteral(value: string): BabelNodeBigIntLiteral;
+ declare export function exportNamespaceSpecifier(exported: BabelNodeIdentifier): BabelNodeExportNamespaceSpecifier;
+ declare export function optionalMemberExpression(object: BabelNodeExpression, property: BabelNodeExpression | BabelNodeIdentifier, computed?: boolean, optional: boolean): BabelNodeOptionalMemberExpression;
+ declare export function optionalCallExpression(callee: BabelNodeExpression, _arguments: (BabelNodeExpression | BabelNodeSpreadElement | BabelNodeArgumentPlaceholder)[], optional: boolean): BabelNodeOptionalCallExpression;
+ declare export function classProperty(key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral | BabelNodeExpression, value?: BabelNodeExpression, typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop, decorators?: BabelNodeDecorator[], computed?: boolean, _static?: boolean): BabelNodeClassProperty;
+ declare export function classAccessorProperty(key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral | BabelNodeExpression | BabelNodePrivateName, value?: BabelNodeExpression, typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop, decorators?: BabelNodeDecorator[], computed?: boolean, _static?: boolean): BabelNodeClassAccessorProperty;
+ declare export function classPrivateProperty(key: BabelNodePrivateName, value?: BabelNodeExpression, decorators?: BabelNodeDecorator[], _static?: boolean): BabelNodeClassPrivateProperty;
+ declare export function classPrivateMethod(kind?: "get" | "set" | "method", key: BabelNodePrivateName, params: (BabelNodeFunctionParameter | BabelNodeTSParameterProperty)[], body: BabelNodeBlockStatement, _static?: boolean): BabelNodeClassPrivateMethod;
+ declare export function privateName(id: BabelNodeIdentifier): BabelNodePrivateName;
+ declare export function staticBlock(body: BabelNodeStatement[]): BabelNodeStaticBlock;
+ declare export function importAttribute(key: BabelNodeIdentifier | BabelNodeStringLiteral, value: BabelNodeStringLiteral): BabelNodeImportAttribute;
+ declare export function anyTypeAnnotation(): BabelNodeAnyTypeAnnotation;
+ declare export function arrayTypeAnnotation(elementType: BabelNodeFlowType): BabelNodeArrayTypeAnnotation;
+ declare export function booleanTypeAnnotation(): BabelNodeBooleanTypeAnnotation;
+ declare export function booleanLiteralTypeAnnotation(value: boolean): BabelNodeBooleanLiteralTypeAnnotation;
+ declare export function nullLiteralTypeAnnotation(): BabelNodeNullLiteralTypeAnnotation;
+ declare export function classImplements(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterInstantiation): BabelNodeClassImplements;
+ declare export function declareClass(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, _extends?: BabelNodeInterfaceExtends[], body: BabelNodeObjectTypeAnnotation): BabelNodeDeclareClass;
+ declare export function declareFunction(id: BabelNodeIdentifier): BabelNodeDeclareFunction;
+ declare export function declareInterface(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, _extends?: BabelNodeInterfaceExtends[], body: BabelNodeObjectTypeAnnotation): BabelNodeDeclareInterface;
+ declare export function declareModule(id: BabelNodeIdentifier | BabelNodeStringLiteral, body: BabelNodeBlockStatement, kind?: "CommonJS" | "ES"): BabelNodeDeclareModule;
+ declare export function declareModuleExports(typeAnnotation: BabelNodeTypeAnnotation): BabelNodeDeclareModuleExports;
+ declare export function declareTypeAlias(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, right: BabelNodeFlowType): BabelNodeDeclareTypeAlias;
+ declare export function declareOpaqueType(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, supertype?: BabelNodeFlowType): BabelNodeDeclareOpaqueType;
+ declare export function declareVariable(id: BabelNodeIdentifier): BabelNodeDeclareVariable;
+ declare export function declareExportDeclaration(declaration?: BabelNodeFlow, specifiers?: (BabelNodeExportSpecifier | BabelNodeExportNamespaceSpecifier)[], source?: BabelNodeStringLiteral, attributes?: BabelNodeImportAttribute[]): BabelNodeDeclareExportDeclaration;
+ declare export function declareExportAllDeclaration(source: BabelNodeStringLiteral, attributes?: BabelNodeImportAttribute[]): BabelNodeDeclareExportAllDeclaration;
+ declare export function declaredPredicate(value: BabelNodeFlow): BabelNodeDeclaredPredicate;
+ declare export function existsTypeAnnotation(): BabelNodeExistsTypeAnnotation;
+ declare export function functionTypeAnnotation(typeParameters?: BabelNodeTypeParameterDeclaration, params: BabelNodeFunctionTypeParam[], rest?: BabelNodeFunctionTypeParam, returnType: BabelNodeFlowType): BabelNodeFunctionTypeAnnotation;
+ declare export function functionTypeParam(name?: BabelNodeIdentifier, typeAnnotation: BabelNodeFlowType): BabelNodeFunctionTypeParam;
+ declare export function genericTypeAnnotation(id: BabelNodeIdentifier | BabelNodeQualifiedTypeIdentifier, typeParameters?: BabelNodeTypeParameterInstantiation): BabelNodeGenericTypeAnnotation;
+ declare export function inferredPredicate(): BabelNodeInferredPredicate;
+ declare export function interfaceExtends(id: BabelNodeIdentifier | BabelNodeQualifiedTypeIdentifier, typeParameters?: BabelNodeTypeParameterInstantiation): BabelNodeInterfaceExtends;
+ declare export function interfaceDeclaration(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, _extends?: BabelNodeInterfaceExtends[], body: BabelNodeObjectTypeAnnotation): BabelNodeInterfaceDeclaration;
+ declare export function interfaceTypeAnnotation(_extends?: BabelNodeInterfaceExtends[], body: BabelNodeObjectTypeAnnotation): BabelNodeInterfaceTypeAnnotation;
+ declare export function intersectionTypeAnnotation(types: BabelNodeFlowType[]): BabelNodeIntersectionTypeAnnotation;
+ declare export function mixedTypeAnnotation(): BabelNodeMixedTypeAnnotation;
+ declare export function emptyTypeAnnotation(): BabelNodeEmptyTypeAnnotation;
+ declare export function nullableTypeAnnotation(typeAnnotation: BabelNodeFlowType): BabelNodeNullableTypeAnnotation;
+ declare export function numberLiteralTypeAnnotation(value: number): BabelNodeNumberLiteralTypeAnnotation;
+ declare export function numberTypeAnnotation(): BabelNodeNumberTypeAnnotation;
+ declare export function objectTypeAnnotation(properties: (BabelNodeObjectTypeProperty | BabelNodeObjectTypeSpreadProperty)[], indexers?: BabelNodeObjectTypeIndexer[], callProperties?: BabelNodeObjectTypeCallProperty[], internalSlots?: BabelNodeObjectTypeInternalSlot[], exact?: boolean): BabelNodeObjectTypeAnnotation;
+ declare export function objectTypeInternalSlot(id: BabelNodeIdentifier, value: BabelNodeFlowType, optional: boolean, _static: boolean, method: boolean): BabelNodeObjectTypeInternalSlot;
+ declare export function objectTypeCallProperty(value: BabelNodeFlowType): BabelNodeObjectTypeCallProperty;
+ declare export function objectTypeIndexer(id?: BabelNodeIdentifier, key: BabelNodeFlowType, value: BabelNodeFlowType, variance?: BabelNodeVariance): BabelNodeObjectTypeIndexer;
+ declare export function objectTypeProperty(key: BabelNodeIdentifier | BabelNodeStringLiteral, value: BabelNodeFlowType, variance?: BabelNodeVariance): BabelNodeObjectTypeProperty;
+ declare export function objectTypeSpreadProperty(argument: BabelNodeFlowType): BabelNodeObjectTypeSpreadProperty;
+ declare export function opaqueType(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, supertype?: BabelNodeFlowType, impltype: BabelNodeFlowType): BabelNodeOpaqueType;
+ declare export function qualifiedTypeIdentifier(id: BabelNodeIdentifier, qualification: BabelNodeIdentifier | BabelNodeQualifiedTypeIdentifier): BabelNodeQualifiedTypeIdentifier;
+ declare export function stringLiteralTypeAnnotation(value: string): BabelNodeStringLiteralTypeAnnotation;
+ declare export function stringTypeAnnotation(): BabelNodeStringTypeAnnotation;
+ declare export function symbolTypeAnnotation(): BabelNodeSymbolTypeAnnotation;
+ declare export function thisTypeAnnotation(): BabelNodeThisTypeAnnotation;
+ declare export function tupleTypeAnnotation(types: BabelNodeFlowType[]): BabelNodeTupleTypeAnnotation;
+ declare export function typeofTypeAnnotation(argument: BabelNodeFlowType): BabelNodeTypeofTypeAnnotation;
+ declare export function typeAlias(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, right: BabelNodeFlowType): BabelNodeTypeAlias;
+ declare export function typeAnnotation(typeAnnotation: BabelNodeFlowType): BabelNodeTypeAnnotation;
+ declare export function typeCastExpression(expression: BabelNodeExpression, typeAnnotation: BabelNodeTypeAnnotation): BabelNodeTypeCastExpression;
+ declare export function typeParameter(bound?: BabelNodeTypeAnnotation, _default?: BabelNodeFlowType, variance?: BabelNodeVariance): BabelNodeTypeParameter;
+ declare export function typeParameterDeclaration(params: BabelNodeTypeParameter[]): BabelNodeTypeParameterDeclaration;
+ declare export function typeParameterInstantiation(params: BabelNodeFlowType[]): BabelNodeTypeParameterInstantiation;
+ declare export function unionTypeAnnotation(types: BabelNodeFlowType[]): BabelNodeUnionTypeAnnotation;
+ declare export function variance(kind: "minus" | "plus"): BabelNodeVariance;
+ declare export function voidTypeAnnotation(): BabelNodeVoidTypeAnnotation;
+ declare export function enumDeclaration(id: BabelNodeIdentifier, body: BabelNodeEnumBooleanBody | BabelNodeEnumNumberBody | BabelNodeEnumStringBody | BabelNodeEnumSymbolBody): BabelNodeEnumDeclaration;
+ declare export function enumBooleanBody(members: BabelNodeEnumBooleanMember[]): BabelNodeEnumBooleanBody;
+ declare export function enumNumberBody(members: BabelNodeEnumNumberMember[]): BabelNodeEnumNumberBody;
+ declare export function enumStringBody(members: (BabelNodeEnumStringMember | BabelNodeEnumDefaultedMember)[]): BabelNodeEnumStringBody;
+ declare export function enumSymbolBody(members: BabelNodeEnumDefaultedMember[]): BabelNodeEnumSymbolBody;
+ declare export function enumBooleanMember(id: BabelNodeIdentifier): BabelNodeEnumBooleanMember;
+ declare export function enumNumberMember(id: BabelNodeIdentifier, init: BabelNodeNumericLiteral): BabelNodeEnumNumberMember;
+ declare export function enumStringMember(id: BabelNodeIdentifier, init: BabelNodeStringLiteral): BabelNodeEnumStringMember;
+ declare export function enumDefaultedMember(id: BabelNodeIdentifier): BabelNodeEnumDefaultedMember;
+ declare export function indexedAccessType(objectType: BabelNodeFlowType, indexType: BabelNodeFlowType): BabelNodeIndexedAccessType;
+ declare export function optionalIndexedAccessType(objectType: BabelNodeFlowType, indexType: BabelNodeFlowType): BabelNodeOptionalIndexedAccessType;
+ declare export function jsxAttribute(name: BabelNodeJSXIdentifier | BabelNodeJSXNamespacedName, value?: BabelNodeJSXElement | BabelNodeJSXFragment | BabelNodeStringLiteral | BabelNodeJSXExpressionContainer): BabelNodeJSXAttribute;
+ declare export function jsxClosingElement(name: BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeJSXNamespacedName): BabelNodeJSXClosingElement;
+ declare export function jsxElement(openingElement: BabelNodeJSXOpeningElement, closingElement?: BabelNodeJSXClosingElement, children: (BabelNodeJSXText | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXElement | BabelNodeJSXFragment)[], selfClosing?: boolean): BabelNodeJSXElement;
+ declare export function jsxEmptyExpression(): BabelNodeJSXEmptyExpression;
+ declare export function jsxExpressionContainer(expression: BabelNodeExpression | BabelNodeJSXEmptyExpression): BabelNodeJSXExpressionContainer;
+ declare export function jsxSpreadChild(expression: BabelNodeExpression): BabelNodeJSXSpreadChild;
+ declare export function jsxIdentifier(name: string): BabelNodeJSXIdentifier;
+ declare export function jsxMemberExpression(object: BabelNodeJSXMemberExpression | BabelNodeJSXIdentifier, property: BabelNodeJSXIdentifier): BabelNodeJSXMemberExpression;
+ declare export function jsxNamespacedName(namespace: BabelNodeJSXIdentifier, name: BabelNodeJSXIdentifier): BabelNodeJSXNamespacedName;
+ declare export function jsxOpeningElement(name: BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeJSXNamespacedName, attributes: (BabelNodeJSXAttribute | BabelNodeJSXSpreadAttribute)[], selfClosing?: boolean): BabelNodeJSXOpeningElement;
+ declare export function jsxSpreadAttribute(argument: BabelNodeExpression): BabelNodeJSXSpreadAttribute;
+ declare export function jsxText(value: string): BabelNodeJSXText;
+ declare export function jsxFragment(openingFragment: BabelNodeJSXOpeningFragment, closingFragment: BabelNodeJSXClosingFragment, children: (BabelNodeJSXText | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXElement | BabelNodeJSXFragment)[]): BabelNodeJSXFragment;
+ declare export function jsxOpeningFragment(): BabelNodeJSXOpeningFragment;
+ declare export function jsxClosingFragment(): BabelNodeJSXClosingFragment;
+ declare export function noop(): BabelNodeNoop;
+ declare export function placeholder(expectedNode: "Identifier" | "StringLiteral" | "Expression" | "Statement" | "Declaration" | "BlockStatement" | "ClassBody" | "Pattern", name: BabelNodeIdentifier): BabelNodePlaceholder;
+ declare export function v8IntrinsicIdentifier(name: string): BabelNodeV8IntrinsicIdentifier;
+ declare export function argumentPlaceholder(): BabelNodeArgumentPlaceholder;
+ declare export function bindExpression(object: BabelNodeExpression, callee: BabelNodeExpression): BabelNodeBindExpression;
+ declare export function decorator(expression: BabelNodeExpression): BabelNodeDecorator;
+ declare export function doExpression(body: BabelNodeBlockStatement, async?: boolean): BabelNodeDoExpression;
+ declare export function exportDefaultSpecifier(exported: BabelNodeIdentifier): BabelNodeExportDefaultSpecifier;
+ declare export function recordExpression(properties: (BabelNodeObjectProperty | BabelNodeSpreadElement)[]): BabelNodeRecordExpression;
+ declare export function tupleExpression(elements?: (BabelNodeExpression | BabelNodeSpreadElement)[]): BabelNodeTupleExpression;
+ declare export function decimalLiteral(value: string): BabelNodeDecimalLiteral;
+ declare export function moduleExpression(body: BabelNodeProgram): BabelNodeModuleExpression;
+ declare export function topicReference(): BabelNodeTopicReference;
+ declare export function pipelineTopicExpression(expression: BabelNodeExpression): BabelNodePipelineTopicExpression;
+ declare export function pipelineBareFunction(callee: BabelNodeExpression): BabelNodePipelineBareFunction;
+ declare export function pipelinePrimaryTopicReference(): BabelNodePipelinePrimaryTopicReference;
+ declare export function voidPattern(): BabelNodeVoidPattern;
+ declare export function tsParameterProperty(parameter: BabelNodeIdentifier | BabelNodeAssignmentPattern): BabelNodeTSParameterProperty;
+ declare export function tsDeclareFunction(id?: BabelNodeIdentifier, typeParameters?: BabelNodeTSTypeParameterDeclaration | BabelNodeNoop, params: BabelNodeFunctionParameter[], returnType?: BabelNodeTSTypeAnnotation | BabelNodeNoop): BabelNodeTSDeclareFunction;
+ declare export function tsDeclareMethod(decorators?: BabelNodeDecorator[], key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeBigIntLiteral | BabelNodeExpression, typeParameters?: BabelNodeTSTypeParameterDeclaration | BabelNodeNoop, params: (BabelNodeFunctionParameter | BabelNodeTSParameterProperty)[], returnType?: BabelNodeTSTypeAnnotation | BabelNodeNoop): BabelNodeTSDeclareMethod;
+ declare export function tsQualifiedName(left: BabelNodeTSEntityName, right: BabelNodeIdentifier): BabelNodeTSQualifiedName;
+ declare export function tsCallSignatureDeclaration(typeParameters?: BabelNodeTSTypeParameterDeclaration, parameters: (BabelNodeArrayPattern | BabelNodeIdentifier | BabelNodeObjectPattern | BabelNodeRestElement)[], typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSCallSignatureDeclaration;
+ declare export function tsConstructSignatureDeclaration(typeParameters?: BabelNodeTSTypeParameterDeclaration, parameters: (BabelNodeArrayPattern | BabelNodeIdentifier | BabelNodeObjectPattern | BabelNodeRestElement)[], typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSConstructSignatureDeclaration;
+ declare export function tsPropertySignature(key: BabelNodeExpression, typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSPropertySignature;
+ declare export function tsMethodSignature(key: BabelNodeExpression, typeParameters?: BabelNodeTSTypeParameterDeclaration, parameters: (BabelNodeArrayPattern | BabelNodeIdentifier | BabelNodeObjectPattern | BabelNodeRestElement)[], typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSMethodSignature;
+ declare export function tsIndexSignature(parameters: BabelNodeIdentifier[], typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSIndexSignature;
+ declare export function tsAnyKeyword(): BabelNodeTSAnyKeyword;
+ declare export function tsBooleanKeyword(): BabelNodeTSBooleanKeyword;
+ declare export function tsBigIntKeyword(): BabelNodeTSBigIntKeyword;
+ declare export function tsIntrinsicKeyword(): BabelNodeTSIntrinsicKeyword;
+ declare export function tsNeverKeyword(): BabelNodeTSNeverKeyword;
+ declare export function tsNullKeyword(): BabelNodeTSNullKeyword;
+ declare export function tsNumberKeyword(): BabelNodeTSNumberKeyword;
+ declare export function tsObjectKeyword(): BabelNodeTSObjectKeyword;
+ declare export function tsStringKeyword(): BabelNodeTSStringKeyword;
+ declare export function tsSymbolKeyword(): BabelNodeTSSymbolKeyword;
+ declare export function tsUndefinedKeyword(): BabelNodeTSUndefinedKeyword;
+ declare export function tsUnknownKeyword(): BabelNodeTSUnknownKeyword;
+ declare export function tsVoidKeyword(): BabelNodeTSVoidKeyword;
+ declare export function tsThisType(): BabelNodeTSThisType;
+ declare export function tsFunctionType(typeParameters?: BabelNodeTSTypeParameterDeclaration, parameters: (BabelNodeArrayPattern | BabelNodeIdentifier | BabelNodeObjectPattern | BabelNodeRestElement)[], typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSFunctionType;
+ declare export function tsConstructorType(typeParameters?: BabelNodeTSTypeParameterDeclaration, parameters: (BabelNodeArrayPattern | BabelNodeIdentifier | BabelNodeObjectPattern | BabelNodeRestElement)[], typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSConstructorType;
+ declare export function tsTypeReference(typeName: BabelNodeTSEntityName, typeParameters?: BabelNodeTSTypeParameterInstantiation): BabelNodeTSTypeReference;
+ declare export function tsTypePredicate(parameterName: BabelNodeIdentifier | BabelNodeTSThisType, typeAnnotation?: BabelNodeTSTypeAnnotation, asserts?: boolean): BabelNodeTSTypePredicate;
+ declare export function tsTypeQuery(exprName: BabelNodeTSEntityName | BabelNodeTSImportType, typeParameters?: BabelNodeTSTypeParameterInstantiation): BabelNodeTSTypeQuery;
+ declare export function tsTypeLiteral(members: BabelNodeTSTypeElement[]): BabelNodeTSTypeLiteral;
+ declare export function tsArrayType(elementType: BabelNodeTSType): BabelNodeTSArrayType;
+ declare export function tsTupleType(elementTypes: (BabelNodeTSType | BabelNodeTSNamedTupleMember)[]): BabelNodeTSTupleType;
+ declare export function tsOptionalType(typeAnnotation: BabelNodeTSType): BabelNodeTSOptionalType;
+ declare export function tsRestType(typeAnnotation: BabelNodeTSType): BabelNodeTSRestType;
+ declare export function tsNamedTupleMember(label: BabelNodeIdentifier, elementType: BabelNodeTSType, optional?: boolean): BabelNodeTSNamedTupleMember;
+ declare export function tsUnionType(types: BabelNodeTSType[]): BabelNodeTSUnionType;
+ declare export function tsIntersectionType(types: BabelNodeTSType[]): BabelNodeTSIntersectionType;
+ declare export function tsConditionalType(checkType: BabelNodeTSType, extendsType: BabelNodeTSType, trueType: BabelNodeTSType, falseType: BabelNodeTSType): BabelNodeTSConditionalType;
+ declare export function tsInferType(typeParameter: BabelNodeTSTypeParameter): BabelNodeTSInferType;
+ declare export function tsParenthesizedType(typeAnnotation: BabelNodeTSType): BabelNodeTSParenthesizedType;
+ declare export function tsTypeOperator(typeAnnotation: BabelNodeTSType, operator?: string): BabelNodeTSTypeOperator;
+ declare export function tsIndexedAccessType(objectType: BabelNodeTSType, indexType: BabelNodeTSType): BabelNodeTSIndexedAccessType;
+ declare export function tsMappedType(typeParameter: BabelNodeTSTypeParameter, typeAnnotation?: BabelNodeTSType, nameType?: BabelNodeTSType): BabelNodeTSMappedType;
+ declare export function tsTemplateLiteralType(quasis: BabelNodeTemplateElement[], types: BabelNodeTSType[]): BabelNodeTSTemplateLiteralType;
+ declare export function tsLiteralType(literal: BabelNodeNumericLiteral | BabelNodeStringLiteral | BabelNodeBooleanLiteral | BabelNodeBigIntLiteral | BabelNodeTemplateLiteral | BabelNodeUnaryExpression): BabelNodeTSLiteralType;
+ declare export function tsExpressionWithTypeArguments(expression: BabelNodeTSEntityName, typeParameters?: BabelNodeTSTypeParameterInstantiation): BabelNodeTSExpressionWithTypeArguments;
+ declare export function tsInterfaceDeclaration(id: BabelNodeIdentifier, typeParameters?: BabelNodeTSTypeParameterDeclaration, _extends?: BabelNodeTSExpressionWithTypeArguments[], body: BabelNodeTSInterfaceBody): BabelNodeTSInterfaceDeclaration;
+ declare export function tsInterfaceBody(body: BabelNodeTSTypeElement[]): BabelNodeTSInterfaceBody;
+ declare export function tsTypeAliasDeclaration(id: BabelNodeIdentifier, typeParameters?: BabelNodeTSTypeParameterDeclaration, typeAnnotation: BabelNodeTSType): BabelNodeTSTypeAliasDeclaration;
+ declare export function tsInstantiationExpression(expression: BabelNodeExpression, typeParameters?: BabelNodeTSTypeParameterInstantiation): BabelNodeTSInstantiationExpression;
+ declare export function tsAsExpression(expression: BabelNodeExpression, typeAnnotation: BabelNodeTSType): BabelNodeTSAsExpression;
+ declare export function tsSatisfiesExpression(expression: BabelNodeExpression, typeAnnotation: BabelNodeTSType): BabelNodeTSSatisfiesExpression;
+ declare export function tsTypeAssertion(typeAnnotation: BabelNodeTSType, expression: BabelNodeExpression): BabelNodeTSTypeAssertion;
+ declare export function tsEnumBody(members: BabelNodeTSEnumMember[]): BabelNodeTSEnumBody;
+ declare export function tsEnumDeclaration(id: BabelNodeIdentifier, members: BabelNodeTSEnumMember[]): BabelNodeTSEnumDeclaration;
+ declare export function tsEnumMember(id: BabelNodeIdentifier | BabelNodeStringLiteral, initializer?: BabelNodeExpression): BabelNodeTSEnumMember;
+ declare export function tsModuleDeclaration(id: BabelNodeIdentifier | BabelNodeStringLiteral, body: BabelNodeTSModuleBlock | BabelNodeTSModuleDeclaration): BabelNodeTSModuleDeclaration;
+ declare export function tsModuleBlock(body: BabelNodeStatement[]): BabelNodeTSModuleBlock;
+ declare export function tsImportType(argument: BabelNodeStringLiteral, qualifier?: BabelNodeTSEntityName, typeParameters?: BabelNodeTSTypeParameterInstantiation): BabelNodeTSImportType;
+ declare export function tsImportEqualsDeclaration(id: BabelNodeIdentifier, moduleReference: BabelNodeTSEntityName | BabelNodeTSExternalModuleReference): BabelNodeTSImportEqualsDeclaration;
+ declare export function tsExternalModuleReference(expression: BabelNodeStringLiteral): BabelNodeTSExternalModuleReference;
+ declare export function tsNonNullExpression(expression: BabelNodeExpression): BabelNodeTSNonNullExpression;
+ declare export function tsExportAssignment(expression: BabelNodeExpression): BabelNodeTSExportAssignment;
+ declare export function tsNamespaceExportDeclaration(id: BabelNodeIdentifier): BabelNodeTSNamespaceExportDeclaration;
+ declare export function tsTypeAnnotation(typeAnnotation: BabelNodeTSType): BabelNodeTSTypeAnnotation;
+ declare export function tsTypeParameterInstantiation(params: BabelNodeTSType[]): BabelNodeTSTypeParameterInstantiation;
+ declare export function tsTypeParameterDeclaration(params: BabelNodeTSTypeParameter[]): BabelNodeTSTypeParameterDeclaration;
+ declare export function tsTypeParameter(constraint?: BabelNodeTSType, _default?: BabelNodeTSType, name: string): BabelNodeTSTypeParameter;
+ declare export function isArrayExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeArrayExpression)
+ declare export function assertArrayExpression(node: ?Object, opts?: ?Object): void
+ declare export function isAssignmentExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeAssignmentExpression)
+ declare export function assertAssignmentExpression(node: ?Object, opts?: ?Object): void
+ declare export function isBinaryExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBinaryExpression)
+ declare export function assertBinaryExpression(node: ?Object, opts?: ?Object): void
+ declare export function isInterpreterDirective(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeInterpreterDirective)
+ declare export function assertInterpreterDirective(node: ?Object, opts?: ?Object): void
+ declare export function isDirective(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDirective)
+ declare export function assertDirective(node: ?Object, opts?: ?Object): void
+ declare export function isDirectiveLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDirectiveLiteral)
+ declare export function assertDirectiveLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isBlockStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBlockStatement)
+ declare export function assertBlockStatement(node: ?Object, opts?: ?Object): void
+ declare export function isBreakStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBreakStatement)
+ declare export function assertBreakStatement(node: ?Object, opts?: ?Object): void
+ declare export function isCallExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeCallExpression)
+ declare export function assertCallExpression(node: ?Object, opts?: ?Object): void
+ declare export function isCatchClause(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeCatchClause)
+ declare export function assertCatchClause(node: ?Object, opts?: ?Object): void
+ declare export function isConditionalExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeConditionalExpression)
+ declare export function assertConditionalExpression(node: ?Object, opts?: ?Object): void
+ declare export function isContinueStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeContinueStatement)
+ declare export function assertContinueStatement(node: ?Object, opts?: ?Object): void
+ declare export function isDebuggerStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDebuggerStatement)
+ declare export function assertDebuggerStatement(node: ?Object, opts?: ?Object): void
+ declare export function isDoWhileStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDoWhileStatement)
+ declare export function assertDoWhileStatement(node: ?Object, opts?: ?Object): void
+ declare export function isEmptyStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEmptyStatement)
+ declare export function assertEmptyStatement(node: ?Object, opts?: ?Object): void
+ declare export function isExpressionStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExpressionStatement)
+ declare export function assertExpressionStatement(node: ?Object, opts?: ?Object): void
+ declare export function isFile(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeFile)
+ declare export function assertFile(node: ?Object, opts?: ?Object): void
+ declare export function isForInStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeForInStatement)
+ declare export function assertForInStatement(node: ?Object, opts?: ?Object): void
+ declare export function isForStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeForStatement)
+ declare export function assertForStatement(node: ?Object, opts?: ?Object): void
+ declare export function isFunctionDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeFunctionDeclaration)
+ declare export function assertFunctionDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isFunctionExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeFunctionExpression)
+ declare export function assertFunctionExpression(node: ?Object, opts?: ?Object): void
+ declare export function isIdentifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeIdentifier)
+ declare export function assertIdentifier(node: ?Object, opts?: ?Object): void
+ declare export function isIfStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeIfStatement)
+ declare export function assertIfStatement(node: ?Object, opts?: ?Object): void
+ declare export function isLabeledStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeLabeledStatement)
+ declare export function assertLabeledStatement(node: ?Object, opts?: ?Object): void
+ declare export function isStringLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeStringLiteral)
+ declare export function assertStringLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isNumericLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNumericLiteral)
+ declare export function assertNumericLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isNullLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNullLiteral)
+ declare export function assertNullLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isBooleanLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBooleanLiteral)
+ declare export function assertBooleanLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isRegExpLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeRegExpLiteral)
+ declare export function assertRegExpLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isLogicalExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeLogicalExpression)
+ declare export function assertLogicalExpression(node: ?Object, opts?: ?Object): void
+ declare export function isMemberExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeMemberExpression)
+ declare export function assertMemberExpression(node: ?Object, opts?: ?Object): void
+ declare export function isNewExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNewExpression)
+ declare export function assertNewExpression(node: ?Object, opts?: ?Object): void
+ declare export function isProgram(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeProgram)
+ declare export function assertProgram(node: ?Object, opts?: ?Object): void
+ declare export function isObjectExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectExpression)
+ declare export function assertObjectExpression(node: ?Object, opts?: ?Object): void
+ declare export function isObjectMethod(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectMethod)
+ declare export function assertObjectMethod(node: ?Object, opts?: ?Object): void
+ declare export function isObjectProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectProperty)
+ declare export function assertObjectProperty(node: ?Object, opts?: ?Object): void
+ declare export function isRestElement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeRestElement)
+ declare export function assertRestElement(node: ?Object, opts?: ?Object): void
+ declare export function isReturnStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeReturnStatement)
+ declare export function assertReturnStatement(node: ?Object, opts?: ?Object): void
+ declare export function isSequenceExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeSequenceExpression)
+ declare export function assertSequenceExpression(node: ?Object, opts?: ?Object): void
+ declare export function isParenthesizedExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeParenthesizedExpression)
+ declare export function assertParenthesizedExpression(node: ?Object, opts?: ?Object): void
+ declare export function isSwitchCase(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeSwitchCase)
+ declare export function assertSwitchCase(node: ?Object, opts?: ?Object): void
+ declare export function isSwitchStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeSwitchStatement)
+ declare export function assertSwitchStatement(node: ?Object, opts?: ?Object): void
+ declare export function isThisExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeThisExpression)
+ declare export function assertThisExpression(node: ?Object, opts?: ?Object): void
+ declare export function isThrowStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeThrowStatement)
+ declare export function assertThrowStatement(node: ?Object, opts?: ?Object): void
+ declare export function isTryStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTryStatement)
+ declare export function assertTryStatement(node: ?Object, opts?: ?Object): void
+ declare export function isUnaryExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeUnaryExpression)
+ declare export function assertUnaryExpression(node: ?Object, opts?: ?Object): void
+ declare export function isUpdateExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeUpdateExpression)
+ declare export function assertUpdateExpression(node: ?Object, opts?: ?Object): void
+ declare export function isVariableDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeVariableDeclaration)
+ declare export function assertVariableDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isVariableDeclarator(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeVariableDeclarator)
+ declare export function assertVariableDeclarator(node: ?Object, opts?: ?Object): void
+ declare export function isWhileStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeWhileStatement)
+ declare export function assertWhileStatement(node: ?Object, opts?: ?Object): void
+ declare export function isWithStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeWithStatement)
+ declare export function assertWithStatement(node: ?Object, opts?: ?Object): void
+ declare export function isAssignmentPattern(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeAssignmentPattern)
+ declare export function assertAssignmentPattern(node: ?Object, opts?: ?Object): void
+ declare export function isArrayPattern(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeArrayPattern)
+ declare export function assertArrayPattern(node: ?Object, opts?: ?Object): void
+ declare export function isArrowFunctionExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeArrowFunctionExpression)
+ declare export function assertArrowFunctionExpression(node: ?Object, opts?: ?Object): void
+ declare export function isClassBody(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassBody)
+ declare export function assertClassBody(node: ?Object, opts?: ?Object): void
+ declare export function isClassExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassExpression)
+ declare export function assertClassExpression(node: ?Object, opts?: ?Object): void
+ declare export function isClassDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassDeclaration)
+ declare export function assertClassDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isExportAllDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExportAllDeclaration)
+ declare export function assertExportAllDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isExportDefaultDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExportDefaultDeclaration)
+ declare export function assertExportDefaultDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isExportNamedDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExportNamedDeclaration)
+ declare export function assertExportNamedDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isExportSpecifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExportSpecifier)
+ declare export function assertExportSpecifier(node: ?Object, opts?: ?Object): void
+ declare export function isForOfStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeForOfStatement)
+ declare export function assertForOfStatement(node: ?Object, opts?: ?Object): void
+ declare export function isImportDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeImportDeclaration)
+ declare export function assertImportDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isImportDefaultSpecifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeImportDefaultSpecifier)
+ declare export function assertImportDefaultSpecifier(node: ?Object, opts?: ?Object): void
+ declare export function isImportNamespaceSpecifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeImportNamespaceSpecifier)
+ declare export function assertImportNamespaceSpecifier(node: ?Object, opts?: ?Object): void
+ declare export function isImportSpecifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeImportSpecifier)
+ declare export function assertImportSpecifier(node: ?Object, opts?: ?Object): void
+ declare export function isImportExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeImportExpression)
+ declare export function assertImportExpression(node: ?Object, opts?: ?Object): void
+ declare export function isMetaProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeMetaProperty)
+ declare export function assertMetaProperty(node: ?Object, opts?: ?Object): void
+ declare export function isClassMethod(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassMethod)
+ declare export function assertClassMethod(node: ?Object, opts?: ?Object): void
+ declare export function isObjectPattern(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectPattern)
+ declare export function assertObjectPattern(node: ?Object, opts?: ?Object): void
+ declare export function isSpreadElement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeSpreadElement)
+ declare export function assertSpreadElement(node: ?Object, opts?: ?Object): void
+ declare export function isSuper(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeSuper)
+ declare export function assertSuper(node: ?Object, opts?: ?Object): void
+ declare export function isTaggedTemplateExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTaggedTemplateExpression)
+ declare export function assertTaggedTemplateExpression(node: ?Object, opts?: ?Object): void
+ declare export function isTemplateElement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTemplateElement)
+ declare export function assertTemplateElement(node: ?Object, opts?: ?Object): void
+ declare export function isTemplateLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTemplateLiteral)
+ declare export function assertTemplateLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isYieldExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeYieldExpression)
+ declare export function assertYieldExpression(node: ?Object, opts?: ?Object): void
+ declare export function isAwaitExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeAwaitExpression)
+ declare export function assertAwaitExpression(node: ?Object, opts?: ?Object): void
+ declare export function isImport(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeImport)
+ declare export function assertImport(node: ?Object, opts?: ?Object): void
+ declare export function isBigIntLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBigIntLiteral)
+ declare export function assertBigIntLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isExportNamespaceSpecifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExportNamespaceSpecifier)
+ declare export function assertExportNamespaceSpecifier(node: ?Object, opts?: ?Object): void
+ declare export function isOptionalMemberExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeOptionalMemberExpression)
+ declare export function assertOptionalMemberExpression(node: ?Object, opts?: ?Object): void
+ declare export function isOptionalCallExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeOptionalCallExpression)
+ declare export function assertOptionalCallExpression(node: ?Object, opts?: ?Object): void
+ declare export function isClassProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassProperty)
+ declare export function assertClassProperty(node: ?Object, opts?: ?Object): void
+ declare export function isClassAccessorProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassAccessorProperty)
+ declare export function assertClassAccessorProperty(node: ?Object, opts?: ?Object): void
+ declare export function isClassPrivateProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassPrivateProperty)
+ declare export function assertClassPrivateProperty(node: ?Object, opts?: ?Object): void
+ declare export function isClassPrivateMethod(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassPrivateMethod)
+ declare export function assertClassPrivateMethod(node: ?Object, opts?: ?Object): void
+ declare export function isPrivateName(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodePrivateName)
+ declare export function assertPrivateName(node: ?Object, opts?: ?Object): void
+ declare export function isStaticBlock(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeStaticBlock)
+ declare export function assertStaticBlock(node: ?Object, opts?: ?Object): void
+ declare export function isImportAttribute(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeImportAttribute)
+ declare export function assertImportAttribute(node: ?Object, opts?: ?Object): void
+ declare export function isAnyTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeAnyTypeAnnotation)
+ declare export function assertAnyTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isArrayTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeArrayTypeAnnotation)
+ declare export function assertArrayTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isBooleanTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBooleanTypeAnnotation)
+ declare export function assertBooleanTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isBooleanLiteralTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBooleanLiteralTypeAnnotation)
+ declare export function assertBooleanLiteralTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isNullLiteralTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNullLiteralTypeAnnotation)
+ declare export function assertNullLiteralTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isClassImplements(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassImplements)
+ declare export function assertClassImplements(node: ?Object, opts?: ?Object): void
+ declare export function isDeclareClass(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareClass)
+ declare export function assertDeclareClass(node: ?Object, opts?: ?Object): void
+ declare export function isDeclareFunction(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareFunction)
+ declare export function assertDeclareFunction(node: ?Object, opts?: ?Object): void
+ declare export function isDeclareInterface(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareInterface)
+ declare export function assertDeclareInterface(node: ?Object, opts?: ?Object): void
+ declare export function isDeclareModule(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareModule)
+ declare export function assertDeclareModule(node: ?Object, opts?: ?Object): void
+ declare export function isDeclareModuleExports(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareModuleExports)
+ declare export function assertDeclareModuleExports(node: ?Object, opts?: ?Object): void
+ declare export function isDeclareTypeAlias(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareTypeAlias)
+ declare export function assertDeclareTypeAlias(node: ?Object, opts?: ?Object): void
+ declare export function isDeclareOpaqueType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareOpaqueType)
+ declare export function assertDeclareOpaqueType(node: ?Object, opts?: ?Object): void
+ declare export function isDeclareVariable(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareVariable)
+ declare export function assertDeclareVariable(node: ?Object, opts?: ?Object): void
+ declare export function isDeclareExportDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareExportDeclaration)
+ declare export function assertDeclareExportDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isDeclareExportAllDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareExportAllDeclaration)
+ declare export function assertDeclareExportAllDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isDeclaredPredicate(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclaredPredicate)
+ declare export function assertDeclaredPredicate(node: ?Object, opts?: ?Object): void
+ declare export function isExistsTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExistsTypeAnnotation)
+ declare export function assertExistsTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isFunctionTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeFunctionTypeAnnotation)
+ declare export function assertFunctionTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isFunctionTypeParam(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeFunctionTypeParam)
+ declare export function assertFunctionTypeParam(node: ?Object, opts?: ?Object): void
+ declare export function isGenericTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeGenericTypeAnnotation)
+ declare export function assertGenericTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isInferredPredicate(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeInferredPredicate)
+ declare export function assertInferredPredicate(node: ?Object, opts?: ?Object): void
+ declare export function isInterfaceExtends(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeInterfaceExtends)
+ declare export function assertInterfaceExtends(node: ?Object, opts?: ?Object): void
+ declare export function isInterfaceDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeInterfaceDeclaration)
+ declare export function assertInterfaceDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isInterfaceTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeInterfaceTypeAnnotation)
+ declare export function assertInterfaceTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isIntersectionTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeIntersectionTypeAnnotation)
+ declare export function assertIntersectionTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isMixedTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeMixedTypeAnnotation)
+ declare export function assertMixedTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isEmptyTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEmptyTypeAnnotation)
+ declare export function assertEmptyTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isNullableTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNullableTypeAnnotation)
+ declare export function assertNullableTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isNumberLiteralTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNumberLiteralTypeAnnotation)
+ declare export function assertNumberLiteralTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isNumberTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNumberTypeAnnotation)
+ declare export function assertNumberTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isObjectTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectTypeAnnotation)
+ declare export function assertObjectTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isObjectTypeInternalSlot(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectTypeInternalSlot)
+ declare export function assertObjectTypeInternalSlot(node: ?Object, opts?: ?Object): void
+ declare export function isObjectTypeCallProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectTypeCallProperty)
+ declare export function assertObjectTypeCallProperty(node: ?Object, opts?: ?Object): void
+ declare export function isObjectTypeIndexer(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectTypeIndexer)
+ declare export function assertObjectTypeIndexer(node: ?Object, opts?: ?Object): void
+ declare export function isObjectTypeProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectTypeProperty)
+ declare export function assertObjectTypeProperty(node: ?Object, opts?: ?Object): void
+ declare export function isObjectTypeSpreadProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectTypeSpreadProperty)
+ declare export function assertObjectTypeSpreadProperty(node: ?Object, opts?: ?Object): void
+ declare export function isOpaqueType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeOpaqueType)
+ declare export function assertOpaqueType(node: ?Object, opts?: ?Object): void
+ declare export function isQualifiedTypeIdentifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeQualifiedTypeIdentifier)
+ declare export function assertQualifiedTypeIdentifier(node: ?Object, opts?: ?Object): void
+ declare export function isStringLiteralTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeStringLiteralTypeAnnotation)
+ declare export function assertStringLiteralTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isStringTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeStringTypeAnnotation)
+ declare export function assertStringTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isSymbolTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeSymbolTypeAnnotation)
+ declare export function assertSymbolTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isThisTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeThisTypeAnnotation)
+ declare export function assertThisTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isTupleTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTupleTypeAnnotation)
+ declare export function assertTupleTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isTypeofTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeofTypeAnnotation)
+ declare export function assertTypeofTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isTypeAlias(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeAlias)
+ declare export function assertTypeAlias(node: ?Object, opts?: ?Object): void
+ declare export function isTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeAnnotation)
+ declare export function assertTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isTypeCastExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeCastExpression)
+ declare export function assertTypeCastExpression(node: ?Object, opts?: ?Object): void
+ declare export function isTypeParameter(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeParameter)
+ declare export function assertTypeParameter(node: ?Object, opts?: ?Object): void
+ declare export function isTypeParameterDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeParameterDeclaration)
+ declare export function assertTypeParameterDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isTypeParameterInstantiation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeParameterInstantiation)
+ declare export function assertTypeParameterInstantiation(node: ?Object, opts?: ?Object): void
+ declare export function isUnionTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeUnionTypeAnnotation)
+ declare export function assertUnionTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isVariance(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeVariance)
+ declare export function assertVariance(node: ?Object, opts?: ?Object): void
+ declare export function isVoidTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeVoidTypeAnnotation)
+ declare export function assertVoidTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isEnumDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumDeclaration)
+ declare export function assertEnumDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isEnumBooleanBody(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumBooleanBody)
+ declare export function assertEnumBooleanBody(node: ?Object, opts?: ?Object): void
+ declare export function isEnumNumberBody(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumNumberBody)
+ declare export function assertEnumNumberBody(node: ?Object, opts?: ?Object): void
+ declare export function isEnumStringBody(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumStringBody)
+ declare export function assertEnumStringBody(node: ?Object, opts?: ?Object): void
+ declare export function isEnumSymbolBody(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumSymbolBody)
+ declare export function assertEnumSymbolBody(node: ?Object, opts?: ?Object): void
+ declare export function isEnumBooleanMember(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumBooleanMember)
+ declare export function assertEnumBooleanMember(node: ?Object, opts?: ?Object): void
+ declare export function isEnumNumberMember(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumNumberMember)
+ declare export function assertEnumNumberMember(node: ?Object, opts?: ?Object): void
+ declare export function isEnumStringMember(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumStringMember)
+ declare export function assertEnumStringMember(node: ?Object, opts?: ?Object): void
+ declare export function isEnumDefaultedMember(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumDefaultedMember)
+ declare export function assertEnumDefaultedMember(node: ?Object, opts?: ?Object): void
+ declare export function isIndexedAccessType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeIndexedAccessType)
+ declare export function assertIndexedAccessType(node: ?Object, opts?: ?Object): void
+ declare export function isOptionalIndexedAccessType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeOptionalIndexedAccessType)
+ declare export function assertOptionalIndexedAccessType(node: ?Object, opts?: ?Object): void
+ declare export function isJSXAttribute(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXAttribute)
+ declare export function assertJSXAttribute(node: ?Object, opts?: ?Object): void
+ declare export function isJSXClosingElement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXClosingElement)
+ declare export function assertJSXClosingElement(node: ?Object, opts?: ?Object): void
+ declare export function isJSXElement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXElement)
+ declare export function assertJSXElement(node: ?Object, opts?: ?Object): void
+ declare export function isJSXEmptyExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXEmptyExpression)
+ declare export function assertJSXEmptyExpression(node: ?Object, opts?: ?Object): void
+ declare export function isJSXExpressionContainer(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXExpressionContainer)
+ declare export function assertJSXExpressionContainer(node: ?Object, opts?: ?Object): void
+ declare export function isJSXSpreadChild(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXSpreadChild)
+ declare export function assertJSXSpreadChild(node: ?Object, opts?: ?Object): void
+ declare export function isJSXIdentifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXIdentifier)
+ declare export function assertJSXIdentifier(node: ?Object, opts?: ?Object): void
+ declare export function isJSXMemberExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXMemberExpression)
+ declare export function assertJSXMemberExpression(node: ?Object, opts?: ?Object): void
+ declare export function isJSXNamespacedName(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXNamespacedName)
+ declare export function assertJSXNamespacedName(node: ?Object, opts?: ?Object): void
+ declare export function isJSXOpeningElement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXOpeningElement)
+ declare export function assertJSXOpeningElement(node: ?Object, opts?: ?Object): void
+ declare export function isJSXSpreadAttribute(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXSpreadAttribute)
+ declare export function assertJSXSpreadAttribute(node: ?Object, opts?: ?Object): void
+ declare export function isJSXText(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXText)
+ declare export function assertJSXText(node: ?Object, opts?: ?Object): void
+ declare export function isJSXFragment(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXFragment)
+ declare export function assertJSXFragment(node: ?Object, opts?: ?Object): void
+ declare export function isJSXOpeningFragment(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXOpeningFragment)
+ declare export function assertJSXOpeningFragment(node: ?Object, opts?: ?Object): void
+ declare export function isJSXClosingFragment(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXClosingFragment)
+ declare export function assertJSXClosingFragment(node: ?Object, opts?: ?Object): void
+ declare export function isNoop(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNoop)
+ declare export function assertNoop(node: ?Object, opts?: ?Object): void
+ declare export function isPlaceholder(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodePlaceholder)
+ declare export function assertPlaceholder(node: ?Object, opts?: ?Object): void
+ declare export function isV8IntrinsicIdentifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeV8IntrinsicIdentifier)
+ declare export function assertV8IntrinsicIdentifier(node: ?Object, opts?: ?Object): void
+ declare export function isArgumentPlaceholder(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeArgumentPlaceholder)
+ declare export function assertArgumentPlaceholder(node: ?Object, opts?: ?Object): void
+ declare export function isBindExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBindExpression)
+ declare export function assertBindExpression(node: ?Object, opts?: ?Object): void
+ declare export function isDecorator(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDecorator)
+ declare export function assertDecorator(node: ?Object, opts?: ?Object): void
+ declare export function isDoExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDoExpression)
+ declare export function assertDoExpression(node: ?Object, opts?: ?Object): void
+ declare export function isExportDefaultSpecifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExportDefaultSpecifier)
+ declare export function assertExportDefaultSpecifier(node: ?Object, opts?: ?Object): void
+ declare export function isRecordExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeRecordExpression)
+ declare export function assertRecordExpression(node: ?Object, opts?: ?Object): void
+ declare export function isTupleExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTupleExpression)
+ declare export function assertTupleExpression(node: ?Object, opts?: ?Object): void
+ declare export function isDecimalLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDecimalLiteral)
+ declare export function assertDecimalLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isModuleExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeModuleExpression)
+ declare export function assertModuleExpression(node: ?Object, opts?: ?Object): void
+ declare export function isTopicReference(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTopicReference)
+ declare export function assertTopicReference(node: ?Object, opts?: ?Object): void
+ declare export function isPipelineTopicExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodePipelineTopicExpression)
+ declare export function assertPipelineTopicExpression(node: ?Object, opts?: ?Object): void
+ declare export function isPipelineBareFunction(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodePipelineBareFunction)
+ declare export function assertPipelineBareFunction(node: ?Object, opts?: ?Object): void
+ declare export function isPipelinePrimaryTopicReference(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodePipelinePrimaryTopicReference)
+ declare export function assertPipelinePrimaryTopicReference(node: ?Object, opts?: ?Object): void
+ declare export function isVoidPattern(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeVoidPattern)
+ declare export function assertVoidPattern(node: ?Object, opts?: ?Object): void
+ declare export function isTSParameterProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSParameterProperty)
+ declare export function assertTSParameterProperty(node: ?Object, opts?: ?Object): void
+ declare export function isTSDeclareFunction(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSDeclareFunction)
+ declare export function assertTSDeclareFunction(node: ?Object, opts?: ?Object): void
+ declare export function isTSDeclareMethod(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSDeclareMethod)
+ declare export function assertTSDeclareMethod(node: ?Object, opts?: ?Object): void
+ declare export function isTSQualifiedName(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSQualifiedName)
+ declare export function assertTSQualifiedName(node: ?Object, opts?: ?Object): void
+ declare export function isTSCallSignatureDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSCallSignatureDeclaration)
+ declare export function assertTSCallSignatureDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isTSConstructSignatureDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSConstructSignatureDeclaration)
+ declare export function assertTSConstructSignatureDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isTSPropertySignature(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSPropertySignature)
+ declare export function assertTSPropertySignature(node: ?Object, opts?: ?Object): void
+ declare export function isTSMethodSignature(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSMethodSignature)
+ declare export function assertTSMethodSignature(node: ?Object, opts?: ?Object): void
+ declare export function isTSIndexSignature(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSIndexSignature)
+ declare export function assertTSIndexSignature(node: ?Object, opts?: ?Object): void
+ declare export function isTSAnyKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSAnyKeyword)
+ declare export function assertTSAnyKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSBooleanKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSBooleanKeyword)
+ declare export function assertTSBooleanKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSBigIntKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSBigIntKeyword)
+ declare export function assertTSBigIntKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSIntrinsicKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSIntrinsicKeyword)
+ declare export function assertTSIntrinsicKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSNeverKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSNeverKeyword)
+ declare export function assertTSNeverKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSNullKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSNullKeyword)
+ declare export function assertTSNullKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSNumberKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSNumberKeyword)
+ declare export function assertTSNumberKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSObjectKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSObjectKeyword)
+ declare export function assertTSObjectKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSStringKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSStringKeyword)
+ declare export function assertTSStringKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSSymbolKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSSymbolKeyword)
+ declare export function assertTSSymbolKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSUndefinedKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSUndefinedKeyword)
+ declare export function assertTSUndefinedKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSUnknownKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSUnknownKeyword)
+ declare export function assertTSUnknownKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSVoidKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSVoidKeyword)
+ declare export function assertTSVoidKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSThisType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSThisType)
+ declare export function assertTSThisType(node: ?Object, opts?: ?Object): void
+ declare export function isTSFunctionType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSFunctionType)
+ declare export function assertTSFunctionType(node: ?Object, opts?: ?Object): void
+ declare export function isTSConstructorType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSConstructorType)
+ declare export function assertTSConstructorType(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeReference(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeReference)
+ declare export function assertTSTypeReference(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypePredicate(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypePredicate)
+ declare export function assertTSTypePredicate(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeQuery(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeQuery)
+ declare export function assertTSTypeQuery(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeLiteral)
+ declare export function assertTSTypeLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isTSArrayType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSArrayType)
+ declare export function assertTSArrayType(node: ?Object, opts?: ?Object): void
+ declare export function isTSTupleType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTupleType)
+ declare export function assertTSTupleType(node: ?Object, opts?: ?Object): void
+ declare export function isTSOptionalType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSOptionalType)
+ declare export function assertTSOptionalType(node: ?Object, opts?: ?Object): void
+ declare export function isTSRestType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSRestType)
+ declare export function assertTSRestType(node: ?Object, opts?: ?Object): void
+ declare export function isTSNamedTupleMember(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSNamedTupleMember)
+ declare export function assertTSNamedTupleMember(node: ?Object, opts?: ?Object): void
+ declare export function isTSUnionType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSUnionType)
+ declare export function assertTSUnionType(node: ?Object, opts?: ?Object): void
+ declare export function isTSIntersectionType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSIntersectionType)
+ declare export function assertTSIntersectionType(node: ?Object, opts?: ?Object): void
+ declare export function isTSConditionalType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSConditionalType)
+ declare export function assertTSConditionalType(node: ?Object, opts?: ?Object): void
+ declare export function isTSInferType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSInferType)
+ declare export function assertTSInferType(node: ?Object, opts?: ?Object): void
+ declare export function isTSParenthesizedType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSParenthesizedType)
+ declare export function assertTSParenthesizedType(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeOperator(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeOperator)
+ declare export function assertTSTypeOperator(node: ?Object, opts?: ?Object): void
+ declare export function isTSIndexedAccessType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSIndexedAccessType)
+ declare export function assertTSIndexedAccessType(node: ?Object, opts?: ?Object): void
+ declare export function isTSMappedType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSMappedType)
+ declare export function assertTSMappedType(node: ?Object, opts?: ?Object): void
+ declare export function isTSTemplateLiteralType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTemplateLiteralType)
+ declare export function assertTSTemplateLiteralType(node: ?Object, opts?: ?Object): void
+ declare export function isTSLiteralType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSLiteralType)
+ declare export function assertTSLiteralType(node: ?Object, opts?: ?Object): void
+ declare export function isTSExpressionWithTypeArguments(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSExpressionWithTypeArguments)
+ declare export function assertTSExpressionWithTypeArguments(node: ?Object, opts?: ?Object): void
+ declare export function isTSInterfaceDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSInterfaceDeclaration)
+ declare export function assertTSInterfaceDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isTSInterfaceBody(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSInterfaceBody)
+ declare export function assertTSInterfaceBody(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeAliasDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeAliasDeclaration)
+ declare export function assertTSTypeAliasDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isTSInstantiationExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSInstantiationExpression)
+ declare export function assertTSInstantiationExpression(node: ?Object, opts?: ?Object): void
+ declare export function isTSAsExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSAsExpression)
+ declare export function assertTSAsExpression(node: ?Object, opts?: ?Object): void
+ declare export function isTSSatisfiesExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSSatisfiesExpression)
+ declare export function assertTSSatisfiesExpression(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeAssertion(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeAssertion)
+ declare export function assertTSTypeAssertion(node: ?Object, opts?: ?Object): void
+ declare export function isTSEnumBody(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSEnumBody)
+ declare export function assertTSEnumBody(node: ?Object, opts?: ?Object): void
+ declare export function isTSEnumDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSEnumDeclaration)
+ declare export function assertTSEnumDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isTSEnumMember(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSEnumMember)
+ declare export function assertTSEnumMember(node: ?Object, opts?: ?Object): void
+ declare export function isTSModuleDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSModuleDeclaration)
+ declare export function assertTSModuleDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isTSModuleBlock(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSModuleBlock)
+ declare export function assertTSModuleBlock(node: ?Object, opts?: ?Object): void
+ declare export function isTSImportType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSImportType)
+ declare export function assertTSImportType(node: ?Object, opts?: ?Object): void
+ declare export function isTSImportEqualsDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSImportEqualsDeclaration)
+ declare export function assertTSImportEqualsDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isTSExternalModuleReference(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSExternalModuleReference)
+ declare export function assertTSExternalModuleReference(node: ?Object, opts?: ?Object): void
+ declare export function isTSNonNullExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSNonNullExpression)
+ declare export function assertTSNonNullExpression(node: ?Object, opts?: ?Object): void
+ declare export function isTSExportAssignment(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSExportAssignment)
+ declare export function assertTSExportAssignment(node: ?Object, opts?: ?Object): void
+ declare export function isTSNamespaceExportDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSNamespaceExportDeclaration)
+ declare export function assertTSNamespaceExportDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeAnnotation)
+ declare export function assertTSTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeParameterInstantiation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeParameterInstantiation)
+ declare export function assertTSTypeParameterInstantiation(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeParameterDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeParameterDeclaration)
+ declare export function assertTSTypeParameterDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeParameter(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeParameter)
+ declare export function assertTSTypeParameter(node: ?Object, opts?: ?Object): void
+ declare export function isStandardized(node: ?Object, opts?: ?Object): boolean
+ declare export function assertStandardized(node: ?Object, opts?: ?Object): void
+ declare export function isExpression(node: ?Object, opts?: ?Object): boolean
+ declare export function assertExpression(node: ?Object, opts?: ?Object): void
+ declare export function isBinary(node: ?Object, opts?: ?Object): boolean
+ declare export function assertBinary(node: ?Object, opts?: ?Object): void
+ declare export function isScopable(node: ?Object, opts?: ?Object): boolean
+ declare export function assertScopable(node: ?Object, opts?: ?Object): void
+ declare export function isBlockParent(node: ?Object, opts?: ?Object): boolean
+ declare export function assertBlockParent(node: ?Object, opts?: ?Object): void
+ declare export function isBlock(node: ?Object, opts?: ?Object): boolean
+ declare export function assertBlock(node: ?Object, opts?: ?Object): void
+ declare export function isStatement(node: ?Object, opts?: ?Object): boolean
+ declare export function assertStatement(node: ?Object, opts?: ?Object): void
+ declare export function isTerminatorless(node: ?Object, opts?: ?Object): boolean
+ declare export function assertTerminatorless(node: ?Object, opts?: ?Object): void
+ declare export function isCompletionStatement(node: ?Object, opts?: ?Object): boolean
+ declare export function assertCompletionStatement(node: ?Object, opts?: ?Object): void
+ declare export function isConditional(node: ?Object, opts?: ?Object): boolean
+ declare export function assertConditional(node: ?Object, opts?: ?Object): void
+ declare export function isLoop(node: ?Object, opts?: ?Object): boolean
+ declare export function assertLoop(node: ?Object, opts?: ?Object): void
+ declare export function isWhile(node: ?Object, opts?: ?Object): boolean
+ declare export function assertWhile(node: ?Object, opts?: ?Object): void
+ declare export function isExpressionWrapper(node: ?Object, opts?: ?Object): boolean
+ declare export function assertExpressionWrapper(node: ?Object, opts?: ?Object): void
+ declare export function isFor(node: ?Object, opts?: ?Object): boolean
+ declare export function assertFor(node: ?Object, opts?: ?Object): void
+ declare export function isForXStatement(node: ?Object, opts?: ?Object): boolean
+ declare export function assertForXStatement(node: ?Object, opts?: ?Object): void
+ declare export function isFunction(node: ?Object, opts?: ?Object): boolean
+ declare export function assertFunction(node: ?Object, opts?: ?Object): void
+ declare export function isFunctionParent(node: ?Object, opts?: ?Object): boolean
+ declare export function assertFunctionParent(node: ?Object, opts?: ?Object): void
+ declare export function isPureish(node: ?Object, opts?: ?Object): boolean
+ declare export function assertPureish(node: ?Object, opts?: ?Object): void
+ declare export function isDeclaration(node: ?Object, opts?: ?Object): boolean
+ declare export function assertDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isFunctionParameter(node: ?Object, opts?: ?Object): boolean
+ declare export function assertFunctionParameter(node: ?Object, opts?: ?Object): void
+ declare export function isPatternLike(node: ?Object, opts?: ?Object): boolean
+ declare export function assertPatternLike(node: ?Object, opts?: ?Object): void
+ declare export function isLVal(node: ?Object, opts?: ?Object): boolean
+ declare export function assertLVal(node: ?Object, opts?: ?Object): void
+ declare export function isTSEntityName(node: ?Object, opts?: ?Object): boolean
+ declare export function assertTSEntityName(node: ?Object, opts?: ?Object): void
+ declare export function isLiteral(node: ?Object, opts?: ?Object): boolean
+ declare export function assertLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isImmutable(node: ?Object, opts?: ?Object): boolean
+ declare export function assertImmutable(node: ?Object, opts?: ?Object): void
+ declare export function isUserWhitespacable(node: ?Object, opts?: ?Object): boolean
+ declare export function assertUserWhitespacable(node: ?Object, opts?: ?Object): void
+ declare export function isMethod(node: ?Object, opts?: ?Object): boolean
+ declare export function assertMethod(node: ?Object, opts?: ?Object): void
+ declare export function isObjectMember(node: ?Object, opts?: ?Object): boolean
+ declare export function assertObjectMember(node: ?Object, opts?: ?Object): void
+ declare export function isProperty(node: ?Object, opts?: ?Object): boolean
+ declare export function assertProperty(node: ?Object, opts?: ?Object): void
+ declare export function isUnaryLike(node: ?Object, opts?: ?Object): boolean
+ declare export function assertUnaryLike(node: ?Object, opts?: ?Object): void
+ declare export function isPattern(node: ?Object, opts?: ?Object): boolean
+ declare export function assertPattern(node: ?Object, opts?: ?Object): void
+ declare export function isClass(node: ?Object, opts?: ?Object): boolean
+ declare export function assertClass(node: ?Object, opts?: ?Object): void
+ declare export function isImportOrExportDeclaration(node: ?Object, opts?: ?Object): boolean
+ declare export function assertImportOrExportDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isExportDeclaration(node: ?Object, opts?: ?Object): boolean
+ declare export function assertExportDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isModuleSpecifier(node: ?Object, opts?: ?Object): boolean
+ declare export function assertModuleSpecifier(node: ?Object, opts?: ?Object): void
+ declare export function isAccessor(node: ?Object, opts?: ?Object): boolean
+ declare export function assertAccessor(node: ?Object, opts?: ?Object): void
+ declare export function isPrivate(node: ?Object, opts?: ?Object): boolean
+ declare export function assertPrivate(node: ?Object, opts?: ?Object): void
+ declare export function isFlow(node: ?Object, opts?: ?Object): boolean
+ declare export function assertFlow(node: ?Object, opts?: ?Object): void
+ declare export function isFlowType(node: ?Object, opts?: ?Object): boolean
+ declare export function assertFlowType(node: ?Object, opts?: ?Object): void
+ declare export function isFlowBaseAnnotation(node: ?Object, opts?: ?Object): boolean
+ declare export function assertFlowBaseAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isFlowDeclaration(node: ?Object, opts?: ?Object): boolean
+ declare export function assertFlowDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isFlowPredicate(node: ?Object, opts?: ?Object): boolean
+ declare export function assertFlowPredicate(node: ?Object, opts?: ?Object): void
+ declare export function isEnumBody(node: ?Object, opts?: ?Object): boolean
+ declare export function assertEnumBody(node: ?Object, opts?: ?Object): void
+ declare export function isEnumMember(node: ?Object, opts?: ?Object): boolean
+ declare export function assertEnumMember(node: ?Object, opts?: ?Object): void
+ declare export function isJSX(node: ?Object, opts?: ?Object): boolean
+ declare export function assertJSX(node: ?Object, opts?: ?Object): void
+ declare export function isMiscellaneous(node: ?Object, opts?: ?Object): boolean
+ declare export function assertMiscellaneous(node: ?Object, opts?: ?Object): void
+ declare export function isTypeScript(node: ?Object, opts?: ?Object): boolean
+ declare export function assertTypeScript(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeElement(node: ?Object, opts?: ?Object): boolean
+ declare export function assertTSTypeElement(node: ?Object, opts?: ?Object): void
+ declare export function isTSType(node: ?Object, opts?: ?Object): boolean
+ declare export function assertTSType(node: ?Object, opts?: ?Object): void
+ declare export function isTSBaseType(node: ?Object, opts?: ?Object): boolean
+ declare export function assertTSBaseType(node: ?Object, opts?: ?Object): void
+ declare export function isModuleDeclaration(node: ?Object, opts?: ?Object): boolean
+ declare export function assertModuleDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isNumberLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNumericLiteral)
+ declare export function assertNumberLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isRegexLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeRegExpLiteral)
+ declare export function assertRegexLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isRestProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeRestElement)
+ declare export function assertRestProperty(node: ?Object, opts?: ?Object): void
+ declare export function isSpreadProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeSpreadElement)
+ declare export function assertSpreadProperty(node: ?Object, opts?: ?Object): void
+ declare export var VISITOR_KEYS: { [type: string]: string[] }
+ declare export function assertNode(obj: any): void
+ declare export function createTypeAnnotationBasedOnTypeof(type: 'string' | 'number' | 'undefined' | 'boolean' | 'function' | 'object' | 'symbol'): BabelNodeTypeAnnotation
+ declare export function createUnionTypeAnnotation(types: Array<BabelNodeFlowType>): BabelNodeUnionTypeAnnotation
+ declare export function createFlowUnionType(types: Array<BabelNodeFlowType>): BabelNodeUnionTypeAnnotation
+ declare export function buildChildren(node: { children: Array<BabelNodeJSXText | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXElement | BabelNodeJSXFragment | BabelNodeJSXEmptyExpression> }): Array<BabelNodeJSXText | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXElement | BabelNodeJSXFragment>
+ declare export function clone<T>(n: T): T;
+ declare export function cloneDeep<T>(n: T): T;
+ declare export function cloneDeepWithoutLoc<T>(n: T): T;
+ declare export function cloneNode<T>(n: T, deep?: boolean, withoutLoc?: boolean): T;
+ declare export function cloneWithoutLoc<T>(n: T): T;
+ declare type CommentTypeShorthand = 'leading' | 'inner' | 'trailing'
+ declare export function addComment<T: BabelNode>(node: T, type: CommentTypeShorthand, content: string, line?: boolean): T
+ declare export function addComments<T: BabelNode>(node: T, type: CommentTypeShorthand, comments: Array<Comment>): T
+ declare export function inheritInnerComments(node: BabelNode, parent: BabelNode): void
+ declare export function inheritLeadingComments(node: BabelNode, parent: BabelNode): void
+ declare export function inheritsComments<T: BabelNode>(node: T, parent: BabelNode): void
+ declare export function inheritTrailingComments(node: BabelNode, parent: BabelNode): void
+ declare export function removeComments<T: BabelNode>(node: T): T
+ declare export function ensureBlock(node: BabelNode, key: string): BabelNodeBlockStatement
+ declare export function toBindingIdentifierName(name?: ?string): string
+ declare export function toBlock(node: BabelNodeStatement | BabelNodeExpression, parent?: BabelNodeFunction | null): BabelNodeBlockStatement
+ declare export function toComputedKey(node: BabelNodeMethod | BabelNodeProperty, key?: BabelNodeExpression | BabelNodeIdentifier): BabelNodeExpression
+ declare export function toExpression(node: BabelNodeExpressionStatement | BabelNodeExpression | BabelNodeClass | BabelNodeFunction): BabelNodeExpression
+ declare export function toIdentifier(name?: ?string): string
+ declare export function toKeyAlias(node: BabelNodeMethod | BabelNodeProperty, key?: BabelNode): string
+ declare export function toStatement(node: BabelNodeStatement | BabelNodeClass | BabelNodeFunction | BabelNodeAssignmentExpression, ignore?: boolean): BabelNodeStatement | void
+ declare export function valueToNode(value: any): BabelNodeExpression
+ declare export function removeTypeDuplicates(types: Array<BabelNodeFlowType>): Array<BabelNodeFlowType>
+ declare export function appendToMemberExpression(member: BabelNodeMemberExpression, append: BabelNode, computed?: boolean): BabelNodeMemberExpression
+ declare export function inherits<T: BabelNode>(child: T, parent: BabelNode | null | void): T
+ declare export function prependToMemberExpression(member: BabelNodeMemberExpression, prepend: BabelNodeExpression): BabelNodeMemberExpression
+ declare export function removeProperties<T>(n: T, opts: ?{}): void;
+ declare export function removePropertiesDeep<T>(n: T, opts: ?{}): T;
+ declare export var getBindingIdentifiers: {
+ (node: BabelNode, duplicates?: boolean, outerOnly?: boolean): { [key: string]: BabelNodeIdentifier | Array<BabelNodeIdentifier> },
+ keys: { [type: string]: string[] }
+ }
+ declare export function getOuterBindingIdentifiers(node: BabelNode, duplicates?: boolean): { [key: string]: BabelNodeIdentifier | Array<BabelNodeIdentifier> }
+ declare type TraversalAncestors = Array<{
+ node: BabelNode,
+ key: string,
+ index?: number,
+ }>;
+ declare type TraversalHandler<T> = (BabelNode, TraversalAncestors, T) => void;
+ declare type TraversalHandlers<T> = {
+ enter?: TraversalHandler<T>,
+ exit?: TraversalHandler<T>,
+ };
+ declare export function traverse<T>(n: BabelNode, TraversalHandler<T> | TraversalHandlers<T>, state?: T): void;
+ declare export function traverseFast<T>(n: BabelNode, h: TraversalHandler<T>, state?: T): void;
+ declare export function shallowEqual(actual: Object, expected: Object): boolean
+ declare export function buildMatchMemberExpression(match: string, allowPartial?: boolean): (?BabelNode) => boolean
+ declare export function is(type: string, n: BabelNode, opts: Object): boolean;
+ declare export function isBinding(node: BabelNode, parent: BabelNode, grandparent?: BabelNode): boolean
+ declare export function isBlockScoped(node: BabelNode): boolean
+ declare export function isImmutable(node: BabelNode): boolean
+ declare export function isLet(node: BabelNode): boolean
+ declare export function isNode(node: ?Object): boolean
+ declare export function isNodesEquivalent(a: any, b: any): boolean
+ declare export function isPlaceholderType(placeholderType: string, targetType: string): boolean
+ declare export function isReferenced(node: BabelNode, parent: BabelNode, grandparent?: BabelNode): boolean
+ declare export function isScope(node: BabelNode, parent: BabelNode): boolean
+ declare export function isSpecifierDefault(specifier: BabelNodeModuleSpecifier): boolean
+ declare export function isType(nodetype: ?string, targetType: string): boolean
+ declare export function isValidES3Identifier(name: string): boolean
+ declare export function isValidES3Identifier(name: string): boolean
+ declare export function isValidIdentifier(name: string): boolean
+ declare export function isVar(node: BabelNode): boolean
+ declare export function matchesPattern(node: ?BabelNode, match: string | Array<string>, allowPartial?: boolean): boolean
+ declare export function validate(n: BabelNode, key: string, value: mixed): void;
+} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/index.js.map b/vanilla/node_modules/@babel/types/lib/index.js.map
new file mode 100644
index 0000000..8ce007b
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_isReactComponent","require","_isCompatTag","_buildChildren","_assertNode","_index","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_createTypeAnnotationBasedOnTypeof","_createFlowUnionType","_createTSUnionType","_productions","_index2","_cloneNode","_clone","_cloneDeep","_cloneDeepWithoutLoc","_cloneWithoutLoc","_addComment","_addComments","_inheritInnerComments","_inheritLeadingComments","_inheritsComments","_inheritTrailingComments","_removeComments","_index3","_index4","_ensureBlock","_toBindingIdentifierName","_toBlock","_toComputedKey","_toExpression","_toIdentifier","_toKeyAlias","_toStatement","_valueToNode","_index5","_appendToMemberExpression","_inherits","_prependToMemberExpression","_removeProperties","_removePropertiesDeep","_removeTypeDuplicates","_getAssignmentIdentifiers","_getBindingIdentifiers","_getOuterBindingIdentifiers","_getFunctionName","_traverse","_traverseFast","_shallowEqual","_is","_isBinding","_isBlockScoped","_isImmutable","_isLet","_isNode","_isNodesEquivalent","_isPlaceholderType","_isReferenced","_isScope","_isSpecifierDefault","_isType","_isValidES3Identifier","_isValidIdentifier","_isVar","_matchesPattern","_validate","_buildMatchMemberExpression","_index6","_deprecationWarning","_toSequenceExpression","react","isReactComponent","isCompatTag","buildChildren","toSequenceExpression","process","env","BABEL_TYPES_8_BREAKING","console","warn"],"sources":["../src/index.ts"],"sourcesContent":["import isReactComponent from \"./validators/react/isReactComponent.ts\";\nimport isCompatTag from \"./validators/react/isCompatTag.ts\";\nimport buildChildren from \"./builders/react/buildChildren.ts\";\n\n// asserts\nexport { default as assertNode } from \"./asserts/assertNode.ts\";\nexport * from \"./asserts/generated/index.ts\";\n\n// builders\nexport { default as createTypeAnnotationBasedOnTypeof } from \"./builders/flow/createTypeAnnotationBasedOnTypeof.ts\";\n/** @deprecated use createFlowUnionType instead */\nexport { default as createUnionTypeAnnotation } from \"./builders/flow/createFlowUnionType.ts\";\nexport { default as createFlowUnionType } from \"./builders/flow/createFlowUnionType.ts\";\nexport { default as createTSUnionType } from \"./builders/typescript/createTSUnionType.ts\";\nexport * from \"./builders/productions.ts\";\nexport * from \"./builders/generated/index.ts\"; // includes AST types\n\n// clone\nexport { default as cloneNode } from \"./clone/cloneNode.ts\";\nexport { default as clone } from \"./clone/clone.ts\";\nexport { default as cloneDeep } from \"./clone/cloneDeep.ts\";\nexport { default as cloneDeepWithoutLoc } from \"./clone/cloneDeepWithoutLoc.ts\";\nexport { default as cloneWithoutLoc } from \"./clone/cloneWithoutLoc.ts\";\n\n// comments\nexport { default as addComment } from \"./comments/addComment.ts\";\nexport { default as addComments } from \"./comments/addComments.ts\";\nexport { default as inheritInnerComments } from \"./comments/inheritInnerComments.ts\";\nexport { default as inheritLeadingComments } from \"./comments/inheritLeadingComments.ts\";\nexport { default as inheritsComments } from \"./comments/inheritsComments.ts\";\nexport { default as inheritTrailingComments } from \"./comments/inheritTrailingComments.ts\";\nexport { default as removeComments } from \"./comments/removeComments.ts\";\n\n// constants\nexport * from \"./constants/generated/index.ts\";\nexport * from \"./constants/index.ts\";\n\n// converters\nexport { default as ensureBlock } from \"./converters/ensureBlock.ts\";\nexport { default as toBindingIdentifierName } from \"./converters/toBindingIdentifierName.ts\";\nexport { default as toBlock } from \"./converters/toBlock.ts\";\nexport { default as toComputedKey } from \"./converters/toComputedKey.ts\";\nexport { default as toExpression } from \"./converters/toExpression.ts\";\nexport { default as toIdentifier } from \"./converters/toIdentifier.ts\";\nexport { default as toKeyAlias } from \"./converters/toKeyAlias.ts\";\nexport { default as toStatement } from \"./converters/toStatement.ts\";\nexport { default as valueToNode } from \"./converters/valueToNode.ts\";\n\n// definitions\nexport * from \"./definitions/index.ts\";\n\n// modifications\nexport { default as appendToMemberExpression } from \"./modifications/appendToMemberExpression.ts\";\nexport { default as inherits } from \"./modifications/inherits.ts\";\nexport { default as prependToMemberExpression } from \"./modifications/prependToMemberExpression.ts\";\nexport {\n default as removeProperties,\n type Options as RemovePropertiesOptions,\n} from \"./modifications/removeProperties.ts\";\nexport { default as removePropertiesDeep } from \"./modifications/removePropertiesDeep.ts\";\nexport { default as removeTypeDuplicates } from \"./modifications/flow/removeTypeDuplicates.ts\";\n\n// retrievers\nexport { default as getAssignmentIdentifiers } from \"./retrievers/getAssignmentIdentifiers.ts\";\nexport { default as getBindingIdentifiers } from \"./retrievers/getBindingIdentifiers.ts\";\nexport { default as getOuterBindingIdentifiers } from \"./retrievers/getOuterBindingIdentifiers.ts\";\nexport { default as getFunctionName } from \"./retrievers/getFunctionName.ts\";\n\n// traverse\nexport { default as traverse } from \"./traverse/traverse.ts\";\nexport * from \"./traverse/traverse.ts\";\nexport { default as traverseFast } from \"./traverse/traverseFast.ts\";\n\n// utils\nexport { default as shallowEqual } from \"./utils/shallowEqual.ts\";\n\n// validators\nexport { default as is } from \"./validators/is.ts\";\nexport { default as isBinding } from \"./validators/isBinding.ts\";\nexport { default as isBlockScoped } from \"./validators/isBlockScoped.ts\";\nexport { default as isImmutable } from \"./validators/isImmutable.ts\";\nexport { default as isLet } from \"./validators/isLet.ts\";\nexport { default as isNode } from \"./validators/isNode.ts\";\nexport { default as isNodesEquivalent } from \"./validators/isNodesEquivalent.ts\";\nexport { default as isPlaceholderType } from \"./validators/isPlaceholderType.ts\";\nexport { default as isReferenced } from \"./validators/isReferenced.ts\";\nexport { default as isScope } from \"./validators/isScope.ts\";\nexport { default as isSpecifierDefault } from \"./validators/isSpecifierDefault.ts\";\nexport { default as isType } from \"./validators/isType.ts\";\nexport { default as isValidES3Identifier } from \"./validators/isValidES3Identifier.ts\";\nexport { default as isValidIdentifier } from \"./validators/isValidIdentifier.ts\";\nexport { default as isVar } from \"./validators/isVar.ts\";\nexport { default as matchesPattern } from \"./validators/matchesPattern.ts\";\nexport { default as validate } from \"./validators/validate.ts\";\nexport { default as buildMatchMemberExpression } from \"./validators/buildMatchMemberExpression.ts\";\nexport * from \"./validators/generated/index.ts\";\n\n// react\nexport const react = {\n isReactComponent,\n isCompatTag,\n buildChildren,\n};\n\n// this is used by @babel/traverse to warn about deprecated visitors\nexport { default as __internal__deprecationWarning } from \"./utils/deprecationWarning.ts\";\n\nimport toSequenceExpression from \"./converters/toSequenceExpression.ts\" with { if: \"!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE\" };\nif (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n // eslint-disable-next-line no-restricted-globals\n exports.toSequenceExpression = toSequenceExpression;\n}\n\nif (!process.env.BABEL_8_BREAKING && process.env.BABEL_TYPES_8_BREAKING) {\n console.warn(\n \"BABEL_TYPES_8_BREAKING is not supported anymore. Use the latest Babel 8.0.0 pre-release instead!\",\n );\n}\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js b/vanilla/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js
new file mode 100644
index 0000000..48ff2a2
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js
@@ -0,0 +1,15 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = appendToMemberExpression;
+var _index = require("../builders/generated/index.js");
+function appendToMemberExpression(member, append, computed = false) {
+ member.object = (0, _index.memberExpression)(member.object, member.property, member.computed);
+ member.property = append;
+ member.computed = !!computed;
+ return member;
+}
+
+//# sourceMappingURL=appendToMemberExpression.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map b/vanilla/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map
new file mode 100644
index 0000000..33236a9
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","appendToMemberExpression","member","append","computed","object","memberExpression","property"],"sources":["../../src/modifications/appendToMemberExpression.ts"],"sourcesContent":["import { memberExpression } from \"../builders/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Append a node to a member expression.\n */\nexport default function appendToMemberExpression(\n member: t.MemberExpression,\n append: t.MemberExpression[\"property\"],\n computed: boolean = false,\n): t.MemberExpression {\n member.object = memberExpression(\n member.object,\n member.property,\n member.computed,\n );\n member.property = append;\n member.computed = !!computed;\n\n return member;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAMe,SAASC,wBAAwBA,CAC9CC,MAA0B,EAC1BC,MAAsC,EACtCC,QAAiB,GAAG,KAAK,EACL;EACpBF,MAAM,CAACG,MAAM,GAAG,IAAAC,uBAAgB,EAC9BJ,MAAM,CAACG,MAAM,EACbH,MAAM,CAACK,QAAQ,EACfL,MAAM,CAACE,QACT,CAAC;EACDF,MAAM,CAACK,QAAQ,GAAGJ,MAAM;EACxBD,MAAM,CAACE,QAAQ,GAAG,CAAC,CAACA,QAAQ;EAE5B,OAAOF,MAAM;AACf","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js b/vanilla/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js
new file mode 100644
index 0000000..edbdd8b
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js
@@ -0,0 +1,65 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = removeTypeDuplicates;
+var _index = require("../../validators/generated/index.js");
+function getQualifiedName(node) {
+ return (0, _index.isIdentifier)(node) ? node.name : `${node.id.name}.${getQualifiedName(node.qualification)}`;
+}
+function removeTypeDuplicates(nodesIn) {
+ const nodes = Array.from(nodesIn);
+ const generics = new Map();
+ const bases = new Map();
+ const typeGroups = new Set();
+ const types = [];
+ for (let i = 0; i < nodes.length; i++) {
+ const node = nodes[i];
+ if (!node) continue;
+ if (types.includes(node)) {
+ continue;
+ }
+ if ((0, _index.isAnyTypeAnnotation)(node)) {
+ return [node];
+ }
+ if ((0, _index.isFlowBaseAnnotation)(node)) {
+ bases.set(node.type, node);
+ continue;
+ }
+ if ((0, _index.isUnionTypeAnnotation)(node)) {
+ if (!typeGroups.has(node.types)) {
+ nodes.push(...node.types);
+ typeGroups.add(node.types);
+ }
+ continue;
+ }
+ if ((0, _index.isGenericTypeAnnotation)(node)) {
+ const name = getQualifiedName(node.id);
+ if (generics.has(name)) {
+ let existing = generics.get(name);
+ if (existing.typeParameters) {
+ if (node.typeParameters) {
+ existing.typeParameters.params.push(...node.typeParameters.params);
+ existing.typeParameters.params = removeTypeDuplicates(existing.typeParameters.params);
+ }
+ } else {
+ existing = node.typeParameters;
+ }
+ } else {
+ generics.set(name, node);
+ }
+ continue;
+ }
+ types.push(node);
+ }
+ for (const [, baseType] of bases) {
+ types.push(baseType);
+ }
+ for (const [, genericName] of generics) {
+ types.push(genericName);
+ }
+ return types;
+}
+
+//# sourceMappingURL=removeTypeDuplicates.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map b/vanilla/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map
new file mode 100644
index 0000000..09468ca
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","getQualifiedName","node","isIdentifier","name","id","qualification","removeTypeDuplicates","nodesIn","nodes","Array","from","generics","Map","bases","typeGroups","Set","types","i","length","includes","isAnyTypeAnnotation","isFlowBaseAnnotation","set","type","isUnionTypeAnnotation","has","push","add","isGenericTypeAnnotation","existing","get","typeParameters","params","baseType","genericName"],"sources":["../../../src/modifications/flow/removeTypeDuplicates.ts"],"sourcesContent":["import {\n isAnyTypeAnnotation,\n isGenericTypeAnnotation,\n isUnionTypeAnnotation,\n isFlowBaseAnnotation,\n isIdentifier,\n} from \"../../validators/generated/index.ts\";\nimport type * as t from \"../../index.ts\";\n\nfunction getQualifiedName(node: t.GenericTypeAnnotation[\"id\"]): string {\n return isIdentifier(node)\n ? node.name\n : `${node.id.name}.${getQualifiedName(node.qualification)}`;\n}\n\n/**\n * Dedupe type annotations.\n */\nexport default function removeTypeDuplicates(\n nodesIn: readonly (t.FlowType | false | null | undefined)[],\n): t.FlowType[] {\n const nodes = Array.from(nodesIn);\n\n const generics = new Map<string, t.GenericTypeAnnotation>();\n const bases = new Map<t.FlowBaseAnnotation[\"type\"], t.FlowBaseAnnotation>();\n\n // store union type groups to circular references\n const typeGroups = new Set<t.FlowType[]>();\n\n const types: t.FlowType[] = [];\n\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if (!node) continue;\n\n // detect duplicates\n if (types.includes(node)) {\n continue;\n }\n\n // this type matches anything\n if (isAnyTypeAnnotation(node)) {\n return [node];\n }\n\n if (isFlowBaseAnnotation(node)) {\n bases.set(node.type, node);\n continue;\n }\n\n if (isUnionTypeAnnotation(node)) {\n if (!typeGroups.has(node.types)) {\n nodes.push(...node.types);\n typeGroups.add(node.types);\n }\n continue;\n }\n\n // find a matching generic type and merge and deduplicate the type parameters\n if (isGenericTypeAnnotation(node)) {\n const name = getQualifiedName(node.id);\n\n if (generics.has(name)) {\n let existing: t.Flow = generics.get(name);\n if (existing.typeParameters) {\n if (node.typeParameters) {\n existing.typeParameters.params.push(...node.typeParameters.params);\n existing.typeParameters.params = removeTypeDuplicates(\n existing.typeParameters.params,\n );\n }\n } else {\n existing = node.typeParameters;\n }\n } else {\n generics.set(name, node);\n }\n\n continue;\n }\n\n types.push(node);\n }\n\n // add back in bases\n for (const [, baseType] of bases) {\n types.push(baseType);\n }\n\n // add back in generics\n for (const [, genericName] of generics) {\n types.push(genericName);\n }\n\n return types;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AASA,SAASC,gBAAgBA,CAACC,IAAmC,EAAU;EACrE,OAAO,IAAAC,mBAAY,EAACD,IAAI,CAAC,GACrBA,IAAI,CAACE,IAAI,GACT,GAAGF,IAAI,CAACG,EAAE,CAACD,IAAI,IAAIH,gBAAgB,CAACC,IAAI,CAACI,aAAa,CAAC,EAAE;AAC/D;AAKe,SAASC,oBAAoBA,CAC1CC,OAA2D,EAC7C;EACd,MAAMC,KAAK,GAAGC,KAAK,CAACC,IAAI,CAACH,OAAO,CAAC;EAEjC,MAAMI,QAAQ,GAAG,IAAIC,GAAG,CAAkC,CAAC;EAC3D,MAAMC,KAAK,GAAG,IAAID,GAAG,CAAqD,CAAC;EAG3E,MAAME,UAAU,GAAG,IAAIC,GAAG,CAAe,CAAC;EAE1C,MAAMC,KAAmB,GAAG,EAAE;EAE9B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGT,KAAK,CAACU,MAAM,EAAED,CAAC,EAAE,EAAE;IACrC,MAAMhB,IAAI,GAAGO,KAAK,CAACS,CAAC,CAAC;IACrB,IAAI,CAAChB,IAAI,EAAE;IAGX,IAAIe,KAAK,CAACG,QAAQ,CAAClB,IAAI,CAAC,EAAE;MACxB;IACF;IAGA,IAAI,IAAAmB,0BAAmB,EAACnB,IAAI,CAAC,EAAE;MAC7B,OAAO,CAACA,IAAI,CAAC;IACf;IAEA,IAAI,IAAAoB,2BAAoB,EAACpB,IAAI,CAAC,EAAE;MAC9BY,KAAK,CAACS,GAAG,CAACrB,IAAI,CAACsB,IAAI,EAAEtB,IAAI,CAAC;MAC1B;IACF;IAEA,IAAI,IAAAuB,4BAAqB,EAACvB,IAAI,CAAC,EAAE;MAC/B,IAAI,CAACa,UAAU,CAACW,GAAG,CAACxB,IAAI,CAACe,KAAK,CAAC,EAAE;QAC/BR,KAAK,CAACkB,IAAI,CAAC,GAAGzB,IAAI,CAACe,KAAK,CAAC;QACzBF,UAAU,CAACa,GAAG,CAAC1B,IAAI,CAACe,KAAK,CAAC;MAC5B;MACA;IACF;IAGA,IAAI,IAAAY,8BAAuB,EAAC3B,IAAI,CAAC,EAAE;MACjC,MAAME,IAAI,GAAGH,gBAAgB,CAACC,IAAI,CAACG,EAAE,CAAC;MAEtC,IAAIO,QAAQ,CAACc,GAAG,CAACtB,IAAI,CAAC,EAAE;QACtB,IAAI0B,QAAgB,GAAGlB,QAAQ,CAACmB,GAAG,CAAC3B,IAAI,CAAC;QACzC,IAAI0B,QAAQ,CAACE,cAAc,EAAE;UAC3B,IAAI9B,IAAI,CAAC8B,cAAc,EAAE;YACvBF,QAAQ,CAACE,cAAc,CAACC,MAAM,CAACN,IAAI,CAAC,GAAGzB,IAAI,CAAC8B,cAAc,CAACC,MAAM,CAAC;YAClEH,QAAQ,CAACE,cAAc,CAACC,MAAM,GAAG1B,oBAAoB,CACnDuB,QAAQ,CAACE,cAAc,CAACC,MAC1B,CAAC;UACH;QACF,CAAC,MAAM;UACLH,QAAQ,GAAG5B,IAAI,CAAC8B,cAAc;QAChC;MACF,CAAC,MAAM;QACLpB,QAAQ,CAACW,GAAG,CAACnB,IAAI,EAAEF,IAAI,CAAC;MAC1B;MAEA;IACF;IAEAe,KAAK,CAACU,IAAI,CAACzB,IAAI,CAAC;EAClB;EAGA,KAAK,MAAM,GAAGgC,QAAQ,CAAC,IAAIpB,KAAK,EAAE;IAChCG,KAAK,CAACU,IAAI,CAACO,QAAQ,CAAC;EACtB;EAGA,KAAK,MAAM,GAAGC,WAAW,CAAC,IAAIvB,QAAQ,EAAE;IACtCK,KAAK,CAACU,IAAI,CAACQ,WAAW,CAAC;EACzB;EAEA,OAAOlB,KAAK;AACd","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/modifications/inherits.js b/vanilla/node_modules/@babel/types/lib/modifications/inherits.js
new file mode 100644
index 0000000..7667d9e
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/modifications/inherits.js
@@ -0,0 +1,28 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = inherits;
+var _index = require("../constants/index.js");
+var _inheritsComments = require("../comments/inheritsComments.js");
+function inherits(child, parent) {
+ if (!child || !parent) return child;
+ for (const key of _index.INHERIT_KEYS.optional) {
+ if (child[key] == null) {
+ child[key] = parent[key];
+ }
+ }
+ for (const key of Object.keys(parent)) {
+ if (key.startsWith("_") && key !== "__clone") {
+ child[key] = parent[key];
+ }
+ }
+ for (const key of _index.INHERIT_KEYS.force) {
+ child[key] = parent[key];
+ }
+ (0, _inheritsComments.default)(child, parent);
+ return child;
+}
+
+//# sourceMappingURL=inherits.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/modifications/inherits.js.map b/vanilla/node_modules/@babel/types/lib/modifications/inherits.js.map
new file mode 100644
index 0000000..188e94f
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/modifications/inherits.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","_inheritsComments","inherits","child","parent","key","INHERIT_KEYS","optional","Object","keys","startsWith","force","inheritsComments"],"sources":["../../src/modifications/inherits.ts"],"sourcesContent":["import { INHERIT_KEYS } from \"../constants/index.ts\";\nimport inheritsComments from \"../comments/inheritsComments.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Inherit all contextual properties from `parent` node to `child` node.\n */\nexport default function inherits<T extends t.Node | null | undefined>(\n child: T,\n parent: t.Node | null | undefined,\n): T {\n if (!child || !parent) return child;\n\n // optionally inherit specific properties if not null\n for (const key of INHERIT_KEYS.optional) {\n // @ts-expect-error Fixme: refine parent types\n if (child[key] == null) {\n // @ts-expect-error Fixme: refine parent types\n child[key] = parent[key];\n }\n }\n\n // force inherit \"private\" properties\n for (const key of Object.keys(parent)) {\n if (key.startsWith(\"_\") && key !== \"__clone\") {\n // @ts-expect-error Fixme: refine parent types\n child[key] = parent[key];\n }\n }\n\n // force inherit select properties\n for (const key of INHERIT_KEYS.force) {\n // @ts-expect-error Fixme: refine parent types\n child[key] = parent[key];\n }\n\n inheritsComments(child, parent);\n\n return child;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAMe,SAASE,QAAQA,CAC9BC,KAAQ,EACRC,MAAiC,EAC9B;EACH,IAAI,CAACD,KAAK,IAAI,CAACC,MAAM,EAAE,OAAOD,KAAK;EAGnC,KAAK,MAAME,GAAG,IAAIC,mBAAY,CAACC,QAAQ,EAAE;IAEvC,IAAIJ,KAAK,CAACE,GAAG,CAAC,IAAI,IAAI,EAAE;MAEtBF,KAAK,CAACE,GAAG,CAAC,GAAGD,MAAM,CAACC,GAAG,CAAC;IAC1B;EACF;EAGA,KAAK,MAAMA,GAAG,IAAIG,MAAM,CAACC,IAAI,CAACL,MAAM,CAAC,EAAE;IACrC,IAAIC,GAAG,CAACK,UAAU,CAAC,GAAG,CAAC,IAAIL,GAAG,KAAK,SAAS,EAAE;MAE5CF,KAAK,CAACE,GAAG,CAAC,GAAGD,MAAM,CAACC,GAAG,CAAC;IAC1B;EACF;EAGA,KAAK,MAAMA,GAAG,IAAIC,mBAAY,CAACK,KAAK,EAAE;IAEpCR,KAAK,CAACE,GAAG,CAAC,GAAGD,MAAM,CAACC,GAAG,CAAC;EAC1B;EAEA,IAAAO,yBAAgB,EAACT,KAAK,EAAEC,MAAM,CAAC;EAE/B,OAAOD,KAAK;AACd","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js b/vanilla/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js
new file mode 100644
index 0000000..d86e70a
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js
@@ -0,0 +1,17 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = prependToMemberExpression;
+var _index = require("../builders/generated/index.js");
+var _index2 = require("../index.js");
+function prependToMemberExpression(member, prepend) {
+ if ((0, _index2.isSuper)(member.object)) {
+ throw new Error("Cannot prepend node to super property access (`super.foo`).");
+ }
+ member.object = (0, _index.memberExpression)(prepend, member.object);
+ return member;
+}
+
+//# sourceMappingURL=prependToMemberExpression.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map b/vanilla/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map
new file mode 100644
index 0000000..5da2b40
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","_index2","prependToMemberExpression","member","prepend","isSuper","object","Error","memberExpression"],"sources":["../../src/modifications/prependToMemberExpression.ts"],"sourcesContent":["import { memberExpression } from \"../builders/generated/index.ts\";\nimport { isSuper } from \"../index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Prepend a node to a member expression.\n */\nexport default function prependToMemberExpression<\n T extends Pick<t.MemberExpression, \"object\" | \"property\">,\n>(member: T, prepend: t.MemberExpression[\"object\"]): T {\n if (isSuper(member.object)) {\n throw new Error(\n \"Cannot prepend node to super property access (`super.foo`).\",\n );\n }\n member.object = memberExpression(prepend, member.object);\n\n return member;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAMe,SAASE,yBAAyBA,CAE/CC,MAAS,EAAEC,OAAqC,EAAK;EACrD,IAAI,IAAAC,eAAO,EAACF,MAAM,CAACG,MAAM,CAAC,EAAE;IAC1B,MAAM,IAAIC,KAAK,CACb,6DACF,CAAC;EACH;EACAJ,MAAM,CAACG,MAAM,GAAG,IAAAE,uBAAgB,EAACJ,OAAO,EAAED,MAAM,CAACG,MAAM,CAAC;EAExD,OAAOH,MAAM;AACf","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/modifications/removeProperties.js b/vanilla/node_modules/@babel/types/lib/modifications/removeProperties.js
new file mode 100644
index 0000000..c8e1e16
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/modifications/removeProperties.js
@@ -0,0 +1,24 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = removeProperties;
+var _index = require("../constants/index.js");
+const CLEAR_KEYS = ["tokens", "start", "end", "loc", "raw", "rawValue"];
+const CLEAR_KEYS_PLUS_COMMENTS = [..._index.COMMENT_KEYS, "comments", ...CLEAR_KEYS];
+function removeProperties(node, opts = {}) {
+ const map = opts.preserveComments ? CLEAR_KEYS : CLEAR_KEYS_PLUS_COMMENTS;
+ for (const key of map) {
+ if (node[key] != null) node[key] = undefined;
+ }
+ for (const key of Object.keys(node)) {
+ if (key.startsWith("_") && node[key] != null) node[key] = undefined;
+ }
+ const symbols = Object.getOwnPropertySymbols(node);
+ for (const sym of symbols) {
+ node[sym] = null;
+ }
+}
+
+//# sourceMappingURL=removeProperties.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/modifications/removeProperties.js.map b/vanilla/node_modules/@babel/types/lib/modifications/removeProperties.js.map
new file mode 100644
index 0000000..38c78ea
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/modifications/removeProperties.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","CLEAR_KEYS","CLEAR_KEYS_PLUS_COMMENTS","COMMENT_KEYS","removeProperties","node","opts","map","preserveComments","key","undefined","Object","keys","startsWith","symbols","getOwnPropertySymbols","sym"],"sources":["../../src/modifications/removeProperties.ts"],"sourcesContent":["import { COMMENT_KEYS } from \"../constants/index.ts\";\nimport type * as t from \"../index.ts\";\n\nconst CLEAR_KEYS = [\n \"tokens\", // only exist in t.File\n \"start\",\n \"end\",\n \"loc\",\n // Fixme: should be extra.raw / extra.rawValue?\n \"raw\",\n \"rawValue\",\n] as const;\n\nconst CLEAR_KEYS_PLUS_COMMENTS = [\n ...COMMENT_KEYS,\n \"comments\",\n ...CLEAR_KEYS,\n] as const;\n\nexport type Options = { preserveComments?: boolean };\n/**\n * Remove all of the _* properties from a node along with the additional metadata\n * properties like location data and raw token data.\n */\nexport default function removeProperties(\n node: t.Node,\n opts: Options = {},\n): void {\n const map = opts.preserveComments ? CLEAR_KEYS : CLEAR_KEYS_PLUS_COMMENTS;\n for (const key of map) {\n // @ts-expect-error tokens only exist in t.File\n if (node[key] != null) node[key] = undefined;\n }\n\n for (const key of Object.keys(node)) {\n // @ts-expect-error string can not index node\n if (key.startsWith(\"_\") && node[key] != null) node[key] = undefined;\n }\n\n const symbols: symbol[] = Object.getOwnPropertySymbols(node);\n for (const sym of symbols) {\n // @ts-expect-error Fixme: document symbol properties\n node[sym] = null;\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA,MAAMC,UAAU,GAAG,CACjB,QAAQ,EACR,OAAO,EACP,KAAK,EACL,KAAK,EAEL,KAAK,EACL,UAAU,CACF;AAEV,MAAMC,wBAAwB,GAAG,CAC/B,GAAGC,mBAAY,EACf,UAAU,EACV,GAAGF,UAAU,CACL;AAOK,SAASG,gBAAgBA,CACtCC,IAAY,EACZC,IAAa,GAAG,CAAC,CAAC,EACZ;EACN,MAAMC,GAAG,GAAGD,IAAI,CAACE,gBAAgB,GAAGP,UAAU,GAAGC,wBAAwB;EACzE,KAAK,MAAMO,GAAG,IAAIF,GAAG,EAAE;IAErB,IAAIF,IAAI,CAACI,GAAG,CAAC,IAAI,IAAI,EAAEJ,IAAI,CAACI,GAAG,CAAC,GAAGC,SAAS;EAC9C;EAEA,KAAK,MAAMD,GAAG,IAAIE,MAAM,CAACC,IAAI,CAACP,IAAI,CAAC,EAAE;IAEnC,IAAII,GAAG,CAACI,UAAU,CAAC,GAAG,CAAC,IAAIR,IAAI,CAACI,GAAG,CAAC,IAAI,IAAI,EAAEJ,IAAI,CAACI,GAAG,CAAC,GAAGC,SAAS;EACrE;EAEA,MAAMI,OAAiB,GAAGH,MAAM,CAACI,qBAAqB,CAACV,IAAI,CAAC;EAC5D,KAAK,MAAMW,GAAG,IAAIF,OAAO,EAAE;IAEzBT,IAAI,CAACW,GAAG,CAAC,GAAG,IAAI;EAClB;AACF","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js b/vanilla/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js
new file mode 100644
index 0000000..58a9a00
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js
@@ -0,0 +1,14 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = removePropertiesDeep;
+var _traverseFast = require("../traverse/traverseFast.js");
+var _removeProperties = require("./removeProperties.js");
+function removePropertiesDeep(tree, opts) {
+ (0, _traverseFast.default)(tree, _removeProperties.default, opts);
+ return tree;
+}
+
+//# sourceMappingURL=removePropertiesDeep.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map b/vanilla/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map
new file mode 100644
index 0000000..938d040
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_traverseFast","require","_removeProperties","removePropertiesDeep","tree","opts","traverseFast","removeProperties"],"sources":["../../src/modifications/removePropertiesDeep.ts"],"sourcesContent":["import traverseFast from \"../traverse/traverseFast.ts\";\nimport removeProperties from \"./removeProperties.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function removePropertiesDeep<T extends t.Node>(\n tree: T,\n opts?: { preserveComments: boolean } | null,\n): T {\n traverseFast(tree, removeProperties, opts);\n\n return tree;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAGe,SAASE,oBAAoBA,CAC1CC,IAAO,EACPC,IAA2C,EACxC;EACH,IAAAC,qBAAY,EAACF,IAAI,EAAEG,yBAAgB,EAAEF,IAAI,CAAC;EAE1C,OAAOD,IAAI;AACb","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js b/vanilla/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js
new file mode 100644
index 0000000..eada697
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js
@@ -0,0 +1,66 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = removeTypeDuplicates;
+var _index = require("../../validators/generated/index.js");
+function getQualifiedName(node) {
+ return (0, _index.isIdentifier)(node) ? node.name : (0, _index.isThisExpression)(node) ? "this" : `${node.right.name}.${getQualifiedName(node.left)}`;
+}
+function removeTypeDuplicates(nodesIn) {
+ const nodes = Array.from(nodesIn);
+ const generics = new Map();
+ const bases = new Map();
+ const typeGroups = new Set();
+ const types = [];
+ for (let i = 0; i < nodes.length; i++) {
+ const node = nodes[i];
+ if (!node) continue;
+ if (types.includes(node)) {
+ continue;
+ }
+ if ((0, _index.isTSAnyKeyword)(node)) {
+ return [node];
+ }
+ if ((0, _index.isTSBaseType)(node)) {
+ bases.set(node.type, node);
+ continue;
+ }
+ if ((0, _index.isTSUnionType)(node)) {
+ if (!typeGroups.has(node.types)) {
+ nodes.push(...node.types);
+ typeGroups.add(node.types);
+ }
+ continue;
+ }
+ const typeArgumentsKey = "typeParameters";
+ if ((0, _index.isTSTypeReference)(node) && node[typeArgumentsKey]) {
+ const typeArguments = node[typeArgumentsKey];
+ const name = getQualifiedName(node.typeName);
+ if (generics.has(name)) {
+ let existing = generics.get(name);
+ const existingTypeArguments = existing[typeArgumentsKey];
+ if (existingTypeArguments) {
+ existingTypeArguments.params.push(...typeArguments.params);
+ existingTypeArguments.params = removeTypeDuplicates(existingTypeArguments.params);
+ } else {
+ existing = typeArguments;
+ }
+ } else {
+ generics.set(name, node);
+ }
+ continue;
+ }
+ types.push(node);
+ }
+ for (const [, baseType] of bases) {
+ types.push(baseType);
+ }
+ for (const [, genericName] of generics) {
+ types.push(genericName);
+ }
+ return types;
+}
+
+//# sourceMappingURL=removeTypeDuplicates.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map b/vanilla/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map
new file mode 100644
index 0000000..a8718e4
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","getQualifiedName","node","isIdentifier","name","isThisExpression","right","left","removeTypeDuplicates","nodesIn","nodes","Array","from","generics","Map","bases","typeGroups","Set","types","i","length","includes","isTSAnyKeyword","isTSBaseType","set","type","isTSUnionType","has","push","add","typeArgumentsKey","isTSTypeReference","typeArguments","typeName","existing","get","existingTypeArguments","params","baseType","genericName"],"sources":["../../../src/modifications/typescript/removeTypeDuplicates.ts"],"sourcesContent":["import {\n isIdentifier,\n isThisExpression,\n isTSAnyKeyword,\n isTSTypeReference,\n isTSUnionType,\n isTSBaseType,\n} from \"../../validators/generated/index.ts\";\nimport type * as t from \"../../index.ts\";\n\nfunction getQualifiedName(node: t.TSTypeReference[\"typeName\"]): string {\n return isIdentifier(node)\n ? node.name\n : isThisExpression(node)\n ? \"this\"\n : `${node.right.name}.${getQualifiedName(node.left)}`;\n}\n\n/**\n * Dedupe type annotations.\n */\nexport default function removeTypeDuplicates(\n nodesIn: readonly t.TSType[],\n): t.TSType[] {\n const nodes = Array.from(nodesIn);\n\n const generics = new Map<string, t.TSTypeReference>();\n const bases = new Map<t.TSBaseType[\"type\"], t.TSBaseType>();\n\n // store union type groups to circular references\n const typeGroups = new Set<t.TSType[]>();\n\n const types: t.TSType[] = [];\n\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if (!node) continue;\n\n // detect duplicates\n if (types.includes(node)) {\n continue;\n }\n\n // this type matches anything\n if (isTSAnyKeyword(node)) {\n return [node];\n }\n\n // Analogue of FlowBaseAnnotation\n if (isTSBaseType(node)) {\n bases.set(node.type, node);\n continue;\n }\n\n if (isTSUnionType(node)) {\n if (!typeGroups.has(node.types)) {\n nodes.push(...node.types);\n typeGroups.add(node.types);\n }\n continue;\n }\n\n // todo: support merging tuples: number[]\n const typeArgumentsKey = process.env.BABEL_8_BREAKING\n ? \"typeArguments\"\n : \"typeParameters\";\n // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n if (isTSTypeReference(node) && node[typeArgumentsKey]) {\n // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n const typeArguments = node[typeArgumentsKey];\n const name = getQualifiedName(node.typeName);\n\n if (generics.has(name)) {\n let existing: t.TypeScript = generics.get(name);\n // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n const existingTypeArguments = existing[typeArgumentsKey];\n if (existingTypeArguments) {\n existingTypeArguments.params.push(...typeArguments.params);\n existingTypeArguments.params = removeTypeDuplicates(\n existingTypeArguments.params,\n );\n } else {\n existing = typeArguments;\n }\n } else {\n generics.set(name, node);\n }\n\n continue;\n }\n\n types.push(node);\n }\n\n // add back in bases\n for (const [, baseType] of bases) {\n types.push(baseType);\n }\n\n // add back in generics\n for (const [, genericName] of generics) {\n types.push(genericName);\n }\n\n return types;\n}\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js b/vanilla/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js
new file mode 100644
index 0000000..fb8db31
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js
@@ -0,0 +1,48 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = getAssignmentIdentifiers;
+function getAssignmentIdentifiers(node) {
+ const search = [].concat(node);
+ const ids = Object.create(null);
+ while (search.length) {
+ const id = search.pop();
+ if (!id) continue;
+ switch (id.type) {
+ case "ArrayPattern":
+ search.push(...id.elements);
+ break;
+ case "AssignmentExpression":
+ case "AssignmentPattern":
+ case "ForInStatement":
+ case "ForOfStatement":
+ search.push(id.left);
+ break;
+ case "ObjectPattern":
+ search.push(...id.properties);
+ break;
+ case "ObjectProperty":
+ search.push(id.value);
+ break;
+ case "RestElement":
+ case "UpdateExpression":
+ search.push(id.argument);
+ break;
+ case "UnaryExpression":
+ if (id.operator === "delete") {
+ search.push(id.argument);
+ }
+ break;
+ case "Identifier":
+ ids[id.name] = id;
+ break;
+ default:
+ break;
+ }
+ }
+ return ids;
+}
+
+//# sourceMappingURL=getAssignmentIdentifiers.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js.map b/vanilla/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js.map
new file mode 100644
index 0000000..78d2ebd
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["getAssignmentIdentifiers","node","search","concat","ids","Object","create","length","id","pop","type","push","elements","left","properties","value","argument","operator","name"],"sources":["../../src/retrievers/getAssignmentIdentifiers.ts"],"sourcesContent":["import type * as t from \"../index.ts\";\n\n/**\n * For the given node, generate a map from assignment id names to the identifier node.\n * Unlike getBindingIdentifiers, this function does not handle declarations and imports.\n * @param node the assignment expression or forXstatement\n * @returns an object map\n * @see getBindingIdentifiers\n */\nexport default function getAssignmentIdentifiers(\n node: t.Node | t.Node[],\n): Record<string, t.Identifier> {\n // null represents holes in an array pattern\n const search: (t.Node | null)[] = [].concat(node);\n const ids = Object.create(null);\n\n while (search.length) {\n const id = search.pop();\n if (!id) continue;\n\n switch (id.type) {\n case \"ArrayPattern\":\n search.push(...id.elements);\n break;\n\n case \"AssignmentExpression\":\n case \"AssignmentPattern\":\n case \"ForInStatement\":\n case \"ForOfStatement\":\n search.push(id.left);\n break;\n\n case \"ObjectPattern\":\n search.push(...id.properties);\n break;\n\n case \"ObjectProperty\":\n search.push(id.value);\n break;\n\n case \"RestElement\":\n case \"UpdateExpression\":\n search.push(id.argument);\n break;\n\n case \"UnaryExpression\":\n if (id.operator === \"delete\") {\n search.push(id.argument);\n }\n break;\n\n case \"Identifier\":\n ids[id.name] = id;\n break;\n\n default:\n break;\n }\n }\n\n return ids;\n}\n"],"mappings":";;;;;;AASe,SAASA,wBAAwBA,CAC9CC,IAAuB,EACO;EAE9B,MAAMC,MAAyB,GAAG,EAAE,CAACC,MAAM,CAACF,IAAI,CAAC;EACjD,MAAMG,GAAG,GAAGC,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC;EAE/B,OAAOJ,MAAM,CAACK,MAAM,EAAE;IACpB,MAAMC,EAAE,GAAGN,MAAM,CAACO,GAAG,CAAC,CAAC;IACvB,IAAI,CAACD,EAAE,EAAE;IAET,QAAQA,EAAE,CAACE,IAAI;MACb,KAAK,cAAc;QACjBR,MAAM,CAACS,IAAI,CAAC,GAAGH,EAAE,CAACI,QAAQ,CAAC;QAC3B;MAEF,KAAK,sBAAsB;MAC3B,KAAK,mBAAmB;MACxB,KAAK,gBAAgB;MACrB,KAAK,gBAAgB;QACnBV,MAAM,CAACS,IAAI,CAACH,EAAE,CAACK,IAAI,CAAC;QACpB;MAEF,KAAK,eAAe;QAClBX,MAAM,CAACS,IAAI,CAAC,GAAGH,EAAE,CAACM,UAAU,CAAC;QAC7B;MAEF,KAAK,gBAAgB;QACnBZ,MAAM,CAACS,IAAI,CAACH,EAAE,CAACO,KAAK,CAAC;QACrB;MAEF,KAAK,aAAa;MAClB,KAAK,kBAAkB;QACrBb,MAAM,CAACS,IAAI,CAACH,EAAE,CAACQ,QAAQ,CAAC;QACxB;MAEF,KAAK,iBAAiB;QACpB,IAAIR,EAAE,CAACS,QAAQ,KAAK,QAAQ,EAAE;UAC5Bf,MAAM,CAACS,IAAI,CAACH,EAAE,CAACQ,QAAQ,CAAC;QAC1B;QACA;MAEF,KAAK,YAAY;QACfZ,GAAG,CAACI,EAAE,CAACU,IAAI,CAAC,GAAGV,EAAE;QACjB;MAEF;QACE;IACJ;EACF;EAEA,OAAOJ,GAAG;AACZ","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js b/vanilla/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js
new file mode 100644
index 0000000..e4fb8a0
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js
@@ -0,0 +1,102 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = getBindingIdentifiers;
+var _index = require("../validators/generated/index.js");
+function getBindingIdentifiers(node, duplicates, outerOnly, newBindingsOnly) {
+ const search = [].concat(node);
+ const ids = Object.create(null);
+ while (search.length) {
+ const id = search.shift();
+ if (!id) continue;
+ if (newBindingsOnly && ((0, _index.isAssignmentExpression)(id) || (0, _index.isUnaryExpression)(id) || (0, _index.isUpdateExpression)(id))) {
+ continue;
+ }
+ if ((0, _index.isIdentifier)(id)) {
+ if (duplicates) {
+ const _ids = ids[id.name] = ids[id.name] || [];
+ _ids.push(id);
+ } else {
+ ids[id.name] = id;
+ }
+ continue;
+ }
+ if ((0, _index.isExportDeclaration)(id) && !(0, _index.isExportAllDeclaration)(id)) {
+ if ((0, _index.isDeclaration)(id.declaration)) {
+ search.push(id.declaration);
+ }
+ continue;
+ }
+ if (outerOnly) {
+ if ((0, _index.isFunctionDeclaration)(id)) {
+ search.push(id.id);
+ continue;
+ }
+ if ((0, _index.isFunctionExpression)(id)) {
+ continue;
+ }
+ }
+ const keys = getBindingIdentifiers.keys[id.type];
+ if (keys) {
+ for (let i = 0; i < keys.length; i++) {
+ const key = keys[i];
+ const nodes = id[key];
+ if (nodes) {
+ if (Array.isArray(nodes)) {
+ search.push(...nodes);
+ } else {
+ search.push(nodes);
+ }
+ }
+ }
+ }
+ }
+ return ids;
+}
+const keys = {
+ DeclareClass: ["id"],
+ DeclareFunction: ["id"],
+ DeclareModule: ["id"],
+ DeclareVariable: ["id"],
+ DeclareInterface: ["id"],
+ DeclareTypeAlias: ["id"],
+ DeclareOpaqueType: ["id"],
+ InterfaceDeclaration: ["id"],
+ TypeAlias: ["id"],
+ OpaqueType: ["id"],
+ CatchClause: ["param"],
+ LabeledStatement: ["label"],
+ UnaryExpression: ["argument"],
+ AssignmentExpression: ["left"],
+ ImportSpecifier: ["local"],
+ ImportNamespaceSpecifier: ["local"],
+ ImportDefaultSpecifier: ["local"],
+ ImportDeclaration: ["specifiers"],
+ TSImportEqualsDeclaration: ["id"],
+ ExportSpecifier: ["exported"],
+ ExportNamespaceSpecifier: ["exported"],
+ ExportDefaultSpecifier: ["exported"],
+ FunctionDeclaration: ["id", "params"],
+ FunctionExpression: ["id", "params"],
+ ArrowFunctionExpression: ["params"],
+ ObjectMethod: ["params"],
+ ClassMethod: ["params"],
+ ClassPrivateMethod: ["params"],
+ ForInStatement: ["left"],
+ ForOfStatement: ["left"],
+ ClassDeclaration: ["id"],
+ ClassExpression: ["id"],
+ RestElement: ["argument"],
+ UpdateExpression: ["argument"],
+ ObjectProperty: ["value"],
+ AssignmentPattern: ["left"],
+ ArrayPattern: ["elements"],
+ ObjectPattern: ["properties"],
+ VariableDeclaration: ["declarations"],
+ VariableDeclarator: ["id"]
+};
+getBindingIdentifiers.keys = keys;
+
+//# sourceMappingURL=getBindingIdentifiers.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map b/vanilla/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map
new file mode 100644
index 0000000..74494d3
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","getBindingIdentifiers","node","duplicates","outerOnly","newBindingsOnly","search","concat","ids","Object","create","length","id","shift","isAssignmentExpression","isUnaryExpression","isUpdateExpression","isIdentifier","_ids","name","push","isExportDeclaration","isExportAllDeclaration","isDeclaration","declaration","isFunctionDeclaration","isFunctionExpression","keys","type","i","key","nodes","Array","isArray","DeclareClass","DeclareFunction","DeclareModule","DeclareVariable","DeclareInterface","DeclareTypeAlias","DeclareOpaqueType","InterfaceDeclaration","TypeAlias","OpaqueType","CatchClause","LabeledStatement","UnaryExpression","AssignmentExpression","ImportSpecifier","ImportNamespaceSpecifier","ImportDefaultSpecifier","ImportDeclaration","TSImportEqualsDeclaration","ExportSpecifier","ExportNamespaceSpecifier","ExportDefaultSpecifier","FunctionDeclaration","FunctionExpression","ArrowFunctionExpression","ObjectMethod","ClassMethod","ClassPrivateMethod","ForInStatement","ForOfStatement","ClassDeclaration","ClassExpression","RestElement","UpdateExpression","ObjectProperty","AssignmentPattern","ArrayPattern","ObjectPattern","VariableDeclaration","VariableDeclarator"],"sources":["../../src/retrievers/getBindingIdentifiers.ts"],"sourcesContent":["import {\n isExportDeclaration,\n isIdentifier,\n isClassExpression,\n isDeclaration,\n isFunctionDeclaration,\n isFunctionExpression,\n isExportAllDeclaration,\n isAssignmentExpression,\n isUnaryExpression,\n isUpdateExpression,\n} from \"../validators/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport { getBindingIdentifiers as default };\n\nfunction getBindingIdentifiers(\n node: t.Node,\n duplicates: true,\n outerOnly?: boolean,\n newBindingsOnly?: boolean,\n): Record<string, t.Identifier[]>;\n\nfunction getBindingIdentifiers(\n node: t.Node,\n duplicates?: false,\n outerOnly?: boolean,\n newBindingsOnly?: boolean,\n): Record<string, t.Identifier>;\n\nfunction getBindingIdentifiers(\n node: t.Node,\n duplicates?: boolean,\n outerOnly?: boolean,\n newBindingsOnly?: boolean,\n): Record<string, t.Identifier> | Record<string, t.Identifier[]>;\n\n/**\n * Return a list of binding identifiers associated with the input `node`.\n */\nfunction getBindingIdentifiers(\n node: t.Node,\n duplicates?: boolean,\n outerOnly?: boolean,\n newBindingsOnly?: boolean,\n): Record<string, t.Identifier> | Record<string, t.Identifier[]> {\n const search: t.Node[] = [].concat(node);\n const ids = Object.create(null);\n\n while (search.length) {\n const id = search.shift();\n if (!id) continue;\n\n if (\n newBindingsOnly &&\n // These nodes do not introduce _new_ bindings, but they are included\n // in getBindingIdentifiers.keys for backwards compatibility.\n // TODO(@nicolo-ribaudo): Check if we can remove them from .keys in a\n // backward-compatible way, and if not what we need to do to remove them\n // in Babel 8.\n (isAssignmentExpression(id) ||\n isUnaryExpression(id) ||\n isUpdateExpression(id))\n ) {\n continue;\n }\n\n if (isIdentifier(id)) {\n if (duplicates) {\n const _ids = (ids[id.name] = ids[id.name] || []);\n _ids.push(id);\n } else {\n ids[id.name] = id;\n }\n continue;\n }\n\n if (isExportDeclaration(id) && !isExportAllDeclaration(id)) {\n if (isDeclaration(id.declaration)) {\n search.push(id.declaration);\n }\n continue;\n }\n\n if (outerOnly) {\n if (isFunctionDeclaration(id)) {\n search.push(id.id);\n continue;\n }\n\n if (\n isFunctionExpression(id) ||\n (process.env.BABEL_8_BREAKING && isClassExpression(id))\n ) {\n continue;\n }\n }\n\n const keys = getBindingIdentifiers.keys[id.type];\n\n if (keys) {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const nodes =\n // @ts-expect-error key must present in id\n id[key] as t.Node[] | t.Node | undefined | null;\n if (nodes) {\n if (Array.isArray(nodes)) {\n search.push(...nodes);\n } else {\n search.push(nodes);\n }\n }\n }\n }\n }\n return ids;\n}\n\n/**\n * Mapping of types to their identifier keys.\n */\ntype KeysMap = {\n [N in t.Node as N[\"type\"]]?: (keyof N)[];\n};\n\nconst keys: KeysMap = {\n DeclareClass: [\"id\"],\n DeclareFunction: [\"id\"],\n DeclareModule: [\"id\"],\n DeclareVariable: [\"id\"],\n DeclareInterface: [\"id\"],\n DeclareTypeAlias: [\"id\"],\n DeclareOpaqueType: [\"id\"],\n InterfaceDeclaration: [\"id\"],\n TypeAlias: [\"id\"],\n OpaqueType: [\"id\"],\n\n CatchClause: [\"param\"],\n LabeledStatement: [\"label\"],\n UnaryExpression: [\"argument\"],\n AssignmentExpression: [\"left\"],\n\n ImportSpecifier: [\"local\"],\n ImportNamespaceSpecifier: [\"local\"],\n ImportDefaultSpecifier: [\"local\"],\n ImportDeclaration: [\"specifiers\"],\n TSImportEqualsDeclaration: [\"id\"],\n\n ExportSpecifier: [\"exported\"],\n ExportNamespaceSpecifier: [\"exported\"],\n ExportDefaultSpecifier: [\"exported\"],\n\n FunctionDeclaration: [\"id\", \"params\"],\n FunctionExpression: [\"id\", \"params\"],\n ArrowFunctionExpression: [\"params\"],\n ObjectMethod: [\"params\"],\n ClassMethod: [\"params\"],\n ClassPrivateMethod: [\"params\"],\n\n ForInStatement: [\"left\"],\n ForOfStatement: [\"left\"],\n\n ClassDeclaration: [\"id\"],\n ClassExpression: [\"id\"],\n\n RestElement: [\"argument\"],\n UpdateExpression: [\"argument\"],\n\n ObjectProperty: [\"value\"],\n\n AssignmentPattern: [\"left\"],\n ArrayPattern: [\"elements\"],\n ObjectPattern: [\"properties\"],\n\n VariableDeclaration: [\"declarations\"],\n VariableDeclarator: [\"id\"],\n};\n\ngetBindingIdentifiers.keys = keys;\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/retrievers/getFunctionName.js b/vanilla/node_modules/@babel/types/lib/retrievers/getFunctionName.js
new file mode 100644
index 0000000..43d33d7
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/retrievers/getFunctionName.js
@@ -0,0 +1,63 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = getFunctionName;
+var _index = require("../validators/generated/index.js");
+function getNameFromLiteralId(id) {
+ if ((0, _index.isNullLiteral)(id)) {
+ return "null";
+ }
+ if ((0, _index.isRegExpLiteral)(id)) {
+ return `/${id.pattern}/${id.flags}`;
+ }
+ if ((0, _index.isTemplateLiteral)(id)) {
+ return id.quasis.map(quasi => quasi.value.raw).join("");
+ }
+ if (id.value !== undefined) {
+ return String(id.value);
+ }
+ return null;
+}
+function getObjectMemberKey(node) {
+ if (!node.computed || (0, _index.isLiteral)(node.key)) {
+ return node.key;
+ }
+}
+function getFunctionName(node, parent) {
+ if ("id" in node && node.id) {
+ return {
+ name: node.id.name,
+ originalNode: node.id
+ };
+ }
+ let prefix = "";
+ let id;
+ if ((0, _index.isObjectProperty)(parent, {
+ value: node
+ })) {
+ id = getObjectMemberKey(parent);
+ } else if ((0, _index.isObjectMethod)(node) || (0, _index.isClassMethod)(node)) {
+ id = getObjectMemberKey(node);
+ if (node.kind === "get") prefix = "get ";else if (node.kind === "set") prefix = "set ";
+ } else if ((0, _index.isVariableDeclarator)(parent, {
+ init: node
+ })) {
+ id = parent.id;
+ } else if ((0, _index.isAssignmentExpression)(parent, {
+ operator: "=",
+ right: node
+ })) {
+ id = parent.left;
+ }
+ if (!id) return null;
+ const name = (0, _index.isLiteral)(id) ? getNameFromLiteralId(id) : (0, _index.isIdentifier)(id) ? id.name : (0, _index.isPrivateName)(id) ? id.id.name : null;
+ if (name == null) return null;
+ return {
+ name: prefix + name,
+ originalNode: id
+ };
+}
+
+//# sourceMappingURL=getFunctionName.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/retrievers/getFunctionName.js.map b/vanilla/node_modules/@babel/types/lib/retrievers/getFunctionName.js.map
new file mode 100644
index 0000000..be68ebd
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/retrievers/getFunctionName.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","getNameFromLiteralId","id","isNullLiteral","isRegExpLiteral","pattern","flags","isTemplateLiteral","quasis","map","quasi","value","raw","join","undefined","String","getObjectMemberKey","node","computed","isLiteral","key","getFunctionName","parent","name","originalNode","prefix","isObjectProperty","isObjectMethod","isClassMethod","kind","isVariableDeclarator","init","isAssignmentExpression","operator","right","left","isIdentifier","isPrivateName"],"sources":["../../src/retrievers/getFunctionName.ts"],"sourcesContent":["import type * as t from \"../index.ts\";\n\nimport {\n isAssignmentExpression,\n isClassMethod,\n isIdentifier,\n isLiteral,\n isNullLiteral,\n isObjectMethod,\n isObjectProperty,\n isPrivateName,\n isRegExpLiteral,\n isTemplateLiteral,\n isVariableDeclarator,\n} from \"../validators/generated/index.ts\";\n\nfunction getNameFromLiteralId(id: t.Literal): string {\n if (isNullLiteral(id)) {\n return \"null\";\n }\n\n if (isRegExpLiteral(id)) {\n return `/${id.pattern}/${id.flags}`;\n }\n\n if (isTemplateLiteral(id)) {\n return id.quasis.map(quasi => quasi.value.raw).join(\"\");\n }\n\n if (id.value !== undefined) {\n return String(id.value);\n }\n\n return null;\n}\n\nfunction getObjectMemberKey(\n node: t.ObjectProperty | t.ObjectMethod | t.ClassProperty | t.ClassMethod,\n): t.Expression | t.PrivateName {\n if (!node.computed || isLiteral(node.key)) {\n return node.key;\n }\n}\n\ntype GetFunctionNameResult = {\n name: string;\n originalNode: t.Node;\n} | null;\n\nexport default function getFunctionName(\n node: t.ObjectMethod | t.ClassMethod,\n): GetFunctionNameResult;\nexport default function getFunctionName(\n node: t.Function | t.Class,\n parent: t.Node,\n): GetFunctionNameResult;\nexport default function getFunctionName(\n node: t.Function | t.Class,\n parent?: t.Node,\n): GetFunctionNameResult {\n if (\"id\" in node && node.id) {\n return {\n name: node.id.name,\n originalNode: node.id,\n };\n }\n\n let prefix = \"\";\n\n let id;\n if (isObjectProperty(parent, { value: node })) {\n // { foo: () => {} };\n id = getObjectMemberKey(parent);\n } else if (isObjectMethod(node) || isClassMethod(node)) {\n // { foo() {} };\n id = getObjectMemberKey(node);\n if (node.kind === \"get\") prefix = \"get \";\n else if (node.kind === \"set\") prefix = \"set \";\n } else if (isVariableDeclarator(parent, { init: node })) {\n // let foo = function () {};\n id = parent.id;\n } else if (isAssignmentExpression(parent, { operator: \"=\", right: node })) {\n // foo = function () {};\n id = parent.left;\n }\n\n if (!id) return null;\n\n const name = isLiteral(id)\n ? getNameFromLiteralId(id)\n : isIdentifier(id)\n ? id.name\n : isPrivateName(id)\n ? id.id.name\n : null;\n if (name == null) return null;\n\n return { name: prefix + name, originalNode: id };\n}\n"],"mappings":";;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AAcA,SAASC,oBAAoBA,CAACC,EAAa,EAAU;EACnD,IAAI,IAAAC,oBAAa,EAACD,EAAE,CAAC,EAAE;IACrB,OAAO,MAAM;EACf;EAEA,IAAI,IAAAE,sBAAe,EAACF,EAAE,CAAC,EAAE;IACvB,OAAO,IAAIA,EAAE,CAACG,OAAO,IAAIH,EAAE,CAACI,KAAK,EAAE;EACrC;EAEA,IAAI,IAAAC,wBAAiB,EAACL,EAAE,CAAC,EAAE;IACzB,OAAOA,EAAE,CAACM,MAAM,CAACC,GAAG,CAACC,KAAK,IAAIA,KAAK,CAACC,KAAK,CAACC,GAAG,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC;EACzD;EAEA,IAAIX,EAAE,CAACS,KAAK,KAAKG,SAAS,EAAE;IAC1B,OAAOC,MAAM,CAACb,EAAE,CAACS,KAAK,CAAC;EACzB;EAEA,OAAO,IAAI;AACb;AAEA,SAASK,kBAAkBA,CACzBC,IAAyE,EAC3C;EAC9B,IAAI,CAACA,IAAI,CAACC,QAAQ,IAAI,IAAAC,gBAAS,EAACF,IAAI,CAACG,GAAG,CAAC,EAAE;IACzC,OAAOH,IAAI,CAACG,GAAG;EACjB;AACF;AAce,SAASC,eAAeA,CACrCJ,IAA0B,EAC1BK,MAAe,EACQ;EACvB,IAAI,IAAI,IAAIL,IAAI,IAAIA,IAAI,CAACf,EAAE,EAAE;IAC3B,OAAO;MACLqB,IAAI,EAAEN,IAAI,CAACf,EAAE,CAACqB,IAAI;MAClBC,YAAY,EAAEP,IAAI,CAACf;IACrB,CAAC;EACH;EAEA,IAAIuB,MAAM,GAAG,EAAE;EAEf,IAAIvB,EAAE;EACN,IAAI,IAAAwB,uBAAgB,EAACJ,MAAM,EAAE;IAAEX,KAAK,EAAEM;EAAK,CAAC,CAAC,EAAE;IAE7Cf,EAAE,GAAGc,kBAAkB,CAACM,MAAM,CAAC;EACjC,CAAC,MAAM,IAAI,IAAAK,qBAAc,EAACV,IAAI,CAAC,IAAI,IAAAW,oBAAa,EAACX,IAAI,CAAC,EAAE;IAEtDf,EAAE,GAAGc,kBAAkB,CAACC,IAAI,CAAC;IAC7B,IAAIA,IAAI,CAACY,IAAI,KAAK,KAAK,EAAEJ,MAAM,GAAG,MAAM,CAAC,KACpC,IAAIR,IAAI,CAACY,IAAI,KAAK,KAAK,EAAEJ,MAAM,GAAG,MAAM;EAC/C,CAAC,MAAM,IAAI,IAAAK,2BAAoB,EAACR,MAAM,EAAE;IAAES,IAAI,EAAEd;EAAK,CAAC,CAAC,EAAE;IAEvDf,EAAE,GAAGoB,MAAM,CAACpB,EAAE;EAChB,CAAC,MAAM,IAAI,IAAA8B,6BAAsB,EAACV,MAAM,EAAE;IAAEW,QAAQ,EAAE,GAAG;IAAEC,KAAK,EAAEjB;EAAK,CAAC,CAAC,EAAE;IAEzEf,EAAE,GAAGoB,MAAM,CAACa,IAAI;EAClB;EAEA,IAAI,CAACjC,EAAE,EAAE,OAAO,IAAI;EAEpB,MAAMqB,IAAI,GAAG,IAAAJ,gBAAS,EAACjB,EAAE,CAAC,GACtBD,oBAAoB,CAACC,EAAE,CAAC,GACxB,IAAAkC,mBAAY,EAAClC,EAAE,CAAC,GACdA,EAAE,CAACqB,IAAI,GACP,IAAAc,oBAAa,EAACnC,EAAE,CAAC,GACfA,EAAE,CAACA,EAAE,CAACqB,IAAI,GACV,IAAI;EACZ,IAAIA,IAAI,IAAI,IAAI,EAAE,OAAO,IAAI;EAE7B,OAAO;IAAEA,IAAI,EAAEE,MAAM,GAAGF,IAAI;IAAEC,YAAY,EAAEtB;EAAG,CAAC;AAClD","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js b/vanilla/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js
new file mode 100644
index 0000000..f51c47b
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js
@@ -0,0 +1,13 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var _getBindingIdentifiers = require("./getBindingIdentifiers.js");
+var _default = exports.default = getOuterBindingIdentifiers;
+function getOuterBindingIdentifiers(node, duplicates) {
+ return (0, _getBindingIdentifiers.default)(node, duplicates, true);
+}
+
+//# sourceMappingURL=getOuterBindingIdentifiers.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map b/vanilla/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map
new file mode 100644
index 0000000..55cadd5
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_getBindingIdentifiers","require","_default","exports","default","getOuterBindingIdentifiers","node","duplicates","getBindingIdentifiers"],"sources":["../../src/retrievers/getOuterBindingIdentifiers.ts"],"sourcesContent":["import getBindingIdentifiers from \"./getBindingIdentifiers.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default getOuterBindingIdentifiers as {\n (node: t.Node, duplicates: true): Record<string, t.Identifier[]>;\n (node: t.Node, duplicates?: false): Record<string, t.Identifier>;\n (\n node: t.Node,\n duplicates?: boolean,\n ): Record<string, t.Identifier> | Record<string, t.Identifier[]>;\n};\n\nfunction getOuterBindingIdentifiers(\n node: t.Node,\n duplicates: boolean,\n): Record<string, t.Identifier> | Record<string, t.Identifier[]> {\n return getBindingIdentifiers(node, duplicates, true);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,sBAAA,GAAAC,OAAA;AAA+D,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAGhDC,0BAA0B;AASzC,SAASA,0BAA0BA,CACjCC,IAAY,EACZC,UAAmB,EAC4C;EAC/D,OAAO,IAAAC,8BAAqB,EAACF,IAAI,EAAEC,UAAU,EAAE,IAAI,CAAC;AACtD","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/traverse/traverse.js b/vanilla/node_modules/@babel/types/lib/traverse/traverse.js
new file mode 100644
index 0000000..77b0c37
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/traverse/traverse.js
@@ -0,0 +1,50 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = traverse;
+var _index = require("../definitions/index.js");
+function traverse(node, handlers, state) {
+ if (typeof handlers === "function") {
+ handlers = {
+ enter: handlers
+ };
+ }
+ const {
+ enter,
+ exit
+ } = handlers;
+ traverseSimpleImpl(node, enter, exit, state, []);
+}
+function traverseSimpleImpl(node, enter, exit, state, ancestors) {
+ const keys = _index.VISITOR_KEYS[node.type];
+ if (!keys) return;
+ if (enter) enter(node, ancestors, state);
+ for (const key of keys) {
+ const subNode = node[key];
+ if (Array.isArray(subNode)) {
+ for (let i = 0; i < subNode.length; i++) {
+ const child = subNode[i];
+ if (!child) continue;
+ ancestors.push({
+ node,
+ key,
+ index: i
+ });
+ traverseSimpleImpl(child, enter, exit, state, ancestors);
+ ancestors.pop();
+ }
+ } else if (subNode) {
+ ancestors.push({
+ node,
+ key
+ });
+ traverseSimpleImpl(subNode, enter, exit, state, ancestors);
+ ancestors.pop();
+ }
+ }
+ if (exit) exit(node, ancestors, state);
+}
+
+//# sourceMappingURL=traverse.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/traverse/traverse.js.map b/vanilla/node_modules/@babel/types/lib/traverse/traverse.js.map
new file mode 100644
index 0000000..9359c67
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/traverse/traverse.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","traverse","node","handlers","state","enter","exit","traverseSimpleImpl","ancestors","keys","VISITOR_KEYS","type","key","subNode","Array","isArray","i","length","child","push","index","pop"],"sources":["../../src/traverse/traverse.ts"],"sourcesContent":["import { VISITOR_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport type TraversalAncestors = {\n node: t.Node;\n key: string;\n index?: number;\n}[];\n\nexport type TraversalHandler<T> = (\n this: undefined,\n node: t.Node,\n parent: TraversalAncestors,\n state: T,\n) => void;\n\nexport type TraversalHandlers<T> = {\n enter?: TraversalHandler<T>;\n exit?: TraversalHandler<T>;\n};\n\n/**\n * A general AST traversal with both prefix and postfix handlers, and a\n * state object. Exposes ancestry data to each handler so that more complex\n * AST data can be taken into account.\n */\nexport default function traverse<T>(\n node: t.Node,\n handlers: TraversalHandler<T> | TraversalHandlers<T>,\n state?: T,\n): void {\n if (typeof handlers === \"function\") {\n handlers = { enter: handlers };\n }\n\n const { enter, exit } = handlers;\n\n traverseSimpleImpl(node, enter, exit, state, []);\n}\n\nfunction traverseSimpleImpl<T>(\n node: any,\n enter: Function | undefined,\n exit: Function | undefined,\n state: T | undefined,\n ancestors: TraversalAncestors,\n) {\n const keys = VISITOR_KEYS[node.type];\n if (!keys) return;\n\n if (enter) enter(node, ancestors, state);\n\n for (const key of keys) {\n const subNode = node[key];\n\n if (Array.isArray(subNode)) {\n for (let i = 0; i < subNode.length; i++) {\n const child = subNode[i];\n if (!child) continue;\n\n ancestors.push({\n node,\n key,\n index: i,\n });\n\n traverseSimpleImpl(child, enter, exit, state, ancestors);\n\n ancestors.pop();\n }\n } else if (subNode) {\n ancestors.push({\n node,\n key,\n });\n\n traverseSimpleImpl(subNode, enter, exit, state, ancestors);\n\n ancestors.pop();\n }\n }\n\n if (exit) exit(node, ancestors, state);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AA0Be,SAASC,QAAQA,CAC9BC,IAAY,EACZC,QAAoD,EACpDC,KAAS,EACH;EACN,IAAI,OAAOD,QAAQ,KAAK,UAAU,EAAE;IAClCA,QAAQ,GAAG;MAAEE,KAAK,EAAEF;IAAS,CAAC;EAChC;EAEA,MAAM;IAAEE,KAAK;IAAEC;EAAK,CAAC,GAAGH,QAAQ;EAEhCI,kBAAkB,CAACL,IAAI,EAAEG,KAAK,EAAEC,IAAI,EAAEF,KAAK,EAAE,EAAE,CAAC;AAClD;AAEA,SAASG,kBAAkBA,CACzBL,IAAS,EACTG,KAA2B,EAC3BC,IAA0B,EAC1BF,KAAoB,EACpBI,SAA6B,EAC7B;EACA,MAAMC,IAAI,GAAGC,mBAAY,CAACR,IAAI,CAACS,IAAI,CAAC;EACpC,IAAI,CAACF,IAAI,EAAE;EAEX,IAAIJ,KAAK,EAAEA,KAAK,CAACH,IAAI,EAAEM,SAAS,EAAEJ,KAAK,CAAC;EAExC,KAAK,MAAMQ,GAAG,IAAIH,IAAI,EAAE;IACtB,MAAMI,OAAO,GAAGX,IAAI,CAACU,GAAG,CAAC;IAEzB,IAAIE,KAAK,CAACC,OAAO,CAACF,OAAO,CAAC,EAAE;MAC1B,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,OAAO,CAACI,MAAM,EAAED,CAAC,EAAE,EAAE;QACvC,MAAME,KAAK,GAAGL,OAAO,CAACG,CAAC,CAAC;QACxB,IAAI,CAACE,KAAK,EAAE;QAEZV,SAAS,CAACW,IAAI,CAAC;UACbjB,IAAI;UACJU,GAAG;UACHQ,KAAK,EAAEJ;QACT,CAAC,CAAC;QAEFT,kBAAkB,CAACW,KAAK,EAAEb,KAAK,EAAEC,IAAI,EAAEF,KAAK,EAAEI,SAAS,CAAC;QAExDA,SAAS,CAACa,GAAG,CAAC,CAAC;MACjB;IACF,CAAC,MAAM,IAAIR,OAAO,EAAE;MAClBL,SAAS,CAACW,IAAI,CAAC;QACbjB,IAAI;QACJU;MACF,CAAC,CAAC;MAEFL,kBAAkB,CAACM,OAAO,EAAER,KAAK,EAAEC,IAAI,EAAEF,KAAK,EAAEI,SAAS,CAAC;MAE1DA,SAAS,CAACa,GAAG,CAAC,CAAC;IACjB;EACF;EAEA,IAAIf,IAAI,EAAEA,IAAI,CAACJ,IAAI,EAAEM,SAAS,EAAEJ,KAAK,CAAC;AACxC","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/traverse/traverseFast.js b/vanilla/node_modules/@babel/types/lib/traverse/traverseFast.js
new file mode 100644
index 0000000..2b1d84e
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/traverse/traverseFast.js
@@ -0,0 +1,40 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = traverseFast;
+var _index = require("../definitions/index.js");
+const _skip = Symbol();
+const _stop = Symbol();
+function traverseFast(node, enter, opts) {
+ if (!node) return false;
+ const keys = _index.VISITOR_KEYS[node.type];
+ if (!keys) return false;
+ opts = opts || {};
+ const ret = enter(node, opts);
+ if (ret !== undefined) {
+ switch (ret) {
+ case _skip:
+ return false;
+ case _stop:
+ return true;
+ }
+ }
+ for (const key of keys) {
+ const subNode = node[key];
+ if (!subNode) continue;
+ if (Array.isArray(subNode)) {
+ for (const node of subNode) {
+ if (traverseFast(node, enter, opts)) return true;
+ }
+ } else {
+ if (traverseFast(subNode, enter, opts)) return true;
+ }
+ }
+ return false;
+}
+traverseFast.skip = _skip;
+traverseFast.stop = _stop;
+
+//# sourceMappingURL=traverseFast.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/traverse/traverseFast.js.map b/vanilla/node_modules/@babel/types/lib/traverse/traverseFast.js.map
new file mode 100644
index 0000000..11e1524
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/traverse/traverseFast.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","_skip","Symbol","_stop","traverseFast","node","enter","opts","keys","VISITOR_KEYS","type","ret","undefined","key","subNode","Array","isArray","skip","stop"],"sources":["../../src/traverse/traverseFast.ts"],"sourcesContent":["import { VISITOR_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nconst _skip = Symbol();\nconst _stop = Symbol();\n\n/**\n * A prefix AST traversal implementation meant for simple searching and processing.\n * @param enter The callback can return `traverseFast.skip` to skip the subtree of the current node, or `traverseFast.stop` to stop the traversal.\n * @returns `true` if the traversal was stopped by callback, `false` otherwise.\n */\nexport default function traverseFast<Options = object>(\n node: t.Node | null | undefined,\n enter: (\n node: t.Node,\n opts?: Options,\n ) => void | typeof traverseFast.skip | typeof traverseFast.stop,\n opts?: Options,\n): boolean {\n if (!node) return false;\n\n const keys = VISITOR_KEYS[node.type];\n if (!keys) return false;\n\n opts = opts || ({} as Options);\n const ret = enter(node, opts);\n if (ret !== undefined) {\n switch (ret) {\n case _skip:\n return false;\n case _stop:\n return true;\n }\n }\n\n for (const key of keys) {\n const subNode: t.Node | undefined | null =\n // @ts-expect-error key must present in node\n node[key];\n\n if (!subNode) continue;\n\n if (Array.isArray(subNode)) {\n for (const node of subNode) {\n if (traverseFast(node, enter, opts)) return true;\n }\n } else {\n if (traverseFast(subNode, enter, opts)) return true;\n }\n }\n return false;\n}\n\ntraverseFast.skip = _skip;\ntraverseFast.stop = _stop;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA,MAAMC,KAAK,GAAGC,MAAM,CAAC,CAAC;AACtB,MAAMC,KAAK,GAAGD,MAAM,CAAC,CAAC;AAOP,SAASE,YAAYA,CAClCC,IAA+B,EAC/BC,KAG+D,EAC/DC,IAAc,EACL;EACT,IAAI,CAACF,IAAI,EAAE,OAAO,KAAK;EAEvB,MAAMG,IAAI,GAAGC,mBAAY,CAACJ,IAAI,CAACK,IAAI,CAAC;EACpC,IAAI,CAACF,IAAI,EAAE,OAAO,KAAK;EAEvBD,IAAI,GAAGA,IAAI,IAAK,CAAC,CAAa;EAC9B,MAAMI,GAAG,GAAGL,KAAK,CAACD,IAAI,EAAEE,IAAI,CAAC;EAC7B,IAAII,GAAG,KAAKC,SAAS,EAAE;IACrB,QAAQD,GAAG;MACT,KAAKV,KAAK;QACR,OAAO,KAAK;MACd,KAAKE,KAAK;QACR,OAAO,IAAI;IACf;EACF;EAEA,KAAK,MAAMU,GAAG,IAAIL,IAAI,EAAE;IACtB,MAAMM,OAAkC,GAEtCT,IAAI,CAACQ,GAAG,CAAC;IAEX,IAAI,CAACC,OAAO,EAAE;IAEd,IAAIC,KAAK,CAACC,OAAO,CAACF,OAAO,CAAC,EAAE;MAC1B,KAAK,MAAMT,IAAI,IAAIS,OAAO,EAAE;QAC1B,IAAIV,YAAY,CAACC,IAAI,EAAEC,KAAK,EAAEC,IAAI,CAAC,EAAE,OAAO,IAAI;MAClD;IACF,CAAC,MAAM;MACL,IAAIH,YAAY,CAACU,OAAO,EAAER,KAAK,EAAEC,IAAI,CAAC,EAAE,OAAO,IAAI;IACrD;EACF;EACA,OAAO,KAAK;AACd;AAEAH,YAAY,CAACa,IAAI,GAAGhB,KAAK;AACzBG,YAAY,CAACc,IAAI,GAAGf,KAAK","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/utils/deprecationWarning.js b/vanilla/node_modules/@babel/types/lib/utils/deprecationWarning.js
new file mode 100644
index 0000000..6c36938
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/utils/deprecationWarning.js
@@ -0,0 +1,44 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = deprecationWarning;
+const warnings = new Set();
+function deprecationWarning(oldName, newName, prefix = "", cacheKey = oldName) {
+ if (warnings.has(cacheKey)) return;
+ warnings.add(cacheKey);
+ const {
+ internal,
+ trace
+ } = captureShortStackTrace(1, 2);
+ if (internal) {
+ return;
+ }
+ console.warn(`${prefix}\`${oldName}\` has been deprecated, please migrate to \`${newName}\`\n${trace}`);
+}
+function captureShortStackTrace(skip, length) {
+ const {
+ stackTraceLimit,
+ prepareStackTrace
+ } = Error;
+ let stackTrace;
+ Error.stackTraceLimit = 1 + skip + length;
+ Error.prepareStackTrace = function (err, stack) {
+ stackTrace = stack;
+ };
+ new Error().stack;
+ Error.stackTraceLimit = stackTraceLimit;
+ Error.prepareStackTrace = prepareStackTrace;
+ if (!stackTrace) return {
+ internal: false,
+ trace: ""
+ };
+ const shortStackTrace = stackTrace.slice(1 + skip, 1 + skip + length);
+ return {
+ internal: /[\\/]@babel[\\/]/.test(shortStackTrace[1].getFileName()),
+ trace: shortStackTrace.map(frame => ` at ${frame}`).join("\n")
+ };
+}
+
+//# sourceMappingURL=deprecationWarning.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/utils/deprecationWarning.js.map b/vanilla/node_modules/@babel/types/lib/utils/deprecationWarning.js.map
new file mode 100644
index 0000000..1d96e3e
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/utils/deprecationWarning.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["warnings","Set","deprecationWarning","oldName","newName","prefix","cacheKey","has","add","internal","trace","captureShortStackTrace","console","warn","skip","length","stackTraceLimit","prepareStackTrace","Error","stackTrace","err","stack","shortStackTrace","slice","test","getFileName","map","frame","join"],"sources":["../../src/utils/deprecationWarning.ts"],"sourcesContent":["const warnings = new Set();\n\nexport default function deprecationWarning(\n oldName: string,\n newName: string,\n prefix: string = \"\",\n cacheKey: string = oldName,\n) {\n if (warnings.has(cacheKey)) return;\n warnings.add(cacheKey);\n\n const { internal, trace } = captureShortStackTrace(1, 2);\n if (internal) {\n // If usage comes from an internal package, there is no point in warning because\n // 1. The new version of the package will already use the new API\n // 2. When the deprecation will become an error (in a future major version), users\n // will have to update every package anyway.\n return;\n }\n console.warn(\n `${prefix}\\`${oldName}\\` has been deprecated, please migrate to \\`${newName}\\`\\n${trace}`,\n );\n}\n\nfunction captureShortStackTrace(skip: number, length: number) {\n const { stackTraceLimit, prepareStackTrace } = Error;\n let stackTrace: NodeJS.CallSite[];\n // We add 1 to also take into account this function.\n Error.stackTraceLimit = 1 + skip + length;\n Error.prepareStackTrace = function (err, stack) {\n stackTrace = stack;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n new Error().stack;\n Error.stackTraceLimit = stackTraceLimit;\n Error.prepareStackTrace = prepareStackTrace;\n\n if (!stackTrace) return { internal: false, trace: \"\" };\n\n const shortStackTrace = stackTrace.slice(1 + skip, 1 + skip + length);\n return {\n internal: /[\\\\/]@babel[\\\\/]/.test(shortStackTrace[1].getFileName()),\n trace: shortStackTrace.map(frame => ` at ${frame}`).join(\"\\n\"),\n };\n}\n"],"mappings":";;;;;;AAAA,MAAMA,QAAQ,GAAG,IAAIC,GAAG,CAAC,CAAC;AAEX,SAASC,kBAAkBA,CACxCC,OAAe,EACfC,OAAe,EACfC,MAAc,GAAG,EAAE,EACnBC,QAAgB,GAAGH,OAAO,EAC1B;EACA,IAAIH,QAAQ,CAACO,GAAG,CAACD,QAAQ,CAAC,EAAE;EAC5BN,QAAQ,CAACQ,GAAG,CAACF,QAAQ,CAAC;EAEtB,MAAM;IAAEG,QAAQ;IAAEC;EAAM,CAAC,GAAGC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC;EACxD,IAAIF,QAAQ,EAAE;IAKZ;EACF;EACAG,OAAO,CAACC,IAAI,CACV,GAAGR,MAAM,KAAKF,OAAO,+CAA+CC,OAAO,OAAOM,KAAK,EACzF,CAAC;AACH;AAEA,SAASC,sBAAsBA,CAACG,IAAY,EAAEC,MAAc,EAAE;EAC5D,MAAM;IAAEC,eAAe;IAAEC;EAAkB,CAAC,GAAGC,KAAK;EACpD,IAAIC,UAA6B;EAEjCD,KAAK,CAACF,eAAe,GAAG,CAAC,GAAGF,IAAI,GAAGC,MAAM;EACzCG,KAAK,CAACD,iBAAiB,GAAG,UAAUG,GAAG,EAAEC,KAAK,EAAE;IAC9CF,UAAU,GAAGE,KAAK;EACpB,CAAC;EAED,IAAIH,KAAK,CAAC,CAAC,CAACG,KAAK;EACjBH,KAAK,CAACF,eAAe,GAAGA,eAAe;EACvCE,KAAK,CAACD,iBAAiB,GAAGA,iBAAiB;EAE3C,IAAI,CAACE,UAAU,EAAE,OAAO;IAAEV,QAAQ,EAAE,KAAK;IAAEC,KAAK,EAAE;EAAG,CAAC;EAEtD,MAAMY,eAAe,GAAGH,UAAU,CAACI,KAAK,CAAC,CAAC,GAAGT,IAAI,EAAE,CAAC,GAAGA,IAAI,GAAGC,MAAM,CAAC;EACrE,OAAO;IACLN,QAAQ,EAAE,kBAAkB,CAACe,IAAI,CAACF,eAAe,CAAC,CAAC,CAAC,CAACG,WAAW,CAAC,CAAC,CAAC;IACnEf,KAAK,EAAEY,eAAe,CAACI,GAAG,CAACC,KAAK,IAAI,UAAUA,KAAK,EAAE,CAAC,CAACC,IAAI,CAAC,IAAI;EAClE,CAAC;AACH","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/utils/inherit.js b/vanilla/node_modules/@babel/types/lib/utils/inherit.js
new file mode 100644
index 0000000..9023d2c
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/utils/inherit.js
@@ -0,0 +1,13 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = inherit;
+function inherit(key, child, parent) {
+ if (child && parent) {
+ child[key] = Array.from(new Set([].concat(child[key], parent[key]).filter(Boolean)));
+ }
+}
+
+//# sourceMappingURL=inherit.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/utils/inherit.js.map b/vanilla/node_modules/@babel/types/lib/utils/inherit.js.map
new file mode 100644
index 0000000..8cfeaa1
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/utils/inherit.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["inherit","key","child","parent","Array","from","Set","concat","filter","Boolean"],"sources":["../../src/utils/inherit.ts"],"sourcesContent":["import type * as t from \"../index.ts\";\n\nexport default function inherit<\n C extends t.Node | undefined,\n P extends t.Node | undefined,\n>(key: keyof C & keyof P, child: C, parent: P): void {\n if (child && parent) {\n // @ts-expect-error Could further refine key definitions\n child[key] = Array.from(\n new Set([].concat(child[key], parent[key]).filter(Boolean)),\n );\n }\n}\n"],"mappings":";;;;;;AAEe,SAASA,OAAOA,CAG7BC,GAAsB,EAAEC,KAAQ,EAAEC,MAAS,EAAQ;EACnD,IAAID,KAAK,IAAIC,MAAM,EAAE;IAEnBD,KAAK,CAACD,GAAG,CAAC,GAAGG,KAAK,CAACC,IAAI,CACrB,IAAIC,GAAG,CAAC,EAAE,CAACC,MAAM,CAACL,KAAK,CAACD,GAAG,CAAC,EAAEE,MAAM,CAACF,GAAG,CAAC,CAAC,CAACO,MAAM,CAACC,OAAO,CAAC,CAC5D,CAAC;EACH;AACF","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js b/vanilla/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js
new file mode 100644
index 0000000..276f2dd
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js
@@ -0,0 +1,40 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = cleanJSXElementLiteralChild;
+var _index = require("../../builders/generated/index.js");
+var _index2 = require("../../index.js");
+function cleanJSXElementLiteralChild(child, args) {
+ const lines = child.value.split(/\r\n|\n|\r/);
+ let lastNonEmptyLine = 0;
+ for (let i = 0; i < lines.length; i++) {
+ if (/[^ \t]/.exec(lines[i])) {
+ lastNonEmptyLine = i;
+ }
+ }
+ let str = "";
+ for (let i = 0; i < lines.length; i++) {
+ const line = lines[i];
+ const isFirstLine = i === 0;
+ const isLastLine = i === lines.length - 1;
+ const isLastNonEmptyLine = i === lastNonEmptyLine;
+ let trimmedLine = line.replace(/\t/g, " ");
+ if (!isFirstLine) {
+ trimmedLine = trimmedLine.replace(/^ +/, "");
+ }
+ if (!isLastLine) {
+ trimmedLine = trimmedLine.replace(/ +$/, "");
+ }
+ if (trimmedLine) {
+ if (!isLastNonEmptyLine) {
+ trimmedLine += " ";
+ }
+ str += trimmedLine;
+ }
+ }
+ if (str) args.push((0, _index2.inherits)((0, _index.stringLiteral)(str), child));
+}
+
+//# sourceMappingURL=cleanJSXElementLiteralChild.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map b/vanilla/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map
new file mode 100644
index 0000000..84d02a3
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","_index2","cleanJSXElementLiteralChild","child","args","lines","value","split","lastNonEmptyLine","i","length","exec","str","line","isFirstLine","isLastLine","isLastNonEmptyLine","trimmedLine","replace","push","inherits","stringLiteral"],"sources":["../../../src/utils/react/cleanJSXElementLiteralChild.ts"],"sourcesContent":["import { stringLiteral } from \"../../builders/generated/index.ts\";\nimport type * as t from \"../../index.ts\";\nimport { inherits } from \"../../index.ts\";\n\nexport default function cleanJSXElementLiteralChild(\n child: t.JSXText,\n args: t.Node[],\n) {\n const lines = child.value.split(/\\r\\n|\\n|\\r/);\n\n let lastNonEmptyLine = 0;\n\n for (let i = 0; i < lines.length; i++) {\n if (/[^ \\t]/.exec(lines[i])) {\n lastNonEmptyLine = i;\n }\n }\n\n let str = \"\";\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n const isFirstLine = i === 0;\n const isLastLine = i === lines.length - 1;\n const isLastNonEmptyLine = i === lastNonEmptyLine;\n\n // replace rendered whitespace tabs with spaces\n let trimmedLine = line.replace(/\\t/g, \" \");\n\n // trim whitespace touching a newline\n if (!isFirstLine) {\n trimmedLine = trimmedLine.replace(/^ +/, \"\");\n }\n\n // trim whitespace touching an endline\n if (!isLastLine) {\n trimmedLine = trimmedLine.replace(/ +$/, \"\");\n }\n\n if (trimmedLine) {\n if (!isLastNonEmptyLine) {\n trimmedLine += \" \";\n }\n\n str += trimmedLine;\n }\n }\n\n if (str) args.push(inherits(stringLiteral(str), child));\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAEe,SAASE,2BAA2BA,CACjDC,KAAgB,EAChBC,IAAc,EACd;EACA,MAAMC,KAAK,GAAGF,KAAK,CAACG,KAAK,CAACC,KAAK,CAAC,YAAY,CAAC;EAE7C,IAAIC,gBAAgB,GAAG,CAAC;EAExB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,KAAK,CAACK,MAAM,EAAED,CAAC,EAAE,EAAE;IACrC,IAAI,QAAQ,CAACE,IAAI,CAACN,KAAK,CAACI,CAAC,CAAC,CAAC,EAAE;MAC3BD,gBAAgB,GAAGC,CAAC;IACtB;EACF;EAEA,IAAIG,GAAG,GAAG,EAAE;EAEZ,KAAK,IAAIH,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,KAAK,CAACK,MAAM,EAAED,CAAC,EAAE,EAAE;IACrC,MAAMI,IAAI,GAAGR,KAAK,CAACI,CAAC,CAAC;IAErB,MAAMK,WAAW,GAAGL,CAAC,KAAK,CAAC;IAC3B,MAAMM,UAAU,GAAGN,CAAC,KAAKJ,KAAK,CAACK,MAAM,GAAG,CAAC;IACzC,MAAMM,kBAAkB,GAAGP,CAAC,KAAKD,gBAAgB;IAGjD,IAAIS,WAAW,GAAGJ,IAAI,CAACK,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;IAG1C,IAAI,CAACJ,WAAW,EAAE;MAChBG,WAAW,GAAGA,WAAW,CAACC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAC9C;IAGA,IAAI,CAACH,UAAU,EAAE;MACfE,WAAW,GAAGA,WAAW,CAACC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAC9C;IAEA,IAAID,WAAW,EAAE;MACf,IAAI,CAACD,kBAAkB,EAAE;QACvBC,WAAW,IAAI,GAAG;MACpB;MAEAL,GAAG,IAAIK,WAAW;IACpB;EACF;EAEA,IAAIL,GAAG,EAAER,IAAI,CAACe,IAAI,CAAC,IAAAC,gBAAQ,EAAC,IAAAC,oBAAa,EAACT,GAAG,CAAC,EAAET,KAAK,CAAC,CAAC;AACzD","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/utils/shallowEqual.js b/vanilla/node_modules/@babel/types/lib/utils/shallowEqual.js
new file mode 100644
index 0000000..9a1d6c7
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/utils/shallowEqual.js
@@ -0,0 +1,17 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = shallowEqual;
+function shallowEqual(actual, expected) {
+ const keys = Object.keys(expected);
+ for (const key of keys) {
+ if (actual[key] !== expected[key]) {
+ return false;
+ }
+ }
+ return true;
+}
+
+//# sourceMappingURL=shallowEqual.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/utils/shallowEqual.js.map b/vanilla/node_modules/@babel/types/lib/utils/shallowEqual.js.map
new file mode 100644
index 0000000..11bc65a
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/utils/shallowEqual.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["shallowEqual","actual","expected","keys","Object","key"],"sources":["../../src/utils/shallowEqual.ts"],"sourcesContent":["export default function shallowEqual<T extends object>(\n actual: object,\n expected: T,\n): actual is T {\n const keys = Object.keys(expected) as (keyof T)[];\n\n for (const key of keys) {\n if (\n // @ts-expect-error maybe we should check whether key exists first\n actual[key] !== expected[key]\n ) {\n return false;\n }\n }\n\n return true;\n}\n"],"mappings":";;;;;;AAAe,SAASA,YAAYA,CAClCC,MAAc,EACdC,QAAW,EACE;EACb,MAAMC,IAAI,GAAGC,MAAM,CAACD,IAAI,CAACD,QAAQ,CAAgB;EAEjD,KAAK,MAAMG,GAAG,IAAIF,IAAI,EAAE;IACtB,IAEEF,MAAM,CAACI,GAAG,CAAC,KAAKH,QAAQ,CAACG,GAAG,CAAC,EAC7B;MACA,OAAO,KAAK;IACd;EACF;EAEA,OAAO,IAAI;AACb","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js b/vanilla/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js
new file mode 100644
index 0000000..dcde1db
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js
@@ -0,0 +1,13 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = buildMatchMemberExpression;
+var _matchesPattern = require("./matchesPattern.js");
+function buildMatchMemberExpression(match, allowPartial) {
+ const parts = match.split(".");
+ return member => (0, _matchesPattern.default)(member, parts, allowPartial);
+}
+
+//# sourceMappingURL=buildMatchMemberExpression.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map b/vanilla/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map
new file mode 100644
index 0000000..ef90b57
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_matchesPattern","require","buildMatchMemberExpression","match","allowPartial","parts","split","member","matchesPattern"],"sources":["../../src/validators/buildMatchMemberExpression.ts"],"sourcesContent":["import matchesPattern from \"./matchesPattern.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Build a function that when called will return whether or not the\n * input `node` `MemberExpression` matches the input `match`.\n *\n * For example, given the match `React.createClass` it would match the\n * parsed nodes of `React.createClass` and `React[\"createClass\"]`.\n */\nexport default function buildMatchMemberExpression(\n match: string,\n allowPartial?: boolean,\n) {\n const parts = match.split(\".\");\n\n return (member: t.Node) => matchesPattern(member, parts, allowPartial);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAUe,SAASC,0BAA0BA,CAChDC,KAAa,EACbC,YAAsB,EACtB;EACA,MAAMC,KAAK,GAAGF,KAAK,CAACG,KAAK,CAAC,GAAG,CAAC;EAE9B,OAAQC,MAAc,IAAK,IAAAC,uBAAc,EAACD,MAAM,EAAEF,KAAK,EAAED,YAAY,CAAC;AACxE","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/generated/index.js b/vanilla/node_modules/@babel/types/lib/validators/generated/index.js
new file mode 100644
index 0000000..a26bea2
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/generated/index.js
@@ -0,0 +1,2797 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isAccessor = isAccessor;
+exports.isAnyTypeAnnotation = isAnyTypeAnnotation;
+exports.isArgumentPlaceholder = isArgumentPlaceholder;
+exports.isArrayExpression = isArrayExpression;
+exports.isArrayPattern = isArrayPattern;
+exports.isArrayTypeAnnotation = isArrayTypeAnnotation;
+exports.isArrowFunctionExpression = isArrowFunctionExpression;
+exports.isAssignmentExpression = isAssignmentExpression;
+exports.isAssignmentPattern = isAssignmentPattern;
+exports.isAwaitExpression = isAwaitExpression;
+exports.isBigIntLiteral = isBigIntLiteral;
+exports.isBinary = isBinary;
+exports.isBinaryExpression = isBinaryExpression;
+exports.isBindExpression = isBindExpression;
+exports.isBlock = isBlock;
+exports.isBlockParent = isBlockParent;
+exports.isBlockStatement = isBlockStatement;
+exports.isBooleanLiteral = isBooleanLiteral;
+exports.isBooleanLiteralTypeAnnotation = isBooleanLiteralTypeAnnotation;
+exports.isBooleanTypeAnnotation = isBooleanTypeAnnotation;
+exports.isBreakStatement = isBreakStatement;
+exports.isCallExpression = isCallExpression;
+exports.isCatchClause = isCatchClause;
+exports.isClass = isClass;
+exports.isClassAccessorProperty = isClassAccessorProperty;
+exports.isClassBody = isClassBody;
+exports.isClassDeclaration = isClassDeclaration;
+exports.isClassExpression = isClassExpression;
+exports.isClassImplements = isClassImplements;
+exports.isClassMethod = isClassMethod;
+exports.isClassPrivateMethod = isClassPrivateMethod;
+exports.isClassPrivateProperty = isClassPrivateProperty;
+exports.isClassProperty = isClassProperty;
+exports.isCompletionStatement = isCompletionStatement;
+exports.isConditional = isConditional;
+exports.isConditionalExpression = isConditionalExpression;
+exports.isContinueStatement = isContinueStatement;
+exports.isDebuggerStatement = isDebuggerStatement;
+exports.isDecimalLiteral = isDecimalLiteral;
+exports.isDeclaration = isDeclaration;
+exports.isDeclareClass = isDeclareClass;
+exports.isDeclareExportAllDeclaration = isDeclareExportAllDeclaration;
+exports.isDeclareExportDeclaration = isDeclareExportDeclaration;
+exports.isDeclareFunction = isDeclareFunction;
+exports.isDeclareInterface = isDeclareInterface;
+exports.isDeclareModule = isDeclareModule;
+exports.isDeclareModuleExports = isDeclareModuleExports;
+exports.isDeclareOpaqueType = isDeclareOpaqueType;
+exports.isDeclareTypeAlias = isDeclareTypeAlias;
+exports.isDeclareVariable = isDeclareVariable;
+exports.isDeclaredPredicate = isDeclaredPredicate;
+exports.isDecorator = isDecorator;
+exports.isDirective = isDirective;
+exports.isDirectiveLiteral = isDirectiveLiteral;
+exports.isDoExpression = isDoExpression;
+exports.isDoWhileStatement = isDoWhileStatement;
+exports.isEmptyStatement = isEmptyStatement;
+exports.isEmptyTypeAnnotation = isEmptyTypeAnnotation;
+exports.isEnumBody = isEnumBody;
+exports.isEnumBooleanBody = isEnumBooleanBody;
+exports.isEnumBooleanMember = isEnumBooleanMember;
+exports.isEnumDeclaration = isEnumDeclaration;
+exports.isEnumDefaultedMember = isEnumDefaultedMember;
+exports.isEnumMember = isEnumMember;
+exports.isEnumNumberBody = isEnumNumberBody;
+exports.isEnumNumberMember = isEnumNumberMember;
+exports.isEnumStringBody = isEnumStringBody;
+exports.isEnumStringMember = isEnumStringMember;
+exports.isEnumSymbolBody = isEnumSymbolBody;
+exports.isExistsTypeAnnotation = isExistsTypeAnnotation;
+exports.isExportAllDeclaration = isExportAllDeclaration;
+exports.isExportDeclaration = isExportDeclaration;
+exports.isExportDefaultDeclaration = isExportDefaultDeclaration;
+exports.isExportDefaultSpecifier = isExportDefaultSpecifier;
+exports.isExportNamedDeclaration = isExportNamedDeclaration;
+exports.isExportNamespaceSpecifier = isExportNamespaceSpecifier;
+exports.isExportSpecifier = isExportSpecifier;
+exports.isExpression = isExpression;
+exports.isExpressionStatement = isExpressionStatement;
+exports.isExpressionWrapper = isExpressionWrapper;
+exports.isFile = isFile;
+exports.isFlow = isFlow;
+exports.isFlowBaseAnnotation = isFlowBaseAnnotation;
+exports.isFlowDeclaration = isFlowDeclaration;
+exports.isFlowPredicate = isFlowPredicate;
+exports.isFlowType = isFlowType;
+exports.isFor = isFor;
+exports.isForInStatement = isForInStatement;
+exports.isForOfStatement = isForOfStatement;
+exports.isForStatement = isForStatement;
+exports.isForXStatement = isForXStatement;
+exports.isFunction = isFunction;
+exports.isFunctionDeclaration = isFunctionDeclaration;
+exports.isFunctionExpression = isFunctionExpression;
+exports.isFunctionParameter = isFunctionParameter;
+exports.isFunctionParent = isFunctionParent;
+exports.isFunctionTypeAnnotation = isFunctionTypeAnnotation;
+exports.isFunctionTypeParam = isFunctionTypeParam;
+exports.isGenericTypeAnnotation = isGenericTypeAnnotation;
+exports.isIdentifier = isIdentifier;
+exports.isIfStatement = isIfStatement;
+exports.isImmutable = isImmutable;
+exports.isImport = isImport;
+exports.isImportAttribute = isImportAttribute;
+exports.isImportDeclaration = isImportDeclaration;
+exports.isImportDefaultSpecifier = isImportDefaultSpecifier;
+exports.isImportExpression = isImportExpression;
+exports.isImportNamespaceSpecifier = isImportNamespaceSpecifier;
+exports.isImportOrExportDeclaration = isImportOrExportDeclaration;
+exports.isImportSpecifier = isImportSpecifier;
+exports.isIndexedAccessType = isIndexedAccessType;
+exports.isInferredPredicate = isInferredPredicate;
+exports.isInterfaceDeclaration = isInterfaceDeclaration;
+exports.isInterfaceExtends = isInterfaceExtends;
+exports.isInterfaceTypeAnnotation = isInterfaceTypeAnnotation;
+exports.isInterpreterDirective = isInterpreterDirective;
+exports.isIntersectionTypeAnnotation = isIntersectionTypeAnnotation;
+exports.isJSX = isJSX;
+exports.isJSXAttribute = isJSXAttribute;
+exports.isJSXClosingElement = isJSXClosingElement;
+exports.isJSXClosingFragment = isJSXClosingFragment;
+exports.isJSXElement = isJSXElement;
+exports.isJSXEmptyExpression = isJSXEmptyExpression;
+exports.isJSXExpressionContainer = isJSXExpressionContainer;
+exports.isJSXFragment = isJSXFragment;
+exports.isJSXIdentifier = isJSXIdentifier;
+exports.isJSXMemberExpression = isJSXMemberExpression;
+exports.isJSXNamespacedName = isJSXNamespacedName;
+exports.isJSXOpeningElement = isJSXOpeningElement;
+exports.isJSXOpeningFragment = isJSXOpeningFragment;
+exports.isJSXSpreadAttribute = isJSXSpreadAttribute;
+exports.isJSXSpreadChild = isJSXSpreadChild;
+exports.isJSXText = isJSXText;
+exports.isLVal = isLVal;
+exports.isLabeledStatement = isLabeledStatement;
+exports.isLiteral = isLiteral;
+exports.isLogicalExpression = isLogicalExpression;
+exports.isLoop = isLoop;
+exports.isMemberExpression = isMemberExpression;
+exports.isMetaProperty = isMetaProperty;
+exports.isMethod = isMethod;
+exports.isMiscellaneous = isMiscellaneous;
+exports.isMixedTypeAnnotation = isMixedTypeAnnotation;
+exports.isModuleDeclaration = isModuleDeclaration;
+exports.isModuleExpression = isModuleExpression;
+exports.isModuleSpecifier = isModuleSpecifier;
+exports.isNewExpression = isNewExpression;
+exports.isNoop = isNoop;
+exports.isNullLiteral = isNullLiteral;
+exports.isNullLiteralTypeAnnotation = isNullLiteralTypeAnnotation;
+exports.isNullableTypeAnnotation = isNullableTypeAnnotation;
+exports.isNumberLiteral = isNumberLiteral;
+exports.isNumberLiteralTypeAnnotation = isNumberLiteralTypeAnnotation;
+exports.isNumberTypeAnnotation = isNumberTypeAnnotation;
+exports.isNumericLiteral = isNumericLiteral;
+exports.isObjectExpression = isObjectExpression;
+exports.isObjectMember = isObjectMember;
+exports.isObjectMethod = isObjectMethod;
+exports.isObjectPattern = isObjectPattern;
+exports.isObjectProperty = isObjectProperty;
+exports.isObjectTypeAnnotation = isObjectTypeAnnotation;
+exports.isObjectTypeCallProperty = isObjectTypeCallProperty;
+exports.isObjectTypeIndexer = isObjectTypeIndexer;
+exports.isObjectTypeInternalSlot = isObjectTypeInternalSlot;
+exports.isObjectTypeProperty = isObjectTypeProperty;
+exports.isObjectTypeSpreadProperty = isObjectTypeSpreadProperty;
+exports.isOpaqueType = isOpaqueType;
+exports.isOptionalCallExpression = isOptionalCallExpression;
+exports.isOptionalIndexedAccessType = isOptionalIndexedAccessType;
+exports.isOptionalMemberExpression = isOptionalMemberExpression;
+exports.isParenthesizedExpression = isParenthesizedExpression;
+exports.isPattern = isPattern;
+exports.isPatternLike = isPatternLike;
+exports.isPipelineBareFunction = isPipelineBareFunction;
+exports.isPipelinePrimaryTopicReference = isPipelinePrimaryTopicReference;
+exports.isPipelineTopicExpression = isPipelineTopicExpression;
+exports.isPlaceholder = isPlaceholder;
+exports.isPrivate = isPrivate;
+exports.isPrivateName = isPrivateName;
+exports.isProgram = isProgram;
+exports.isProperty = isProperty;
+exports.isPureish = isPureish;
+exports.isQualifiedTypeIdentifier = isQualifiedTypeIdentifier;
+exports.isRecordExpression = isRecordExpression;
+exports.isRegExpLiteral = isRegExpLiteral;
+exports.isRegexLiteral = isRegexLiteral;
+exports.isRestElement = isRestElement;
+exports.isRestProperty = isRestProperty;
+exports.isReturnStatement = isReturnStatement;
+exports.isScopable = isScopable;
+exports.isSequenceExpression = isSequenceExpression;
+exports.isSpreadElement = isSpreadElement;
+exports.isSpreadProperty = isSpreadProperty;
+exports.isStandardized = isStandardized;
+exports.isStatement = isStatement;
+exports.isStaticBlock = isStaticBlock;
+exports.isStringLiteral = isStringLiteral;
+exports.isStringLiteralTypeAnnotation = isStringLiteralTypeAnnotation;
+exports.isStringTypeAnnotation = isStringTypeAnnotation;
+exports.isSuper = isSuper;
+exports.isSwitchCase = isSwitchCase;
+exports.isSwitchStatement = isSwitchStatement;
+exports.isSymbolTypeAnnotation = isSymbolTypeAnnotation;
+exports.isTSAnyKeyword = isTSAnyKeyword;
+exports.isTSArrayType = isTSArrayType;
+exports.isTSAsExpression = isTSAsExpression;
+exports.isTSBaseType = isTSBaseType;
+exports.isTSBigIntKeyword = isTSBigIntKeyword;
+exports.isTSBooleanKeyword = isTSBooleanKeyword;
+exports.isTSCallSignatureDeclaration = isTSCallSignatureDeclaration;
+exports.isTSConditionalType = isTSConditionalType;
+exports.isTSConstructSignatureDeclaration = isTSConstructSignatureDeclaration;
+exports.isTSConstructorType = isTSConstructorType;
+exports.isTSDeclareFunction = isTSDeclareFunction;
+exports.isTSDeclareMethod = isTSDeclareMethod;
+exports.isTSEntityName = isTSEntityName;
+exports.isTSEnumBody = isTSEnumBody;
+exports.isTSEnumDeclaration = isTSEnumDeclaration;
+exports.isTSEnumMember = isTSEnumMember;
+exports.isTSExportAssignment = isTSExportAssignment;
+exports.isTSExpressionWithTypeArguments = isTSExpressionWithTypeArguments;
+exports.isTSExternalModuleReference = isTSExternalModuleReference;
+exports.isTSFunctionType = isTSFunctionType;
+exports.isTSImportEqualsDeclaration = isTSImportEqualsDeclaration;
+exports.isTSImportType = isTSImportType;
+exports.isTSIndexSignature = isTSIndexSignature;
+exports.isTSIndexedAccessType = isTSIndexedAccessType;
+exports.isTSInferType = isTSInferType;
+exports.isTSInstantiationExpression = isTSInstantiationExpression;
+exports.isTSInterfaceBody = isTSInterfaceBody;
+exports.isTSInterfaceDeclaration = isTSInterfaceDeclaration;
+exports.isTSIntersectionType = isTSIntersectionType;
+exports.isTSIntrinsicKeyword = isTSIntrinsicKeyword;
+exports.isTSLiteralType = isTSLiteralType;
+exports.isTSMappedType = isTSMappedType;
+exports.isTSMethodSignature = isTSMethodSignature;
+exports.isTSModuleBlock = isTSModuleBlock;
+exports.isTSModuleDeclaration = isTSModuleDeclaration;
+exports.isTSNamedTupleMember = isTSNamedTupleMember;
+exports.isTSNamespaceExportDeclaration = isTSNamespaceExportDeclaration;
+exports.isTSNeverKeyword = isTSNeverKeyword;
+exports.isTSNonNullExpression = isTSNonNullExpression;
+exports.isTSNullKeyword = isTSNullKeyword;
+exports.isTSNumberKeyword = isTSNumberKeyword;
+exports.isTSObjectKeyword = isTSObjectKeyword;
+exports.isTSOptionalType = isTSOptionalType;
+exports.isTSParameterProperty = isTSParameterProperty;
+exports.isTSParenthesizedType = isTSParenthesizedType;
+exports.isTSPropertySignature = isTSPropertySignature;
+exports.isTSQualifiedName = isTSQualifiedName;
+exports.isTSRestType = isTSRestType;
+exports.isTSSatisfiesExpression = isTSSatisfiesExpression;
+exports.isTSStringKeyword = isTSStringKeyword;
+exports.isTSSymbolKeyword = isTSSymbolKeyword;
+exports.isTSTemplateLiteralType = isTSTemplateLiteralType;
+exports.isTSThisType = isTSThisType;
+exports.isTSTupleType = isTSTupleType;
+exports.isTSType = isTSType;
+exports.isTSTypeAliasDeclaration = isTSTypeAliasDeclaration;
+exports.isTSTypeAnnotation = isTSTypeAnnotation;
+exports.isTSTypeAssertion = isTSTypeAssertion;
+exports.isTSTypeElement = isTSTypeElement;
+exports.isTSTypeLiteral = isTSTypeLiteral;
+exports.isTSTypeOperator = isTSTypeOperator;
+exports.isTSTypeParameter = isTSTypeParameter;
+exports.isTSTypeParameterDeclaration = isTSTypeParameterDeclaration;
+exports.isTSTypeParameterInstantiation = isTSTypeParameterInstantiation;
+exports.isTSTypePredicate = isTSTypePredicate;
+exports.isTSTypeQuery = isTSTypeQuery;
+exports.isTSTypeReference = isTSTypeReference;
+exports.isTSUndefinedKeyword = isTSUndefinedKeyword;
+exports.isTSUnionType = isTSUnionType;
+exports.isTSUnknownKeyword = isTSUnknownKeyword;
+exports.isTSVoidKeyword = isTSVoidKeyword;
+exports.isTaggedTemplateExpression = isTaggedTemplateExpression;
+exports.isTemplateElement = isTemplateElement;
+exports.isTemplateLiteral = isTemplateLiteral;
+exports.isTerminatorless = isTerminatorless;
+exports.isThisExpression = isThisExpression;
+exports.isThisTypeAnnotation = isThisTypeAnnotation;
+exports.isThrowStatement = isThrowStatement;
+exports.isTopicReference = isTopicReference;
+exports.isTryStatement = isTryStatement;
+exports.isTupleExpression = isTupleExpression;
+exports.isTupleTypeAnnotation = isTupleTypeAnnotation;
+exports.isTypeAlias = isTypeAlias;
+exports.isTypeAnnotation = isTypeAnnotation;
+exports.isTypeCastExpression = isTypeCastExpression;
+exports.isTypeParameter = isTypeParameter;
+exports.isTypeParameterDeclaration = isTypeParameterDeclaration;
+exports.isTypeParameterInstantiation = isTypeParameterInstantiation;
+exports.isTypeScript = isTypeScript;
+exports.isTypeofTypeAnnotation = isTypeofTypeAnnotation;
+exports.isUnaryExpression = isUnaryExpression;
+exports.isUnaryLike = isUnaryLike;
+exports.isUnionTypeAnnotation = isUnionTypeAnnotation;
+exports.isUpdateExpression = isUpdateExpression;
+exports.isUserWhitespacable = isUserWhitespacable;
+exports.isV8IntrinsicIdentifier = isV8IntrinsicIdentifier;
+exports.isVariableDeclaration = isVariableDeclaration;
+exports.isVariableDeclarator = isVariableDeclarator;
+exports.isVariance = isVariance;
+exports.isVoidPattern = isVoidPattern;
+exports.isVoidTypeAnnotation = isVoidTypeAnnotation;
+exports.isWhile = isWhile;
+exports.isWhileStatement = isWhileStatement;
+exports.isWithStatement = isWithStatement;
+exports.isYieldExpression = isYieldExpression;
+var _shallowEqual = require("../../utils/shallowEqual.js");
+var _deprecationWarning = require("../../utils/deprecationWarning.js");
+function isArrayExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ArrayExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isAssignmentExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "AssignmentExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBinaryExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "BinaryExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isInterpreterDirective(node, opts) {
+ if (!node) return false;
+ if (node.type !== "InterpreterDirective") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDirective(node, opts) {
+ if (!node) return false;
+ if (node.type !== "Directive") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDirectiveLiteral(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DirectiveLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBlockStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "BlockStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBreakStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "BreakStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isCallExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "CallExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isCatchClause(node, opts) {
+ if (!node) return false;
+ if (node.type !== "CatchClause") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isConditionalExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ConditionalExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isContinueStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ContinueStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDebuggerStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DebuggerStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDoWhileStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DoWhileStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEmptyStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EmptyStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExpressionStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ExpressionStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFile(node, opts) {
+ if (!node) return false;
+ if (node.type !== "File") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isForInStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ForInStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isForStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ForStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFunctionDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "FunctionDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFunctionExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "FunctionExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isIdentifier(node, opts) {
+ if (!node) return false;
+ if (node.type !== "Identifier") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isIfStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "IfStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isLabeledStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "LabeledStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isStringLiteral(node, opts) {
+ if (!node) return false;
+ if (node.type !== "StringLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isNumericLiteral(node, opts) {
+ if (!node) return false;
+ if (node.type !== "NumericLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isNullLiteral(node, opts) {
+ if (!node) return false;
+ if (node.type !== "NullLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBooleanLiteral(node, opts) {
+ if (!node) return false;
+ if (node.type !== "BooleanLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isRegExpLiteral(node, opts) {
+ if (!node) return false;
+ if (node.type !== "RegExpLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isLogicalExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "LogicalExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isMemberExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "MemberExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isNewExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "NewExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isProgram(node, opts) {
+ if (!node) return false;
+ if (node.type !== "Program") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ObjectExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectMethod(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ObjectMethod") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectProperty(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ObjectProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isRestElement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "RestElement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isReturnStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ReturnStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isSequenceExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "SequenceExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isParenthesizedExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ParenthesizedExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isSwitchCase(node, opts) {
+ if (!node) return false;
+ if (node.type !== "SwitchCase") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isSwitchStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "SwitchStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isThisExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ThisExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isThrowStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ThrowStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTryStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TryStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isUnaryExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "UnaryExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isUpdateExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "UpdateExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isVariableDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "VariableDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isVariableDeclarator(node, opts) {
+ if (!node) return false;
+ if (node.type !== "VariableDeclarator") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isWhileStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "WhileStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isWithStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "WithStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isAssignmentPattern(node, opts) {
+ if (!node) return false;
+ if (node.type !== "AssignmentPattern") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isArrayPattern(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ArrayPattern") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isArrowFunctionExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ArrowFunctionExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isClassBody(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ClassBody") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isClassExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ClassExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isClassDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ClassDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExportAllDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ExportAllDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExportDefaultDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ExportDefaultDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExportNamedDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ExportNamedDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExportSpecifier(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ExportSpecifier") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isForOfStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ForOfStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isImportDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ImportDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isImportDefaultSpecifier(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ImportDefaultSpecifier") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isImportNamespaceSpecifier(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ImportNamespaceSpecifier") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isImportSpecifier(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ImportSpecifier") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isImportExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ImportExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isMetaProperty(node, opts) {
+ if (!node) return false;
+ if (node.type !== "MetaProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isClassMethod(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ClassMethod") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectPattern(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ObjectPattern") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isSpreadElement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "SpreadElement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isSuper(node, opts) {
+ if (!node) return false;
+ if (node.type !== "Super") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTaggedTemplateExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TaggedTemplateExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTemplateElement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TemplateElement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTemplateLiteral(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TemplateLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isYieldExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "YieldExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isAwaitExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "AwaitExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isImport(node, opts) {
+ if (!node) return false;
+ if (node.type !== "Import") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBigIntLiteral(node, opts) {
+ if (!node) return false;
+ if (node.type !== "BigIntLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExportNamespaceSpecifier(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ExportNamespaceSpecifier") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isOptionalMemberExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "OptionalMemberExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isOptionalCallExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "OptionalCallExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isClassProperty(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ClassProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isClassAccessorProperty(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ClassAccessorProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isClassPrivateProperty(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ClassPrivateProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isClassPrivateMethod(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ClassPrivateMethod") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isPrivateName(node, opts) {
+ if (!node) return false;
+ if (node.type !== "PrivateName") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isStaticBlock(node, opts) {
+ if (!node) return false;
+ if (node.type !== "StaticBlock") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isImportAttribute(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ImportAttribute") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isAnyTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "AnyTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isArrayTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ArrayTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBooleanTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "BooleanTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBooleanLiteralTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "BooleanLiteralTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isNullLiteralTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "NullLiteralTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isClassImplements(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ClassImplements") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclareClass(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclareClass") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclareFunction(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclareFunction") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclareInterface(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclareInterface") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclareModule(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclareModule") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclareModuleExports(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclareModuleExports") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclareTypeAlias(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclareTypeAlias") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclareOpaqueType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclareOpaqueType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclareVariable(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclareVariable") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclareExportDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclareExportDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclareExportAllDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclareExportAllDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclaredPredicate(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclaredPredicate") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExistsTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ExistsTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFunctionTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "FunctionTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFunctionTypeParam(node, opts) {
+ if (!node) return false;
+ if (node.type !== "FunctionTypeParam") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isGenericTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "GenericTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isInferredPredicate(node, opts) {
+ if (!node) return false;
+ if (node.type !== "InferredPredicate") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isInterfaceExtends(node, opts) {
+ if (!node) return false;
+ if (node.type !== "InterfaceExtends") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isInterfaceDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "InterfaceDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isInterfaceTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "InterfaceTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isIntersectionTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "IntersectionTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isMixedTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "MixedTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEmptyTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EmptyTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isNullableTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "NullableTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isNumberLiteralTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "NumberLiteralTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isNumberTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "NumberTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ObjectTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectTypeInternalSlot(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ObjectTypeInternalSlot") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectTypeCallProperty(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ObjectTypeCallProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectTypeIndexer(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ObjectTypeIndexer") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectTypeProperty(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ObjectTypeProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectTypeSpreadProperty(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ObjectTypeSpreadProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isOpaqueType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "OpaqueType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isQualifiedTypeIdentifier(node, opts) {
+ if (!node) return false;
+ if (node.type !== "QualifiedTypeIdentifier") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isStringLiteralTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "StringLiteralTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isStringTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "StringTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isSymbolTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "SymbolTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isThisTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ThisTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTupleTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TupleTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTypeofTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TypeofTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTypeAlias(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TypeAlias") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTypeCastExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TypeCastExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTypeParameter(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TypeParameter") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTypeParameterDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TypeParameterDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTypeParameterInstantiation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TypeParameterInstantiation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isUnionTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "UnionTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isVariance(node, opts) {
+ if (!node) return false;
+ if (node.type !== "Variance") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isVoidTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "VoidTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EnumDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumBooleanBody(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EnumBooleanBody") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumNumberBody(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EnumNumberBody") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumStringBody(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EnumStringBody") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumSymbolBody(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EnumSymbolBody") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumBooleanMember(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EnumBooleanMember") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumNumberMember(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EnumNumberMember") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumStringMember(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EnumStringMember") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumDefaultedMember(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EnumDefaultedMember") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isIndexedAccessType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "IndexedAccessType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isOptionalIndexedAccessType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "OptionalIndexedAccessType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXAttribute(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXAttribute") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXClosingElement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXClosingElement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXElement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXElement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXEmptyExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXEmptyExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXExpressionContainer(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXExpressionContainer") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXSpreadChild(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXSpreadChild") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXIdentifier(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXIdentifier") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXMemberExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXMemberExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXNamespacedName(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXNamespacedName") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXOpeningElement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXOpeningElement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXSpreadAttribute(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXSpreadAttribute") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXText(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXText") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXFragment(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXFragment") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXOpeningFragment(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXOpeningFragment") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXClosingFragment(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXClosingFragment") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isNoop(node, opts) {
+ if (!node) return false;
+ if (node.type !== "Noop") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isPlaceholder(node, opts) {
+ if (!node) return false;
+ if (node.type !== "Placeholder") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isV8IntrinsicIdentifier(node, opts) {
+ if (!node) return false;
+ if (node.type !== "V8IntrinsicIdentifier") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isArgumentPlaceholder(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ArgumentPlaceholder") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBindExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "BindExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDecorator(node, opts) {
+ if (!node) return false;
+ if (node.type !== "Decorator") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDoExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DoExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExportDefaultSpecifier(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ExportDefaultSpecifier") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isRecordExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "RecordExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTupleExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TupleExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDecimalLiteral(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DecimalLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isModuleExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ModuleExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTopicReference(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TopicReference") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isPipelineTopicExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "PipelineTopicExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isPipelineBareFunction(node, opts) {
+ if (!node) return false;
+ if (node.type !== "PipelineBareFunction") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isPipelinePrimaryTopicReference(node, opts) {
+ if (!node) return false;
+ if (node.type !== "PipelinePrimaryTopicReference") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isVoidPattern(node, opts) {
+ if (!node) return false;
+ if (node.type !== "VoidPattern") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSParameterProperty(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSParameterProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSDeclareFunction(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSDeclareFunction") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSDeclareMethod(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSDeclareMethod") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSQualifiedName(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSQualifiedName") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSCallSignatureDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSCallSignatureDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSConstructSignatureDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSConstructSignatureDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSPropertySignature(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSPropertySignature") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSMethodSignature(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSMethodSignature") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSIndexSignature(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSIndexSignature") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSAnyKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSAnyKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSBooleanKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSBooleanKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSBigIntKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSBigIntKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSIntrinsicKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSIntrinsicKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSNeverKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSNeverKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSNullKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSNullKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSNumberKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSNumberKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSObjectKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSObjectKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSStringKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSStringKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSSymbolKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSSymbolKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSUndefinedKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSUndefinedKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSUnknownKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSUnknownKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSVoidKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSVoidKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSThisType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSThisType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSFunctionType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSFunctionType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSConstructorType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSConstructorType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeReference(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypeReference") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypePredicate(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypePredicate") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeQuery(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypeQuery") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeLiteral(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypeLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSArrayType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSArrayType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTupleType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTupleType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSOptionalType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSOptionalType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSRestType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSRestType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSNamedTupleMember(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSNamedTupleMember") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSUnionType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSUnionType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSIntersectionType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSIntersectionType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSConditionalType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSConditionalType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSInferType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSInferType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSParenthesizedType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSParenthesizedType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeOperator(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypeOperator") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSIndexedAccessType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSIndexedAccessType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSMappedType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSMappedType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTemplateLiteralType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTemplateLiteralType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSLiteralType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSLiteralType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSExpressionWithTypeArguments(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSExpressionWithTypeArguments") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSInterfaceDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSInterfaceDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSInterfaceBody(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSInterfaceBody") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeAliasDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypeAliasDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSInstantiationExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSInstantiationExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSAsExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSAsExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSSatisfiesExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSSatisfiesExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeAssertion(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypeAssertion") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSEnumBody(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSEnumBody") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSEnumDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSEnumDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSEnumMember(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSEnumMember") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSModuleDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSModuleDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSModuleBlock(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSModuleBlock") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSImportType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSImportType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSImportEqualsDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSImportEqualsDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSExternalModuleReference(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSExternalModuleReference") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSNonNullExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSNonNullExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSExportAssignment(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSExportAssignment") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSNamespaceExportDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSNamespaceExportDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeParameterInstantiation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypeParameterInstantiation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeParameterDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypeParameterDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeParameter(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypeParameter") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isStandardized(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ArrayExpression":
+ case "AssignmentExpression":
+ case "BinaryExpression":
+ case "InterpreterDirective":
+ case "Directive":
+ case "DirectiveLiteral":
+ case "BlockStatement":
+ case "BreakStatement":
+ case "CallExpression":
+ case "CatchClause":
+ case "ConditionalExpression":
+ case "ContinueStatement":
+ case "DebuggerStatement":
+ case "DoWhileStatement":
+ case "EmptyStatement":
+ case "ExpressionStatement":
+ case "File":
+ case "ForInStatement":
+ case "ForStatement":
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ case "Identifier":
+ case "IfStatement":
+ case "LabeledStatement":
+ case "StringLiteral":
+ case "NumericLiteral":
+ case "NullLiteral":
+ case "BooleanLiteral":
+ case "RegExpLiteral":
+ case "LogicalExpression":
+ case "MemberExpression":
+ case "NewExpression":
+ case "Program":
+ case "ObjectExpression":
+ case "ObjectMethod":
+ case "ObjectProperty":
+ case "RestElement":
+ case "ReturnStatement":
+ case "SequenceExpression":
+ case "ParenthesizedExpression":
+ case "SwitchCase":
+ case "SwitchStatement":
+ case "ThisExpression":
+ case "ThrowStatement":
+ case "TryStatement":
+ case "UnaryExpression":
+ case "UpdateExpression":
+ case "VariableDeclaration":
+ case "VariableDeclarator":
+ case "WhileStatement":
+ case "WithStatement":
+ case "AssignmentPattern":
+ case "ArrayPattern":
+ case "ArrowFunctionExpression":
+ case "ClassBody":
+ case "ClassExpression":
+ case "ClassDeclaration":
+ case "ExportAllDeclaration":
+ case "ExportDefaultDeclaration":
+ case "ExportNamedDeclaration":
+ case "ExportSpecifier":
+ case "ForOfStatement":
+ case "ImportDeclaration":
+ case "ImportDefaultSpecifier":
+ case "ImportNamespaceSpecifier":
+ case "ImportSpecifier":
+ case "ImportExpression":
+ case "MetaProperty":
+ case "ClassMethod":
+ case "ObjectPattern":
+ case "SpreadElement":
+ case "Super":
+ case "TaggedTemplateExpression":
+ case "TemplateElement":
+ case "TemplateLiteral":
+ case "YieldExpression":
+ case "AwaitExpression":
+ case "Import":
+ case "BigIntLiteral":
+ case "ExportNamespaceSpecifier":
+ case "OptionalMemberExpression":
+ case "OptionalCallExpression":
+ case "ClassProperty":
+ case "ClassAccessorProperty":
+ case "ClassPrivateProperty":
+ case "ClassPrivateMethod":
+ case "PrivateName":
+ case "StaticBlock":
+ case "ImportAttribute":
+ break;
+ case "Placeholder":
+ switch (node.expectedNode) {
+ case "Identifier":
+ case "StringLiteral":
+ case "BlockStatement":
+ case "ClassBody":
+ break;
+ default:
+ return false;
+ }
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExpression(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ArrayExpression":
+ case "AssignmentExpression":
+ case "BinaryExpression":
+ case "CallExpression":
+ case "ConditionalExpression":
+ case "FunctionExpression":
+ case "Identifier":
+ case "StringLiteral":
+ case "NumericLiteral":
+ case "NullLiteral":
+ case "BooleanLiteral":
+ case "RegExpLiteral":
+ case "LogicalExpression":
+ case "MemberExpression":
+ case "NewExpression":
+ case "ObjectExpression":
+ case "SequenceExpression":
+ case "ParenthesizedExpression":
+ case "ThisExpression":
+ case "UnaryExpression":
+ case "UpdateExpression":
+ case "ArrowFunctionExpression":
+ case "ClassExpression":
+ case "ImportExpression":
+ case "MetaProperty":
+ case "Super":
+ case "TaggedTemplateExpression":
+ case "TemplateLiteral":
+ case "YieldExpression":
+ case "AwaitExpression":
+ case "Import":
+ case "BigIntLiteral":
+ case "OptionalMemberExpression":
+ case "OptionalCallExpression":
+ case "TypeCastExpression":
+ case "JSXElement":
+ case "JSXFragment":
+ case "BindExpression":
+ case "DoExpression":
+ case "RecordExpression":
+ case "TupleExpression":
+ case "DecimalLiteral":
+ case "ModuleExpression":
+ case "TopicReference":
+ case "PipelineTopicExpression":
+ case "PipelineBareFunction":
+ case "PipelinePrimaryTopicReference":
+ case "TSInstantiationExpression":
+ case "TSAsExpression":
+ case "TSSatisfiesExpression":
+ case "TSTypeAssertion":
+ case "TSNonNullExpression":
+ break;
+ case "Placeholder":
+ switch (node.expectedNode) {
+ case "Expression":
+ case "Identifier":
+ case "StringLiteral":
+ break;
+ default:
+ return false;
+ }
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBinary(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "BinaryExpression":
+ case "LogicalExpression":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isScopable(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "BlockStatement":
+ case "CatchClause":
+ case "DoWhileStatement":
+ case "ForInStatement":
+ case "ForStatement":
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ case "Program":
+ case "ObjectMethod":
+ case "SwitchStatement":
+ case "WhileStatement":
+ case "ArrowFunctionExpression":
+ case "ClassExpression":
+ case "ClassDeclaration":
+ case "ForOfStatement":
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ case "StaticBlock":
+ case "TSModuleBlock":
+ break;
+ case "Placeholder":
+ if (node.expectedNode === "BlockStatement") break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBlockParent(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "BlockStatement":
+ case "CatchClause":
+ case "DoWhileStatement":
+ case "ForInStatement":
+ case "ForStatement":
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ case "Program":
+ case "ObjectMethod":
+ case "SwitchStatement":
+ case "WhileStatement":
+ case "ArrowFunctionExpression":
+ case "ForOfStatement":
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ case "StaticBlock":
+ case "TSModuleBlock":
+ break;
+ case "Placeholder":
+ if (node.expectedNode === "BlockStatement") break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBlock(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "BlockStatement":
+ case "Program":
+ case "TSModuleBlock":
+ break;
+ case "Placeholder":
+ if (node.expectedNode === "BlockStatement") break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isStatement(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "BlockStatement":
+ case "BreakStatement":
+ case "ContinueStatement":
+ case "DebuggerStatement":
+ case "DoWhileStatement":
+ case "EmptyStatement":
+ case "ExpressionStatement":
+ case "ForInStatement":
+ case "ForStatement":
+ case "FunctionDeclaration":
+ case "IfStatement":
+ case "LabeledStatement":
+ case "ReturnStatement":
+ case "SwitchStatement":
+ case "ThrowStatement":
+ case "TryStatement":
+ case "VariableDeclaration":
+ case "WhileStatement":
+ case "WithStatement":
+ case "ClassDeclaration":
+ case "ExportAllDeclaration":
+ case "ExportDefaultDeclaration":
+ case "ExportNamedDeclaration":
+ case "ForOfStatement":
+ case "ImportDeclaration":
+ case "DeclareClass":
+ case "DeclareFunction":
+ case "DeclareInterface":
+ case "DeclareModule":
+ case "DeclareModuleExports":
+ case "DeclareTypeAlias":
+ case "DeclareOpaqueType":
+ case "DeclareVariable":
+ case "DeclareExportDeclaration":
+ case "DeclareExportAllDeclaration":
+ case "InterfaceDeclaration":
+ case "OpaqueType":
+ case "TypeAlias":
+ case "EnumDeclaration":
+ case "TSDeclareFunction":
+ case "TSInterfaceDeclaration":
+ case "TSTypeAliasDeclaration":
+ case "TSEnumDeclaration":
+ case "TSModuleDeclaration":
+ case "TSImportEqualsDeclaration":
+ case "TSExportAssignment":
+ case "TSNamespaceExportDeclaration":
+ break;
+ case "Placeholder":
+ switch (node.expectedNode) {
+ case "Statement":
+ case "Declaration":
+ case "BlockStatement":
+ break;
+ default:
+ return false;
+ }
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTerminatorless(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "BreakStatement":
+ case "ContinueStatement":
+ case "ReturnStatement":
+ case "ThrowStatement":
+ case "YieldExpression":
+ case "AwaitExpression":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isCompletionStatement(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "BreakStatement":
+ case "ContinueStatement":
+ case "ReturnStatement":
+ case "ThrowStatement":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isConditional(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ConditionalExpression":
+ case "IfStatement":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isLoop(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "DoWhileStatement":
+ case "ForInStatement":
+ case "ForStatement":
+ case "WhileStatement":
+ case "ForOfStatement":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isWhile(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "DoWhileStatement":
+ case "WhileStatement":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExpressionWrapper(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ExpressionStatement":
+ case "ParenthesizedExpression":
+ case "TypeCastExpression":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFor(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ForInStatement":
+ case "ForStatement":
+ case "ForOfStatement":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isForXStatement(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ForInStatement":
+ case "ForOfStatement":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFunction(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ case "ObjectMethod":
+ case "ArrowFunctionExpression":
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFunctionParent(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ case "ObjectMethod":
+ case "ArrowFunctionExpression":
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ case "StaticBlock":
+ case "TSModuleBlock":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isPureish(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ case "StringLiteral":
+ case "NumericLiteral":
+ case "NullLiteral":
+ case "BooleanLiteral":
+ case "RegExpLiteral":
+ case "ArrowFunctionExpression":
+ case "BigIntLiteral":
+ case "DecimalLiteral":
+ break;
+ case "Placeholder":
+ if (node.expectedNode === "StringLiteral") break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclaration(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "FunctionDeclaration":
+ case "VariableDeclaration":
+ case "ClassDeclaration":
+ case "ExportAllDeclaration":
+ case "ExportDefaultDeclaration":
+ case "ExportNamedDeclaration":
+ case "ImportDeclaration":
+ case "DeclareClass":
+ case "DeclareFunction":
+ case "DeclareInterface":
+ case "DeclareModule":
+ case "DeclareModuleExports":
+ case "DeclareTypeAlias":
+ case "DeclareOpaqueType":
+ case "DeclareVariable":
+ case "DeclareExportDeclaration":
+ case "DeclareExportAllDeclaration":
+ case "InterfaceDeclaration":
+ case "OpaqueType":
+ case "TypeAlias":
+ case "EnumDeclaration":
+ case "TSDeclareFunction":
+ case "TSInterfaceDeclaration":
+ case "TSTypeAliasDeclaration":
+ case "TSEnumDeclaration":
+ case "TSModuleDeclaration":
+ case "TSImportEqualsDeclaration":
+ break;
+ case "Placeholder":
+ if (node.expectedNode === "Declaration") break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFunctionParameter(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "Identifier":
+ case "RestElement":
+ case "AssignmentPattern":
+ case "ArrayPattern":
+ case "ObjectPattern":
+ case "VoidPattern":
+ break;
+ case "Placeholder":
+ if (node.expectedNode === "Identifier") break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isPatternLike(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "Identifier":
+ case "MemberExpression":
+ case "RestElement":
+ case "AssignmentPattern":
+ case "ArrayPattern":
+ case "ObjectPattern":
+ case "VoidPattern":
+ case "TSAsExpression":
+ case "TSSatisfiesExpression":
+ case "TSTypeAssertion":
+ case "TSNonNullExpression":
+ break;
+ case "Placeholder":
+ switch (node.expectedNode) {
+ case "Pattern":
+ case "Identifier":
+ break;
+ default:
+ return false;
+ }
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isLVal(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "Identifier":
+ case "MemberExpression":
+ case "RestElement":
+ case "AssignmentPattern":
+ case "ArrayPattern":
+ case "ObjectPattern":
+ case "TSParameterProperty":
+ case "TSAsExpression":
+ case "TSSatisfiesExpression":
+ case "TSTypeAssertion":
+ case "TSNonNullExpression":
+ break;
+ case "Placeholder":
+ switch (node.expectedNode) {
+ case "Pattern":
+ case "Identifier":
+ break;
+ default:
+ return false;
+ }
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSEntityName(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "Identifier":
+ case "TSQualifiedName":
+ break;
+ case "Placeholder":
+ if (node.expectedNode === "Identifier") break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isLiteral(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "StringLiteral":
+ case "NumericLiteral":
+ case "NullLiteral":
+ case "BooleanLiteral":
+ case "RegExpLiteral":
+ case "TemplateLiteral":
+ case "BigIntLiteral":
+ case "DecimalLiteral":
+ break;
+ case "Placeholder":
+ if (node.expectedNode === "StringLiteral") break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isImmutable(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "StringLiteral":
+ case "NumericLiteral":
+ case "NullLiteral":
+ case "BooleanLiteral":
+ case "BigIntLiteral":
+ case "JSXAttribute":
+ case "JSXClosingElement":
+ case "JSXElement":
+ case "JSXExpressionContainer":
+ case "JSXSpreadChild":
+ case "JSXOpeningElement":
+ case "JSXText":
+ case "JSXFragment":
+ case "JSXOpeningFragment":
+ case "JSXClosingFragment":
+ case "DecimalLiteral":
+ break;
+ case "Placeholder":
+ if (node.expectedNode === "StringLiteral") break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isUserWhitespacable(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ObjectMethod":
+ case "ObjectProperty":
+ case "ObjectTypeInternalSlot":
+ case "ObjectTypeCallProperty":
+ case "ObjectTypeIndexer":
+ case "ObjectTypeProperty":
+ case "ObjectTypeSpreadProperty":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isMethod(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ObjectMethod":
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectMember(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ObjectMethod":
+ case "ObjectProperty":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isProperty(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ObjectProperty":
+ case "ClassProperty":
+ case "ClassAccessorProperty":
+ case "ClassPrivateProperty":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isUnaryLike(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "UnaryExpression":
+ case "SpreadElement":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isPattern(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "AssignmentPattern":
+ case "ArrayPattern":
+ case "ObjectPattern":
+ case "VoidPattern":
+ break;
+ case "Placeholder":
+ if (node.expectedNode === "Pattern") break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isClass(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ClassExpression":
+ case "ClassDeclaration":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isImportOrExportDeclaration(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ExportAllDeclaration":
+ case "ExportDefaultDeclaration":
+ case "ExportNamedDeclaration":
+ case "ImportDeclaration":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExportDeclaration(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ExportAllDeclaration":
+ case "ExportDefaultDeclaration":
+ case "ExportNamedDeclaration":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isModuleSpecifier(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ExportSpecifier":
+ case "ImportDefaultSpecifier":
+ case "ImportNamespaceSpecifier":
+ case "ImportSpecifier":
+ case "ExportNamespaceSpecifier":
+ case "ExportDefaultSpecifier":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isAccessor(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ClassAccessorProperty":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isPrivate(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ClassPrivateProperty":
+ case "ClassPrivateMethod":
+ case "PrivateName":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFlow(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "AnyTypeAnnotation":
+ case "ArrayTypeAnnotation":
+ case "BooleanTypeAnnotation":
+ case "BooleanLiteralTypeAnnotation":
+ case "NullLiteralTypeAnnotation":
+ case "ClassImplements":
+ case "DeclareClass":
+ case "DeclareFunction":
+ case "DeclareInterface":
+ case "DeclareModule":
+ case "DeclareModuleExports":
+ case "DeclareTypeAlias":
+ case "DeclareOpaqueType":
+ case "DeclareVariable":
+ case "DeclareExportDeclaration":
+ case "DeclareExportAllDeclaration":
+ case "DeclaredPredicate":
+ case "ExistsTypeAnnotation":
+ case "FunctionTypeAnnotation":
+ case "FunctionTypeParam":
+ case "GenericTypeAnnotation":
+ case "InferredPredicate":
+ case "InterfaceExtends":
+ case "InterfaceDeclaration":
+ case "InterfaceTypeAnnotation":
+ case "IntersectionTypeAnnotation":
+ case "MixedTypeAnnotation":
+ case "EmptyTypeAnnotation":
+ case "NullableTypeAnnotation":
+ case "NumberLiteralTypeAnnotation":
+ case "NumberTypeAnnotation":
+ case "ObjectTypeAnnotation":
+ case "ObjectTypeInternalSlot":
+ case "ObjectTypeCallProperty":
+ case "ObjectTypeIndexer":
+ case "ObjectTypeProperty":
+ case "ObjectTypeSpreadProperty":
+ case "OpaqueType":
+ case "QualifiedTypeIdentifier":
+ case "StringLiteralTypeAnnotation":
+ case "StringTypeAnnotation":
+ case "SymbolTypeAnnotation":
+ case "ThisTypeAnnotation":
+ case "TupleTypeAnnotation":
+ case "TypeofTypeAnnotation":
+ case "TypeAlias":
+ case "TypeAnnotation":
+ case "TypeCastExpression":
+ case "TypeParameter":
+ case "TypeParameterDeclaration":
+ case "TypeParameterInstantiation":
+ case "UnionTypeAnnotation":
+ case "Variance":
+ case "VoidTypeAnnotation":
+ case "EnumDeclaration":
+ case "EnumBooleanBody":
+ case "EnumNumberBody":
+ case "EnumStringBody":
+ case "EnumSymbolBody":
+ case "EnumBooleanMember":
+ case "EnumNumberMember":
+ case "EnumStringMember":
+ case "EnumDefaultedMember":
+ case "IndexedAccessType":
+ case "OptionalIndexedAccessType":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFlowType(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "AnyTypeAnnotation":
+ case "ArrayTypeAnnotation":
+ case "BooleanTypeAnnotation":
+ case "BooleanLiteralTypeAnnotation":
+ case "NullLiteralTypeAnnotation":
+ case "ExistsTypeAnnotation":
+ case "FunctionTypeAnnotation":
+ case "GenericTypeAnnotation":
+ case "InterfaceTypeAnnotation":
+ case "IntersectionTypeAnnotation":
+ case "MixedTypeAnnotation":
+ case "EmptyTypeAnnotation":
+ case "NullableTypeAnnotation":
+ case "NumberLiteralTypeAnnotation":
+ case "NumberTypeAnnotation":
+ case "ObjectTypeAnnotation":
+ case "StringLiteralTypeAnnotation":
+ case "StringTypeAnnotation":
+ case "SymbolTypeAnnotation":
+ case "ThisTypeAnnotation":
+ case "TupleTypeAnnotation":
+ case "TypeofTypeAnnotation":
+ case "UnionTypeAnnotation":
+ case "VoidTypeAnnotation":
+ case "IndexedAccessType":
+ case "OptionalIndexedAccessType":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFlowBaseAnnotation(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "AnyTypeAnnotation":
+ case "BooleanTypeAnnotation":
+ case "NullLiteralTypeAnnotation":
+ case "MixedTypeAnnotation":
+ case "EmptyTypeAnnotation":
+ case "NumberTypeAnnotation":
+ case "StringTypeAnnotation":
+ case "SymbolTypeAnnotation":
+ case "ThisTypeAnnotation":
+ case "VoidTypeAnnotation":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFlowDeclaration(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "DeclareClass":
+ case "DeclareFunction":
+ case "DeclareInterface":
+ case "DeclareModule":
+ case "DeclareModuleExports":
+ case "DeclareTypeAlias":
+ case "DeclareOpaqueType":
+ case "DeclareVariable":
+ case "DeclareExportDeclaration":
+ case "DeclareExportAllDeclaration":
+ case "InterfaceDeclaration":
+ case "OpaqueType":
+ case "TypeAlias":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFlowPredicate(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "DeclaredPredicate":
+ case "InferredPredicate":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumBody(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "EnumBooleanBody":
+ case "EnumNumberBody":
+ case "EnumStringBody":
+ case "EnumSymbolBody":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumMember(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "EnumBooleanMember":
+ case "EnumNumberMember":
+ case "EnumStringMember":
+ case "EnumDefaultedMember":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSX(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "JSXAttribute":
+ case "JSXClosingElement":
+ case "JSXElement":
+ case "JSXEmptyExpression":
+ case "JSXExpressionContainer":
+ case "JSXSpreadChild":
+ case "JSXIdentifier":
+ case "JSXMemberExpression":
+ case "JSXNamespacedName":
+ case "JSXOpeningElement":
+ case "JSXSpreadAttribute":
+ case "JSXText":
+ case "JSXFragment":
+ case "JSXOpeningFragment":
+ case "JSXClosingFragment":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isMiscellaneous(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "Noop":
+ case "Placeholder":
+ case "V8IntrinsicIdentifier":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTypeScript(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "TSParameterProperty":
+ case "TSDeclareFunction":
+ case "TSDeclareMethod":
+ case "TSQualifiedName":
+ case "TSCallSignatureDeclaration":
+ case "TSConstructSignatureDeclaration":
+ case "TSPropertySignature":
+ case "TSMethodSignature":
+ case "TSIndexSignature":
+ case "TSAnyKeyword":
+ case "TSBooleanKeyword":
+ case "TSBigIntKeyword":
+ case "TSIntrinsicKeyword":
+ case "TSNeverKeyword":
+ case "TSNullKeyword":
+ case "TSNumberKeyword":
+ case "TSObjectKeyword":
+ case "TSStringKeyword":
+ case "TSSymbolKeyword":
+ case "TSUndefinedKeyword":
+ case "TSUnknownKeyword":
+ case "TSVoidKeyword":
+ case "TSThisType":
+ case "TSFunctionType":
+ case "TSConstructorType":
+ case "TSTypeReference":
+ case "TSTypePredicate":
+ case "TSTypeQuery":
+ case "TSTypeLiteral":
+ case "TSArrayType":
+ case "TSTupleType":
+ case "TSOptionalType":
+ case "TSRestType":
+ case "TSNamedTupleMember":
+ case "TSUnionType":
+ case "TSIntersectionType":
+ case "TSConditionalType":
+ case "TSInferType":
+ case "TSParenthesizedType":
+ case "TSTypeOperator":
+ case "TSIndexedAccessType":
+ case "TSMappedType":
+ case "TSTemplateLiteralType":
+ case "TSLiteralType":
+ case "TSExpressionWithTypeArguments":
+ case "TSInterfaceDeclaration":
+ case "TSInterfaceBody":
+ case "TSTypeAliasDeclaration":
+ case "TSInstantiationExpression":
+ case "TSAsExpression":
+ case "TSSatisfiesExpression":
+ case "TSTypeAssertion":
+ case "TSEnumBody":
+ case "TSEnumDeclaration":
+ case "TSEnumMember":
+ case "TSModuleDeclaration":
+ case "TSModuleBlock":
+ case "TSImportType":
+ case "TSImportEqualsDeclaration":
+ case "TSExternalModuleReference":
+ case "TSNonNullExpression":
+ case "TSExportAssignment":
+ case "TSNamespaceExportDeclaration":
+ case "TSTypeAnnotation":
+ case "TSTypeParameterInstantiation":
+ case "TSTypeParameterDeclaration":
+ case "TSTypeParameter":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeElement(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "TSCallSignatureDeclaration":
+ case "TSConstructSignatureDeclaration":
+ case "TSPropertySignature":
+ case "TSMethodSignature":
+ case "TSIndexSignature":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSType(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "TSAnyKeyword":
+ case "TSBooleanKeyword":
+ case "TSBigIntKeyword":
+ case "TSIntrinsicKeyword":
+ case "TSNeverKeyword":
+ case "TSNullKeyword":
+ case "TSNumberKeyword":
+ case "TSObjectKeyword":
+ case "TSStringKeyword":
+ case "TSSymbolKeyword":
+ case "TSUndefinedKeyword":
+ case "TSUnknownKeyword":
+ case "TSVoidKeyword":
+ case "TSThisType":
+ case "TSFunctionType":
+ case "TSConstructorType":
+ case "TSTypeReference":
+ case "TSTypePredicate":
+ case "TSTypeQuery":
+ case "TSTypeLiteral":
+ case "TSArrayType":
+ case "TSTupleType":
+ case "TSOptionalType":
+ case "TSRestType":
+ case "TSUnionType":
+ case "TSIntersectionType":
+ case "TSConditionalType":
+ case "TSInferType":
+ case "TSParenthesizedType":
+ case "TSTypeOperator":
+ case "TSIndexedAccessType":
+ case "TSMappedType":
+ case "TSTemplateLiteralType":
+ case "TSLiteralType":
+ case "TSExpressionWithTypeArguments":
+ case "TSImportType":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSBaseType(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "TSAnyKeyword":
+ case "TSBooleanKeyword":
+ case "TSBigIntKeyword":
+ case "TSIntrinsicKeyword":
+ case "TSNeverKeyword":
+ case "TSNullKeyword":
+ case "TSNumberKeyword":
+ case "TSObjectKeyword":
+ case "TSStringKeyword":
+ case "TSSymbolKeyword":
+ case "TSUndefinedKeyword":
+ case "TSUnknownKeyword":
+ case "TSVoidKeyword":
+ case "TSThisType":
+ case "TSTemplateLiteralType":
+ case "TSLiteralType":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isNumberLiteral(node, opts) {
+ (0, _deprecationWarning.default)("isNumberLiteral", "isNumericLiteral");
+ if (!node) return false;
+ if (node.type !== "NumberLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isRegexLiteral(node, opts) {
+ (0, _deprecationWarning.default)("isRegexLiteral", "isRegExpLiteral");
+ if (!node) return false;
+ if (node.type !== "RegexLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isRestProperty(node, opts) {
+ (0, _deprecationWarning.default)("isRestProperty", "isRestElement");
+ if (!node) return false;
+ if (node.type !== "RestProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isSpreadProperty(node, opts) {
+ (0, _deprecationWarning.default)("isSpreadProperty", "isSpreadElement");
+ if (!node) return false;
+ if (node.type !== "SpreadProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isModuleDeclaration(node, opts) {
+ (0, _deprecationWarning.default)("isModuleDeclaration", "isImportOrExportDeclaration");
+ return isImportOrExportDeclaration(node, opts);
+}
+
+//# sourceMappingURL=index.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/generated/index.js.map b/vanilla/node_modules/@babel/types/lib/validators/generated/index.js.map
new file mode 100644
index 0000000..3773969
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/generated/index.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_shallowEqual","require","_deprecationWarning","isArrayExpression","node","opts","type","shallowEqual","isAssignmentExpression","isBinaryExpression","isInterpreterDirective","isDirective","isDirectiveLiteral","isBlockStatement","isBreakStatement","isCallExpression","isCatchClause","isConditionalExpression","isContinueStatement","isDebuggerStatement","isDoWhileStatement","isEmptyStatement","isExpressionStatement","isFile","isForInStatement","isForStatement","isFunctionDeclaration","isFunctionExpression","isIdentifier","isIfStatement","isLabeledStatement","isStringLiteral","isNumericLiteral","isNullLiteral","isBooleanLiteral","isRegExpLiteral","isLogicalExpression","isMemberExpression","isNewExpression","isProgram","isObjectExpression","isObjectMethod","isObjectProperty","isRestElement","isReturnStatement","isSequenceExpression","isParenthesizedExpression","isSwitchCase","isSwitchStatement","isThisExpression","isThrowStatement","isTryStatement","isUnaryExpression","isUpdateExpression","isVariableDeclaration","isVariableDeclarator","isWhileStatement","isWithStatement","isAssignmentPattern","isArrayPattern","isArrowFunctionExpression","isClassBody","isClassExpression","isClassDeclaration","isExportAllDeclaration","isExportDefaultDeclaration","isExportNamedDeclaration","isExportSpecifier","isForOfStatement","isImportDeclaration","isImportDefaultSpecifier","isImportNamespaceSpecifier","isImportSpecifier","isImportExpression","isMetaProperty","isClassMethod","isObjectPattern","isSpreadElement","isSuper","isTaggedTemplateExpression","isTemplateElement","isTemplateLiteral","isYieldExpression","isAwaitExpression","isImport","isBigIntLiteral","isExportNamespaceSpecifier","isOptionalMemberExpression","isOptionalCallExpression","isClassProperty","isClassAccessorProperty","isClassPrivateProperty","isClassPrivateMethod","isPrivateName","isStaticBlock","isImportAttribute","isAnyTypeAnnotation","isArrayTypeAnnotation","isBooleanTypeAnnotation","isBooleanLiteralTypeAnnotation","isNullLiteralTypeAnnotation","isClassImplements","isDeclareClass","isDeclareFunction","isDeclareInterface","isDeclareModule","isDeclareModuleExports","isDeclareTypeAlias","isDeclareOpaqueType","isDeclareVariable","isDeclareExportDeclaration","isDeclareExportAllDeclaration","isDeclaredPredicate","isExistsTypeAnnotation","isFunctionTypeAnnotation","isFunctionTypeParam","isGenericTypeAnnotation","isInferredPredicate","isInterfaceExtends","isInterfaceDeclaration","isInterfaceTypeAnnotation","isIntersectionTypeAnnotation","isMixedTypeAnnotation","isEmptyTypeAnnotation","isNullableTypeAnnotation","isNumberLiteralTypeAnnotation","isNumberTypeAnnotation","isObjectTypeAnnotation","isObjectTypeInternalSlot","isObjectTypeCallProperty","isObjectTypeIndexer","isObjectTypeProperty","isObjectTypeSpreadProperty","isOpaqueType","isQualifiedTypeIdentifier","isStringLiteralTypeAnnotation","isStringTypeAnnotation","isSymbolTypeAnnotation","isThisTypeAnnotation","isTupleTypeAnnotation","isTypeofTypeAnnotation","isTypeAlias","isTypeAnnotation","isTypeCastExpression","isTypeParameter","isTypeParameterDeclaration","isTypeParameterInstantiation","isUnionTypeAnnotation","isVariance","isVoidTypeAnnotation","isEnumDeclaration","isEnumBooleanBody","isEnumNumberBody","isEnumStringBody","isEnumSymbolBody","isEnumBooleanMember","isEnumNumberMember","isEnumStringMember","isEnumDefaultedMember","isIndexedAccessType","isOptionalIndexedAccessType","isJSXAttribute","isJSXClosingElement","isJSXElement","isJSXEmptyExpression","isJSXExpressionContainer","isJSXSpreadChild","isJSXIdentifier","isJSXMemberExpression","isJSXNamespacedName","isJSXOpeningElement","isJSXSpreadAttribute","isJSXText","isJSXFragment","isJSXOpeningFragment","isJSXClosingFragment","isNoop","isPlaceholder","isV8IntrinsicIdentifier","isArgumentPlaceholder","isBindExpression","isDecorator","isDoExpression","isExportDefaultSpecifier","isRecordExpression","isTupleExpression","isDecimalLiteral","isModuleExpression","isTopicReference","isPipelineTopicExpression","isPipelineBareFunction","isPipelinePrimaryTopicReference","isVoidPattern","isTSParameterProperty","isTSDeclareFunction","isTSDeclareMethod","isTSQualifiedName","isTSCallSignatureDeclaration","isTSConstructSignatureDeclaration","isTSPropertySignature","isTSMethodSignature","isTSIndexSignature","isTSAnyKeyword","isTSBooleanKeyword","isTSBigIntKeyword","isTSIntrinsicKeyword","isTSNeverKeyword","isTSNullKeyword","isTSNumberKeyword","isTSObjectKeyword","isTSStringKeyword","isTSSymbolKeyword","isTSUndefinedKeyword","isTSUnknownKeyword","isTSVoidKeyword","isTSThisType","isTSFunctionType","isTSConstructorType","isTSTypeReference","isTSTypePredicate","isTSTypeQuery","isTSTypeLiteral","isTSArrayType","isTSTupleType","isTSOptionalType","isTSRestType","isTSNamedTupleMember","isTSUnionType","isTSIntersectionType","isTSConditionalType","isTSInferType","isTSParenthesizedType","isTSTypeOperator","isTSIndexedAccessType","isTSMappedType","isTSTemplateLiteralType","isTSLiteralType","isTSExpressionWithTypeArguments","isTSInterfaceDeclaration","isTSInterfaceBody","isTSTypeAliasDeclaration","isTSInstantiationExpression","isTSAsExpression","isTSSatisfiesExpression","isTSTypeAssertion","isTSEnumBody","isTSEnumDeclaration","isTSEnumMember","isTSModuleDeclaration","isTSModuleBlock","isTSImportType","isTSImportEqualsDeclaration","isTSExternalModuleReference","isTSNonNullExpression","isTSExportAssignment","isTSNamespaceExportDeclaration","isTSTypeAnnotation","isTSTypeParameterInstantiation","isTSTypeParameterDeclaration","isTSTypeParameter","isStandardized","expectedNode","isExpression","isBinary","isScopable","isBlockParent","isBlock","isStatement","isTerminatorless","isCompletionStatement","isConditional","isLoop","isWhile","isExpressionWrapper","isFor","isForXStatement","isFunction","isFunctionParent","isPureish","isDeclaration","isFunctionParameter","isPatternLike","isLVal","isTSEntityName","isLiteral","isImmutable","isUserWhitespacable","isMethod","isObjectMember","isProperty","isUnaryLike","isPattern","isClass","isImportOrExportDeclaration","isExportDeclaration","isModuleSpecifier","isAccessor","isPrivate","isFlow","isFlowType","isFlowBaseAnnotation","isFlowDeclaration","isFlowPredicate","isEnumBody","isEnumMember","isJSX","isMiscellaneous","isTypeScript","isTSTypeElement","isTSType","isTSBaseType","isNumberLiteral","deprecationWarning","isRegexLiteral","isRestProperty","isSpreadProperty","isModuleDeclaration"],"sources":["../../../src/validators/generated/index.ts"],"sourcesContent":["/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\n\n/* eslint-disable no-fallthrough */\n\nimport shallowEqual from \"../../utils/shallowEqual.ts\";\nimport type * as t from \"../../index.ts\";\nimport deprecationWarning from \"../../utils/deprecationWarning.ts\";\n\ntype Options<Obj> = Partial<{\n [Prop in Exclude<keyof Obj, \"type\">]: Obj[Prop] extends t.Node\n ? t.Node\n : Obj[Prop] extends t.Node[]\n ? t.Node[]\n : Obj[Prop];\n}>;\n\nexport function isArrayExpression(\n node: t.Node | null | undefined,\n): node is t.ArrayExpression;\nexport function isArrayExpression<Opts extends Options<t.ArrayExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ArrayExpression & Opts;\nexport function isArrayExpression<Opts extends Options<t.ArrayExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ArrayExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isAssignmentExpression(\n node: t.Node | null | undefined,\n): node is t.AssignmentExpression;\nexport function isAssignmentExpression<\n Opts extends Options<t.AssignmentExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.AssignmentExpression & Opts;\nexport function isAssignmentExpression<\n Opts extends Options<t.AssignmentExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"AssignmentExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBinaryExpression(\n node: t.Node | null | undefined,\n): node is t.BinaryExpression;\nexport function isBinaryExpression<Opts extends Options<t.BinaryExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.BinaryExpression & Opts;\nexport function isBinaryExpression<Opts extends Options<t.BinaryExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"BinaryExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isInterpreterDirective(\n node: t.Node | null | undefined,\n): node is t.InterpreterDirective;\nexport function isInterpreterDirective<\n Opts extends Options<t.InterpreterDirective>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.InterpreterDirective & Opts;\nexport function isInterpreterDirective<\n Opts extends Options<t.InterpreterDirective>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"InterpreterDirective\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDirective(\n node: t.Node | null | undefined,\n): node is t.Directive;\nexport function isDirective<Opts extends Options<t.Directive>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Directive & Opts;\nexport function isDirective<Opts extends Options<t.Directive>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"Directive\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDirectiveLiteral(\n node: t.Node | null | undefined,\n): node is t.DirectiveLiteral;\nexport function isDirectiveLiteral<Opts extends Options<t.DirectiveLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DirectiveLiteral & Opts;\nexport function isDirectiveLiteral<Opts extends Options<t.DirectiveLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DirectiveLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBlockStatement(\n node: t.Node | null | undefined,\n): node is t.BlockStatement;\nexport function isBlockStatement<Opts extends Options<t.BlockStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.BlockStatement & Opts;\nexport function isBlockStatement<Opts extends Options<t.BlockStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"BlockStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBreakStatement(\n node: t.Node | null | undefined,\n): node is t.BreakStatement;\nexport function isBreakStatement<Opts extends Options<t.BreakStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.BreakStatement & Opts;\nexport function isBreakStatement<Opts extends Options<t.BreakStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"BreakStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isCallExpression(\n node: t.Node | null | undefined,\n): node is t.CallExpression;\nexport function isCallExpression<Opts extends Options<t.CallExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.CallExpression & Opts;\nexport function isCallExpression<Opts extends Options<t.CallExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"CallExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isCatchClause(\n node: t.Node | null | undefined,\n): node is t.CatchClause;\nexport function isCatchClause<Opts extends Options<t.CatchClause>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.CatchClause & Opts;\nexport function isCatchClause<Opts extends Options<t.CatchClause>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"CatchClause\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isConditionalExpression(\n node: t.Node | null | undefined,\n): node is t.ConditionalExpression;\nexport function isConditionalExpression<\n Opts extends Options<t.ConditionalExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ConditionalExpression & Opts;\nexport function isConditionalExpression<\n Opts extends Options<t.ConditionalExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ConditionalExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isContinueStatement(\n node: t.Node | null | undefined,\n): node is t.ContinueStatement;\nexport function isContinueStatement<Opts extends Options<t.ContinueStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ContinueStatement & Opts;\nexport function isContinueStatement<Opts extends Options<t.ContinueStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ContinueStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDebuggerStatement(\n node: t.Node | null | undefined,\n): node is t.DebuggerStatement;\nexport function isDebuggerStatement<Opts extends Options<t.DebuggerStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DebuggerStatement & Opts;\nexport function isDebuggerStatement<Opts extends Options<t.DebuggerStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DebuggerStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDoWhileStatement(\n node: t.Node | null | undefined,\n): node is t.DoWhileStatement;\nexport function isDoWhileStatement<Opts extends Options<t.DoWhileStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DoWhileStatement & Opts;\nexport function isDoWhileStatement<Opts extends Options<t.DoWhileStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DoWhileStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEmptyStatement(\n node: t.Node | null | undefined,\n): node is t.EmptyStatement;\nexport function isEmptyStatement<Opts extends Options<t.EmptyStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EmptyStatement & Opts;\nexport function isEmptyStatement<Opts extends Options<t.EmptyStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"EmptyStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExpressionStatement(\n node: t.Node | null | undefined,\n): node is t.ExpressionStatement;\nexport function isExpressionStatement<\n Opts extends Options<t.ExpressionStatement>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ExpressionStatement & Opts;\nexport function isExpressionStatement<\n Opts extends Options<t.ExpressionStatement>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ExpressionStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFile(node: t.Node | null | undefined): node is t.File;\nexport function isFile<Opts extends Options<t.File>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.File & Opts;\nexport function isFile<Opts extends Options<t.File>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"File\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isForInStatement(\n node: t.Node | null | undefined,\n): node is t.ForInStatement;\nexport function isForInStatement<Opts extends Options<t.ForInStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ForInStatement & Opts;\nexport function isForInStatement<Opts extends Options<t.ForInStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ForInStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isForStatement(\n node: t.Node | null | undefined,\n): node is t.ForStatement;\nexport function isForStatement<Opts extends Options<t.ForStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ForStatement & Opts;\nexport function isForStatement<Opts extends Options<t.ForStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ForStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionDeclaration(\n node: t.Node | null | undefined,\n): node is t.FunctionDeclaration;\nexport function isFunctionDeclaration<\n Opts extends Options<t.FunctionDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.FunctionDeclaration & Opts;\nexport function isFunctionDeclaration<\n Opts extends Options<t.FunctionDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"FunctionDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionExpression(\n node: t.Node | null | undefined,\n): node is t.FunctionExpression;\nexport function isFunctionExpression<\n Opts extends Options<t.FunctionExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.FunctionExpression & Opts;\nexport function isFunctionExpression<\n Opts extends Options<t.FunctionExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"FunctionExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isIdentifier(\n node: t.Node | null | undefined,\n): node is t.Identifier;\nexport function isIdentifier<Opts extends Options<t.Identifier>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Identifier & Opts;\nexport function isIdentifier<Opts extends Options<t.Identifier>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"Identifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isIfStatement(\n node: t.Node | null | undefined,\n): node is t.IfStatement;\nexport function isIfStatement<Opts extends Options<t.IfStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.IfStatement & Opts;\nexport function isIfStatement<Opts extends Options<t.IfStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"IfStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isLabeledStatement(\n node: t.Node | null | undefined,\n): node is t.LabeledStatement;\nexport function isLabeledStatement<Opts extends Options<t.LabeledStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.LabeledStatement & Opts;\nexport function isLabeledStatement<Opts extends Options<t.LabeledStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"LabeledStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isStringLiteral(\n node: t.Node | null | undefined,\n): node is t.StringLiteral;\nexport function isStringLiteral<Opts extends Options<t.StringLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.StringLiteral & Opts;\nexport function isStringLiteral<Opts extends Options<t.StringLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"StringLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNumericLiteral(\n node: t.Node | null | undefined,\n): node is t.NumericLiteral;\nexport function isNumericLiteral<Opts extends Options<t.NumericLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.NumericLiteral & Opts;\nexport function isNumericLiteral<Opts extends Options<t.NumericLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"NumericLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNullLiteral(\n node: t.Node | null | undefined,\n): node is t.NullLiteral;\nexport function isNullLiteral<Opts extends Options<t.NullLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.NullLiteral & Opts;\nexport function isNullLiteral<Opts extends Options<t.NullLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"NullLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBooleanLiteral(\n node: t.Node | null | undefined,\n): node is t.BooleanLiteral;\nexport function isBooleanLiteral<Opts extends Options<t.BooleanLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.BooleanLiteral & Opts;\nexport function isBooleanLiteral<Opts extends Options<t.BooleanLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"BooleanLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isRegExpLiteral(\n node: t.Node | null | undefined,\n): node is t.RegExpLiteral;\nexport function isRegExpLiteral<Opts extends Options<t.RegExpLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.RegExpLiteral & Opts;\nexport function isRegExpLiteral<Opts extends Options<t.RegExpLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"RegExpLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isLogicalExpression(\n node: t.Node | null | undefined,\n): node is t.LogicalExpression;\nexport function isLogicalExpression<Opts extends Options<t.LogicalExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.LogicalExpression & Opts;\nexport function isLogicalExpression<Opts extends Options<t.LogicalExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"LogicalExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isMemberExpression(\n node: t.Node | null | undefined,\n): node is t.MemberExpression;\nexport function isMemberExpression<Opts extends Options<t.MemberExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.MemberExpression & Opts;\nexport function isMemberExpression<Opts extends Options<t.MemberExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"MemberExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNewExpression(\n node: t.Node | null | undefined,\n): node is t.NewExpression;\nexport function isNewExpression<Opts extends Options<t.NewExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.NewExpression & Opts;\nexport function isNewExpression<Opts extends Options<t.NewExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"NewExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isProgram(node: t.Node | null | undefined): node is t.Program;\nexport function isProgram<Opts extends Options<t.Program>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Program & Opts;\nexport function isProgram<Opts extends Options<t.Program>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"Program\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectExpression(\n node: t.Node | null | undefined,\n): node is t.ObjectExpression;\nexport function isObjectExpression<Opts extends Options<t.ObjectExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectExpression & Opts;\nexport function isObjectExpression<Opts extends Options<t.ObjectExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ObjectExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectMethod(\n node: t.Node | null | undefined,\n): node is t.ObjectMethod;\nexport function isObjectMethod<Opts extends Options<t.ObjectMethod>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectMethod & Opts;\nexport function isObjectMethod<Opts extends Options<t.ObjectMethod>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ObjectMethod\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectProperty(\n node: t.Node | null | undefined,\n): node is t.ObjectProperty;\nexport function isObjectProperty<Opts extends Options<t.ObjectProperty>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectProperty & Opts;\nexport function isObjectProperty<Opts extends Options<t.ObjectProperty>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ObjectProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isRestElement(\n node: t.Node | null | undefined,\n): node is t.RestElement;\nexport function isRestElement<Opts extends Options<t.RestElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.RestElement & Opts;\nexport function isRestElement<Opts extends Options<t.RestElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"RestElement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isReturnStatement(\n node: t.Node | null | undefined,\n): node is t.ReturnStatement;\nexport function isReturnStatement<Opts extends Options<t.ReturnStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ReturnStatement & Opts;\nexport function isReturnStatement<Opts extends Options<t.ReturnStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ReturnStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isSequenceExpression(\n node: t.Node | null | undefined,\n): node is t.SequenceExpression;\nexport function isSequenceExpression<\n Opts extends Options<t.SequenceExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.SequenceExpression & Opts;\nexport function isSequenceExpression<\n Opts extends Options<t.SequenceExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"SequenceExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isParenthesizedExpression(\n node: t.Node | null | undefined,\n): node is t.ParenthesizedExpression;\nexport function isParenthesizedExpression<\n Opts extends Options<t.ParenthesizedExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ParenthesizedExpression & Opts;\nexport function isParenthesizedExpression<\n Opts extends Options<t.ParenthesizedExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ParenthesizedExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isSwitchCase(\n node: t.Node | null | undefined,\n): node is t.SwitchCase;\nexport function isSwitchCase<Opts extends Options<t.SwitchCase>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.SwitchCase & Opts;\nexport function isSwitchCase<Opts extends Options<t.SwitchCase>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"SwitchCase\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isSwitchStatement(\n node: t.Node | null | undefined,\n): node is t.SwitchStatement;\nexport function isSwitchStatement<Opts extends Options<t.SwitchStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.SwitchStatement & Opts;\nexport function isSwitchStatement<Opts extends Options<t.SwitchStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"SwitchStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isThisExpression(\n node: t.Node | null | undefined,\n): node is t.ThisExpression;\nexport function isThisExpression<Opts extends Options<t.ThisExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ThisExpression & Opts;\nexport function isThisExpression<Opts extends Options<t.ThisExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ThisExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isThrowStatement(\n node: t.Node | null | undefined,\n): node is t.ThrowStatement;\nexport function isThrowStatement<Opts extends Options<t.ThrowStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ThrowStatement & Opts;\nexport function isThrowStatement<Opts extends Options<t.ThrowStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ThrowStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTryStatement(\n node: t.Node | null | undefined,\n): node is t.TryStatement;\nexport function isTryStatement<Opts extends Options<t.TryStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TryStatement & Opts;\nexport function isTryStatement<Opts extends Options<t.TryStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TryStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isUnaryExpression(\n node: t.Node | null | undefined,\n): node is t.UnaryExpression;\nexport function isUnaryExpression<Opts extends Options<t.UnaryExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.UnaryExpression & Opts;\nexport function isUnaryExpression<Opts extends Options<t.UnaryExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"UnaryExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isUpdateExpression(\n node: t.Node | null | undefined,\n): node is t.UpdateExpression;\nexport function isUpdateExpression<Opts extends Options<t.UpdateExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.UpdateExpression & Opts;\nexport function isUpdateExpression<Opts extends Options<t.UpdateExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"UpdateExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isVariableDeclaration(\n node: t.Node | null | undefined,\n): node is t.VariableDeclaration;\nexport function isVariableDeclaration<\n Opts extends Options<t.VariableDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.VariableDeclaration & Opts;\nexport function isVariableDeclaration<\n Opts extends Options<t.VariableDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"VariableDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isVariableDeclarator(\n node: t.Node | null | undefined,\n): node is t.VariableDeclarator;\nexport function isVariableDeclarator<\n Opts extends Options<t.VariableDeclarator>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.VariableDeclarator & Opts;\nexport function isVariableDeclarator<\n Opts extends Options<t.VariableDeclarator>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"VariableDeclarator\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isWhileStatement(\n node: t.Node | null | undefined,\n): node is t.WhileStatement;\nexport function isWhileStatement<Opts extends Options<t.WhileStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.WhileStatement & Opts;\nexport function isWhileStatement<Opts extends Options<t.WhileStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"WhileStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isWithStatement(\n node: t.Node | null | undefined,\n): node is t.WithStatement;\nexport function isWithStatement<Opts extends Options<t.WithStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.WithStatement & Opts;\nexport function isWithStatement<Opts extends Options<t.WithStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"WithStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isAssignmentPattern(\n node: t.Node | null | undefined,\n): node is t.AssignmentPattern;\nexport function isAssignmentPattern<Opts extends Options<t.AssignmentPattern>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.AssignmentPattern & Opts;\nexport function isAssignmentPattern<Opts extends Options<t.AssignmentPattern>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"AssignmentPattern\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isArrayPattern(\n node: t.Node | null | undefined,\n): node is t.ArrayPattern;\nexport function isArrayPattern<Opts extends Options<t.ArrayPattern>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ArrayPattern & Opts;\nexport function isArrayPattern<Opts extends Options<t.ArrayPattern>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ArrayPattern\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isArrowFunctionExpression(\n node: t.Node | null | undefined,\n): node is t.ArrowFunctionExpression;\nexport function isArrowFunctionExpression<\n Opts extends Options<t.ArrowFunctionExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ArrowFunctionExpression & Opts;\nexport function isArrowFunctionExpression<\n Opts extends Options<t.ArrowFunctionExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ArrowFunctionExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassBody(\n node: t.Node | null | undefined,\n): node is t.ClassBody;\nexport function isClassBody<Opts extends Options<t.ClassBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ClassBody & Opts;\nexport function isClassBody<Opts extends Options<t.ClassBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ClassBody\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassExpression(\n node: t.Node | null | undefined,\n): node is t.ClassExpression;\nexport function isClassExpression<Opts extends Options<t.ClassExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ClassExpression & Opts;\nexport function isClassExpression<Opts extends Options<t.ClassExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ClassExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassDeclaration(\n node: t.Node | null | undefined,\n): node is t.ClassDeclaration;\nexport function isClassDeclaration<Opts extends Options<t.ClassDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ClassDeclaration & Opts;\nexport function isClassDeclaration<Opts extends Options<t.ClassDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ClassDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportAllDeclaration(\n node: t.Node | null | undefined,\n): node is t.ExportAllDeclaration;\nexport function isExportAllDeclaration<\n Opts extends Options<t.ExportAllDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ExportAllDeclaration & Opts;\nexport function isExportAllDeclaration<\n Opts extends Options<t.ExportAllDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ExportAllDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportDefaultDeclaration(\n node: t.Node | null | undefined,\n): node is t.ExportDefaultDeclaration;\nexport function isExportDefaultDeclaration<\n Opts extends Options<t.ExportDefaultDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ExportDefaultDeclaration & Opts;\nexport function isExportDefaultDeclaration<\n Opts extends Options<t.ExportDefaultDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ExportDefaultDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportNamedDeclaration(\n node: t.Node | null | undefined,\n): node is t.ExportNamedDeclaration;\nexport function isExportNamedDeclaration<\n Opts extends Options<t.ExportNamedDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ExportNamedDeclaration & Opts;\nexport function isExportNamedDeclaration<\n Opts extends Options<t.ExportNamedDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ExportNamedDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportSpecifier(\n node: t.Node | null | undefined,\n): node is t.ExportSpecifier;\nexport function isExportSpecifier<Opts extends Options<t.ExportSpecifier>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ExportSpecifier & Opts;\nexport function isExportSpecifier<Opts extends Options<t.ExportSpecifier>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ExportSpecifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isForOfStatement(\n node: t.Node | null | undefined,\n): node is t.ForOfStatement;\nexport function isForOfStatement<Opts extends Options<t.ForOfStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ForOfStatement & Opts;\nexport function isForOfStatement<Opts extends Options<t.ForOfStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ForOfStatement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportDeclaration(\n node: t.Node | null | undefined,\n): node is t.ImportDeclaration;\nexport function isImportDeclaration<Opts extends Options<t.ImportDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ImportDeclaration & Opts;\nexport function isImportDeclaration<Opts extends Options<t.ImportDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ImportDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportDefaultSpecifier(\n node: t.Node | null | undefined,\n): node is t.ImportDefaultSpecifier;\nexport function isImportDefaultSpecifier<\n Opts extends Options<t.ImportDefaultSpecifier>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ImportDefaultSpecifier & Opts;\nexport function isImportDefaultSpecifier<\n Opts extends Options<t.ImportDefaultSpecifier>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ImportDefaultSpecifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportNamespaceSpecifier(\n node: t.Node | null | undefined,\n): node is t.ImportNamespaceSpecifier;\nexport function isImportNamespaceSpecifier<\n Opts extends Options<t.ImportNamespaceSpecifier>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ImportNamespaceSpecifier & Opts;\nexport function isImportNamespaceSpecifier<\n Opts extends Options<t.ImportNamespaceSpecifier>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ImportNamespaceSpecifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportSpecifier(\n node: t.Node | null | undefined,\n): node is t.ImportSpecifier;\nexport function isImportSpecifier<Opts extends Options<t.ImportSpecifier>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ImportSpecifier & Opts;\nexport function isImportSpecifier<Opts extends Options<t.ImportSpecifier>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ImportSpecifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportExpression(\n node: t.Node | null | undefined,\n): node is t.ImportExpression;\nexport function isImportExpression<Opts extends Options<t.ImportExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ImportExpression & Opts;\nexport function isImportExpression<Opts extends Options<t.ImportExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ImportExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isMetaProperty(\n node: t.Node | null | undefined,\n): node is t.MetaProperty;\nexport function isMetaProperty<Opts extends Options<t.MetaProperty>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.MetaProperty & Opts;\nexport function isMetaProperty<Opts extends Options<t.MetaProperty>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"MetaProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassMethod(\n node: t.Node | null | undefined,\n): node is t.ClassMethod;\nexport function isClassMethod<Opts extends Options<t.ClassMethod>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ClassMethod & Opts;\nexport function isClassMethod<Opts extends Options<t.ClassMethod>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ClassMethod\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectPattern(\n node: t.Node | null | undefined,\n): node is t.ObjectPattern;\nexport function isObjectPattern<Opts extends Options<t.ObjectPattern>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectPattern & Opts;\nexport function isObjectPattern<Opts extends Options<t.ObjectPattern>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ObjectPattern\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isSpreadElement(\n node: t.Node | null | undefined,\n): node is t.SpreadElement;\nexport function isSpreadElement<Opts extends Options<t.SpreadElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.SpreadElement & Opts;\nexport function isSpreadElement<Opts extends Options<t.SpreadElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"SpreadElement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isSuper(node: t.Node | null | undefined): node is t.Super;\nexport function isSuper<Opts extends Options<t.Super>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Super & Opts;\nexport function isSuper<Opts extends Options<t.Super>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"Super\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTaggedTemplateExpression(\n node: t.Node | null | undefined,\n): node is t.TaggedTemplateExpression;\nexport function isTaggedTemplateExpression<\n Opts extends Options<t.TaggedTemplateExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TaggedTemplateExpression & Opts;\nexport function isTaggedTemplateExpression<\n Opts extends Options<t.TaggedTemplateExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TaggedTemplateExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTemplateElement(\n node: t.Node | null | undefined,\n): node is t.TemplateElement;\nexport function isTemplateElement<Opts extends Options<t.TemplateElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TemplateElement & Opts;\nexport function isTemplateElement<Opts extends Options<t.TemplateElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TemplateElement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTemplateLiteral(\n node: t.Node | null | undefined,\n): node is t.TemplateLiteral;\nexport function isTemplateLiteral<Opts extends Options<t.TemplateLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TemplateLiteral & Opts;\nexport function isTemplateLiteral<Opts extends Options<t.TemplateLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TemplateLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isYieldExpression(\n node: t.Node | null | undefined,\n): node is t.YieldExpression;\nexport function isYieldExpression<Opts extends Options<t.YieldExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.YieldExpression & Opts;\nexport function isYieldExpression<Opts extends Options<t.YieldExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"YieldExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isAwaitExpression(\n node: t.Node | null | undefined,\n): node is t.AwaitExpression;\nexport function isAwaitExpression<Opts extends Options<t.AwaitExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.AwaitExpression & Opts;\nexport function isAwaitExpression<Opts extends Options<t.AwaitExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"AwaitExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImport(node: t.Node | null | undefined): node is t.Import;\nexport function isImport<Opts extends Options<t.Import>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Import & Opts;\nexport function isImport<Opts extends Options<t.Import>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"Import\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBigIntLiteral(\n node: t.Node | null | undefined,\n): node is t.BigIntLiteral;\nexport function isBigIntLiteral<Opts extends Options<t.BigIntLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.BigIntLiteral & Opts;\nexport function isBigIntLiteral<Opts extends Options<t.BigIntLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"BigIntLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportNamespaceSpecifier(\n node: t.Node | null | undefined,\n): node is t.ExportNamespaceSpecifier;\nexport function isExportNamespaceSpecifier<\n Opts extends Options<t.ExportNamespaceSpecifier>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ExportNamespaceSpecifier & Opts;\nexport function isExportNamespaceSpecifier<\n Opts extends Options<t.ExportNamespaceSpecifier>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ExportNamespaceSpecifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isOptionalMemberExpression(\n node: t.Node | null | undefined,\n): node is t.OptionalMemberExpression;\nexport function isOptionalMemberExpression<\n Opts extends Options<t.OptionalMemberExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.OptionalMemberExpression & Opts;\nexport function isOptionalMemberExpression<\n Opts extends Options<t.OptionalMemberExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"OptionalMemberExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isOptionalCallExpression(\n node: t.Node | null | undefined,\n): node is t.OptionalCallExpression;\nexport function isOptionalCallExpression<\n Opts extends Options<t.OptionalCallExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.OptionalCallExpression & Opts;\nexport function isOptionalCallExpression<\n Opts extends Options<t.OptionalCallExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"OptionalCallExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassProperty(\n node: t.Node | null | undefined,\n): node is t.ClassProperty;\nexport function isClassProperty<Opts extends Options<t.ClassProperty>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ClassProperty & Opts;\nexport function isClassProperty<Opts extends Options<t.ClassProperty>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ClassProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassAccessorProperty(\n node: t.Node | null | undefined,\n): node is t.ClassAccessorProperty;\nexport function isClassAccessorProperty<\n Opts extends Options<t.ClassAccessorProperty>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ClassAccessorProperty & Opts;\nexport function isClassAccessorProperty<\n Opts extends Options<t.ClassAccessorProperty>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ClassAccessorProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassPrivateProperty(\n node: t.Node | null | undefined,\n): node is t.ClassPrivateProperty;\nexport function isClassPrivateProperty<\n Opts extends Options<t.ClassPrivateProperty>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ClassPrivateProperty & Opts;\nexport function isClassPrivateProperty<\n Opts extends Options<t.ClassPrivateProperty>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ClassPrivateProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassPrivateMethod(\n node: t.Node | null | undefined,\n): node is t.ClassPrivateMethod;\nexport function isClassPrivateMethod<\n Opts extends Options<t.ClassPrivateMethod>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ClassPrivateMethod & Opts;\nexport function isClassPrivateMethod<\n Opts extends Options<t.ClassPrivateMethod>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ClassPrivateMethod\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPrivateName(\n node: t.Node | null | undefined,\n): node is t.PrivateName;\nexport function isPrivateName<Opts extends Options<t.PrivateName>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.PrivateName & Opts;\nexport function isPrivateName<Opts extends Options<t.PrivateName>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"PrivateName\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isStaticBlock(\n node: t.Node | null | undefined,\n): node is t.StaticBlock;\nexport function isStaticBlock<Opts extends Options<t.StaticBlock>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.StaticBlock & Opts;\nexport function isStaticBlock<Opts extends Options<t.StaticBlock>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"StaticBlock\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportAttribute(\n node: t.Node | null | undefined,\n): node is t.ImportAttribute;\nexport function isImportAttribute<Opts extends Options<t.ImportAttribute>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ImportAttribute & Opts;\nexport function isImportAttribute<Opts extends Options<t.ImportAttribute>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ImportAttribute\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isAnyTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.AnyTypeAnnotation;\nexport function isAnyTypeAnnotation<Opts extends Options<t.AnyTypeAnnotation>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.AnyTypeAnnotation & Opts;\nexport function isAnyTypeAnnotation<Opts extends Options<t.AnyTypeAnnotation>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"AnyTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isArrayTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.ArrayTypeAnnotation;\nexport function isArrayTypeAnnotation<\n Opts extends Options<t.ArrayTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ArrayTypeAnnotation & Opts;\nexport function isArrayTypeAnnotation<\n Opts extends Options<t.ArrayTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ArrayTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBooleanTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.BooleanTypeAnnotation;\nexport function isBooleanTypeAnnotation<\n Opts extends Options<t.BooleanTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.BooleanTypeAnnotation & Opts;\nexport function isBooleanTypeAnnotation<\n Opts extends Options<t.BooleanTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"BooleanTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBooleanLiteralTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.BooleanLiteralTypeAnnotation;\nexport function isBooleanLiteralTypeAnnotation<\n Opts extends Options<t.BooleanLiteralTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.BooleanLiteralTypeAnnotation & Opts;\nexport function isBooleanLiteralTypeAnnotation<\n Opts extends Options<t.BooleanLiteralTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"BooleanLiteralTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNullLiteralTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.NullLiteralTypeAnnotation;\nexport function isNullLiteralTypeAnnotation<\n Opts extends Options<t.NullLiteralTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.NullLiteralTypeAnnotation & Opts;\nexport function isNullLiteralTypeAnnotation<\n Opts extends Options<t.NullLiteralTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"NullLiteralTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClassImplements(\n node: t.Node | null | undefined,\n): node is t.ClassImplements;\nexport function isClassImplements<Opts extends Options<t.ClassImplements>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ClassImplements & Opts;\nexport function isClassImplements<Opts extends Options<t.ClassImplements>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ClassImplements\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareClass(\n node: t.Node | null | undefined,\n): node is t.DeclareClass;\nexport function isDeclareClass<Opts extends Options<t.DeclareClass>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclareClass & Opts;\nexport function isDeclareClass<Opts extends Options<t.DeclareClass>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclareClass\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareFunction(\n node: t.Node | null | undefined,\n): node is t.DeclareFunction;\nexport function isDeclareFunction<Opts extends Options<t.DeclareFunction>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclareFunction & Opts;\nexport function isDeclareFunction<Opts extends Options<t.DeclareFunction>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclareFunction\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareInterface(\n node: t.Node | null | undefined,\n): node is t.DeclareInterface;\nexport function isDeclareInterface<Opts extends Options<t.DeclareInterface>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclareInterface & Opts;\nexport function isDeclareInterface<Opts extends Options<t.DeclareInterface>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclareInterface\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareModule(\n node: t.Node | null | undefined,\n): node is t.DeclareModule;\nexport function isDeclareModule<Opts extends Options<t.DeclareModule>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclareModule & Opts;\nexport function isDeclareModule<Opts extends Options<t.DeclareModule>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclareModule\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareModuleExports(\n node: t.Node | null | undefined,\n): node is t.DeclareModuleExports;\nexport function isDeclareModuleExports<\n Opts extends Options<t.DeclareModuleExports>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclareModuleExports & Opts;\nexport function isDeclareModuleExports<\n Opts extends Options<t.DeclareModuleExports>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclareModuleExports\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareTypeAlias(\n node: t.Node | null | undefined,\n): node is t.DeclareTypeAlias;\nexport function isDeclareTypeAlias<Opts extends Options<t.DeclareTypeAlias>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclareTypeAlias & Opts;\nexport function isDeclareTypeAlias<Opts extends Options<t.DeclareTypeAlias>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclareTypeAlias\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareOpaqueType(\n node: t.Node | null | undefined,\n): node is t.DeclareOpaqueType;\nexport function isDeclareOpaqueType<Opts extends Options<t.DeclareOpaqueType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclareOpaqueType & Opts;\nexport function isDeclareOpaqueType<Opts extends Options<t.DeclareOpaqueType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclareOpaqueType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareVariable(\n node: t.Node | null | undefined,\n): node is t.DeclareVariable;\nexport function isDeclareVariable<Opts extends Options<t.DeclareVariable>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclareVariable & Opts;\nexport function isDeclareVariable<Opts extends Options<t.DeclareVariable>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclareVariable\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareExportDeclaration(\n node: t.Node | null | undefined,\n): node is t.DeclareExportDeclaration;\nexport function isDeclareExportDeclaration<\n Opts extends Options<t.DeclareExportDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclareExportDeclaration & Opts;\nexport function isDeclareExportDeclaration<\n Opts extends Options<t.DeclareExportDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclareExportDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareExportAllDeclaration(\n node: t.Node | null | undefined,\n): node is t.DeclareExportAllDeclaration;\nexport function isDeclareExportAllDeclaration<\n Opts extends Options<t.DeclareExportAllDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclareExportAllDeclaration & Opts;\nexport function isDeclareExportAllDeclaration<\n Opts extends Options<t.DeclareExportAllDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclareExportAllDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclaredPredicate(\n node: t.Node | null | undefined,\n): node is t.DeclaredPredicate;\nexport function isDeclaredPredicate<Opts extends Options<t.DeclaredPredicate>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DeclaredPredicate & Opts;\nexport function isDeclaredPredicate<Opts extends Options<t.DeclaredPredicate>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DeclaredPredicate\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExistsTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.ExistsTypeAnnotation;\nexport function isExistsTypeAnnotation<\n Opts extends Options<t.ExistsTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ExistsTypeAnnotation & Opts;\nexport function isExistsTypeAnnotation<\n Opts extends Options<t.ExistsTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ExistsTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.FunctionTypeAnnotation;\nexport function isFunctionTypeAnnotation<\n Opts extends Options<t.FunctionTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.FunctionTypeAnnotation & Opts;\nexport function isFunctionTypeAnnotation<\n Opts extends Options<t.FunctionTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"FunctionTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionTypeParam(\n node: t.Node | null | undefined,\n): node is t.FunctionTypeParam;\nexport function isFunctionTypeParam<Opts extends Options<t.FunctionTypeParam>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.FunctionTypeParam & Opts;\nexport function isFunctionTypeParam<Opts extends Options<t.FunctionTypeParam>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"FunctionTypeParam\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isGenericTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.GenericTypeAnnotation;\nexport function isGenericTypeAnnotation<\n Opts extends Options<t.GenericTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.GenericTypeAnnotation & Opts;\nexport function isGenericTypeAnnotation<\n Opts extends Options<t.GenericTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"GenericTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isInferredPredicate(\n node: t.Node | null | undefined,\n): node is t.InferredPredicate;\nexport function isInferredPredicate<Opts extends Options<t.InferredPredicate>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.InferredPredicate & Opts;\nexport function isInferredPredicate<Opts extends Options<t.InferredPredicate>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"InferredPredicate\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isInterfaceExtends(\n node: t.Node | null | undefined,\n): node is t.InterfaceExtends;\nexport function isInterfaceExtends<Opts extends Options<t.InterfaceExtends>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.InterfaceExtends & Opts;\nexport function isInterfaceExtends<Opts extends Options<t.InterfaceExtends>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"InterfaceExtends\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isInterfaceDeclaration(\n node: t.Node | null | undefined,\n): node is t.InterfaceDeclaration;\nexport function isInterfaceDeclaration<\n Opts extends Options<t.InterfaceDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.InterfaceDeclaration & Opts;\nexport function isInterfaceDeclaration<\n Opts extends Options<t.InterfaceDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"InterfaceDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isInterfaceTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.InterfaceTypeAnnotation;\nexport function isInterfaceTypeAnnotation<\n Opts extends Options<t.InterfaceTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.InterfaceTypeAnnotation & Opts;\nexport function isInterfaceTypeAnnotation<\n Opts extends Options<t.InterfaceTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"InterfaceTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isIntersectionTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.IntersectionTypeAnnotation;\nexport function isIntersectionTypeAnnotation<\n Opts extends Options<t.IntersectionTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.IntersectionTypeAnnotation & Opts;\nexport function isIntersectionTypeAnnotation<\n Opts extends Options<t.IntersectionTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"IntersectionTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isMixedTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.MixedTypeAnnotation;\nexport function isMixedTypeAnnotation<\n Opts extends Options<t.MixedTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.MixedTypeAnnotation & Opts;\nexport function isMixedTypeAnnotation<\n Opts extends Options<t.MixedTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"MixedTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEmptyTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.EmptyTypeAnnotation;\nexport function isEmptyTypeAnnotation<\n Opts extends Options<t.EmptyTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EmptyTypeAnnotation & Opts;\nexport function isEmptyTypeAnnotation<\n Opts extends Options<t.EmptyTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"EmptyTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNullableTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.NullableTypeAnnotation;\nexport function isNullableTypeAnnotation<\n Opts extends Options<t.NullableTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.NullableTypeAnnotation & Opts;\nexport function isNullableTypeAnnotation<\n Opts extends Options<t.NullableTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"NullableTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNumberLiteralTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.NumberLiteralTypeAnnotation;\nexport function isNumberLiteralTypeAnnotation<\n Opts extends Options<t.NumberLiteralTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.NumberLiteralTypeAnnotation & Opts;\nexport function isNumberLiteralTypeAnnotation<\n Opts extends Options<t.NumberLiteralTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"NumberLiteralTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNumberTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.NumberTypeAnnotation;\nexport function isNumberTypeAnnotation<\n Opts extends Options<t.NumberTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.NumberTypeAnnotation & Opts;\nexport function isNumberTypeAnnotation<\n Opts extends Options<t.NumberTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"NumberTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.ObjectTypeAnnotation;\nexport function isObjectTypeAnnotation<\n Opts extends Options<t.ObjectTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectTypeAnnotation & Opts;\nexport function isObjectTypeAnnotation<\n Opts extends Options<t.ObjectTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ObjectTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeInternalSlot(\n node: t.Node | null | undefined,\n): node is t.ObjectTypeInternalSlot;\nexport function isObjectTypeInternalSlot<\n Opts extends Options<t.ObjectTypeInternalSlot>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectTypeInternalSlot & Opts;\nexport function isObjectTypeInternalSlot<\n Opts extends Options<t.ObjectTypeInternalSlot>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ObjectTypeInternalSlot\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeCallProperty(\n node: t.Node | null | undefined,\n): node is t.ObjectTypeCallProperty;\nexport function isObjectTypeCallProperty<\n Opts extends Options<t.ObjectTypeCallProperty>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectTypeCallProperty & Opts;\nexport function isObjectTypeCallProperty<\n Opts extends Options<t.ObjectTypeCallProperty>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ObjectTypeCallProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeIndexer(\n node: t.Node | null | undefined,\n): node is t.ObjectTypeIndexer;\nexport function isObjectTypeIndexer<Opts extends Options<t.ObjectTypeIndexer>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectTypeIndexer & Opts;\nexport function isObjectTypeIndexer<Opts extends Options<t.ObjectTypeIndexer>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ObjectTypeIndexer\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeProperty(\n node: t.Node | null | undefined,\n): node is t.ObjectTypeProperty;\nexport function isObjectTypeProperty<\n Opts extends Options<t.ObjectTypeProperty>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectTypeProperty & Opts;\nexport function isObjectTypeProperty<\n Opts extends Options<t.ObjectTypeProperty>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ObjectTypeProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeSpreadProperty(\n node: t.Node | null | undefined,\n): node is t.ObjectTypeSpreadProperty;\nexport function isObjectTypeSpreadProperty<\n Opts extends Options<t.ObjectTypeSpreadProperty>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectTypeSpreadProperty & Opts;\nexport function isObjectTypeSpreadProperty<\n Opts extends Options<t.ObjectTypeSpreadProperty>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ObjectTypeSpreadProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isOpaqueType(\n node: t.Node | null | undefined,\n): node is t.OpaqueType;\nexport function isOpaqueType<Opts extends Options<t.OpaqueType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.OpaqueType & Opts;\nexport function isOpaqueType<Opts extends Options<t.OpaqueType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"OpaqueType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isQualifiedTypeIdentifier(\n node: t.Node | null | undefined,\n): node is t.QualifiedTypeIdentifier;\nexport function isQualifiedTypeIdentifier<\n Opts extends Options<t.QualifiedTypeIdentifier>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.QualifiedTypeIdentifier & Opts;\nexport function isQualifiedTypeIdentifier<\n Opts extends Options<t.QualifiedTypeIdentifier>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"QualifiedTypeIdentifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isStringLiteralTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.StringLiteralTypeAnnotation;\nexport function isStringLiteralTypeAnnotation<\n Opts extends Options<t.StringLiteralTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.StringLiteralTypeAnnotation & Opts;\nexport function isStringLiteralTypeAnnotation<\n Opts extends Options<t.StringLiteralTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"StringLiteralTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isStringTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.StringTypeAnnotation;\nexport function isStringTypeAnnotation<\n Opts extends Options<t.StringTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.StringTypeAnnotation & Opts;\nexport function isStringTypeAnnotation<\n Opts extends Options<t.StringTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"StringTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isSymbolTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.SymbolTypeAnnotation;\nexport function isSymbolTypeAnnotation<\n Opts extends Options<t.SymbolTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.SymbolTypeAnnotation & Opts;\nexport function isSymbolTypeAnnotation<\n Opts extends Options<t.SymbolTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"SymbolTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isThisTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.ThisTypeAnnotation;\nexport function isThisTypeAnnotation<\n Opts extends Options<t.ThisTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ThisTypeAnnotation & Opts;\nexport function isThisTypeAnnotation<\n Opts extends Options<t.ThisTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ThisTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTupleTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.TupleTypeAnnotation;\nexport function isTupleTypeAnnotation<\n Opts extends Options<t.TupleTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TupleTypeAnnotation & Opts;\nexport function isTupleTypeAnnotation<\n Opts extends Options<t.TupleTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TupleTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeofTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.TypeofTypeAnnotation;\nexport function isTypeofTypeAnnotation<\n Opts extends Options<t.TypeofTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TypeofTypeAnnotation & Opts;\nexport function isTypeofTypeAnnotation<\n Opts extends Options<t.TypeofTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TypeofTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeAlias(\n node: t.Node | null | undefined,\n): node is t.TypeAlias;\nexport function isTypeAlias<Opts extends Options<t.TypeAlias>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TypeAlias & Opts;\nexport function isTypeAlias<Opts extends Options<t.TypeAlias>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TypeAlias\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.TypeAnnotation;\nexport function isTypeAnnotation<Opts extends Options<t.TypeAnnotation>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TypeAnnotation & Opts;\nexport function isTypeAnnotation<Opts extends Options<t.TypeAnnotation>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeCastExpression(\n node: t.Node | null | undefined,\n): node is t.TypeCastExpression;\nexport function isTypeCastExpression<\n Opts extends Options<t.TypeCastExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TypeCastExpression & Opts;\nexport function isTypeCastExpression<\n Opts extends Options<t.TypeCastExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TypeCastExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeParameter(\n node: t.Node | null | undefined,\n): node is t.TypeParameter;\nexport function isTypeParameter<Opts extends Options<t.TypeParameter>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TypeParameter & Opts;\nexport function isTypeParameter<Opts extends Options<t.TypeParameter>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TypeParameter\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeParameterDeclaration(\n node: t.Node | null | undefined,\n): node is t.TypeParameterDeclaration;\nexport function isTypeParameterDeclaration<\n Opts extends Options<t.TypeParameterDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TypeParameterDeclaration & Opts;\nexport function isTypeParameterDeclaration<\n Opts extends Options<t.TypeParameterDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TypeParameterDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeParameterInstantiation(\n node: t.Node | null | undefined,\n): node is t.TypeParameterInstantiation;\nexport function isTypeParameterInstantiation<\n Opts extends Options<t.TypeParameterInstantiation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TypeParameterInstantiation & Opts;\nexport function isTypeParameterInstantiation<\n Opts extends Options<t.TypeParameterInstantiation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TypeParameterInstantiation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isUnionTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.UnionTypeAnnotation;\nexport function isUnionTypeAnnotation<\n Opts extends Options<t.UnionTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.UnionTypeAnnotation & Opts;\nexport function isUnionTypeAnnotation<\n Opts extends Options<t.UnionTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"UnionTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isVariance(node: t.Node | null | undefined): node is t.Variance;\nexport function isVariance<Opts extends Options<t.Variance>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Variance & Opts;\nexport function isVariance<Opts extends Options<t.Variance>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"Variance\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isVoidTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.VoidTypeAnnotation;\nexport function isVoidTypeAnnotation<\n Opts extends Options<t.VoidTypeAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.VoidTypeAnnotation & Opts;\nexport function isVoidTypeAnnotation<\n Opts extends Options<t.VoidTypeAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"VoidTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumDeclaration(\n node: t.Node | null | undefined,\n): node is t.EnumDeclaration;\nexport function isEnumDeclaration<Opts extends Options<t.EnumDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumDeclaration & Opts;\nexport function isEnumDeclaration<Opts extends Options<t.EnumDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"EnumDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumBooleanBody(\n node: t.Node | null | undefined,\n): node is t.EnumBooleanBody;\nexport function isEnumBooleanBody<Opts extends Options<t.EnumBooleanBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumBooleanBody & Opts;\nexport function isEnumBooleanBody<Opts extends Options<t.EnumBooleanBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"EnumBooleanBody\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumNumberBody(\n node: t.Node | null | undefined,\n): node is t.EnumNumberBody;\nexport function isEnumNumberBody<Opts extends Options<t.EnumNumberBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumNumberBody & Opts;\nexport function isEnumNumberBody<Opts extends Options<t.EnumNumberBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"EnumNumberBody\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumStringBody(\n node: t.Node | null | undefined,\n): node is t.EnumStringBody;\nexport function isEnumStringBody<Opts extends Options<t.EnumStringBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumStringBody & Opts;\nexport function isEnumStringBody<Opts extends Options<t.EnumStringBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"EnumStringBody\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumSymbolBody(\n node: t.Node | null | undefined,\n): node is t.EnumSymbolBody;\nexport function isEnumSymbolBody<Opts extends Options<t.EnumSymbolBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumSymbolBody & Opts;\nexport function isEnumSymbolBody<Opts extends Options<t.EnumSymbolBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"EnumSymbolBody\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumBooleanMember(\n node: t.Node | null | undefined,\n): node is t.EnumBooleanMember;\nexport function isEnumBooleanMember<Opts extends Options<t.EnumBooleanMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumBooleanMember & Opts;\nexport function isEnumBooleanMember<Opts extends Options<t.EnumBooleanMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"EnumBooleanMember\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumNumberMember(\n node: t.Node | null | undefined,\n): node is t.EnumNumberMember;\nexport function isEnumNumberMember<Opts extends Options<t.EnumNumberMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumNumberMember & Opts;\nexport function isEnumNumberMember<Opts extends Options<t.EnumNumberMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"EnumNumberMember\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumStringMember(\n node: t.Node | null | undefined,\n): node is t.EnumStringMember;\nexport function isEnumStringMember<Opts extends Options<t.EnumStringMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumStringMember & Opts;\nexport function isEnumStringMember<Opts extends Options<t.EnumStringMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"EnumStringMember\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumDefaultedMember(\n node: t.Node | null | undefined,\n): node is t.EnumDefaultedMember;\nexport function isEnumDefaultedMember<\n Opts extends Options<t.EnumDefaultedMember>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumDefaultedMember & Opts;\nexport function isEnumDefaultedMember<\n Opts extends Options<t.EnumDefaultedMember>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"EnumDefaultedMember\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isIndexedAccessType(\n node: t.Node | null | undefined,\n): node is t.IndexedAccessType;\nexport function isIndexedAccessType<Opts extends Options<t.IndexedAccessType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.IndexedAccessType & Opts;\nexport function isIndexedAccessType<Opts extends Options<t.IndexedAccessType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"IndexedAccessType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isOptionalIndexedAccessType(\n node: t.Node | null | undefined,\n): node is t.OptionalIndexedAccessType;\nexport function isOptionalIndexedAccessType<\n Opts extends Options<t.OptionalIndexedAccessType>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.OptionalIndexedAccessType & Opts;\nexport function isOptionalIndexedAccessType<\n Opts extends Options<t.OptionalIndexedAccessType>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"OptionalIndexedAccessType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXAttribute(\n node: t.Node | null | undefined,\n): node is t.JSXAttribute;\nexport function isJSXAttribute<Opts extends Options<t.JSXAttribute>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXAttribute & Opts;\nexport function isJSXAttribute<Opts extends Options<t.JSXAttribute>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXAttribute\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXClosingElement(\n node: t.Node | null | undefined,\n): node is t.JSXClosingElement;\nexport function isJSXClosingElement<Opts extends Options<t.JSXClosingElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXClosingElement & Opts;\nexport function isJSXClosingElement<Opts extends Options<t.JSXClosingElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXClosingElement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXElement(\n node: t.Node | null | undefined,\n): node is t.JSXElement;\nexport function isJSXElement<Opts extends Options<t.JSXElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXElement & Opts;\nexport function isJSXElement<Opts extends Options<t.JSXElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXElement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXEmptyExpression(\n node: t.Node | null | undefined,\n): node is t.JSXEmptyExpression;\nexport function isJSXEmptyExpression<\n Opts extends Options<t.JSXEmptyExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXEmptyExpression & Opts;\nexport function isJSXEmptyExpression<\n Opts extends Options<t.JSXEmptyExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXEmptyExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXExpressionContainer(\n node: t.Node | null | undefined,\n): node is t.JSXExpressionContainer;\nexport function isJSXExpressionContainer<\n Opts extends Options<t.JSXExpressionContainer>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXExpressionContainer & Opts;\nexport function isJSXExpressionContainer<\n Opts extends Options<t.JSXExpressionContainer>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXExpressionContainer\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXSpreadChild(\n node: t.Node | null | undefined,\n): node is t.JSXSpreadChild;\nexport function isJSXSpreadChild<Opts extends Options<t.JSXSpreadChild>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXSpreadChild & Opts;\nexport function isJSXSpreadChild<Opts extends Options<t.JSXSpreadChild>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXSpreadChild\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXIdentifier(\n node: t.Node | null | undefined,\n): node is t.JSXIdentifier;\nexport function isJSXIdentifier<Opts extends Options<t.JSXIdentifier>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXIdentifier & Opts;\nexport function isJSXIdentifier<Opts extends Options<t.JSXIdentifier>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXIdentifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXMemberExpression(\n node: t.Node | null | undefined,\n): node is t.JSXMemberExpression;\nexport function isJSXMemberExpression<\n Opts extends Options<t.JSXMemberExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXMemberExpression & Opts;\nexport function isJSXMemberExpression<\n Opts extends Options<t.JSXMemberExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXMemberExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXNamespacedName(\n node: t.Node | null | undefined,\n): node is t.JSXNamespacedName;\nexport function isJSXNamespacedName<Opts extends Options<t.JSXNamespacedName>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXNamespacedName & Opts;\nexport function isJSXNamespacedName<Opts extends Options<t.JSXNamespacedName>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXNamespacedName\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXOpeningElement(\n node: t.Node | null | undefined,\n): node is t.JSXOpeningElement;\nexport function isJSXOpeningElement<Opts extends Options<t.JSXOpeningElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXOpeningElement & Opts;\nexport function isJSXOpeningElement<Opts extends Options<t.JSXOpeningElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXOpeningElement\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXSpreadAttribute(\n node: t.Node | null | undefined,\n): node is t.JSXSpreadAttribute;\nexport function isJSXSpreadAttribute<\n Opts extends Options<t.JSXSpreadAttribute>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXSpreadAttribute & Opts;\nexport function isJSXSpreadAttribute<\n Opts extends Options<t.JSXSpreadAttribute>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXSpreadAttribute\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXText(node: t.Node | null | undefined): node is t.JSXText;\nexport function isJSXText<Opts extends Options<t.JSXText>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXText & Opts;\nexport function isJSXText<Opts extends Options<t.JSXText>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXText\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXFragment(\n node: t.Node | null | undefined,\n): node is t.JSXFragment;\nexport function isJSXFragment<Opts extends Options<t.JSXFragment>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXFragment & Opts;\nexport function isJSXFragment<Opts extends Options<t.JSXFragment>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXFragment\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXOpeningFragment(\n node: t.Node | null | undefined,\n): node is t.JSXOpeningFragment;\nexport function isJSXOpeningFragment<\n Opts extends Options<t.JSXOpeningFragment>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXOpeningFragment & Opts;\nexport function isJSXOpeningFragment<\n Opts extends Options<t.JSXOpeningFragment>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXOpeningFragment\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXClosingFragment(\n node: t.Node | null | undefined,\n): node is t.JSXClosingFragment;\nexport function isJSXClosingFragment<\n Opts extends Options<t.JSXClosingFragment>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSXClosingFragment & Opts;\nexport function isJSXClosingFragment<\n Opts extends Options<t.JSXClosingFragment>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"JSXClosingFragment\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isNoop(node: t.Node | null | undefined): node is t.Noop;\nexport function isNoop<Opts extends Options<t.Noop>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Noop & Opts;\nexport function isNoop<Opts extends Options<t.Noop>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"Noop\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPlaceholder(\n node: t.Node | null | undefined,\n): node is t.Placeholder;\nexport function isPlaceholder<Opts extends Options<t.Placeholder>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Placeholder & Opts;\nexport function isPlaceholder<Opts extends Options<t.Placeholder>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"Placeholder\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isV8IntrinsicIdentifier(\n node: t.Node | null | undefined,\n): node is t.V8IntrinsicIdentifier;\nexport function isV8IntrinsicIdentifier<\n Opts extends Options<t.V8IntrinsicIdentifier>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.V8IntrinsicIdentifier & Opts;\nexport function isV8IntrinsicIdentifier<\n Opts extends Options<t.V8IntrinsicIdentifier>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"V8IntrinsicIdentifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isArgumentPlaceholder(\n node: t.Node | null | undefined,\n): node is t.ArgumentPlaceholder;\nexport function isArgumentPlaceholder<\n Opts extends Options<t.ArgumentPlaceholder>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ArgumentPlaceholder & Opts;\nexport function isArgumentPlaceholder<\n Opts extends Options<t.ArgumentPlaceholder>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ArgumentPlaceholder\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBindExpression(\n node: t.Node | null | undefined,\n): node is t.BindExpression;\nexport function isBindExpression<Opts extends Options<t.BindExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.BindExpression & Opts;\nexport function isBindExpression<Opts extends Options<t.BindExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"BindExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDecorator(\n node: t.Node | null | undefined,\n): node is t.Decorator;\nexport function isDecorator<Opts extends Options<t.Decorator>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Decorator & Opts;\nexport function isDecorator<Opts extends Options<t.Decorator>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"Decorator\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDoExpression(\n node: t.Node | null | undefined,\n): node is t.DoExpression;\nexport function isDoExpression<Opts extends Options<t.DoExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DoExpression & Opts;\nexport function isDoExpression<Opts extends Options<t.DoExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DoExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportDefaultSpecifier(\n node: t.Node | null | undefined,\n): node is t.ExportDefaultSpecifier;\nexport function isExportDefaultSpecifier<\n Opts extends Options<t.ExportDefaultSpecifier>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ExportDefaultSpecifier & Opts;\nexport function isExportDefaultSpecifier<\n Opts extends Options<t.ExportDefaultSpecifier>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"ExportDefaultSpecifier\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isRecordExpression(\n node: t.Node | null | undefined,\n): node is t.RecordExpression;\nexport function isRecordExpression<Opts extends Options<t.RecordExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.RecordExpression & Opts;\nexport function isRecordExpression<Opts extends Options<t.RecordExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"RecordExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTupleExpression(\n node: t.Node | null | undefined,\n): node is t.TupleExpression;\nexport function isTupleExpression<Opts extends Options<t.TupleExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TupleExpression & Opts;\nexport function isTupleExpression<Opts extends Options<t.TupleExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TupleExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDecimalLiteral(\n node: t.Node | null | undefined,\n): node is t.DecimalLiteral;\nexport function isDecimalLiteral<Opts extends Options<t.DecimalLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.DecimalLiteral & Opts;\nexport function isDecimalLiteral<Opts extends Options<t.DecimalLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"DecimalLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isModuleExpression(\n node: t.Node | null | undefined,\n): node is t.ModuleExpression;\nexport function isModuleExpression<Opts extends Options<t.ModuleExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ModuleExpression & Opts;\nexport function isModuleExpression<Opts extends Options<t.ModuleExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"ModuleExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTopicReference(\n node: t.Node | null | undefined,\n): node is t.TopicReference;\nexport function isTopicReference<Opts extends Options<t.TopicReference>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TopicReference & Opts;\nexport function isTopicReference<Opts extends Options<t.TopicReference>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TopicReference\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPipelineTopicExpression(\n node: t.Node | null | undefined,\n): node is t.PipelineTopicExpression;\nexport function isPipelineTopicExpression<\n Opts extends Options<t.PipelineTopicExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.PipelineTopicExpression & Opts;\nexport function isPipelineTopicExpression<\n Opts extends Options<t.PipelineTopicExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"PipelineTopicExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPipelineBareFunction(\n node: t.Node | null | undefined,\n): node is t.PipelineBareFunction;\nexport function isPipelineBareFunction<\n Opts extends Options<t.PipelineBareFunction>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.PipelineBareFunction & Opts;\nexport function isPipelineBareFunction<\n Opts extends Options<t.PipelineBareFunction>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"PipelineBareFunction\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPipelinePrimaryTopicReference(\n node: t.Node | null | undefined,\n): node is t.PipelinePrimaryTopicReference;\nexport function isPipelinePrimaryTopicReference<\n Opts extends Options<t.PipelinePrimaryTopicReference>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.PipelinePrimaryTopicReference & Opts;\nexport function isPipelinePrimaryTopicReference<\n Opts extends Options<t.PipelinePrimaryTopicReference>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"PipelinePrimaryTopicReference\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isVoidPattern(\n node: t.Node | null | undefined,\n): node is t.VoidPattern;\nexport function isVoidPattern<Opts extends Options<t.VoidPattern>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.VoidPattern & Opts;\nexport function isVoidPattern<Opts extends Options<t.VoidPattern>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"VoidPattern\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSParameterProperty(\n node: t.Node | null | undefined,\n): node is t.TSParameterProperty;\nexport function isTSParameterProperty<\n Opts extends Options<t.TSParameterProperty>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSParameterProperty & Opts;\nexport function isTSParameterProperty<\n Opts extends Options<t.TSParameterProperty>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSParameterProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSDeclareFunction(\n node: t.Node | null | undefined,\n): node is t.TSDeclareFunction;\nexport function isTSDeclareFunction<Opts extends Options<t.TSDeclareFunction>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSDeclareFunction & Opts;\nexport function isTSDeclareFunction<Opts extends Options<t.TSDeclareFunction>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSDeclareFunction\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSDeclareMethod(\n node: t.Node | null | undefined,\n): node is t.TSDeclareMethod;\nexport function isTSDeclareMethod<Opts extends Options<t.TSDeclareMethod>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSDeclareMethod & Opts;\nexport function isTSDeclareMethod<Opts extends Options<t.TSDeclareMethod>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSDeclareMethod\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSQualifiedName(\n node: t.Node | null | undefined,\n): node is t.TSQualifiedName;\nexport function isTSQualifiedName<Opts extends Options<t.TSQualifiedName>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSQualifiedName & Opts;\nexport function isTSQualifiedName<Opts extends Options<t.TSQualifiedName>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSQualifiedName\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSCallSignatureDeclaration(\n node: t.Node | null | undefined,\n): node is t.TSCallSignatureDeclaration;\nexport function isTSCallSignatureDeclaration<\n Opts extends Options<t.TSCallSignatureDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSCallSignatureDeclaration & Opts;\nexport function isTSCallSignatureDeclaration<\n Opts extends Options<t.TSCallSignatureDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSCallSignatureDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSConstructSignatureDeclaration(\n node: t.Node | null | undefined,\n): node is t.TSConstructSignatureDeclaration;\nexport function isTSConstructSignatureDeclaration<\n Opts extends Options<t.TSConstructSignatureDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSConstructSignatureDeclaration & Opts;\nexport function isTSConstructSignatureDeclaration<\n Opts extends Options<t.TSConstructSignatureDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSConstructSignatureDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSPropertySignature(\n node: t.Node | null | undefined,\n): node is t.TSPropertySignature;\nexport function isTSPropertySignature<\n Opts extends Options<t.TSPropertySignature>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSPropertySignature & Opts;\nexport function isTSPropertySignature<\n Opts extends Options<t.TSPropertySignature>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSPropertySignature\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSMethodSignature(\n node: t.Node | null | undefined,\n): node is t.TSMethodSignature;\nexport function isTSMethodSignature<Opts extends Options<t.TSMethodSignature>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSMethodSignature & Opts;\nexport function isTSMethodSignature<Opts extends Options<t.TSMethodSignature>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSMethodSignature\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIndexSignature(\n node: t.Node | null | undefined,\n): node is t.TSIndexSignature;\nexport function isTSIndexSignature<Opts extends Options<t.TSIndexSignature>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSIndexSignature & Opts;\nexport function isTSIndexSignature<Opts extends Options<t.TSIndexSignature>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSIndexSignature\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSAnyKeyword(\n node: t.Node | null | undefined,\n): node is t.TSAnyKeyword;\nexport function isTSAnyKeyword<Opts extends Options<t.TSAnyKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSAnyKeyword & Opts;\nexport function isTSAnyKeyword<Opts extends Options<t.TSAnyKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSAnyKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSBooleanKeyword(\n node: t.Node | null | undefined,\n): node is t.TSBooleanKeyword;\nexport function isTSBooleanKeyword<Opts extends Options<t.TSBooleanKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSBooleanKeyword & Opts;\nexport function isTSBooleanKeyword<Opts extends Options<t.TSBooleanKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSBooleanKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSBigIntKeyword(\n node: t.Node | null | undefined,\n): node is t.TSBigIntKeyword;\nexport function isTSBigIntKeyword<Opts extends Options<t.TSBigIntKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSBigIntKeyword & Opts;\nexport function isTSBigIntKeyword<Opts extends Options<t.TSBigIntKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSBigIntKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIntrinsicKeyword(\n node: t.Node | null | undefined,\n): node is t.TSIntrinsicKeyword;\nexport function isTSIntrinsicKeyword<\n Opts extends Options<t.TSIntrinsicKeyword>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSIntrinsicKeyword & Opts;\nexport function isTSIntrinsicKeyword<\n Opts extends Options<t.TSIntrinsicKeyword>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSIntrinsicKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNeverKeyword(\n node: t.Node | null | undefined,\n): node is t.TSNeverKeyword;\nexport function isTSNeverKeyword<Opts extends Options<t.TSNeverKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSNeverKeyword & Opts;\nexport function isTSNeverKeyword<Opts extends Options<t.TSNeverKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSNeverKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNullKeyword(\n node: t.Node | null | undefined,\n): node is t.TSNullKeyword;\nexport function isTSNullKeyword<Opts extends Options<t.TSNullKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSNullKeyword & Opts;\nexport function isTSNullKeyword<Opts extends Options<t.TSNullKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSNullKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNumberKeyword(\n node: t.Node | null | undefined,\n): node is t.TSNumberKeyword;\nexport function isTSNumberKeyword<Opts extends Options<t.TSNumberKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSNumberKeyword & Opts;\nexport function isTSNumberKeyword<Opts extends Options<t.TSNumberKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSNumberKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSObjectKeyword(\n node: t.Node | null | undefined,\n): node is t.TSObjectKeyword;\nexport function isTSObjectKeyword<Opts extends Options<t.TSObjectKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSObjectKeyword & Opts;\nexport function isTSObjectKeyword<Opts extends Options<t.TSObjectKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSObjectKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSStringKeyword(\n node: t.Node | null | undefined,\n): node is t.TSStringKeyword;\nexport function isTSStringKeyword<Opts extends Options<t.TSStringKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSStringKeyword & Opts;\nexport function isTSStringKeyword<Opts extends Options<t.TSStringKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSStringKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSSymbolKeyword(\n node: t.Node | null | undefined,\n): node is t.TSSymbolKeyword;\nexport function isTSSymbolKeyword<Opts extends Options<t.TSSymbolKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSSymbolKeyword & Opts;\nexport function isTSSymbolKeyword<Opts extends Options<t.TSSymbolKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSSymbolKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSUndefinedKeyword(\n node: t.Node | null | undefined,\n): node is t.TSUndefinedKeyword;\nexport function isTSUndefinedKeyword<\n Opts extends Options<t.TSUndefinedKeyword>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSUndefinedKeyword & Opts;\nexport function isTSUndefinedKeyword<\n Opts extends Options<t.TSUndefinedKeyword>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSUndefinedKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSUnknownKeyword(\n node: t.Node | null | undefined,\n): node is t.TSUnknownKeyword;\nexport function isTSUnknownKeyword<Opts extends Options<t.TSUnknownKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSUnknownKeyword & Opts;\nexport function isTSUnknownKeyword<Opts extends Options<t.TSUnknownKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSUnknownKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSVoidKeyword(\n node: t.Node | null | undefined,\n): node is t.TSVoidKeyword;\nexport function isTSVoidKeyword<Opts extends Options<t.TSVoidKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSVoidKeyword & Opts;\nexport function isTSVoidKeyword<Opts extends Options<t.TSVoidKeyword>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSVoidKeyword\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSThisType(\n node: t.Node | null | undefined,\n): node is t.TSThisType;\nexport function isTSThisType<Opts extends Options<t.TSThisType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSThisType & Opts;\nexport function isTSThisType<Opts extends Options<t.TSThisType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSThisType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSFunctionType(\n node: t.Node | null | undefined,\n): node is t.TSFunctionType;\nexport function isTSFunctionType<Opts extends Options<t.TSFunctionType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSFunctionType & Opts;\nexport function isTSFunctionType<Opts extends Options<t.TSFunctionType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSFunctionType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSConstructorType(\n node: t.Node | null | undefined,\n): node is t.TSConstructorType;\nexport function isTSConstructorType<Opts extends Options<t.TSConstructorType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSConstructorType & Opts;\nexport function isTSConstructorType<Opts extends Options<t.TSConstructorType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSConstructorType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeReference(\n node: t.Node | null | undefined,\n): node is t.TSTypeReference;\nexport function isTSTypeReference<Opts extends Options<t.TSTypeReference>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeReference & Opts;\nexport function isTSTypeReference<Opts extends Options<t.TSTypeReference>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypeReference\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypePredicate(\n node: t.Node | null | undefined,\n): node is t.TSTypePredicate;\nexport function isTSTypePredicate<Opts extends Options<t.TSTypePredicate>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypePredicate & Opts;\nexport function isTSTypePredicate<Opts extends Options<t.TSTypePredicate>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypePredicate\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeQuery(\n node: t.Node | null | undefined,\n): node is t.TSTypeQuery;\nexport function isTSTypeQuery<Opts extends Options<t.TSTypeQuery>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeQuery & Opts;\nexport function isTSTypeQuery<Opts extends Options<t.TSTypeQuery>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypeQuery\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeLiteral(\n node: t.Node | null | undefined,\n): node is t.TSTypeLiteral;\nexport function isTSTypeLiteral<Opts extends Options<t.TSTypeLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeLiteral & Opts;\nexport function isTSTypeLiteral<Opts extends Options<t.TSTypeLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypeLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSArrayType(\n node: t.Node | null | undefined,\n): node is t.TSArrayType;\nexport function isTSArrayType<Opts extends Options<t.TSArrayType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSArrayType & Opts;\nexport function isTSArrayType<Opts extends Options<t.TSArrayType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSArrayType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTupleType(\n node: t.Node | null | undefined,\n): node is t.TSTupleType;\nexport function isTSTupleType<Opts extends Options<t.TSTupleType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTupleType & Opts;\nexport function isTSTupleType<Opts extends Options<t.TSTupleType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTupleType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSOptionalType(\n node: t.Node | null | undefined,\n): node is t.TSOptionalType;\nexport function isTSOptionalType<Opts extends Options<t.TSOptionalType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSOptionalType & Opts;\nexport function isTSOptionalType<Opts extends Options<t.TSOptionalType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSOptionalType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSRestType(\n node: t.Node | null | undefined,\n): node is t.TSRestType;\nexport function isTSRestType<Opts extends Options<t.TSRestType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSRestType & Opts;\nexport function isTSRestType<Opts extends Options<t.TSRestType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSRestType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNamedTupleMember(\n node: t.Node | null | undefined,\n): node is t.TSNamedTupleMember;\nexport function isTSNamedTupleMember<\n Opts extends Options<t.TSNamedTupleMember>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSNamedTupleMember & Opts;\nexport function isTSNamedTupleMember<\n Opts extends Options<t.TSNamedTupleMember>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSNamedTupleMember\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSUnionType(\n node: t.Node | null | undefined,\n): node is t.TSUnionType;\nexport function isTSUnionType<Opts extends Options<t.TSUnionType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSUnionType & Opts;\nexport function isTSUnionType<Opts extends Options<t.TSUnionType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSUnionType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIntersectionType(\n node: t.Node | null | undefined,\n): node is t.TSIntersectionType;\nexport function isTSIntersectionType<\n Opts extends Options<t.TSIntersectionType>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSIntersectionType & Opts;\nexport function isTSIntersectionType<\n Opts extends Options<t.TSIntersectionType>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSIntersectionType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSConditionalType(\n node: t.Node | null | undefined,\n): node is t.TSConditionalType;\nexport function isTSConditionalType<Opts extends Options<t.TSConditionalType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSConditionalType & Opts;\nexport function isTSConditionalType<Opts extends Options<t.TSConditionalType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSConditionalType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInferType(\n node: t.Node | null | undefined,\n): node is t.TSInferType;\nexport function isTSInferType<Opts extends Options<t.TSInferType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSInferType & Opts;\nexport function isTSInferType<Opts extends Options<t.TSInferType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSInferType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSParenthesizedType(\n node: t.Node | null | undefined,\n): node is t.TSParenthesizedType;\nexport function isTSParenthesizedType<\n Opts extends Options<t.TSParenthesizedType>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSParenthesizedType & Opts;\nexport function isTSParenthesizedType<\n Opts extends Options<t.TSParenthesizedType>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSParenthesizedType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeOperator(\n node: t.Node | null | undefined,\n): node is t.TSTypeOperator;\nexport function isTSTypeOperator<Opts extends Options<t.TSTypeOperator>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeOperator & Opts;\nexport function isTSTypeOperator<Opts extends Options<t.TSTypeOperator>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypeOperator\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIndexedAccessType(\n node: t.Node | null | undefined,\n): node is t.TSIndexedAccessType;\nexport function isTSIndexedAccessType<\n Opts extends Options<t.TSIndexedAccessType>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSIndexedAccessType & Opts;\nexport function isTSIndexedAccessType<\n Opts extends Options<t.TSIndexedAccessType>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSIndexedAccessType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSMappedType(\n node: t.Node | null | undefined,\n): node is t.TSMappedType;\nexport function isTSMappedType<Opts extends Options<t.TSMappedType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSMappedType & Opts;\nexport function isTSMappedType<Opts extends Options<t.TSMappedType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSMappedType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTemplateLiteralType(\n node: t.Node | null | undefined,\n): node is t.TSTemplateLiteralType;\nexport function isTSTemplateLiteralType<\n Opts extends Options<t.TSTemplateLiteralType>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTemplateLiteralType & Opts;\nexport function isTSTemplateLiteralType<\n Opts extends Options<t.TSTemplateLiteralType>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTemplateLiteralType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSLiteralType(\n node: t.Node | null | undefined,\n): node is t.TSLiteralType;\nexport function isTSLiteralType<Opts extends Options<t.TSLiteralType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSLiteralType & Opts;\nexport function isTSLiteralType<Opts extends Options<t.TSLiteralType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSLiteralType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSExpressionWithTypeArguments(\n node: t.Node | null | undefined,\n): node is t.TSExpressionWithTypeArguments;\nexport function isTSExpressionWithTypeArguments<\n Opts extends Options<t.TSExpressionWithTypeArguments>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSExpressionWithTypeArguments & Opts;\nexport function isTSExpressionWithTypeArguments<\n Opts extends Options<t.TSExpressionWithTypeArguments>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSExpressionWithTypeArguments\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInterfaceDeclaration(\n node: t.Node | null | undefined,\n): node is t.TSInterfaceDeclaration;\nexport function isTSInterfaceDeclaration<\n Opts extends Options<t.TSInterfaceDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSInterfaceDeclaration & Opts;\nexport function isTSInterfaceDeclaration<\n Opts extends Options<t.TSInterfaceDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSInterfaceDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInterfaceBody(\n node: t.Node | null | undefined,\n): node is t.TSInterfaceBody;\nexport function isTSInterfaceBody<Opts extends Options<t.TSInterfaceBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSInterfaceBody & Opts;\nexport function isTSInterfaceBody<Opts extends Options<t.TSInterfaceBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSInterfaceBody\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeAliasDeclaration(\n node: t.Node | null | undefined,\n): node is t.TSTypeAliasDeclaration;\nexport function isTSTypeAliasDeclaration<\n Opts extends Options<t.TSTypeAliasDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeAliasDeclaration & Opts;\nexport function isTSTypeAliasDeclaration<\n Opts extends Options<t.TSTypeAliasDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypeAliasDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInstantiationExpression(\n node: t.Node | null | undefined,\n): node is t.TSInstantiationExpression;\nexport function isTSInstantiationExpression<\n Opts extends Options<t.TSInstantiationExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSInstantiationExpression & Opts;\nexport function isTSInstantiationExpression<\n Opts extends Options<t.TSInstantiationExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSInstantiationExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSAsExpression(\n node: t.Node | null | undefined,\n): node is t.TSAsExpression;\nexport function isTSAsExpression<Opts extends Options<t.TSAsExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSAsExpression & Opts;\nexport function isTSAsExpression<Opts extends Options<t.TSAsExpression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSAsExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSSatisfiesExpression(\n node: t.Node | null | undefined,\n): node is t.TSSatisfiesExpression;\nexport function isTSSatisfiesExpression<\n Opts extends Options<t.TSSatisfiesExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSSatisfiesExpression & Opts;\nexport function isTSSatisfiesExpression<\n Opts extends Options<t.TSSatisfiesExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSSatisfiesExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeAssertion(\n node: t.Node | null | undefined,\n): node is t.TSTypeAssertion;\nexport function isTSTypeAssertion<Opts extends Options<t.TSTypeAssertion>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeAssertion & Opts;\nexport function isTSTypeAssertion<Opts extends Options<t.TSTypeAssertion>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypeAssertion\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEnumBody(\n node: t.Node | null | undefined,\n): node is t.TSEnumBody;\nexport function isTSEnumBody<Opts extends Options<t.TSEnumBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSEnumBody & Opts;\nexport function isTSEnumBody<Opts extends Options<t.TSEnumBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSEnumBody\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEnumDeclaration(\n node: t.Node | null | undefined,\n): node is t.TSEnumDeclaration;\nexport function isTSEnumDeclaration<Opts extends Options<t.TSEnumDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSEnumDeclaration & Opts;\nexport function isTSEnumDeclaration<Opts extends Options<t.TSEnumDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSEnumDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEnumMember(\n node: t.Node | null | undefined,\n): node is t.TSEnumMember;\nexport function isTSEnumMember<Opts extends Options<t.TSEnumMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSEnumMember & Opts;\nexport function isTSEnumMember<Opts extends Options<t.TSEnumMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSEnumMember\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSModuleDeclaration(\n node: t.Node | null | undefined,\n): node is t.TSModuleDeclaration;\nexport function isTSModuleDeclaration<\n Opts extends Options<t.TSModuleDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSModuleDeclaration & Opts;\nexport function isTSModuleDeclaration<\n Opts extends Options<t.TSModuleDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSModuleDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSModuleBlock(\n node: t.Node | null | undefined,\n): node is t.TSModuleBlock;\nexport function isTSModuleBlock<Opts extends Options<t.TSModuleBlock>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSModuleBlock & Opts;\nexport function isTSModuleBlock<Opts extends Options<t.TSModuleBlock>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSModuleBlock\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSImportType(\n node: t.Node | null | undefined,\n): node is t.TSImportType;\nexport function isTSImportType<Opts extends Options<t.TSImportType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSImportType & Opts;\nexport function isTSImportType<Opts extends Options<t.TSImportType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSImportType\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSImportEqualsDeclaration(\n node: t.Node | null | undefined,\n): node is t.TSImportEqualsDeclaration;\nexport function isTSImportEqualsDeclaration<\n Opts extends Options<t.TSImportEqualsDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSImportEqualsDeclaration & Opts;\nexport function isTSImportEqualsDeclaration<\n Opts extends Options<t.TSImportEqualsDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSImportEqualsDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSExternalModuleReference(\n node: t.Node | null | undefined,\n): node is t.TSExternalModuleReference;\nexport function isTSExternalModuleReference<\n Opts extends Options<t.TSExternalModuleReference>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSExternalModuleReference & Opts;\nexport function isTSExternalModuleReference<\n Opts extends Options<t.TSExternalModuleReference>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSExternalModuleReference\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNonNullExpression(\n node: t.Node | null | undefined,\n): node is t.TSNonNullExpression;\nexport function isTSNonNullExpression<\n Opts extends Options<t.TSNonNullExpression>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSNonNullExpression & Opts;\nexport function isTSNonNullExpression<\n Opts extends Options<t.TSNonNullExpression>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSNonNullExpression\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSExportAssignment(\n node: t.Node | null | undefined,\n): node is t.TSExportAssignment;\nexport function isTSExportAssignment<\n Opts extends Options<t.TSExportAssignment>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSExportAssignment & Opts;\nexport function isTSExportAssignment<\n Opts extends Options<t.TSExportAssignment>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSExportAssignment\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNamespaceExportDeclaration(\n node: t.Node | null | undefined,\n): node is t.TSNamespaceExportDeclaration;\nexport function isTSNamespaceExportDeclaration<\n Opts extends Options<t.TSNamespaceExportDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSNamespaceExportDeclaration & Opts;\nexport function isTSNamespaceExportDeclaration<\n Opts extends Options<t.TSNamespaceExportDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSNamespaceExportDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeAnnotation(\n node: t.Node | null | undefined,\n): node is t.TSTypeAnnotation;\nexport function isTSTypeAnnotation<Opts extends Options<t.TSTypeAnnotation>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeAnnotation & Opts;\nexport function isTSTypeAnnotation<Opts extends Options<t.TSTypeAnnotation>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypeAnnotation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeParameterInstantiation(\n node: t.Node | null | undefined,\n): node is t.TSTypeParameterInstantiation;\nexport function isTSTypeParameterInstantiation<\n Opts extends Options<t.TSTypeParameterInstantiation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeParameterInstantiation & Opts;\nexport function isTSTypeParameterInstantiation<\n Opts extends Options<t.TSTypeParameterInstantiation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypeParameterInstantiation\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeParameterDeclaration(\n node: t.Node | null | undefined,\n): node is t.TSTypeParameterDeclaration;\nexport function isTSTypeParameterDeclaration<\n Opts extends Options<t.TSTypeParameterDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeParameterDeclaration & Opts;\nexport function isTSTypeParameterDeclaration<\n Opts extends Options<t.TSTypeParameterDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypeParameterDeclaration\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeParameter(\n node: t.Node | null | undefined,\n): node is t.TSTypeParameter;\nexport function isTSTypeParameter<Opts extends Options<t.TSTypeParameter>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeParameter & Opts;\nexport function isTSTypeParameter<Opts extends Options<t.TSTypeParameter>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n if (node.type !== \"TSTypeParameter\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isStandardized(\n node: t.Node | null | undefined,\n): node is t.Standardized;\nexport function isStandardized<Opts extends Options<t.Standardized>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Standardized & Opts;\nexport function isStandardized<Opts extends Options<t.Standardized>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ArrayExpression\":\n case \"AssignmentExpression\":\n case \"BinaryExpression\":\n case \"InterpreterDirective\":\n case \"Directive\":\n case \"DirectiveLiteral\":\n case \"BlockStatement\":\n case \"BreakStatement\":\n case \"CallExpression\":\n case \"CatchClause\":\n case \"ConditionalExpression\":\n case \"ContinueStatement\":\n case \"DebuggerStatement\":\n case \"DoWhileStatement\":\n case \"EmptyStatement\":\n case \"ExpressionStatement\":\n case \"File\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"Identifier\":\n case \"IfStatement\":\n case \"LabeledStatement\":\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"RegExpLiteral\":\n case \"LogicalExpression\":\n case \"MemberExpression\":\n case \"NewExpression\":\n case \"Program\":\n case \"ObjectExpression\":\n case \"ObjectMethod\":\n case \"ObjectProperty\":\n case \"RestElement\":\n case \"ReturnStatement\":\n case \"SequenceExpression\":\n case \"ParenthesizedExpression\":\n case \"SwitchCase\":\n case \"SwitchStatement\":\n case \"ThisExpression\":\n case \"ThrowStatement\":\n case \"TryStatement\":\n case \"UnaryExpression\":\n case \"UpdateExpression\":\n case \"VariableDeclaration\":\n case \"VariableDeclarator\":\n case \"WhileStatement\":\n case \"WithStatement\":\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ArrowFunctionExpression\":\n case \"ClassBody\":\n case \"ClassExpression\":\n case \"ClassDeclaration\":\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n case \"ExportSpecifier\":\n case \"ForOfStatement\":\n case \"ImportDeclaration\":\n case \"ImportDefaultSpecifier\":\n case \"ImportNamespaceSpecifier\":\n case \"ImportSpecifier\":\n case \"ImportExpression\":\n case \"MetaProperty\":\n case \"ClassMethod\":\n case \"ObjectPattern\":\n case \"SpreadElement\":\n case \"Super\":\n case \"TaggedTemplateExpression\":\n case \"TemplateElement\":\n case \"TemplateLiteral\":\n case \"YieldExpression\":\n case \"AwaitExpression\":\n case \"Import\":\n case \"BigIntLiteral\":\n case \"ExportNamespaceSpecifier\":\n case \"OptionalMemberExpression\":\n case \"OptionalCallExpression\":\n case \"ClassProperty\":\n case \"ClassAccessorProperty\":\n case \"ClassPrivateProperty\":\n case \"ClassPrivateMethod\":\n case \"PrivateName\":\n case \"StaticBlock\":\n case \"ImportAttribute\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Identifier\":\n case \"StringLiteral\":\n case \"BlockStatement\":\n case \"ClassBody\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExpression(\n node: t.Node | null | undefined,\n): node is t.Expression;\nexport function isExpression<Opts extends Options<t.Expression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Expression & Opts;\nexport function isExpression<Opts extends Options<t.Expression>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ArrayExpression\":\n case \"AssignmentExpression\":\n case \"BinaryExpression\":\n case \"CallExpression\":\n case \"ConditionalExpression\":\n case \"FunctionExpression\":\n case \"Identifier\":\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"RegExpLiteral\":\n case \"LogicalExpression\":\n case \"MemberExpression\":\n case \"NewExpression\":\n case \"ObjectExpression\":\n case \"SequenceExpression\":\n case \"ParenthesizedExpression\":\n case \"ThisExpression\":\n case \"UnaryExpression\":\n case \"UpdateExpression\":\n case \"ArrowFunctionExpression\":\n case \"ClassExpression\":\n case \"ImportExpression\":\n case \"MetaProperty\":\n case \"Super\":\n case \"TaggedTemplateExpression\":\n case \"TemplateLiteral\":\n case \"YieldExpression\":\n case \"AwaitExpression\":\n case \"Import\":\n case \"BigIntLiteral\":\n case \"OptionalMemberExpression\":\n case \"OptionalCallExpression\":\n case \"TypeCastExpression\":\n case \"JSXElement\":\n case \"JSXFragment\":\n case \"BindExpression\":\n case \"DoExpression\":\n case \"RecordExpression\":\n case \"TupleExpression\":\n case \"DecimalLiteral\":\n case \"ModuleExpression\":\n case \"TopicReference\":\n case \"PipelineTopicExpression\":\n case \"PipelineBareFunction\":\n case \"PipelinePrimaryTopicReference\":\n case \"TSInstantiationExpression\":\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSNonNullExpression\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Expression\":\n case \"Identifier\":\n case \"StringLiteral\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBinary(node: t.Node | null | undefined): node is t.Binary;\nexport function isBinary<Opts extends Options<t.Binary>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Binary & Opts;\nexport function isBinary<Opts extends Options<t.Binary>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isScopable(node: t.Node | null | undefined): node is t.Scopable;\nexport function isScopable<Opts extends Options<t.Scopable>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Scopable & Opts;\nexport function isScopable<Opts extends Options<t.Scopable>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"BlockStatement\":\n case \"CatchClause\":\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"Program\":\n case \"ObjectMethod\":\n case \"SwitchStatement\":\n case \"WhileStatement\":\n case \"ArrowFunctionExpression\":\n case \"ClassExpression\":\n case \"ClassDeclaration\":\n case \"ForOfStatement\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"StaticBlock\":\n case \"TSModuleBlock\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"BlockStatement\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBlockParent(\n node: t.Node | null | undefined,\n): node is t.BlockParent;\nexport function isBlockParent<Opts extends Options<t.BlockParent>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.BlockParent & Opts;\nexport function isBlockParent<Opts extends Options<t.BlockParent>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"BlockStatement\":\n case \"CatchClause\":\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"Program\":\n case \"ObjectMethod\":\n case \"SwitchStatement\":\n case \"WhileStatement\":\n case \"ArrowFunctionExpression\":\n case \"ForOfStatement\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"StaticBlock\":\n case \"TSModuleBlock\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"BlockStatement\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isBlock(node: t.Node | null | undefined): node is t.Block;\nexport function isBlock<Opts extends Options<t.Block>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Block & Opts;\nexport function isBlock<Opts extends Options<t.Block>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"BlockStatement\":\n case \"Program\":\n case \"TSModuleBlock\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"BlockStatement\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isStatement(\n node: t.Node | null | undefined,\n): node is t.Statement;\nexport function isStatement<Opts extends Options<t.Statement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Statement & Opts;\nexport function isStatement<Opts extends Options<t.Statement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"BlockStatement\":\n case \"BreakStatement\":\n case \"ContinueStatement\":\n case \"DebuggerStatement\":\n case \"DoWhileStatement\":\n case \"EmptyStatement\":\n case \"ExpressionStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"FunctionDeclaration\":\n case \"IfStatement\":\n case \"LabeledStatement\":\n case \"ReturnStatement\":\n case \"SwitchStatement\":\n case \"ThrowStatement\":\n case \"TryStatement\":\n case \"VariableDeclaration\":\n case \"WhileStatement\":\n case \"WithStatement\":\n case \"ClassDeclaration\":\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n case \"ForOfStatement\":\n case \"ImportDeclaration\":\n case \"DeclareClass\":\n case \"DeclareFunction\":\n case \"DeclareInterface\":\n case \"DeclareModule\":\n case \"DeclareModuleExports\":\n case \"DeclareTypeAlias\":\n case \"DeclareOpaqueType\":\n case \"DeclareVariable\":\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n case \"InterfaceDeclaration\":\n case \"OpaqueType\":\n case \"TypeAlias\":\n case \"EnumDeclaration\":\n case \"TSDeclareFunction\":\n case \"TSInterfaceDeclaration\":\n case \"TSTypeAliasDeclaration\":\n case \"TSEnumDeclaration\":\n case \"TSModuleDeclaration\":\n case \"TSImportEqualsDeclaration\":\n case \"TSExportAssignment\":\n case \"TSNamespaceExportDeclaration\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Statement\":\n case \"Declaration\":\n case \"BlockStatement\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTerminatorless(\n node: t.Node | null | undefined,\n): node is t.Terminatorless;\nexport function isTerminatorless<Opts extends Options<t.Terminatorless>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Terminatorless & Opts;\nexport function isTerminatorless<Opts extends Options<t.Terminatorless>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"BreakStatement\":\n case \"ContinueStatement\":\n case \"ReturnStatement\":\n case \"ThrowStatement\":\n case \"YieldExpression\":\n case \"AwaitExpression\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isCompletionStatement(\n node: t.Node | null | undefined,\n): node is t.CompletionStatement;\nexport function isCompletionStatement<\n Opts extends Options<t.CompletionStatement>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.CompletionStatement & Opts;\nexport function isCompletionStatement<\n Opts extends Options<t.CompletionStatement>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"BreakStatement\":\n case \"ContinueStatement\":\n case \"ReturnStatement\":\n case \"ThrowStatement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isConditional(\n node: t.Node | null | undefined,\n): node is t.Conditional;\nexport function isConditional<Opts extends Options<t.Conditional>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Conditional & Opts;\nexport function isConditional<Opts extends Options<t.Conditional>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ConditionalExpression\":\n case \"IfStatement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isLoop(node: t.Node | null | undefined): node is t.Loop;\nexport function isLoop<Opts extends Options<t.Loop>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Loop & Opts;\nexport function isLoop<Opts extends Options<t.Loop>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"WhileStatement\":\n case \"ForOfStatement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isWhile(node: t.Node | null | undefined): node is t.While;\nexport function isWhile<Opts extends Options<t.While>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.While & Opts;\nexport function isWhile<Opts extends Options<t.While>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"DoWhileStatement\":\n case \"WhileStatement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExpressionWrapper(\n node: t.Node | null | undefined,\n): node is t.ExpressionWrapper;\nexport function isExpressionWrapper<Opts extends Options<t.ExpressionWrapper>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ExpressionWrapper & Opts;\nexport function isExpressionWrapper<Opts extends Options<t.ExpressionWrapper>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ExpressionStatement\":\n case \"ParenthesizedExpression\":\n case \"TypeCastExpression\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFor(node: t.Node | null | undefined): node is t.For;\nexport function isFor<Opts extends Options<t.For>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.For & Opts;\nexport function isFor<Opts extends Options<t.For>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"ForOfStatement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isForXStatement(\n node: t.Node | null | undefined,\n): node is t.ForXStatement;\nexport function isForXStatement<Opts extends Options<t.ForXStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ForXStatement & Opts;\nexport function isForXStatement<Opts extends Options<t.ForXStatement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ForInStatement\":\n case \"ForOfStatement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFunction(node: t.Node | null | undefined): node is t.Function;\nexport function isFunction<Opts extends Options<t.Function>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Function & Opts;\nexport function isFunction<Opts extends Options<t.Function>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ObjectMethod\":\n case \"ArrowFunctionExpression\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionParent(\n node: t.Node | null | undefined,\n): node is t.FunctionParent;\nexport function isFunctionParent<Opts extends Options<t.FunctionParent>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.FunctionParent & Opts;\nexport function isFunctionParent<Opts extends Options<t.FunctionParent>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ObjectMethod\":\n case \"ArrowFunctionExpression\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"StaticBlock\":\n case \"TSModuleBlock\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPureish(node: t.Node | null | undefined): node is t.Pureish;\nexport function isPureish<Opts extends Options<t.Pureish>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Pureish & Opts;\nexport function isPureish<Opts extends Options<t.Pureish>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"RegExpLiteral\":\n case \"ArrowFunctionExpression\":\n case \"BigIntLiteral\":\n case \"DecimalLiteral\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"StringLiteral\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclaration(\n node: t.Node | null | undefined,\n): node is t.Declaration;\nexport function isDeclaration<Opts extends Options<t.Declaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Declaration & Opts;\nexport function isDeclaration<Opts extends Options<t.Declaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"FunctionDeclaration\":\n case \"VariableDeclaration\":\n case \"ClassDeclaration\":\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n case \"ImportDeclaration\":\n case \"DeclareClass\":\n case \"DeclareFunction\":\n case \"DeclareInterface\":\n case \"DeclareModule\":\n case \"DeclareModuleExports\":\n case \"DeclareTypeAlias\":\n case \"DeclareOpaqueType\":\n case \"DeclareVariable\":\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n case \"InterfaceDeclaration\":\n case \"OpaqueType\":\n case \"TypeAlias\":\n case \"EnumDeclaration\":\n case \"TSDeclareFunction\":\n case \"TSInterfaceDeclaration\":\n case \"TSTypeAliasDeclaration\":\n case \"TSEnumDeclaration\":\n case \"TSModuleDeclaration\":\n case \"TSImportEqualsDeclaration\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"Declaration\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionParameter(\n node: t.Node | null | undefined,\n): node is t.FunctionParameter;\nexport function isFunctionParameter<Opts extends Options<t.FunctionParameter>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.FunctionParameter & Opts;\nexport function isFunctionParameter<Opts extends Options<t.FunctionParameter>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"Identifier\":\n case \"RestElement\":\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ObjectPattern\":\n case \"VoidPattern\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"Identifier\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPatternLike(\n node: t.Node | null | undefined,\n): node is t.PatternLike;\nexport function isPatternLike<Opts extends Options<t.PatternLike>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.PatternLike & Opts;\nexport function isPatternLike<Opts extends Options<t.PatternLike>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"Identifier\":\n case \"MemberExpression\":\n case \"RestElement\":\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ObjectPattern\":\n case \"VoidPattern\":\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSNonNullExpression\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Pattern\":\n case \"Identifier\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isLVal(node: t.Node | null | undefined): node is t.LVal;\nexport function isLVal<Opts extends Options<t.LVal>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.LVal & Opts;\nexport function isLVal<Opts extends Options<t.LVal>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"Identifier\":\n case \"MemberExpression\":\n case \"RestElement\":\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ObjectPattern\":\n case \"TSParameterProperty\":\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSNonNullExpression\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Pattern\":\n case \"Identifier\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEntityName(\n node: t.Node | null | undefined,\n): node is t.TSEntityName;\nexport function isTSEntityName<Opts extends Options<t.TSEntityName>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSEntityName & Opts;\nexport function isTSEntityName<Opts extends Options<t.TSEntityName>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"Identifier\":\n case \"TSQualifiedName\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"Identifier\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isLiteral(node: t.Node | null | undefined): node is t.Literal;\nexport function isLiteral<Opts extends Options<t.Literal>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Literal & Opts;\nexport function isLiteral<Opts extends Options<t.Literal>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"RegExpLiteral\":\n case \"TemplateLiteral\":\n case \"BigIntLiteral\":\n case \"DecimalLiteral\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"StringLiteral\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImmutable(\n node: t.Node | null | undefined,\n): node is t.Immutable;\nexport function isImmutable<Opts extends Options<t.Immutable>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Immutable & Opts;\nexport function isImmutable<Opts extends Options<t.Immutable>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"BigIntLiteral\":\n case \"JSXAttribute\":\n case \"JSXClosingElement\":\n case \"JSXElement\":\n case \"JSXExpressionContainer\":\n case \"JSXSpreadChild\":\n case \"JSXOpeningElement\":\n case \"JSXText\":\n case \"JSXFragment\":\n case \"JSXOpeningFragment\":\n case \"JSXClosingFragment\":\n case \"DecimalLiteral\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"StringLiteral\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isUserWhitespacable(\n node: t.Node | null | undefined,\n): node is t.UserWhitespacable;\nexport function isUserWhitespacable<Opts extends Options<t.UserWhitespacable>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.UserWhitespacable & Opts;\nexport function isUserWhitespacable<Opts extends Options<t.UserWhitespacable>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ObjectMethod\":\n case \"ObjectProperty\":\n case \"ObjectTypeInternalSlot\":\n case \"ObjectTypeCallProperty\":\n case \"ObjectTypeIndexer\":\n case \"ObjectTypeProperty\":\n case \"ObjectTypeSpreadProperty\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isMethod(node: t.Node | null | undefined): node is t.Method;\nexport function isMethod<Opts extends Options<t.Method>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Method & Opts;\nexport function isMethod<Opts extends Options<t.Method>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ObjectMethod\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectMember(\n node: t.Node | null | undefined,\n): node is t.ObjectMember;\nexport function isObjectMember<Opts extends Options<t.ObjectMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ObjectMember & Opts;\nexport function isObjectMember<Opts extends Options<t.ObjectMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ObjectMethod\":\n case \"ObjectProperty\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isProperty(node: t.Node | null | undefined): node is t.Property;\nexport function isProperty<Opts extends Options<t.Property>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Property & Opts;\nexport function isProperty<Opts extends Options<t.Property>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ObjectProperty\":\n case \"ClassProperty\":\n case \"ClassAccessorProperty\":\n case \"ClassPrivateProperty\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isUnaryLike(\n node: t.Node | null | undefined,\n): node is t.UnaryLike;\nexport function isUnaryLike<Opts extends Options<t.UnaryLike>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.UnaryLike & Opts;\nexport function isUnaryLike<Opts extends Options<t.UnaryLike>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"UnaryExpression\":\n case \"SpreadElement\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPattern(node: t.Node | null | undefined): node is t.Pattern;\nexport function isPattern<Opts extends Options<t.Pattern>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Pattern & Opts;\nexport function isPattern<Opts extends Options<t.Pattern>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ObjectPattern\":\n case \"VoidPattern\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"Pattern\") break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isClass(node: t.Node | null | undefined): node is t.Class;\nexport function isClass<Opts extends Options<t.Class>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Class & Opts;\nexport function isClass<Opts extends Options<t.Class>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ClassExpression\":\n case \"ClassDeclaration\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isImportOrExportDeclaration(\n node: t.Node | null | undefined,\n): node is t.ImportOrExportDeclaration;\nexport function isImportOrExportDeclaration<\n Opts extends Options<t.ImportOrExportDeclaration>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ImportOrExportDeclaration & Opts;\nexport function isImportOrExportDeclaration<\n Opts extends Options<t.ImportOrExportDeclaration>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n case \"ImportDeclaration\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isExportDeclaration(\n node: t.Node | null | undefined,\n): node is t.ExportDeclaration;\nexport function isExportDeclaration<Opts extends Options<t.ExportDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ExportDeclaration & Opts;\nexport function isExportDeclaration<Opts extends Options<t.ExportDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isModuleSpecifier(\n node: t.Node | null | undefined,\n): node is t.ModuleSpecifier;\nexport function isModuleSpecifier<Opts extends Options<t.ModuleSpecifier>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ModuleSpecifier & Opts;\nexport function isModuleSpecifier<Opts extends Options<t.ModuleSpecifier>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ExportSpecifier\":\n case \"ImportDefaultSpecifier\":\n case \"ImportNamespaceSpecifier\":\n case \"ImportSpecifier\":\n case \"ExportNamespaceSpecifier\":\n case \"ExportDefaultSpecifier\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isAccessor(node: t.Node | null | undefined): node is t.Accessor;\nexport function isAccessor<Opts extends Options<t.Accessor>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Accessor & Opts;\nexport function isAccessor<Opts extends Options<t.Accessor>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ClassAccessorProperty\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isPrivate(node: t.Node | null | undefined): node is t.Private;\nexport function isPrivate<Opts extends Options<t.Private>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Private & Opts;\nexport function isPrivate<Opts extends Options<t.Private>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"ClassPrivateProperty\":\n case \"ClassPrivateMethod\":\n case \"PrivateName\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFlow(node: t.Node | null | undefined): node is t.Flow;\nexport function isFlow<Opts extends Options<t.Flow>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Flow & Opts;\nexport function isFlow<Opts extends Options<t.Flow>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"AnyTypeAnnotation\":\n case \"ArrayTypeAnnotation\":\n case \"BooleanTypeAnnotation\":\n case \"BooleanLiteralTypeAnnotation\":\n case \"NullLiteralTypeAnnotation\":\n case \"ClassImplements\":\n case \"DeclareClass\":\n case \"DeclareFunction\":\n case \"DeclareInterface\":\n case \"DeclareModule\":\n case \"DeclareModuleExports\":\n case \"DeclareTypeAlias\":\n case \"DeclareOpaqueType\":\n case \"DeclareVariable\":\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n case \"DeclaredPredicate\":\n case \"ExistsTypeAnnotation\":\n case \"FunctionTypeAnnotation\":\n case \"FunctionTypeParam\":\n case \"GenericTypeAnnotation\":\n case \"InferredPredicate\":\n case \"InterfaceExtends\":\n case \"InterfaceDeclaration\":\n case \"InterfaceTypeAnnotation\":\n case \"IntersectionTypeAnnotation\":\n case \"MixedTypeAnnotation\":\n case \"EmptyTypeAnnotation\":\n case \"NullableTypeAnnotation\":\n case \"NumberLiteralTypeAnnotation\":\n case \"NumberTypeAnnotation\":\n case \"ObjectTypeAnnotation\":\n case \"ObjectTypeInternalSlot\":\n case \"ObjectTypeCallProperty\":\n case \"ObjectTypeIndexer\":\n case \"ObjectTypeProperty\":\n case \"ObjectTypeSpreadProperty\":\n case \"OpaqueType\":\n case \"QualifiedTypeIdentifier\":\n case \"StringLiteralTypeAnnotation\":\n case \"StringTypeAnnotation\":\n case \"SymbolTypeAnnotation\":\n case \"ThisTypeAnnotation\":\n case \"TupleTypeAnnotation\":\n case \"TypeofTypeAnnotation\":\n case \"TypeAlias\":\n case \"TypeAnnotation\":\n case \"TypeCastExpression\":\n case \"TypeParameter\":\n case \"TypeParameterDeclaration\":\n case \"TypeParameterInstantiation\":\n case \"UnionTypeAnnotation\":\n case \"Variance\":\n case \"VoidTypeAnnotation\":\n case \"EnumDeclaration\":\n case \"EnumBooleanBody\":\n case \"EnumNumberBody\":\n case \"EnumStringBody\":\n case \"EnumSymbolBody\":\n case \"EnumBooleanMember\":\n case \"EnumNumberMember\":\n case \"EnumStringMember\":\n case \"EnumDefaultedMember\":\n case \"IndexedAccessType\":\n case \"OptionalIndexedAccessType\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowType(node: t.Node | null | undefined): node is t.FlowType;\nexport function isFlowType<Opts extends Options<t.FlowType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.FlowType & Opts;\nexport function isFlowType<Opts extends Options<t.FlowType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"AnyTypeAnnotation\":\n case \"ArrayTypeAnnotation\":\n case \"BooleanTypeAnnotation\":\n case \"BooleanLiteralTypeAnnotation\":\n case \"NullLiteralTypeAnnotation\":\n case \"ExistsTypeAnnotation\":\n case \"FunctionTypeAnnotation\":\n case \"GenericTypeAnnotation\":\n case \"InterfaceTypeAnnotation\":\n case \"IntersectionTypeAnnotation\":\n case \"MixedTypeAnnotation\":\n case \"EmptyTypeAnnotation\":\n case \"NullableTypeAnnotation\":\n case \"NumberLiteralTypeAnnotation\":\n case \"NumberTypeAnnotation\":\n case \"ObjectTypeAnnotation\":\n case \"StringLiteralTypeAnnotation\":\n case \"StringTypeAnnotation\":\n case \"SymbolTypeAnnotation\":\n case \"ThisTypeAnnotation\":\n case \"TupleTypeAnnotation\":\n case \"TypeofTypeAnnotation\":\n case \"UnionTypeAnnotation\":\n case \"VoidTypeAnnotation\":\n case \"IndexedAccessType\":\n case \"OptionalIndexedAccessType\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowBaseAnnotation(\n node: t.Node | null | undefined,\n): node is t.FlowBaseAnnotation;\nexport function isFlowBaseAnnotation<\n Opts extends Options<t.FlowBaseAnnotation>,\n>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.FlowBaseAnnotation & Opts;\nexport function isFlowBaseAnnotation<\n Opts extends Options<t.FlowBaseAnnotation>,\n>(node: t.Node | null | undefined, opts?: Opts | null): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"AnyTypeAnnotation\":\n case \"BooleanTypeAnnotation\":\n case \"NullLiteralTypeAnnotation\":\n case \"MixedTypeAnnotation\":\n case \"EmptyTypeAnnotation\":\n case \"NumberTypeAnnotation\":\n case \"StringTypeAnnotation\":\n case \"SymbolTypeAnnotation\":\n case \"ThisTypeAnnotation\":\n case \"VoidTypeAnnotation\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowDeclaration(\n node: t.Node | null | undefined,\n): node is t.FlowDeclaration;\nexport function isFlowDeclaration<Opts extends Options<t.FlowDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.FlowDeclaration & Opts;\nexport function isFlowDeclaration<Opts extends Options<t.FlowDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"DeclareClass\":\n case \"DeclareFunction\":\n case \"DeclareInterface\":\n case \"DeclareModule\":\n case \"DeclareModuleExports\":\n case \"DeclareTypeAlias\":\n case \"DeclareOpaqueType\":\n case \"DeclareVariable\":\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n case \"InterfaceDeclaration\":\n case \"OpaqueType\":\n case \"TypeAlias\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowPredicate(\n node: t.Node | null | undefined,\n): node is t.FlowPredicate;\nexport function isFlowPredicate<Opts extends Options<t.FlowPredicate>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.FlowPredicate & Opts;\nexport function isFlowPredicate<Opts extends Options<t.FlowPredicate>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"DeclaredPredicate\":\n case \"InferredPredicate\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumBody(node: t.Node | null | undefined): node is t.EnumBody;\nexport function isEnumBody<Opts extends Options<t.EnumBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumBody & Opts;\nexport function isEnumBody<Opts extends Options<t.EnumBody>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"EnumBooleanBody\":\n case \"EnumNumberBody\":\n case \"EnumStringBody\":\n case \"EnumSymbolBody\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumMember(\n node: t.Node | null | undefined,\n): node is t.EnumMember;\nexport function isEnumMember<Opts extends Options<t.EnumMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.EnumMember & Opts;\nexport function isEnumMember<Opts extends Options<t.EnumMember>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"EnumBooleanMember\":\n case \"EnumNumberMember\":\n case \"EnumStringMember\":\n case \"EnumDefaultedMember\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isJSX(node: t.Node | null | undefined): node is t.JSX;\nexport function isJSX<Opts extends Options<t.JSX>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.JSX & Opts;\nexport function isJSX<Opts extends Options<t.JSX>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"JSXAttribute\":\n case \"JSXClosingElement\":\n case \"JSXElement\":\n case \"JSXEmptyExpression\":\n case \"JSXExpressionContainer\":\n case \"JSXSpreadChild\":\n case \"JSXIdentifier\":\n case \"JSXMemberExpression\":\n case \"JSXNamespacedName\":\n case \"JSXOpeningElement\":\n case \"JSXSpreadAttribute\":\n case \"JSXText\":\n case \"JSXFragment\":\n case \"JSXOpeningFragment\":\n case \"JSXClosingFragment\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isMiscellaneous(\n node: t.Node | null | undefined,\n): node is t.Miscellaneous;\nexport function isMiscellaneous<Opts extends Options<t.Miscellaneous>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.Miscellaneous & Opts;\nexport function isMiscellaneous<Opts extends Options<t.Miscellaneous>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"Noop\":\n case \"Placeholder\":\n case \"V8IntrinsicIdentifier\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeScript(\n node: t.Node | null | undefined,\n): node is t.TypeScript;\nexport function isTypeScript<Opts extends Options<t.TypeScript>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TypeScript & Opts;\nexport function isTypeScript<Opts extends Options<t.TypeScript>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"TSParameterProperty\":\n case \"TSDeclareFunction\":\n case \"TSDeclareMethod\":\n case \"TSQualifiedName\":\n case \"TSCallSignatureDeclaration\":\n case \"TSConstructSignatureDeclaration\":\n case \"TSPropertySignature\":\n case \"TSMethodSignature\":\n case \"TSIndexSignature\":\n case \"TSAnyKeyword\":\n case \"TSBooleanKeyword\":\n case \"TSBigIntKeyword\":\n case \"TSIntrinsicKeyword\":\n case \"TSNeverKeyword\":\n case \"TSNullKeyword\":\n case \"TSNumberKeyword\":\n case \"TSObjectKeyword\":\n case \"TSStringKeyword\":\n case \"TSSymbolKeyword\":\n case \"TSUndefinedKeyword\":\n case \"TSUnknownKeyword\":\n case \"TSVoidKeyword\":\n case \"TSThisType\":\n case \"TSFunctionType\":\n case \"TSConstructorType\":\n case \"TSTypeReference\":\n case \"TSTypePredicate\":\n case \"TSTypeQuery\":\n case \"TSTypeLiteral\":\n case \"TSArrayType\":\n case \"TSTupleType\":\n case \"TSOptionalType\":\n case \"TSRestType\":\n case \"TSNamedTupleMember\":\n case \"TSUnionType\":\n case \"TSIntersectionType\":\n case \"TSConditionalType\":\n case \"TSInferType\":\n case \"TSParenthesizedType\":\n case \"TSTypeOperator\":\n case \"TSIndexedAccessType\":\n case \"TSMappedType\":\n case \"TSTemplateLiteralType\":\n case \"TSLiteralType\":\n case \"TSExpressionWithTypeArguments\":\n case \"TSInterfaceDeclaration\":\n case \"TSInterfaceBody\":\n case \"TSTypeAliasDeclaration\":\n case \"TSInstantiationExpression\":\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSEnumBody\":\n case \"TSEnumDeclaration\":\n case \"TSEnumMember\":\n case \"TSModuleDeclaration\":\n case \"TSModuleBlock\":\n case \"TSImportType\":\n case \"TSImportEqualsDeclaration\":\n case \"TSExternalModuleReference\":\n case \"TSNonNullExpression\":\n case \"TSExportAssignment\":\n case \"TSNamespaceExportDeclaration\":\n case \"TSTypeAnnotation\":\n case \"TSTypeParameterInstantiation\":\n case \"TSTypeParameterDeclaration\":\n case \"TSTypeParameter\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeElement(\n node: t.Node | null | undefined,\n): node is t.TSTypeElement;\nexport function isTSTypeElement<Opts extends Options<t.TSTypeElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSTypeElement & Opts;\nexport function isTSTypeElement<Opts extends Options<t.TSTypeElement>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"TSCallSignatureDeclaration\":\n case \"TSConstructSignatureDeclaration\":\n case \"TSPropertySignature\":\n case \"TSMethodSignature\":\n case \"TSIndexSignature\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSType(node: t.Node | null | undefined): node is t.TSType;\nexport function isTSType<Opts extends Options<t.TSType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSType & Opts;\nexport function isTSType<Opts extends Options<t.TSType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"TSAnyKeyword\":\n case \"TSBooleanKeyword\":\n case \"TSBigIntKeyword\":\n case \"TSIntrinsicKeyword\":\n case \"TSNeverKeyword\":\n case \"TSNullKeyword\":\n case \"TSNumberKeyword\":\n case \"TSObjectKeyword\":\n case \"TSStringKeyword\":\n case \"TSSymbolKeyword\":\n case \"TSUndefinedKeyword\":\n case \"TSUnknownKeyword\":\n case \"TSVoidKeyword\":\n case \"TSThisType\":\n case \"TSFunctionType\":\n case \"TSConstructorType\":\n case \"TSTypeReference\":\n case \"TSTypePredicate\":\n case \"TSTypeQuery\":\n case \"TSTypeLiteral\":\n case \"TSArrayType\":\n case \"TSTupleType\":\n case \"TSOptionalType\":\n case \"TSRestType\":\n case \"TSUnionType\":\n case \"TSIntersectionType\":\n case \"TSConditionalType\":\n case \"TSInferType\":\n case \"TSParenthesizedType\":\n case \"TSTypeOperator\":\n case \"TSIndexedAccessType\":\n case \"TSMappedType\":\n case \"TSTemplateLiteralType\":\n case \"TSLiteralType\":\n case \"TSExpressionWithTypeArguments\":\n case \"TSImportType\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\nexport function isTSBaseType(\n node: t.Node | null | undefined,\n): node is t.TSBaseType;\nexport function isTSBaseType<Opts extends Options<t.TSBaseType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.TSBaseType & Opts;\nexport function isTSBaseType<Opts extends Options<t.TSBaseType>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n if (!node) return false;\n\n switch (node.type) {\n case \"TSAnyKeyword\":\n case \"TSBooleanKeyword\":\n case \"TSBigIntKeyword\":\n case \"TSIntrinsicKeyword\":\n case \"TSNeverKeyword\":\n case \"TSNullKeyword\":\n case \"TSNumberKeyword\":\n case \"TSObjectKeyword\":\n case \"TSStringKeyword\":\n case \"TSSymbolKeyword\":\n case \"TSUndefinedKeyword\":\n case \"TSUnknownKeyword\":\n case \"TSVoidKeyword\":\n case \"TSThisType\":\n case \"TSTemplateLiteralType\":\n case \"TSLiteralType\":\n break;\n default:\n return false;\n }\n\n return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isNumericLiteral`\n */\nexport function isNumberLiteral(node: t.Node | null | undefined): boolean;\nexport function isNumberLiteral<Opts extends Options<t.NumberLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean;\nexport function isNumberLiteral<Opts extends Options<t.NumberLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n deprecationWarning(\"isNumberLiteral\", \"isNumericLiteral\");\n if (!node) return false;\n\n if (node.type !== \"NumberLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isRegExpLiteral`\n */\nexport function isRegexLiteral(node: t.Node | null | undefined): boolean;\nexport function isRegexLiteral<Opts extends Options<t.RegexLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean;\nexport function isRegexLiteral<Opts extends Options<t.RegexLiteral>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n deprecationWarning(\"isRegexLiteral\", \"isRegExpLiteral\");\n if (!node) return false;\n\n if (node.type !== \"RegexLiteral\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isRestElement`\n */\nexport function isRestProperty(node: t.Node | null | undefined): boolean;\nexport function isRestProperty<Opts extends Options<t.RestProperty>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean;\nexport function isRestProperty<Opts extends Options<t.RestProperty>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n deprecationWarning(\"isRestProperty\", \"isRestElement\");\n if (!node) return false;\n\n if (node.type !== \"RestProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isSpreadElement`\n */\nexport function isSpreadProperty(node: t.Node | null | undefined): boolean;\nexport function isSpreadProperty<Opts extends Options<t.SpreadProperty>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean;\nexport function isSpreadProperty<Opts extends Options<t.SpreadProperty>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): boolean {\n deprecationWarning(\"isSpreadProperty\", \"isSpreadElement\");\n if (!node) return false;\n\n if (node.type !== \"SpreadProperty\") return false;\n\n return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isImportOrExportDeclaration`\n */\nexport function isModuleDeclaration<Opts extends Options<t.ModuleDeclaration>>(\n node: t.Node | null | undefined,\n opts?: Opts | null,\n): node is t.ImportOrExportDeclaration & Opts {\n deprecationWarning(\"isModuleDeclaration\", \"isImportOrExportDeclaration\");\n return isImportOrExportDeclaration(node, opts);\n}\n"],"mappings":"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","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/is.js b/vanilla/node_modules/@babel/types/lib/validators/is.js
new file mode 100644
index 0000000..39c0488
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/is.js
@@ -0,0 +1,27 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = is;
+var _shallowEqual = require("../utils/shallowEqual.js");
+var _isType = require("./isType.js");
+var _isPlaceholderType = require("./isPlaceholderType.js");
+var _index = require("../definitions/index.js");
+function is(type, node, opts) {
+ if (!node) return false;
+ const matches = (0, _isType.default)(node.type, type);
+ if (!matches) {
+ if (!opts && node.type === "Placeholder" && type in _index.FLIPPED_ALIAS_KEYS) {
+ return (0, _isPlaceholderType.default)(node.expectedNode, type);
+ }
+ return false;
+ }
+ if (opts === undefined) {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+}
+
+//# sourceMappingURL=is.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/is.js.map b/vanilla/node_modules/@babel/types/lib/validators/is.js.map
new file mode 100644
index 0000000..06ba31f
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/is.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_shallowEqual","require","_isType","_isPlaceholderType","_index","is","type","node","opts","matches","isType","FLIPPED_ALIAS_KEYS","isPlaceholderType","expectedNode","undefined","shallowEqual"],"sources":["../../src/validators/is.ts"],"sourcesContent":["import shallowEqual from \"../utils/shallowEqual.ts\";\nimport isType from \"./isType.ts\";\nimport isPlaceholderType from \"./isPlaceholderType.ts\";\nimport { FLIPPED_ALIAS_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function is<T extends t.Node[\"type\"]>(\n type: T,\n node: t.Node | null | undefined,\n opts?: undefined,\n): node is Extract<t.Node, { type: T }>;\n\nexport default function is<\n T extends t.Node[\"type\"],\n P extends Extract<t.Node, { type: T }>,\n>(type: T, n: t.Node | null | undefined, required: Partial<P>): n is P;\n\nexport default function is<P extends t.Node>(\n type: string,\n node: t.Node | null | undefined,\n opts: Partial<P>,\n): node is P;\n\nexport default function is(\n type: string,\n node: t.Node | null | undefined,\n opts?: Partial<t.Node>,\n): node is t.Node;\n/**\n * Returns whether `node` is of given `type`.\n *\n * For better performance, use this instead of `is[Type]` when `type` is unknown.\n */\nexport default function is(\n type: string,\n node: t.Node | null | undefined,\n opts?: Partial<t.Node>,\n): node is t.Node {\n if (!node) return false;\n\n const matches = isType(node.type, type);\n if (!matches) {\n if (!opts && node.type === \"Placeholder\" && type in FLIPPED_ALIAS_KEYS) {\n // We can only return true if the placeholder doesn't replace a real node,\n // but it replaces a category of nodes (an alias).\n //\n // t.is(\"Identifier\", node) gives some guarantees about node's shape, so we\n // can't say that Placeholder(expectedNode: \"Identifier\") is an identifier\n // because it doesn't have the same properties.\n // On the other hand, t.is(\"Expression\", node) doesn't say anything about\n // the shape of node because Expression can be many different nodes: we can,\n // and should, safely report expression placeholders as Expressions.\n return isPlaceholderType(node.expectedNode, type);\n }\n return false;\n }\n\n if (opts === undefined) {\n return true;\n } else {\n return shallowEqual(node, opts);\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AA8Be,SAASI,EAAEA,CACxBC,IAAY,EACZC,IAA+B,EAC/BC,IAAsB,EACN;EAChB,IAAI,CAACD,IAAI,EAAE,OAAO,KAAK;EAEvB,MAAME,OAAO,GAAG,IAAAC,eAAM,EAACH,IAAI,CAACD,IAAI,EAAEA,IAAI,CAAC;EACvC,IAAI,CAACG,OAAO,EAAE;IACZ,IAAI,CAACD,IAAI,IAAID,IAAI,CAACD,IAAI,KAAK,aAAa,IAAIA,IAAI,IAAIK,yBAAkB,EAAE;MAUtE,OAAO,IAAAC,0BAAiB,EAACL,IAAI,CAACM,YAAY,EAAEP,IAAI,CAAC;IACnD;IACA,OAAO,KAAK;EACd;EAEA,IAAIE,IAAI,KAAKM,SAAS,EAAE;IACtB,OAAO,IAAI;EACb,CAAC,MAAM;IACL,OAAO,IAAAC,qBAAY,EAACR,IAAI,EAAEC,IAAI,CAAC;EACjC;AACF","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isBinding.js b/vanilla/node_modules/@babel/types/lib/validators/isBinding.js
new file mode 100644
index 0000000..b3b1a4b
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isBinding.js
@@ -0,0 +1,27 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isBinding;
+var _getBindingIdentifiers = require("../retrievers/getBindingIdentifiers.js");
+function isBinding(node, parent, grandparent) {
+ if (grandparent && node.type === "Identifier" && parent.type === "ObjectProperty" && grandparent.type === "ObjectExpression") {
+ return false;
+ }
+ const keys = _getBindingIdentifiers.default.keys[parent.type];
+ if (keys) {
+ for (let i = 0; i < keys.length; i++) {
+ const key = keys[i];
+ const val = parent[key];
+ if (Array.isArray(val)) {
+ if (val.includes(node)) return true;
+ } else {
+ if (val === node) return true;
+ }
+ }
+ }
+ return false;
+}
+
+//# sourceMappingURL=isBinding.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isBinding.js.map b/vanilla/node_modules/@babel/types/lib/validators/isBinding.js.map
new file mode 100644
index 0000000..d6c9c05
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isBinding.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_getBindingIdentifiers","require","isBinding","node","parent","grandparent","type","keys","getBindingIdentifiers","i","length","key","val","Array","isArray","includes"],"sources":["../../src/validators/isBinding.ts"],"sourcesContent":["import getBindingIdentifiers from \"../retrievers/getBindingIdentifiers.ts\";\nimport type * as t from \"../index.ts\";\n/**\n * Check if the input `node` is a binding identifier.\n */\nexport default function isBinding(\n node: t.Node,\n parent: t.Node,\n grandparent?: t.Node,\n): boolean {\n if (\n grandparent &&\n node.type === \"Identifier\" &&\n parent.type === \"ObjectProperty\" &&\n grandparent.type === \"ObjectExpression\"\n ) {\n // We need to special-case this, because getBindingIdentifiers\n // has an ObjectProperty->value entry for destructuring patterns.\n return false;\n }\n\n const keys = getBindingIdentifiers.keys[parent.type];\n if (keys) {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const val =\n // @ts-expect-error key must present in parent\n parent[key];\n if (Array.isArray(val)) {\n if (val.includes(node)) return true;\n } else {\n if (val === node) return true;\n }\n }\n }\n\n return false;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,sBAAA,GAAAC,OAAA;AAKe,SAASC,SAASA,CAC/BC,IAAY,EACZC,MAAc,EACdC,WAAoB,EACX;EACT,IACEA,WAAW,IACXF,IAAI,CAACG,IAAI,KAAK,YAAY,IAC1BF,MAAM,CAACE,IAAI,KAAK,gBAAgB,IAChCD,WAAW,CAACC,IAAI,KAAK,kBAAkB,EACvC;IAGA,OAAO,KAAK;EACd;EAEA,MAAMC,IAAI,GAAGC,8BAAqB,CAACD,IAAI,CAACH,MAAM,CAACE,IAAI,CAAC;EACpD,IAAIC,IAAI,EAAE;IACR,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,IAAI,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;MACpC,MAAME,GAAG,GAAGJ,IAAI,CAACE,CAAC,CAAC;MACnB,MAAMG,GAAG,GAEPR,MAAM,CAACO,GAAG,CAAC;MACb,IAAIE,KAAK,CAACC,OAAO,CAACF,GAAG,CAAC,EAAE;QACtB,IAAIA,GAAG,CAACG,QAAQ,CAACZ,IAAI,CAAC,EAAE,OAAO,IAAI;MACrC,CAAC,MAAM;QACL,IAAIS,GAAG,KAAKT,IAAI,EAAE,OAAO,IAAI;MAC/B;IACF;EACF;EAEA,OAAO,KAAK;AACd","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isBlockScoped.js b/vanilla/node_modules/@babel/types/lib/validators/isBlockScoped.js
new file mode 100644
index 0000000..a552f65
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isBlockScoped.js
@@ -0,0 +1,13 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isBlockScoped;
+var _index = require("./generated/index.js");
+var _isLet = require("./isLet.js");
+function isBlockScoped(node) {
+ return (0, _index.isFunctionDeclaration)(node) || (0, _index.isClassDeclaration)(node) || (0, _isLet.default)(node);
+}
+
+//# sourceMappingURL=isBlockScoped.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isBlockScoped.js.map b/vanilla/node_modules/@babel/types/lib/validators/isBlockScoped.js.map
new file mode 100644
index 0000000..89ecfed
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isBlockScoped.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","_isLet","isBlockScoped","node","isFunctionDeclaration","isClassDeclaration","isLet"],"sources":["../../src/validators/isBlockScoped.ts"],"sourcesContent":["import {\n isClassDeclaration,\n isFunctionDeclaration,\n} from \"./generated/index.ts\";\nimport isLet from \"./isLet.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is block scoped.\n */\nexport default function isBlockScoped(\n node: t.Node | null | undefined,\n): boolean {\n return isFunctionDeclaration(node) || isClassDeclaration(node) || isLet(node);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAIA,IAAAC,MAAA,GAAAD,OAAA;AAMe,SAASE,aAAaA,CACnCC,IAA+B,EACtB;EACT,OAAO,IAAAC,4BAAqB,EAACD,IAAI,CAAC,IAAI,IAAAE,yBAAkB,EAACF,IAAI,CAAC,IAAI,IAAAG,cAAK,EAACH,IAAI,CAAC;AAC/E","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isImmutable.js b/vanilla/node_modules/@babel/types/lib/validators/isImmutable.js
new file mode 100644
index 0000000..324fae6
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isImmutable.js
@@ -0,0 +1,21 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isImmutable;
+var _isType = require("./isType.js");
+var _index = require("./generated/index.js");
+function isImmutable(node) {
+ if ((0, _isType.default)(node.type, "Immutable")) return true;
+ if ((0, _index.isIdentifier)(node)) {
+ if (node.name === "undefined") {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ return false;
+}
+
+//# sourceMappingURL=isImmutable.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isImmutable.js.map b/vanilla/node_modules/@babel/types/lib/validators/isImmutable.js.map
new file mode 100644
index 0000000..0234710
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isImmutable.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_isType","require","_index","isImmutable","node","isType","type","isIdentifier","name"],"sources":["../../src/validators/isImmutable.ts"],"sourcesContent":["import isType from \"./isType.ts\";\nimport { isIdentifier } from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is definitely immutable.\n */\nexport default function isImmutable(node: t.Node): boolean {\n if (isType(node.type, \"Immutable\")) return true;\n\n if (isIdentifier(node)) {\n if (node.name === \"undefined\") {\n // immutable!\n return true;\n } else {\n // no idea...\n return false;\n }\n }\n\n return false;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAMe,SAASE,WAAWA,CAACC,IAAY,EAAW;EACzD,IAAI,IAAAC,eAAM,EAACD,IAAI,CAACE,IAAI,EAAE,WAAW,CAAC,EAAE,OAAO,IAAI;EAE/C,IAAI,IAAAC,mBAAY,EAACH,IAAI,CAAC,EAAE;IACtB,IAAIA,IAAI,CAACI,IAAI,KAAK,WAAW,EAAE;MAE7B,OAAO,IAAI;IACb,CAAC,MAAM;MAEL,OAAO,KAAK;IACd;EACF;EAEA,OAAO,KAAK;AACd","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isLet.js b/vanilla/node_modules/@babel/types/lib/validators/isLet.js
new file mode 100644
index 0000000..be1906e
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isLet.js
@@ -0,0 +1,13 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isLet;
+var _index = require("./generated/index.js");
+var BLOCK_SCOPED_SYMBOL = Symbol.for("var used to be block scoped");
+function isLet(node) {
+ return (0, _index.isVariableDeclaration)(node) && (node.kind !== "var" || node[BLOCK_SCOPED_SYMBOL]);
+}
+
+//# sourceMappingURL=isLet.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isLet.js.map b/vanilla/node_modules/@babel/types/lib/validators/isLet.js.map
new file mode 100644
index 0000000..1524938
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isLet.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","BLOCK_SCOPED_SYMBOL","Symbol","for","isLet","node","isVariableDeclaration","kind"],"sources":["../../src/validators/isLet.ts"],"sourcesContent":["import { isVariableDeclaration } from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nif (!process.env.BABEL_8_BREAKING) {\n // eslint-disable-next-line no-var\n var BLOCK_SCOPED_SYMBOL = Symbol.for(\"var used to be block scoped\");\n}\n\n/**\n * Check if the input `node` is a `let` variable declaration.\n */\nexport default function isLet(node: t.Node): boolean {\n if (process.env.BABEL_8_BREAKING) {\n return isVariableDeclaration(node) && node.kind !== \"var\";\n } else {\n return (\n isVariableDeclaration(node) &&\n (node.kind !== \"var\" ||\n // @ts-expect-error Fixme: document private properties\n node[BLOCK_SCOPED_SYMBOL])\n );\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAKE,IAAIC,mBAAmB,GAAGC,MAAM,CAACC,GAAG,CAAC,6BAA6B,CAAC;AAMtD,SAASC,KAAKA,CAACC,IAAY,EAAW;EAIjD,OACE,IAAAC,4BAAqB,EAACD,IAAI,CAAC,KAC1BA,IAAI,CAACE,IAAI,KAAK,KAAK,IAElBF,IAAI,CAACJ,mBAAmB,CAAC,CAAC;AAGlC","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isNode.js b/vanilla/node_modules/@babel/types/lib/validators/isNode.js
new file mode 100644
index 0000000..d80ce74
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isNode.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isNode;
+var _index = require("../definitions/index.js");
+function isNode(node) {
+ return !!(node && _index.VISITOR_KEYS[node.type]);
+}
+
+//# sourceMappingURL=isNode.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isNode.js.map b/vanilla/node_modules/@babel/types/lib/validators/isNode.js.map
new file mode 100644
index 0000000..0577fec
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isNode.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","isNode","node","VISITOR_KEYS","type"],"sources":["../../src/validators/isNode.ts"],"sourcesContent":["import { VISITOR_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function isNode(node: any): node is t.Node {\n return !!(node && VISITOR_KEYS[node.type]);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGe,SAASC,MAAMA,CAACC,IAAS,EAAkB;EACxD,OAAO,CAAC,EAAEA,IAAI,IAAIC,mBAAY,CAACD,IAAI,CAACE,IAAI,CAAC,CAAC;AAC5C","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isNodesEquivalent.js b/vanilla/node_modules/@babel/types/lib/validators/isNodesEquivalent.js
new file mode 100644
index 0000000..fc39902
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isNodesEquivalent.js
@@ -0,0 +1,57 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isNodesEquivalent;
+var _index = require("../definitions/index.js");
+function isNodesEquivalent(a, b) {
+ if (typeof a !== "object" || typeof b !== "object" || a == null || b == null) {
+ return a === b;
+ }
+ if (a.type !== b.type) {
+ return false;
+ }
+ const fields = Object.keys(_index.NODE_FIELDS[a.type] || a.type);
+ const visitorKeys = _index.VISITOR_KEYS[a.type];
+ for (const field of fields) {
+ const val_a = a[field];
+ const val_b = b[field];
+ if (typeof val_a !== typeof val_b) {
+ return false;
+ }
+ if (val_a == null && val_b == null) {
+ continue;
+ } else if (val_a == null || val_b == null) {
+ return false;
+ }
+ if (Array.isArray(val_a)) {
+ if (!Array.isArray(val_b)) {
+ return false;
+ }
+ if (val_a.length !== val_b.length) {
+ return false;
+ }
+ for (let i = 0; i < val_a.length; i++) {
+ if (!isNodesEquivalent(val_a[i], val_b[i])) {
+ return false;
+ }
+ }
+ continue;
+ }
+ if (typeof val_a === "object" && !(visitorKeys != null && visitorKeys.includes(field))) {
+ for (const key of Object.keys(val_a)) {
+ if (val_a[key] !== val_b[key]) {
+ return false;
+ }
+ }
+ continue;
+ }
+ if (!isNodesEquivalent(val_a, val_b)) {
+ return false;
+ }
+ }
+ return true;
+}
+
+//# sourceMappingURL=isNodesEquivalent.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map b/vanilla/node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map
new file mode 100644
index 0000000..c718316
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","isNodesEquivalent","a","b","type","fields","Object","keys","NODE_FIELDS","visitorKeys","VISITOR_KEYS","field","val_a","val_b","Array","isArray","length","i","includes","key"],"sources":["../../src/validators/isNodesEquivalent.ts"],"sourcesContent":["import { NODE_FIELDS, VISITOR_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if two nodes are equivalent\n */\nexport default function isNodesEquivalent<T extends Partial<t.Node>>(\n a: T,\n b: any,\n): b is T {\n if (\n typeof a !== \"object\" ||\n typeof b !== \"object\" ||\n a == null ||\n b == null\n ) {\n return a === b;\n }\n\n if (a.type !== b.type) {\n return false;\n }\n\n const fields = Object.keys(NODE_FIELDS[a.type] || a.type);\n const visitorKeys = VISITOR_KEYS[a.type];\n\n for (const field of fields) {\n const val_a =\n // @ts-expect-error field must present in a\n a[field];\n const val_b = b[field];\n if (typeof val_a !== typeof val_b) {\n return false;\n }\n if (val_a == null && val_b == null) {\n continue;\n } else if (val_a == null || val_b == null) {\n return false;\n }\n\n if (Array.isArray(val_a)) {\n if (!Array.isArray(val_b)) {\n return false;\n }\n if (val_a.length !== val_b.length) {\n return false;\n }\n\n for (let i = 0; i < val_a.length; i++) {\n if (!isNodesEquivalent(val_a[i], val_b[i])) {\n return false;\n }\n }\n continue;\n }\n\n if (typeof val_a === \"object\" && !visitorKeys?.includes(field)) {\n for (const key of Object.keys(val_a)) {\n if (val_a[key] !== val_b[key]) {\n return false;\n }\n }\n continue;\n }\n\n if (!isNodesEquivalent(val_a, val_b)) {\n return false;\n }\n }\n\n return true;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAMe,SAASC,iBAAiBA,CACvCC,CAAI,EACJC,CAAM,EACE;EACR,IACE,OAAOD,CAAC,KAAK,QAAQ,IACrB,OAAOC,CAAC,KAAK,QAAQ,IACrBD,CAAC,IAAI,IAAI,IACTC,CAAC,IAAI,IAAI,EACT;IACA,OAAOD,CAAC,KAAKC,CAAC;EAChB;EAEA,IAAID,CAAC,CAACE,IAAI,KAAKD,CAAC,CAACC,IAAI,EAAE;IACrB,OAAO,KAAK;EACd;EAEA,MAAMC,MAAM,GAAGC,MAAM,CAACC,IAAI,CAACC,kBAAW,CAACN,CAAC,CAACE,IAAI,CAAC,IAAIF,CAAC,CAACE,IAAI,CAAC;EACzD,MAAMK,WAAW,GAAGC,mBAAY,CAACR,CAAC,CAACE,IAAI,CAAC;EAExC,KAAK,MAAMO,KAAK,IAAIN,MAAM,EAAE;IAC1B,MAAMO,KAAK,GAETV,CAAC,CAACS,KAAK,CAAC;IACV,MAAME,KAAK,GAAGV,CAAC,CAACQ,KAAK,CAAC;IACtB,IAAI,OAAOC,KAAK,KAAK,OAAOC,KAAK,EAAE;MACjC,OAAO,KAAK;IACd;IACA,IAAID,KAAK,IAAI,IAAI,IAAIC,KAAK,IAAI,IAAI,EAAE;MAClC;IACF,CAAC,MAAM,IAAID,KAAK,IAAI,IAAI,IAAIC,KAAK,IAAI,IAAI,EAAE;MACzC,OAAO,KAAK;IACd;IAEA,IAAIC,KAAK,CAACC,OAAO,CAACH,KAAK,CAAC,EAAE;MACxB,IAAI,CAACE,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,EAAE;QACzB,OAAO,KAAK;MACd;MACA,IAAID,KAAK,CAACI,MAAM,KAAKH,KAAK,CAACG,MAAM,EAAE;QACjC,OAAO,KAAK;MACd;MAEA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,KAAK,CAACI,MAAM,EAAEC,CAAC,EAAE,EAAE;QACrC,IAAI,CAAChB,iBAAiB,CAACW,KAAK,CAACK,CAAC,CAAC,EAAEJ,KAAK,CAACI,CAAC,CAAC,CAAC,EAAE;UAC1C,OAAO,KAAK;QACd;MACF;MACA;IACF;IAEA,IAAI,OAAOL,KAAK,KAAK,QAAQ,IAAI,EAACH,WAAW,YAAXA,WAAW,CAAES,QAAQ,CAACP,KAAK,CAAC,GAAE;MAC9D,KAAK,MAAMQ,GAAG,IAAIb,MAAM,CAACC,IAAI,CAACK,KAAK,CAAC,EAAE;QACpC,IAAIA,KAAK,CAACO,GAAG,CAAC,KAAKN,KAAK,CAACM,GAAG,CAAC,EAAE;UAC7B,OAAO,KAAK;QACd;MACF;MACA;IACF;IAEA,IAAI,CAAClB,iBAAiB,CAACW,KAAK,EAAEC,KAAK,CAAC,EAAE;MACpC,OAAO,KAAK;IACd;EACF;EAEA,OAAO,IAAI;AACb","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isPlaceholderType.js b/vanilla/node_modules/@babel/types/lib/validators/isPlaceholderType.js
new file mode 100644
index 0000000..023bff1
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isPlaceholderType.js
@@ -0,0 +1,15 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isPlaceholderType;
+var _index = require("../definitions/index.js");
+function isPlaceholderType(placeholderType, targetType) {
+ if (placeholderType === targetType) return true;
+ const aliases = _index.PLACEHOLDERS_ALIAS[placeholderType];
+ if (aliases != null && aliases.includes(targetType)) return true;
+ return false;
+}
+
+//# sourceMappingURL=isPlaceholderType.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isPlaceholderType.js.map b/vanilla/node_modules/@babel/types/lib/validators/isPlaceholderType.js.map
new file mode 100644
index 0000000..beab534
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isPlaceholderType.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","isPlaceholderType","placeholderType","targetType","aliases","PLACEHOLDERS_ALIAS","includes"],"sources":["../../src/validators/isPlaceholderType.ts"],"sourcesContent":["import { PLACEHOLDERS_ALIAS } from \"../definitions/index.ts\";\n\n/**\n * Test if a `placeholderType` is a `targetType` or if `targetType` is an alias of `placeholderType`.\n */\nexport default function isPlaceholderType(\n placeholderType: string,\n targetType: string,\n): boolean {\n if (placeholderType === targetType) return true;\n\n const aliases: string[] | undefined = PLACEHOLDERS_ALIAS[placeholderType];\n if (aliases?.includes(targetType)) return true;\n\n return false;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAKe,SAASC,iBAAiBA,CACvCC,eAAuB,EACvBC,UAAkB,EACT;EACT,IAAID,eAAe,KAAKC,UAAU,EAAE,OAAO,IAAI;EAE/C,MAAMC,OAA6B,GAAGC,yBAAkB,CAACH,eAAe,CAAC;EACzE,IAAIE,OAAO,YAAPA,OAAO,CAAEE,QAAQ,CAACH,UAAU,CAAC,EAAE,OAAO,IAAI;EAE9C,OAAO,KAAK;AACd","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isReferenced.js b/vanilla/node_modules/@babel/types/lib/validators/isReferenced.js
new file mode 100644
index 0000000..b2718d7
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isReferenced.js
@@ -0,0 +1,96 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isReferenced;
+function isReferenced(node, parent, grandparent) {
+ switch (parent.type) {
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ if (parent.property === node) {
+ return !!parent.computed;
+ }
+ return parent.object === node;
+ case "JSXMemberExpression":
+ return parent.object === node;
+ case "VariableDeclarator":
+ return parent.init === node;
+ case "ArrowFunctionExpression":
+ return parent.body === node;
+ case "PrivateName":
+ return false;
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ case "ObjectMethod":
+ if (parent.key === node) {
+ return !!parent.computed;
+ }
+ return false;
+ case "ObjectProperty":
+ if (parent.key === node) {
+ return !!parent.computed;
+ }
+ return (grandparent == null ? void 0 : grandparent.type) !== "ObjectPattern";
+ case "ClassProperty":
+ case "ClassAccessorProperty":
+ if (parent.key === node) {
+ return !!parent.computed;
+ }
+ return true;
+ case "ClassPrivateProperty":
+ return parent.key !== node;
+ case "ClassDeclaration":
+ case "ClassExpression":
+ return parent.superClass === node;
+ case "AssignmentExpression":
+ return parent.right === node;
+ case "AssignmentPattern":
+ return parent.right === node;
+ case "LabeledStatement":
+ return false;
+ case "CatchClause":
+ return false;
+ case "RestElement":
+ return false;
+ case "BreakStatement":
+ case "ContinueStatement":
+ return false;
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ return false;
+ case "ExportNamespaceSpecifier":
+ case "ExportDefaultSpecifier":
+ return false;
+ case "ExportSpecifier":
+ if (grandparent != null && grandparent.source) {
+ return false;
+ }
+ return parent.local === node;
+ case "ImportDefaultSpecifier":
+ case "ImportNamespaceSpecifier":
+ case "ImportSpecifier":
+ return false;
+ case "ImportAttribute":
+ return false;
+ case "JSXAttribute":
+ return false;
+ case "ObjectPattern":
+ case "ArrayPattern":
+ return false;
+ case "MetaProperty":
+ return false;
+ case "ObjectTypeProperty":
+ return parent.key !== node;
+ case "TSEnumMember":
+ return parent.id !== node;
+ case "TSPropertySignature":
+ if (parent.key === node) {
+ return !!parent.computed;
+ }
+ return true;
+ }
+ return true;
+}
+
+//# sourceMappingURL=isReferenced.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isReferenced.js.map b/vanilla/node_modules/@babel/types/lib/validators/isReferenced.js.map
new file mode 100644
index 0000000..16b12f4
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isReferenced.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["isReferenced","node","parent","grandparent","type","property","computed","object","init","body","key","superClass","right","source","local","id"],"sources":["../../src/validators/isReferenced.ts"],"sourcesContent":["import type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is a reference to a bound variable.\n */\nexport default function isReferenced(\n node: t.Node | null | undefined,\n parent: t.Node,\n grandparent?: t.Node,\n): boolean {\n switch (parent.type) {\n // yes: PARENT[NODE]\n // yes: NODE.child\n // no: parent.NODE\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n if (parent.property === node) {\n return !!parent.computed;\n }\n return parent.object === node;\n\n case \"JSXMemberExpression\":\n return parent.object === node;\n // no: let NODE = init;\n // yes: let id = NODE;\n case \"VariableDeclarator\":\n return parent.init === node;\n\n // yes: () => NODE\n // no: (NODE) => {}\n case \"ArrowFunctionExpression\":\n return parent.body === node;\n\n // no: class { #NODE; }\n // no: class { get #NODE() {} }\n // no: class { #NODE() {} }\n // no: class { fn() { return this.#NODE; } }\n case \"PrivateName\":\n return false;\n\n // no: class { NODE() {} }\n // yes: class { [NODE]() {} }\n // no: class { foo(NODE) {} }\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"ObjectMethod\":\n if (parent.key === node) {\n return !!parent.computed;\n }\n return false;\n\n // yes: { [NODE]: \"\" }\n // no: { NODE: \"\" }\n // depends: { NODE }\n // depends: { key: NODE }\n case \"ObjectProperty\":\n if (parent.key === node) {\n return !!parent.computed;\n }\n // parent.value === node\n return grandparent?.type !== \"ObjectPattern\";\n // no: class { NODE = value; }\n // yes: class { [NODE] = value; }\n // yes: class { key = NODE; }\n case \"ClassProperty\":\n case \"ClassAccessorProperty\":\n if (parent.key === node) {\n return !!parent.computed;\n }\n return true;\n case \"ClassPrivateProperty\":\n return parent.key !== node;\n\n // no: class NODE {}\n // yes: class Foo extends NODE {}\n case \"ClassDeclaration\":\n case \"ClassExpression\":\n return parent.superClass === node;\n\n // yes: left = NODE;\n // no: NODE = right;\n case \"AssignmentExpression\":\n return parent.right === node;\n\n // no: [NODE = foo] = [];\n // yes: [foo = NODE] = [];\n case \"AssignmentPattern\":\n return parent.right === node;\n\n // no: NODE: for (;;) {}\n case \"LabeledStatement\":\n return false;\n\n // no: try {} catch (NODE) {}\n case \"CatchClause\":\n return false;\n\n // no: function foo(...NODE) {}\n case \"RestElement\":\n return false;\n\n case \"BreakStatement\":\n case \"ContinueStatement\":\n return false;\n\n // no: function NODE() {}\n // no: function foo(NODE) {}\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n return false;\n\n // no: export NODE from \"foo\";\n // no: export * as NODE from \"foo\";\n case \"ExportNamespaceSpecifier\":\n case \"ExportDefaultSpecifier\":\n return false;\n\n // no: export { foo as NODE };\n // yes: export { NODE as foo };\n // no: export { NODE as foo } from \"foo\";\n case \"ExportSpecifier\":\n // @ts-expect-error todo(flow->ts): Property 'source' does not exist on type 'AnyTypeAnnotation'.\n if (grandparent?.source) {\n return false;\n }\n return parent.local === node;\n\n // no: import NODE from \"foo\";\n // no: import * as NODE from \"foo\";\n // no: import { NODE as foo } from \"foo\";\n // no: import { foo as NODE } from \"foo\";\n // no: import NODE from \"bar\";\n case \"ImportDefaultSpecifier\":\n case \"ImportNamespaceSpecifier\":\n case \"ImportSpecifier\":\n return false;\n\n // no: import \"foo\" assert { NODE: \"json\" }\n case \"ImportAttribute\":\n return false;\n\n // no: <div NODE=\"foo\" />\n case \"JSXAttribute\":\n return false;\n\n // no: [NODE] = [];\n // no: ({ NODE }) = [];\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n return false;\n\n // no: new.NODE\n // no: NODE.target\n case \"MetaProperty\":\n return false;\n\n // yes: type X = { someProperty: NODE }\n // no: type X = { NODE: OtherType }\n case \"ObjectTypeProperty\":\n return parent.key !== node;\n\n // yes: enum X { Foo = NODE }\n // no: enum X { NODE }\n case \"TSEnumMember\":\n return parent.id !== node;\n\n // yes: { [NODE]: value }\n // no: { NODE: value }\n case \"TSPropertySignature\":\n if (parent.key === node) {\n return !!parent.computed;\n }\n\n return true;\n }\n\n return true;\n}\n"],"mappings":";;;;;;AAKe,SAASA,YAAYA,CAClCC,IAA+B,EAC/BC,MAAc,EACdC,WAAoB,EACX;EACT,QAAQD,MAAM,CAACE,IAAI;IAIjB,KAAK,kBAAkB;IACvB,KAAK,0BAA0B;MAC7B,IAAIF,MAAM,CAACG,QAAQ,KAAKJ,IAAI,EAAE;QAC5B,OAAO,CAAC,CAACC,MAAM,CAACI,QAAQ;MAC1B;MACA,OAAOJ,MAAM,CAACK,MAAM,KAAKN,IAAI;IAE/B,KAAK,qBAAqB;MACxB,OAAOC,MAAM,CAACK,MAAM,KAAKN,IAAI;IAG/B,KAAK,oBAAoB;MACvB,OAAOC,MAAM,CAACM,IAAI,KAAKP,IAAI;IAI7B,KAAK,yBAAyB;MAC5B,OAAOC,MAAM,CAACO,IAAI,KAAKR,IAAI;IAM7B,KAAK,aAAa;MAChB,OAAO,KAAK;IAKd,KAAK,aAAa;IAClB,KAAK,oBAAoB;IACzB,KAAK,cAAc;MACjB,IAAIC,MAAM,CAACQ,GAAG,KAAKT,IAAI,EAAE;QACvB,OAAO,CAAC,CAACC,MAAM,CAACI,QAAQ;MAC1B;MACA,OAAO,KAAK;IAMd,KAAK,gBAAgB;MACnB,IAAIJ,MAAM,CAACQ,GAAG,KAAKT,IAAI,EAAE;QACvB,OAAO,CAAC,CAACC,MAAM,CAACI,QAAQ;MAC1B;MAEA,OAAO,CAAAH,WAAW,oBAAXA,WAAW,CAAEC,IAAI,MAAK,eAAe;IAI9C,KAAK,eAAe;IACpB,KAAK,uBAAuB;MAC1B,IAAIF,MAAM,CAACQ,GAAG,KAAKT,IAAI,EAAE;QACvB,OAAO,CAAC,CAACC,MAAM,CAACI,QAAQ;MAC1B;MACA,OAAO,IAAI;IACb,KAAK,sBAAsB;MACzB,OAAOJ,MAAM,CAACQ,GAAG,KAAKT,IAAI;IAI5B,KAAK,kBAAkB;IACvB,KAAK,iBAAiB;MACpB,OAAOC,MAAM,CAACS,UAAU,KAAKV,IAAI;IAInC,KAAK,sBAAsB;MACzB,OAAOC,MAAM,CAACU,KAAK,KAAKX,IAAI;IAI9B,KAAK,mBAAmB;MACtB,OAAOC,MAAM,CAACU,KAAK,KAAKX,IAAI;IAG9B,KAAK,kBAAkB;MACrB,OAAO,KAAK;IAGd,KAAK,aAAa;MAChB,OAAO,KAAK;IAGd,KAAK,aAAa;MAChB,OAAO,KAAK;IAEd,KAAK,gBAAgB;IACrB,KAAK,mBAAmB;MACtB,OAAO,KAAK;IAId,KAAK,qBAAqB;IAC1B,KAAK,oBAAoB;MACvB,OAAO,KAAK;IAId,KAAK,0BAA0B;IAC/B,KAAK,wBAAwB;MAC3B,OAAO,KAAK;IAKd,KAAK,iBAAiB;MAEpB,IAAIE,WAAW,YAAXA,WAAW,CAAEU,MAAM,EAAE;QACvB,OAAO,KAAK;MACd;MACA,OAAOX,MAAM,CAACY,KAAK,KAAKb,IAAI;IAO9B,KAAK,wBAAwB;IAC7B,KAAK,0BAA0B;IAC/B,KAAK,iBAAiB;MACpB,OAAO,KAAK;IAGd,KAAK,iBAAiB;MACpB,OAAO,KAAK;IAGd,KAAK,cAAc;MACjB,OAAO,KAAK;IAId,KAAK,eAAe;IACpB,KAAK,cAAc;MACjB,OAAO,KAAK;IAId,KAAK,cAAc;MACjB,OAAO,KAAK;IAId,KAAK,oBAAoB;MACvB,OAAOC,MAAM,CAACQ,GAAG,KAAKT,IAAI;IAI5B,KAAK,cAAc;MACjB,OAAOC,MAAM,CAACa,EAAE,KAAKd,IAAI;IAI3B,KAAK,qBAAqB;MACxB,IAAIC,MAAM,CAACQ,GAAG,KAAKT,IAAI,EAAE;QACvB,OAAO,CAAC,CAACC,MAAM,CAACI,QAAQ;MAC1B;MAEA,OAAO,IAAI;EACf;EAEA,OAAO,IAAI;AACb","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isScope.js b/vanilla/node_modules/@babel/types/lib/validators/isScope.js
new file mode 100644
index 0000000..40b5dc2
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isScope.js
@@ -0,0 +1,18 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isScope;
+var _index = require("./generated/index.js");
+function isScope(node, parent) {
+ if ((0, _index.isBlockStatement)(node) && ((0, _index.isFunction)(parent) || (0, _index.isCatchClause)(parent))) {
+ return false;
+ }
+ if ((0, _index.isPattern)(node) && ((0, _index.isFunction)(parent) || (0, _index.isCatchClause)(parent))) {
+ return true;
+ }
+ return (0, _index.isScopable)(node);
+}
+
+//# sourceMappingURL=isScope.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isScope.js.map b/vanilla/node_modules/@babel/types/lib/validators/isScope.js.map
new file mode 100644
index 0000000..7f8a243
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isScope.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","isScope","node","parent","isBlockStatement","isFunction","isCatchClause","isPattern","isScopable"],"sources":["../../src/validators/isScope.ts"],"sourcesContent":["import {\n isFunction,\n isCatchClause,\n isBlockStatement,\n isScopable,\n isPattern,\n} from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is a scope.\n */\nexport default function isScope(\n node: t.Node | null | undefined,\n parent: t.Node,\n): boolean {\n // If a BlockStatement is an immediate descendent of a Function/CatchClause, it must be in the body.\n // Hence we skipped the parentKey === \"params\" check\n if (isBlockStatement(node) && (isFunction(parent) || isCatchClause(parent))) {\n return false;\n }\n\n // If a Pattern is an immediate descendent of a Function/CatchClause, it must be in the params.\n // Hence we skipped the parentKey === \"params\" check\n if (isPattern(node) && (isFunction(parent) || isCatchClause(parent))) {\n return true;\n }\n\n return isScopable(node);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAYe,SAASC,OAAOA,CAC7BC,IAA+B,EAC/BC,MAAc,EACL;EAGT,IAAI,IAAAC,uBAAgB,EAACF,IAAI,CAAC,KAAK,IAAAG,iBAAU,EAACF,MAAM,CAAC,IAAI,IAAAG,oBAAa,EAACH,MAAM,CAAC,CAAC,EAAE;IAC3E,OAAO,KAAK;EACd;EAIA,IAAI,IAAAI,gBAAS,EAACL,IAAI,CAAC,KAAK,IAAAG,iBAAU,EAACF,MAAM,CAAC,IAAI,IAAAG,oBAAa,EAACH,MAAM,CAAC,CAAC,EAAE;IACpE,OAAO,IAAI;EACb;EAEA,OAAO,IAAAK,iBAAU,EAACN,IAAI,CAAC;AACzB","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isSpecifierDefault.js b/vanilla/node_modules/@babel/types/lib/validators/isSpecifierDefault.js
new file mode 100644
index 0000000..fc492b1
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isSpecifierDefault.js
@@ -0,0 +1,14 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isSpecifierDefault;
+var _index = require("./generated/index.js");
+function isSpecifierDefault(specifier) {
+ return (0, _index.isImportDefaultSpecifier)(specifier) || (0, _index.isIdentifier)(specifier.imported || specifier.exported, {
+ name: "default"
+ });
+}
+
+//# sourceMappingURL=isSpecifierDefault.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map b/vanilla/node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map
new file mode 100644
index 0000000..eefd1b0
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","isSpecifierDefault","specifier","isImportDefaultSpecifier","isIdentifier","imported","exported","name"],"sources":["../../src/validators/isSpecifierDefault.ts"],"sourcesContent":["import { isIdentifier, isImportDefaultSpecifier } from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `specifier` is a `default` import or export.\n */\nexport default function isSpecifierDefault(\n specifier: t.ModuleSpecifier,\n): boolean {\n return (\n isImportDefaultSpecifier(specifier) ||\n // @ts-expect-error todo(flow->ts): stricter type for specifier\n isIdentifier(specifier.imported || specifier.exported, {\n name: \"default\",\n })\n );\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAMe,SAASC,kBAAkBA,CACxCC,SAA4B,EACnB;EACT,OACE,IAAAC,+BAAwB,EAACD,SAAS,CAAC,IAEnC,IAAAE,mBAAY,EAACF,SAAS,CAACG,QAAQ,IAAIH,SAAS,CAACI,QAAQ,EAAE;IACrDC,IAAI,EAAE;EACR,CAAC,CAAC;AAEN","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isType.js b/vanilla/node_modules/@babel/types/lib/validators/isType.js
new file mode 100644
index 0000000..de8945d
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isType.js
@@ -0,0 +1,17 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isType;
+var _index = require("../definitions/index.js");
+function isType(nodeType, targetType) {
+ if (nodeType === targetType) return true;
+ if (nodeType == null) return false;
+ if (_index.ALIAS_KEYS[targetType]) return false;
+ const aliases = _index.FLIPPED_ALIAS_KEYS[targetType];
+ if (aliases != null && aliases.includes(nodeType)) return true;
+ return false;
+}
+
+//# sourceMappingURL=isType.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isType.js.map b/vanilla/node_modules/@babel/types/lib/validators/isType.js.map
new file mode 100644
index 0000000..642ee4c
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isType.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","isType","nodeType","targetType","ALIAS_KEYS","aliases","FLIPPED_ALIAS_KEYS","includes"],"sources":["../../src/validators/isType.ts"],"sourcesContent":["import { FLIPPED_ALIAS_KEYS, ALIAS_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function isType<T extends t.Node[\"type\"]>(\n nodeType: string,\n targetType: T,\n): nodeType is T;\n\nexport default function isType(\n nodeType: string | null | undefined,\n targetType: string,\n): boolean;\n\n/**\n * Test if a `nodeType` is a `targetType` or if `targetType` is an alias of `nodeType`.\n */\nexport default function isType(nodeType: string, targetType: string): boolean {\n if (nodeType === targetType) return true;\n\n // If nodeType is nullish, it can't be an alias of targetType.\n if (nodeType == null) return false;\n\n // This is a fast-path. If the test above failed, but an alias key is found, then the\n // targetType was a primary node type, so there's no need to check the aliases.\n // @ts-expect-error targetType may not index ALIAS_KEYS\n if (ALIAS_KEYS[targetType]) return false;\n\n const aliases: string[] | undefined = FLIPPED_ALIAS_KEYS[targetType];\n if (aliases?.includes(nodeType)) return true;\n\n return false;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAgBe,SAASC,MAAMA,CAACC,QAAgB,EAAEC,UAAkB,EAAW;EAC5E,IAAID,QAAQ,KAAKC,UAAU,EAAE,OAAO,IAAI;EAGxC,IAAID,QAAQ,IAAI,IAAI,EAAE,OAAO,KAAK;EAKlC,IAAIE,iBAAU,CAACD,UAAU,CAAC,EAAE,OAAO,KAAK;EAExC,MAAME,OAA6B,GAAGC,yBAAkB,CAACH,UAAU,CAAC;EACpE,IAAIE,OAAO,YAAPA,OAAO,CAAEE,QAAQ,CAACL,QAAQ,CAAC,EAAE,OAAO,IAAI;EAE5C,OAAO,KAAK;AACd","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isValidES3Identifier.js b/vanilla/node_modules/@babel/types/lib/validators/isValidES3Identifier.js
new file mode 100644
index 0000000..08c7d0a
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isValidES3Identifier.js
@@ -0,0 +1,13 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isValidES3Identifier;
+var _isValidIdentifier = require("./isValidIdentifier.js");
+const RESERVED_WORDS_ES3_ONLY = new Set(["abstract", "boolean", "byte", "char", "double", "enum", "final", "float", "goto", "implements", "int", "interface", "long", "native", "package", "private", "protected", "public", "short", "static", "synchronized", "throws", "transient", "volatile"]);
+function isValidES3Identifier(name) {
+ return (0, _isValidIdentifier.default)(name) && !RESERVED_WORDS_ES3_ONLY.has(name);
+}
+
+//# sourceMappingURL=isValidES3Identifier.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map b/vanilla/node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map
new file mode 100644
index 0000000..b864009
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_isValidIdentifier","require","RESERVED_WORDS_ES3_ONLY","Set","isValidES3Identifier","name","isValidIdentifier","has"],"sources":["../../src/validators/isValidES3Identifier.ts"],"sourcesContent":["import isValidIdentifier from \"./isValidIdentifier.ts\";\n\nconst RESERVED_WORDS_ES3_ONLY = new Set<string>([\n \"abstract\",\n \"boolean\",\n \"byte\",\n \"char\",\n \"double\",\n \"enum\",\n \"final\",\n \"float\",\n \"goto\",\n \"implements\",\n \"int\",\n \"interface\",\n \"long\",\n \"native\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"short\",\n \"static\",\n \"synchronized\",\n \"throws\",\n \"transient\",\n \"volatile\",\n]);\n\n/**\n * Check if the input `name` is a valid identifier name according to the ES3 specification.\n *\n * Additional ES3 reserved words are\n */\nexport default function isValidES3Identifier(name: string): boolean {\n return isValidIdentifier(name) && !RESERVED_WORDS_ES3_ONLY.has(name);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAEA,MAAMC,uBAAuB,GAAG,IAAIC,GAAG,CAAS,CAC9C,UAAU,EACV,SAAS,EACT,MAAM,EACN,MAAM,EACN,QAAQ,EACR,MAAM,EACN,OAAO,EACP,OAAO,EACP,MAAM,EACN,YAAY,EACZ,KAAK,EACL,WAAW,EACX,MAAM,EACN,QAAQ,EACR,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,WAAW,EACX,UAAU,CACX,CAAC;AAOa,SAASC,oBAAoBA,CAACC,IAAY,EAAW;EAClE,OAAO,IAAAC,0BAAiB,EAACD,IAAI,CAAC,IAAI,CAACH,uBAAuB,CAACK,GAAG,CAACF,IAAI,CAAC;AACtE","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isValidIdentifier.js b/vanilla/node_modules/@babel/types/lib/validators/isValidIdentifier.js
new file mode 100644
index 0000000..b8674b5
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isValidIdentifier.js
@@ -0,0 +1,18 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isValidIdentifier;
+var _helperValidatorIdentifier = require("@babel/helper-validator-identifier");
+function isValidIdentifier(name, reserved = true) {
+ if (typeof name !== "string") return false;
+ if (reserved) {
+ if ((0, _helperValidatorIdentifier.isKeyword)(name) || (0, _helperValidatorIdentifier.isStrictReservedWord)(name, true)) {
+ return false;
+ }
+ }
+ return (0, _helperValidatorIdentifier.isIdentifierName)(name);
+}
+
+//# sourceMappingURL=isValidIdentifier.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isValidIdentifier.js.map b/vanilla/node_modules/@babel/types/lib/validators/isValidIdentifier.js.map
new file mode 100644
index 0000000..1b595c4
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isValidIdentifier.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_helperValidatorIdentifier","require","isValidIdentifier","name","reserved","isKeyword","isStrictReservedWord","isIdentifierName"],"sources":["../../src/validators/isValidIdentifier.ts"],"sourcesContent":["import {\n isIdentifierName,\n isStrictReservedWord,\n isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\n/**\n * Check if the input `name` is a valid identifier name\n * and isn't a reserved word.\n */\nexport default function isValidIdentifier(\n name: string,\n reserved: boolean = true,\n): boolean {\n if (typeof name !== \"string\") return false;\n\n if (reserved) {\n // \"await\" is invalid in module, valid in script; better be safe (see #4952)\n if (isKeyword(name) || isStrictReservedWord(name, true)) {\n return false;\n }\n }\n\n return isIdentifierName(name);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,0BAAA,GAAAC,OAAA;AAUe,SAASC,iBAAiBA,CACvCC,IAAY,EACZC,QAAiB,GAAG,IAAI,EACf;EACT,IAAI,OAAOD,IAAI,KAAK,QAAQ,EAAE,OAAO,KAAK;EAE1C,IAAIC,QAAQ,EAAE;IAEZ,IAAI,IAAAC,oCAAS,EAACF,IAAI,CAAC,IAAI,IAAAG,+CAAoB,EAACH,IAAI,EAAE,IAAI,CAAC,EAAE;MACvD,OAAO,KAAK;IACd;EACF;EAEA,OAAO,IAAAI,2CAAgB,EAACJ,IAAI,CAAC;AAC/B","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isVar.js b/vanilla/node_modules/@babel/types/lib/validators/isVar.js
new file mode 100644
index 0000000..3018b41
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isVar.js
@@ -0,0 +1,15 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isVar;
+var _index = require("./generated/index.js");
+var BLOCK_SCOPED_SYMBOL = Symbol.for("var used to be block scoped");
+function isVar(node) {
+ return (0, _index.isVariableDeclaration)(node, {
+ kind: "var"
+ }) && !node[BLOCK_SCOPED_SYMBOL];
+}
+
+//# sourceMappingURL=isVar.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/isVar.js.map b/vanilla/node_modules/@babel/types/lib/validators/isVar.js.map
new file mode 100644
index 0000000..81b3cd7
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/isVar.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","BLOCK_SCOPED_SYMBOL","Symbol","for","isVar","node","isVariableDeclaration","kind"],"sources":["../../src/validators/isVar.ts"],"sourcesContent":["import { isVariableDeclaration } from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nif (!process.env.BABEL_8_BREAKING) {\n // eslint-disable-next-line no-var\n var BLOCK_SCOPED_SYMBOL = Symbol.for(\"var used to be block scoped\");\n}\n\n/**\n * Check if the input `node` is a variable declaration.\n */\nexport default function isVar(node: t.Node | null | undefined): boolean {\n if (process.env.BABEL_8_BREAKING) {\n return isVariableDeclaration(node) && node.kind === \"var\";\n } else {\n return (\n isVariableDeclaration(node, { kind: \"var\" }) &&\n !(\n // @ts-expect-error document private properties\n node[BLOCK_SCOPED_SYMBOL]\n )\n );\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAKE,IAAIC,mBAAmB,GAAGC,MAAM,CAACC,GAAG,CAAC,6BAA6B,CAAC;AAMtD,SAASC,KAAKA,CAACC,IAA+B,EAAW;EAIpE,OACE,IAAAC,4BAAqB,EAACD,IAAI,EAAE;IAAEE,IAAI,EAAE;EAAM,CAAC,CAAC,IAC5C,CAEEF,IAAI,CAACJ,mBAAmB,CACzB;AAGP","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/matchesPattern.js b/vanilla/node_modules/@babel/types/lib/validators/matchesPattern.js
new file mode 100644
index 0000000..37f0484
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/matchesPattern.js
@@ -0,0 +1,44 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = matchesPattern;
+var _index = require("./generated/index.js");
+function isMemberExpressionLike(node) {
+ return (0, _index.isMemberExpression)(node) || (0, _index.isMetaProperty)(node);
+}
+function matchesPattern(member, match, allowPartial) {
+ if (!isMemberExpressionLike(member)) return false;
+ const parts = Array.isArray(match) ? match : match.split(".");
+ const nodes = [];
+ let node;
+ for (node = member; isMemberExpressionLike(node); node = (_object = node.object) != null ? _object : node.meta) {
+ var _object;
+ nodes.push(node.property);
+ }
+ nodes.push(node);
+ if (nodes.length < parts.length) return false;
+ if (!allowPartial && nodes.length > parts.length) return false;
+ for (let i = 0, j = nodes.length - 1; i < parts.length; i++, j--) {
+ const node = nodes[j];
+ let value;
+ if ((0, _index.isIdentifier)(node)) {
+ value = node.name;
+ } else if ((0, _index.isStringLiteral)(node)) {
+ value = node.value;
+ } else if ((0, _index.isThisExpression)(node)) {
+ value = "this";
+ } else if ((0, _index.isSuper)(node)) {
+ value = "super";
+ } else if ((0, _index.isPrivateName)(node)) {
+ value = "#" + node.id.name;
+ } else {
+ return false;
+ }
+ if (parts[i] !== value) return false;
+ }
+ return true;
+}
+
+//# sourceMappingURL=matchesPattern.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/matchesPattern.js.map b/vanilla/node_modules/@babel/types/lib/validators/matchesPattern.js.map
new file mode 100644
index 0000000..7a9b379
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/matchesPattern.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","isMemberExpressionLike","node","isMemberExpression","isMetaProperty","matchesPattern","member","match","allowPartial","parts","Array","isArray","split","nodes","_object","object","meta","push","property","length","i","j","value","isIdentifier","name","isStringLiteral","isThisExpression","isSuper","isPrivateName","id"],"sources":["../../src/validators/matchesPattern.ts"],"sourcesContent":["import {\n isIdentifier,\n isMetaProperty,\n isMemberExpression,\n isPrivateName,\n isStringLiteral,\n isSuper,\n isThisExpression,\n} from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nfunction isMemberExpressionLike(\n node: t.Node,\n): node is t.MemberExpression | t.MetaProperty {\n return isMemberExpression(node) || isMetaProperty(node);\n}\n\n/**\n * Determines whether or not the input node `member` matches the\n * input `match`.\n *\n * For example, given the match `React.createClass` it would match the\n * parsed nodes of `React.createClass` and `React[\"createClass\"]`.\n */\nexport default function matchesPattern(\n member: t.Node | null | undefined,\n match: string | string[],\n allowPartial?: boolean,\n): boolean {\n // not a member expression\n if (!isMemberExpressionLike(member)) return false;\n\n const parts = Array.isArray(match) ? match : match.split(\".\");\n const nodes = [];\n\n let node;\n for (\n node = member;\n isMemberExpressionLike(node);\n node = (node as t.MemberExpression).object ?? (node as t.MetaProperty).meta\n ) {\n nodes.push(node.property);\n }\n nodes.push(node);\n\n if (nodes.length < parts.length) return false;\n if (!allowPartial && nodes.length > parts.length) return false;\n\n for (let i = 0, j = nodes.length - 1; i < parts.length; i++, j--) {\n const node = nodes[j];\n let value;\n if (isIdentifier(node)) {\n value = node.name;\n } else if (isStringLiteral(node)) {\n value = node.value;\n } else if (isThisExpression(node)) {\n value = \"this\";\n } else if (isSuper(node)) {\n value = \"super\";\n } else if (isPrivateName(node)) {\n value = \"#\" + node.id.name;\n } else {\n return false;\n }\n\n if (parts[i] !== value) return false;\n }\n\n return true;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAWA,SAASC,sBAAsBA,CAC7BC,IAAY,EACiC;EAC7C,OAAO,IAAAC,yBAAkB,EAACD,IAAI,CAAC,IAAI,IAAAE,qBAAc,EAACF,IAAI,CAAC;AACzD;AASe,SAASG,cAAcA,CACpCC,MAAiC,EACjCC,KAAwB,EACxBC,YAAsB,EACb;EAET,IAAI,CAACP,sBAAsB,CAACK,MAAM,CAAC,EAAE,OAAO,KAAK;EAEjD,MAAMG,KAAK,GAAGC,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,GAAGA,KAAK,GAAGA,KAAK,CAACK,KAAK,CAAC,GAAG,CAAC;EAC7D,MAAMC,KAAK,GAAG,EAAE;EAEhB,IAAIX,IAAI;EACR,KACEA,IAAI,GAAGI,MAAM,EACbL,sBAAsB,CAACC,IAAI,CAAC,EAC5BA,IAAI,IAAAY,OAAA,GAAIZ,IAAI,CAAwBa,MAAM,YAAAD,OAAA,GAAKZ,IAAI,CAAoBc,IAAI,EAC3E;IAAA,IAAAF,OAAA;IACAD,KAAK,CAACI,IAAI,CAACf,IAAI,CAACgB,QAAQ,CAAC;EAC3B;EACAL,KAAK,CAACI,IAAI,CAACf,IAAI,CAAC;EAEhB,IAAIW,KAAK,CAACM,MAAM,GAAGV,KAAK,CAACU,MAAM,EAAE,OAAO,KAAK;EAC7C,IAAI,CAACX,YAAY,IAAIK,KAAK,CAACM,MAAM,GAAGV,KAAK,CAACU,MAAM,EAAE,OAAO,KAAK;EAE9D,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEC,CAAC,GAAGR,KAAK,CAACM,MAAM,GAAG,CAAC,EAAEC,CAAC,GAAGX,KAAK,CAACU,MAAM,EAAEC,CAAC,EAAE,EAAEC,CAAC,EAAE,EAAE;IAChE,MAAMnB,IAAI,GAAGW,KAAK,CAACQ,CAAC,CAAC;IACrB,IAAIC,KAAK;IACT,IAAI,IAAAC,mBAAY,EAACrB,IAAI,CAAC,EAAE;MACtBoB,KAAK,GAAGpB,IAAI,CAACsB,IAAI;IACnB,CAAC,MAAM,IAAI,IAAAC,sBAAe,EAACvB,IAAI,CAAC,EAAE;MAChCoB,KAAK,GAAGpB,IAAI,CAACoB,KAAK;IACpB,CAAC,MAAM,IAAI,IAAAI,uBAAgB,EAACxB,IAAI,CAAC,EAAE;MACjCoB,KAAK,GAAG,MAAM;IAChB,CAAC,MAAM,IAAI,IAAAK,cAAO,EAACzB,IAAI,CAAC,EAAE;MACxBoB,KAAK,GAAG,OAAO;IACjB,CAAC,MAAM,IAAI,IAAAM,oBAAa,EAAC1B,IAAI,CAAC,EAAE;MAC9BoB,KAAK,GAAG,GAAG,GAAGpB,IAAI,CAAC2B,EAAE,CAACL,IAAI;IAC5B,CAAC,MAAM;MACL,OAAO,KAAK;IACd;IAEA,IAAIf,KAAK,CAACW,CAAC,CAAC,KAAKE,KAAK,EAAE,OAAO,KAAK;EACtC;EAEA,OAAO,IAAI;AACb","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/react/isCompatTag.js b/vanilla/node_modules/@babel/types/lib/validators/react/isCompatTag.js
new file mode 100644
index 0000000..868b844
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/react/isCompatTag.js
@@ -0,0 +1,11 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isCompatTag;
+function isCompatTag(tagName) {
+ return !!tagName && /^[a-z]/.test(tagName);
+}
+
+//# sourceMappingURL=isCompatTag.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/react/isCompatTag.js.map b/vanilla/node_modules/@babel/types/lib/validators/react/isCompatTag.js.map
new file mode 100644
index 0000000..570f286
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/react/isCompatTag.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["isCompatTag","tagName","test"],"sources":["../../../src/validators/react/isCompatTag.ts"],"sourcesContent":["export default function isCompatTag(tagName?: string): boolean {\n // Must start with a lowercase ASCII letter\n return !!tagName && /^[a-z]/.test(tagName);\n}\n"],"mappings":";;;;;;AAAe,SAASA,WAAWA,CAACC,OAAgB,EAAW;EAE7D,OAAO,CAAC,CAACA,OAAO,IAAI,QAAQ,CAACC,IAAI,CAACD,OAAO,CAAC;AAC5C","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/react/isReactComponent.js b/vanilla/node_modules/@babel/types/lib/validators/react/isReactComponent.js
new file mode 100644
index 0000000..34b3467
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/react/isReactComponent.js
@@ -0,0 +1,11 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var _buildMatchMemberExpression = require("../buildMatchMemberExpression.js");
+const isReactComponent = (0, _buildMatchMemberExpression.default)("React.Component");
+var _default = exports.default = isReactComponent;
+
+//# sourceMappingURL=isReactComponent.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/react/isReactComponent.js.map b/vanilla/node_modules/@babel/types/lib/validators/react/isReactComponent.js.map
new file mode 100644
index 0000000..16fb3e3
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/react/isReactComponent.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_buildMatchMemberExpression","require","isReactComponent","buildMatchMemberExpression","_default","exports","default"],"sources":["../../../src/validators/react/isReactComponent.ts"],"sourcesContent":["import buildMatchMemberExpression from \"../buildMatchMemberExpression.ts\";\n\nconst isReactComponent = buildMatchMemberExpression(\"React.Component\");\n\nexport default isReactComponent;\n"],"mappings":";;;;;;AAAA,IAAAA,2BAAA,GAAAC,OAAA;AAEA,MAAMC,gBAAgB,GAAG,IAAAC,mCAA0B,EAAC,iBAAiB,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAExDJ,gBAAgB","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/lib/validators/validate.js b/vanilla/node_modules/@babel/types/lib/validators/validate.js
new file mode 100644
index 0000000..146f5cc
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/validate.js
@@ -0,0 +1,42 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = validate;
+exports.validateChild = validateChild;
+exports.validateField = validateField;
+exports.validateInternal = validateInternal;
+var _index = require("../definitions/index.js");
+function validate(node, key, val) {
+ if (!node) return;
+ const fields = _index.NODE_FIELDS[node.type];
+ if (!fields) return;
+ const field = fields[key];
+ validateField(node, key, val, field);
+ validateChild(node, key, val);
+}
+function validateInternal(field, node, key, val, maybeNode) {
+ if (!(field != null && field.validate)) return;
+ if (field.optional && val == null) return;
+ field.validate(node, key, val);
+ if (maybeNode) {
+ var _NODE_PARENT_VALIDATI;
+ const type = val.type;
+ if (type == null) return;
+ (_NODE_PARENT_VALIDATI = _index.NODE_PARENT_VALIDATIONS[type]) == null || _NODE_PARENT_VALIDATI.call(_index.NODE_PARENT_VALIDATIONS, node, key, val);
+ }
+}
+function validateField(node, key, val, field) {
+ if (!(field != null && field.validate)) return;
+ if (field.optional && val == null) return;
+ field.validate(node, key, val);
+}
+function validateChild(node, key, val) {
+ var _NODE_PARENT_VALIDATI2;
+ const type = val == null ? void 0 : val.type;
+ if (type == null) return;
+ (_NODE_PARENT_VALIDATI2 = _index.NODE_PARENT_VALIDATIONS[type]) == null || _NODE_PARENT_VALIDATI2.call(_index.NODE_PARENT_VALIDATIONS, node, key, val);
+}
+
+//# sourceMappingURL=validate.js.map
diff --git a/vanilla/node_modules/@babel/types/lib/validators/validate.js.map b/vanilla/node_modules/@babel/types/lib/validators/validate.js.map
new file mode 100644
index 0000000..8cb8aa7
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/lib/validators/validate.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["_index","require","validate","node","key","val","fields","NODE_FIELDS","type","field","validateField","validateChild","validateInternal","maybeNode","optional","_NODE_PARENT_VALIDATI","NODE_PARENT_VALIDATIONS","call","_NODE_PARENT_VALIDATI2"],"sources":["../../src/validators/validate.ts"],"sourcesContent":["import {\n NODE_FIELDS,\n NODE_PARENT_VALIDATIONS,\n type FieldOptions,\n} from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function validate(\n node: t.Node | undefined | null,\n key: string,\n val: unknown,\n): void {\n if (!node) return;\n\n const fields = NODE_FIELDS[node.type];\n if (!fields) return;\n\n const field = fields[key];\n validateField(node, key, val, field);\n validateChild(node, key, val);\n}\n\nexport function validateInternal(\n field: FieldOptions,\n node: t.Node | undefined | null,\n key: string,\n val: unknown,\n maybeNode?: 1,\n): void {\n if (!field?.validate) return;\n if (field.optional && val == null) return;\n\n field.validate(node, key, val);\n\n if (maybeNode) {\n const type = (val as t.Node).type;\n if (type == null) return;\n NODE_PARENT_VALIDATIONS[type]?.(node, key, val);\n }\n}\n\nexport function validateField(\n node: t.Node | undefined | null,\n key: string,\n val: unknown,\n field: FieldOptions | undefined | null,\n): void {\n if (!field?.validate) return;\n if (field.optional && val == null) return;\n\n field.validate(node, key, val);\n}\n\nexport function validateChild(\n node: t.Node | undefined | null,\n key: string | { toString(): string },\n val?: unknown,\n) {\n const type = (val as t.Node)?.type;\n if (type == null) return;\n NODE_PARENT_VALIDATIONS[type]?.(node, key, val);\n}\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAOe,SAASC,QAAQA,CAC9BC,IAA+B,EAC/BC,GAAW,EACXC,GAAY,EACN;EACN,IAAI,CAACF,IAAI,EAAE;EAEX,MAAMG,MAAM,GAAGC,kBAAW,CAACJ,IAAI,CAACK,IAAI,CAAC;EACrC,IAAI,CAACF,MAAM,EAAE;EAEb,MAAMG,KAAK,GAAGH,MAAM,CAACF,GAAG,CAAC;EACzBM,aAAa,CAACP,IAAI,EAAEC,GAAG,EAAEC,GAAG,EAAEI,KAAK,CAAC;EACpCE,aAAa,CAACR,IAAI,EAAEC,GAAG,EAAEC,GAAG,CAAC;AAC/B;AAEO,SAASO,gBAAgBA,CAC9BH,KAAmB,EACnBN,IAA+B,EAC/BC,GAAW,EACXC,GAAY,EACZQ,SAAa,EACP;EACN,IAAI,EAACJ,KAAK,YAALA,KAAK,CAAEP,QAAQ,GAAE;EACtB,IAAIO,KAAK,CAACK,QAAQ,IAAIT,GAAG,IAAI,IAAI,EAAE;EAEnCI,KAAK,CAACP,QAAQ,CAACC,IAAI,EAAEC,GAAG,EAAEC,GAAG,CAAC;EAE9B,IAAIQ,SAAS,EAAE;IAAA,IAAAE,qBAAA;IACb,MAAMP,IAAI,GAAIH,GAAG,CAAYG,IAAI;IACjC,IAAIA,IAAI,IAAI,IAAI,EAAE;IAClB,CAAAO,qBAAA,GAAAC,8BAAuB,CAACR,IAAI,CAAC,aAA7BO,qBAAA,CAAAE,IAAA,CAAAD,8BAAuB,EAASb,IAAI,EAAEC,GAAG,EAAEC,GAAG,CAAC;EACjD;AACF;AAEO,SAASK,aAAaA,CAC3BP,IAA+B,EAC/BC,GAAW,EACXC,GAAY,EACZI,KAAsC,EAChC;EACN,IAAI,EAACA,KAAK,YAALA,KAAK,CAAEP,QAAQ,GAAE;EACtB,IAAIO,KAAK,CAACK,QAAQ,IAAIT,GAAG,IAAI,IAAI,EAAE;EAEnCI,KAAK,CAACP,QAAQ,CAACC,IAAI,EAAEC,GAAG,EAAEC,GAAG,CAAC;AAChC;AAEO,SAASM,aAAaA,CAC3BR,IAA+B,EAC/BC,GAAoC,EACpCC,GAAa,EACb;EAAA,IAAAa,sBAAA;EACA,MAAMV,IAAI,GAAIH,GAAG,oBAAHA,GAAG,CAAaG,IAAI;EAClC,IAAIA,IAAI,IAAI,IAAI,EAAE;EAClB,CAAAU,sBAAA,GAAAF,8BAAuB,CAACR,IAAI,CAAC,aAA7BU,sBAAA,CAAAD,IAAA,CAAAD,8BAAuB,EAASb,IAAI,EAAEC,GAAG,EAAEC,GAAG,CAAC;AACjD","ignoreList":[]} \ No newline at end of file
diff --git a/vanilla/node_modules/@babel/types/package.json b/vanilla/node_modules/@babel/types/package.json
new file mode 100644
index 0000000..db75353
--- /dev/null
+++ b/vanilla/node_modules/@babel/types/package.json
@@ -0,0 +1,39 @@
+{
+ "name": "@babel/types",
+ "version": "7.29.0",
+ "description": "Babel Types is a Lodash-esque utility library for AST nodes",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-types",
+ "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20types%22+is%3Aopen",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-types"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5"
+ },
+ "devDependencies": {
+ "@babel/generator": "^7.29.0",
+ "@babel/helper-fixtures": "^7.28.6",
+ "@babel/parser": "^7.29.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "type": "commonjs",
+ "types": "./lib/index-legacy.d.ts",
+ "typesVersions": {
+ ">=4.1": {
+ "lib/index-legacy.d.ts": [
+ "lib/index.d.ts"
+ ]
+ }
+ }
+} \ No newline at end of file