summaryrefslogtreecommitdiff
path: root/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js.map
blob: 16129443fe30665125eed4c7109eecb6e834ebd7 (plain)
1
{"version":3,"names":["_core","require","_helperReplaceSupers","_helperEnvironmentVisitor","_helperMemberExpressionToFunctions","_helperOptimiseCallExpression","_helperAnnotateAsPure","_helperSkipTransparentExpressionWrappers","ts","newHelpers","file","availableHelper","buildPrivateNamesMap","className","privateFieldsAsSymbolsOrProperties","props","privateNamesMap","Map","classBrandId","prop","isPrivate","name","node","key","id","update","get","isMethod","isProperty","isStatic","static","initAdded","_classBrandId","scope","generateUidIdentifier","method","set","isClassPrivateMethod","kind","body","$","length","t","isReturnStatement","isCallExpression","argument","arguments","isThisExpression","isIdentifier","callee","getId","cloneNode","getterDeclared","params","isExpressionStatement","expression","setId","setterDeclared","methodId","buildPrivateNamesNodes","privateFieldsAsProperties","privateFieldsAsSymbols","state","initNodes","injectedIds","Set","value","isGetterOrSetter","init","callExpression","addHelper","stringLiteral","identifier","has","add","newExpression","annotateAsPure","push","template","statement","ast","privateNameVisitorFactory","visitor","nestedVisitor","traverse","visitors","merge","Object","assign","environmentVisitor","privateNameVisitor","Class","path","visiblePrivateNames","redeclared","delete","skipKey","PrivateName","noDocumentAll","parentPath","isMemberExpression","property","isOptionalMemberExpression","includes","handle","unshadow","innerBinding","_scope","hasBinding","bindingIdentifierEquals","rename","parent","buildCheckInRHS","rhs","inRHSIsObject","privateInVisitor","BinaryExpression","operator","left","right","isPrivateName","classRef","replaceWith","readOnlyError","writeOnlyError","console","warn","buildUndefinedNode","buildStaticPrivateFieldAccess","expr","noUninitializedPrivateFieldAccess","memberExpression","privateNameHandlerSpec","memoise","member","count","object","memo","maybeGenerateMemoised","memoiser","receiver","helperName","skipCheck","err","sequenceExpression","boundGet","assignmentExpression","destructureSet","helper","_unused","Error","getCall","ref","pop","setCall","buildCodeFrameError","args","computed","arrayExpression","slice","call","optimiseCall","optionalCall","privateNameHandlerLoose","BASE","REF","PROP","simpleSet","optionalCallExpression","transformPrivateNamesUsage","size","handler","memberExpressionToFunctions","buildPrivateFieldInitLoose","inheritPropComments","buildPrivateInstanceFieldInitSpec","expressionStatement","thisExpression","buildPrivateStaticFieldInitSpec","privateName","variableDeclaration","variableDeclarator","buildPrivateStaticFieldInitSpecOld","buildPrivateMethodInitLoose","buildPrivateInstanceMethodInitSpec","buildPrivateAccessorInitialization","buildPrivateInstanceMethodInitialization","buildPublicFieldInitLoose","isLiteral","buildPublicFieldInitSpec","buildPrivateStaticMethodInitLoose","buildPrivateMethodDeclaration","generator","async","isGetter","isSetter","thisArg","thisRef","argumentsPath","thisContextVisitor","argumentsId","unshift","declId","functionDeclaration","Identifier","UnaryExpression","skipTransparentExprWrapperNodes","booleanLiteral","ThisExpression","needsClassRef","MetaProperty","meta","innerReferencesVisitor","ReferencedIdentifier","replaceThisContext","innerBindingRef","_state$thisRef","isNameOrLength","type","inheritLeadingComments","inheritInnerComments","buildFieldsInitNodes","superRef","setPublicClassFields","constantSuper","_ref","_ref2","classRefFlags","injectSuperRef","staticNodes","instanceNodes","lastInstanceNodeReturnsThis","pureStaticNodes","classBindingNode","getSuperRef","_injectSuperRef","generateUidIdentifierBasedOnNode","classRefForInnerBinding","isClassProperty","assertFieldTransformed","isStaticBlock","isInstance","isPublic","isField","ReplaceSupers","methodPath","refToPreserve","getObjectRef","replace","replaced","blockBody","inheritsComments","filter","Boolean","wrapClass","leadingComments","remove","superClass","isClassExpression"],"sources":["../src/fields.ts"],"sourcesContent":["import { template, traverse, types as t } from \"@babel/core\";\nimport type { File } from \"@babel/core\";\nimport type { NodePath, Visitor, Scope } from \"@babel/traverse\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\nimport environmentVisitor from \"@babel/helper-environment-visitor\";\nimport memberExpressionToFunctions from \"@babel/helper-member-expression-to-functions\";\nimport type {\n  Handler,\n  HandlerState,\n} from \"@babel/helper-member-expression-to-functions\";\nimport optimiseCall from \"@babel/helper-optimise-call-expression\";\nimport annotateAsPure from \"@babel/helper-annotate-as-pure\";\nimport { skipTransparentExprWrapperNodes } from \"@babel/helper-skip-transparent-expression-wrappers\";\n\nimport * as ts from \"./typescript.ts\";\n\ninterface PrivateNameMetadata {\n  id: t.Identifier;\n  static: boolean;\n  method: boolean;\n  getId?: t.Identifier;\n  setId?: t.Identifier;\n  methodId?: t.Identifier;\n  initAdded?: boolean;\n  getterDeclared?: boolean;\n  setterDeclared?: boolean;\n}\n\ntype PrivateNamesMapGeneric<V> = Map<string, V>;\n\ntype PrivateNamesMap = PrivateNamesMapGeneric<PrivateNameMetadata>;\n\nif (!process.env.BABEL_8_BREAKING) {\n  // eslint-disable-next-line no-var\n  var newHelpers = (file: File) => {\n    if (!process.env.IS_PUBLISH) {\n      const { comments } = file.ast;\n      // This is needed for the test in\n      // babel-plugin-transform-class-properties/test/fixtures/regression/old-helpers\n      if (comments?.some(c => c.value.includes(\"@force-old-private-helpers\"))) {\n        return false;\n      }\n    }\n    return file.availableHelper(\"classPrivateFieldGet2\");\n  };\n}\n\nexport function buildPrivateNamesMap(\n  className: string,\n  privateFieldsAsSymbolsOrProperties: boolean,\n  props: PropPath[],\n  file: File,\n) {\n  const privateNamesMap: PrivateNamesMap = new Map();\n  let classBrandId: t.Identifier;\n  for (const prop of props) {\n    if (prop.isPrivate()) {\n      const { name } = prop.node.key.id;\n      let update: PrivateNameMetadata = privateNamesMap.get(name);\n      if (!update) {\n        const isMethod = !prop.isProperty();\n        const isStatic = prop.node.static;\n        let initAdded = false;\n        let id: t.Identifier;\n        if (\n          !privateFieldsAsSymbolsOrProperties &&\n          (process.env.BABEL_8_BREAKING || newHelpers(file)) &&\n          isMethod &&\n          !isStatic\n        ) {\n          initAdded = !!classBrandId;\n          classBrandId ??= prop.scope.generateUidIdentifier(\n            `${className}_brand`,\n          );\n          id = classBrandId;\n        } else {\n          id = prop.scope.generateUidIdentifier(name);\n        }\n        update = { id, static: isStatic, method: isMethod, initAdded };\n        privateNamesMap.set(name, update);\n      }\n      if (prop.isClassPrivateMethod()) {\n        if (prop.node.kind === \"get\") {\n          const { body } = prop.node.body;\n          let $: t.Node;\n          if (\n            // If we have\n            //   get #foo() { return _some_fn(this); }\n            // we can use _some_fn directly.\n            body.length === 1 &&\n            t.isReturnStatement(($ = body[0])) &&\n            t.isCallExpression(($ = $.argument)) &&\n            $.arguments.length === 1 &&\n            t.isThisExpression($.arguments[0]) &&\n            t.isIdentifier(($ = $.callee))\n          ) {\n            update.getId = t.cloneNode($);\n            update.getterDeclared = true;\n          } else {\n            update.getId = prop.scope.generateUidIdentifier(`get_${name}`);\n          }\n        } else if (prop.node.kind === \"set\") {\n          const { params } = prop.node;\n          const { body } = prop.node.body;\n          let $: t.Node;\n          if (\n            // If we have\n            //   set #foo(val) { _some_fn(this, val); }\n            // we can use _some_fn directly.\n            body.length === 1 &&\n            t.isExpressionStatement(($ = body[0])) &&\n            t.isCallExpression(($ = $.expression)) &&\n            $.arguments.length === 2 &&\n            t.isThisExpression($.arguments[0]) &&\n            t.isIdentifier($.arguments[1], {\n              name: (params[0] as t.Identifier).name,\n            }) &&\n            t.isIdentifier(($ = $.callee))\n          ) {\n            update.setId = t.cloneNode($);\n            update.setterDeclared = true;\n          } else {\n            update.setId = prop.scope.generateUidIdentifier(`set_${name}`);\n          }\n        } else if (prop.node.kind === \"method\") {\n          update.methodId = prop.scope.generateUidIdentifier(name);\n        }\n      }\n      privateNamesMap.set(name, update);\n    }\n  }\n  return privateNamesMap;\n}\n\nexport function buildPrivateNamesNodes(\n  privateNamesMap: PrivateNamesMap,\n  privateFieldsAsProperties: boolean,\n  privateFieldsAsSymbols: boolean,\n  state: File,\n) {\n  const initNodes: t.Statement[] = [];\n\n  const injectedIds = new Set<string>();\n\n  for (const [name, value] of privateNamesMap) {\n    // - When the privateFieldsAsProperties assumption is enabled,\n    //   both static and instance fields are transpiled using a\n    //   secret non-enumerable property. Hence, we also need to generate that\n    //   key (using the classPrivateFieldLooseKey helper).\n    // - When the privateFieldsAsSymbols assumption is enabled,\n    //   both static and instance fields are transpiled using a\n    //   unique Symbol to define a non-enumerable property.\n    // - In spec mode, only instance fields need a \"private name\" initializer\n    //   because static fields are directly assigned to a variable in the\n    //   buildPrivateStaticFieldInitSpec function.\n    const { static: isStatic, method: isMethod, getId, setId } = value;\n    const isGetterOrSetter = getId || setId;\n    const id = t.cloneNode(value.id);\n\n    let init: t.Expression;\n\n    if (privateFieldsAsProperties) {\n      init = t.callExpression(state.addHelper(\"classPrivateFieldLooseKey\"), [\n        t.stringLiteral(name),\n      ]);\n    } else if (privateFieldsAsSymbols) {\n      init = t.callExpression(t.identifier(\"Symbol\"), [t.stringLiteral(name)]);\n    } else if (!isStatic) {\n      if (injectedIds.has(id.name)) continue;\n      injectedIds.add(id.name);\n\n      init = t.newExpression(\n        t.identifier(\n          isMethod &&\n            (process.env.BABEL_8_BREAKING ||\n              !isGetterOrSetter ||\n              newHelpers(state))\n            ? \"WeakSet\"\n            : \"WeakMap\",\n        ),\n        [],\n      );\n    }\n\n    if (init) {\n      if (!privateFieldsAsSymbols) {\n        annotateAsPure(init);\n      }\n      initNodes.push(template.statement.ast`var ${id} = ${init}`);\n    }\n  }\n\n  return initNodes;\n}\n\nexport interface PrivateNameVisitorState<V> {\n  privateNamesMap: PrivateNamesMapGeneric<V>;\n  redeclared?: string[];\n}\n\n// Traverses the class scope, handling private name references. If an inner\n// class redeclares the same private name, it will hand off traversal to the\n// restricted visitor (which doesn't traverse the inner class's inner scope).\nexport function privateNameVisitorFactory<S, V>(\n  visitor: Visitor<PrivateNameVisitorState<V & PrivateNameMetadata> & S>,\n) {\n  // Traverses the outer portion of a class, without touching the class's inner\n  // scope, for private names.\n  const nestedVisitor = traverse.visitors.merge([\n    { ...visitor },\n    environmentVisitor,\n  ]);\n\n  const privateNameVisitor: Visitor<\n    PrivateNameVisitorState<V & PrivateNameMetadata> & S\n  > = {\n    ...visitor,\n\n    Class(path) {\n      const { privateNamesMap } = this;\n      const body = path.get(\"body.body\");\n\n      const visiblePrivateNames = new Map(privateNamesMap);\n      const redeclared = [];\n      for (const prop of body) {\n        if (!prop.isPrivate()) continue;\n        const { name } = prop.node.key.id;\n        visiblePrivateNames.delete(name);\n        redeclared.push(name);\n      }\n\n      // If the class doesn't redeclare any private fields, we can continue with\n      // our overall traversal.\n      if (!redeclared.length) {\n        return;\n      }\n\n      // This class redeclares some private field. We need to process the outer\n      // environment with access to all the outer privates, then we can process\n      // the inner environment with only the still-visible outer privates.\n      path.get(\"body\").traverse(nestedVisitor, {\n        ...this,\n        redeclared,\n      });\n      path.traverse(privateNameVisitor, {\n        ...this,\n        privateNamesMap: visiblePrivateNames,\n      });\n\n      // We'll eventually hit this class node again with the overall Class\n      // Features visitor, which'll process the redeclared privates.\n      path.skipKey(\"body\");\n    },\n  };\n\n  return privateNameVisitor;\n}\n\ninterface PrivateNameState {\n  privateNamesMap: PrivateNamesMap;\n  classRef: t.Identifier;\n  file: File;\n  noDocumentAll: boolean;\n  noUninitializedPrivateFieldAccess: boolean;\n  innerBinding?: t.Identifier;\n}\n\nconst privateNameVisitor = privateNameVisitorFactory<\n  HandlerState<PrivateNameState> & PrivateNameState,\n  PrivateNameMetadata\n>({\n  PrivateName(path, { noDocumentAll }) {\n    const { privateNamesMap, redeclared } = this;\n    const { node, parentPath } = path;\n\n    if (\n      !parentPath.isMemberExpression({ property: node }) &&\n      !parentPath.isOptionalMemberExpression({ property: node })\n    ) {\n      return;\n    }\n    const { name } = node.id;\n    if (!privateNamesMap.has(name)) return;\n    if (redeclared && redeclared.includes(name)) return;\n\n    this.handle(parentPath, noDocumentAll);\n  },\n});\n\n// rename all bindings that shadows innerBinding\nfunction unshadow(\n  name: string,\n  scope: Scope,\n  innerBinding: t.Identifier | undefined,\n) {\n  // in some cases, scope.getBinding(name) === undefined\n  // so we check hasBinding to avoid keeping looping\n  // see: https://github.com/babel/babel/pull/13656#discussion_r686030715\n  while (\n    scope?.hasBinding(name) &&\n    !scope.bindingIdentifierEquals(name, innerBinding)\n  ) {\n    scope.rename(name);\n    scope = scope.parent;\n  }\n}\n\nexport function buildCheckInRHS(\n  rhs: t.Expression,\n  file: File,\n  inRHSIsObject?: boolean,\n) {\n  if (inRHSIsObject || !file.availableHelper?.(\"checkInRHS\")) return rhs;\n  return t.callExpression(file.addHelper(\"checkInRHS\"), [rhs]);\n}\n\nconst privateInVisitor = privateNameVisitorFactory<\n  {\n    classRef: t.Identifier;\n    file: File;\n    innerBinding?: t.Identifier;\n    privateFieldsAsProperties: boolean;\n  },\n  PrivateNameMetadata\n>({\n  BinaryExpression(path, { file }) {\n    const { operator, left, right } = path.node;\n    if (operator !== \"in\") return;\n    if (!t.isPrivateName(left)) return;\n\n    const { privateFieldsAsProperties, privateNamesMap, redeclared } = this;\n\n    const { name } = left.id;\n\n    if (!privateNamesMap.has(name)) return;\n    if (redeclared && redeclared.includes(name)) return;\n\n    // if there are any local variable shadowing classRef, unshadow it\n    // see #12960\n    unshadow(this.classRef.name, path.scope, this.innerBinding);\n\n    if (privateFieldsAsProperties) {\n      const { id } = privateNamesMap.get(name);\n      path.replaceWith(template.expression.ast`\n        Object.prototype.hasOwnProperty.call(${buildCheckInRHS(\n          right,\n          file,\n        )}, ${t.cloneNode(id)})\n      `);\n      return;\n    }\n\n    const { id, static: isStatic } = privateNamesMap.get(name);\n\n    if (isStatic) {\n      path.replaceWith(\n        template.expression.ast`${buildCheckInRHS(\n          right,\n          file,\n        )} === ${t.cloneNode(this.classRef)}`,\n      );\n      return;\n    }\n\n    path.replaceWith(\n      template.expression.ast`${t.cloneNode(id)}.has(${buildCheckInRHS(\n        right,\n        file,\n      )})`,\n    );\n  },\n});\n\ninterface Receiver {\n  receiver(\n    this: HandlerState<PrivateNameState> & PrivateNameState,\n    member: NodePath<t.MemberExpression | t.OptionalMemberExpression>,\n  ): t.Expression;\n}\n\nfunction readOnlyError(file: File, name: string) {\n  return t.callExpression(file.addHelper(\"readOnlyError\"), [\n    t.stringLiteral(`#${name}`),\n  ]);\n}\n\nfunction writeOnlyError(file: File, name: string) {\n  if (\n    !process.env.BABEL_8_BREAKING &&\n    !file.availableHelper(\"writeOnlyError\")\n  ) {\n    console.warn(\n      `@babel/helpers is outdated, update it to silence this warning.`,\n    );\n    return t.buildUndefinedNode();\n  }\n  return t.callExpression(file.addHelper(\"writeOnlyError\"), [\n    t.stringLiteral(`#${name}`),\n  ]);\n}\n\nfunction buildStaticPrivateFieldAccess<N extends t.Expression>(\n  expr: N,\n  noUninitializedPrivateFieldAccess: boolean,\n) {\n  if (noUninitializedPrivateFieldAccess) return expr;\n  return t.memberExpression(expr, t.identifier(\"_\"));\n}\n\nconst privateNameHandlerSpec: Handler<PrivateNameState & Receiver> & Receiver =\n  {\n    memoise(member, count) {\n      const { scope } = member;\n      const { object } = member.node as { object: t.Expression };\n\n      const memo = scope.maybeGenerateMemoised(object);\n      if (!memo) {\n        return;\n      }\n\n      this.memoiser.set(object, memo, count);\n    },\n\n    receiver(member) {\n      const { object } = member.node as { object: t.Expression };\n\n      if (this.memoiser.has(object)) {\n        return t.cloneNode(this.memoiser.get(object));\n      }\n\n      return t.cloneNode(object);\n    },\n\n    get(member) {\n      const {\n        classRef,\n        privateNamesMap,\n        file,\n        innerBinding,\n        noUninitializedPrivateFieldAccess,\n      } = this;\n      const { name } = (member.node.property as t.PrivateName).id;\n      const {\n        id,\n        static: isStatic,\n        method: isMethod,\n        methodId,\n        getId,\n        setId,\n      } = privateNamesMap.get(name);\n      const isGetterOrSetter = getId || setId;\n\n      if (isStatic) {\n        // if there are any local variable shadowing classRef, unshadow it\n        // see #12960\n        unshadow(classRef.name, member.scope, innerBinding);\n\n        if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n          // NOTE: This package has a peerDependency on @babel/core@^7.0.0, but these\n          // helpers have been introduced in @babel/helpers@7.1.0.\n          const helperName =\n            isMethod && !isGetterOrSetter\n              ? \"classStaticPrivateMethodGet\"\n              : \"classStaticPrivateFieldSpecGet\";\n\n          return t.callExpression(file.addHelper(helperName), [\n            this.receiver(member),\n            t.cloneNode(classRef),\n            t.cloneNode(id),\n          ]);\n        }\n\n        const receiver = this.receiver(member);\n        const skipCheck =\n          t.isIdentifier(receiver) && receiver.name === classRef.name;\n\n        if (!isMethod) {\n          if (skipCheck) {\n            return buildStaticPrivateFieldAccess(\n              t.cloneNode(id),\n              noUninitializedPrivateFieldAccess,\n            );\n          }\n\n          return buildStaticPrivateFieldAccess(\n            t.callExpression(file.addHelper(\"assertClassBrand\"), [\n              t.cloneNode(classRef),\n              receiver,\n              t.cloneNode(id),\n            ]),\n            noUninitializedPrivateFieldAccess,\n          );\n        }\n\n        if (getId) {\n          if (skipCheck) {\n            return t.callExpression(t.cloneNode(getId), [receiver]);\n          }\n          return t.callExpression(file.addHelper(\"classPrivateGetter\"), [\n            t.cloneNode(classRef),\n            receiver,\n            t.cloneNode(getId),\n          ]);\n        }\n\n        if (setId) {\n          const err = t.buildUndefinedNode(); // TODO: writeOnlyError(file, name)\n          if (skipCheck) return err;\n          return t.sequenceExpression([\n            t.callExpression(file.addHelper(\"assertClassBrand\"), [\n              t.cloneNode(classRef),\n              receiver,\n            ]),\n            err,\n          ]);\n        }\n\n        if (skipCheck) return t.cloneNode(id);\n        return t.callExpression(file.addHelper(\"assertClassBrand\"), [\n          t.cloneNode(classRef),\n          receiver,\n          t.cloneNode(id),\n        ]);\n      }\n\n      if (isMethod) {\n        if (isGetterOrSetter) {\n          if (!getId) {\n            return t.sequenceExpression([\n              this.receiver(member),\n              writeOnlyError(file, name),\n            ]);\n          }\n          if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n            return t.callExpression(file.addHelper(\"classPrivateFieldGet\"), [\n              this.receiver(member),\n              t.cloneNode(id),\n            ]);\n          }\n          return t.callExpression(file.addHelper(\"classPrivateGetter\"), [\n            t.cloneNode(id),\n            this.receiver(member),\n            t.cloneNode(getId),\n          ]);\n        }\n        if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n          return t.callExpression(file.addHelper(\"classPrivateMethodGet\"), [\n            this.receiver(member),\n            t.cloneNode(id),\n            t.cloneNode(methodId),\n          ]);\n        }\n        return t.callExpression(file.addHelper(\"assertClassBrand\"), [\n          t.cloneNode(id),\n          this.receiver(member),\n          t.cloneNode(methodId),\n        ]);\n      }\n      if (process.env.BABEL_8_BREAKING || newHelpers(file)) {\n        return t.callExpression(file.addHelper(\"classPrivateFieldGet2\"), [\n          t.cloneNode(id),\n          this.receiver(member),\n        ]);\n      }\n\n      return t.callExpression(file.addHelper(\"classPrivateFieldGet\"), [\n        this.receiver(member),\n        t.cloneNode(id),\n      ]);\n    },\n\n    boundGet(member) {\n      this.memoise(member, 1);\n\n      return t.callExpression(\n        t.memberExpression(this.get(member), t.identifier(\"bind\")),\n        [this.receiver(member)],\n      );\n    },\n\n    set(member, value) {\n      const {\n        classRef,\n        privateNamesMap,\n        file,\n        noUninitializedPrivateFieldAccess,\n      } = this;\n      const { name } = (member.node.property as t.PrivateName).id;\n      const {\n        id,\n        static: isStatic,\n        method: isMethod,\n        setId,\n        getId,\n      } = privateNamesMap.get(name);\n      const isGetterOrSetter = getId || setId;\n\n      if (isStatic) {\n        if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n          const helperName =\n            isMethod && !isGetterOrSetter\n              ? \"classStaticPrivateMethodSet\"\n              : \"classStaticPrivateFieldSpecSet\";\n\n          return t.callExpression(file.addHelper(helperName), [\n            this.receiver(member),\n            t.cloneNode(classRef),\n            t.cloneNode(id),\n            value,\n          ]);\n        }\n\n        const receiver = this.receiver(member);\n        const skipCheck =\n          t.isIdentifier(receiver) && receiver.name === classRef.name;\n\n        if (isMethod && !setId) {\n          const err = readOnlyError(file, name);\n          if (skipCheck) return t.sequenceExpression([value, err]);\n          return t.sequenceExpression([\n            value,\n            t.callExpression(file.addHelper(\"assertClassBrand\"), [\n              t.cloneNode(classRef),\n              receiver,\n            ]),\n            readOnlyError(file, name),\n          ]);\n        }\n\n        if (setId) {\n          if (skipCheck) {\n            return t.callExpression(t.cloneNode(setId), [receiver, value]);\n          }\n          return t.callExpression(file.addHelper(\"classPrivateSetter\"), [\n            t.cloneNode(classRef),\n            t.cloneNode(setId),\n            receiver,\n            value,\n          ]);\n        }\n        return t.assignmentExpression(\n          \"=\",\n          buildStaticPrivateFieldAccess(\n            t.cloneNode(id),\n            noUninitializedPrivateFieldAccess,\n          ),\n          skipCheck\n            ? value\n            : t.callExpression(file.addHelper(\"assertClassBrand\"), [\n                t.cloneNode(classRef),\n                receiver,\n                value,\n              ]),\n        );\n      }\n      if (isMethod) {\n        if (setId) {\n          if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n            return t.callExpression(file.addHelper(\"classPrivateFieldSet\"), [\n              this.receiver(member),\n              t.cloneNode(id),\n              value,\n            ]);\n          }\n          return t.callExpression(file.addHelper(\"classPrivateSetter\"), [\n            t.cloneNode(id),\n            t.cloneNode(setId),\n            this.receiver(member),\n            value,\n          ]);\n        }\n        return t.sequenceExpression([\n          this.receiver(member),\n          value,\n          readOnlyError(file, name),\n        ]);\n      }\n\n      if (process.env.BABEL_8_BREAKING || newHelpers(file)) {\n        return t.callExpression(file.addHelper(\"classPrivateFieldSet2\"), [\n          t.cloneNode(id),\n          this.receiver(member),\n          value,\n        ]);\n      }\n\n      return t.callExpression(file.addHelper(\"classPrivateFieldSet\"), [\n        this.receiver(member),\n        t.cloneNode(id),\n        value,\n      ]);\n    },\n\n    destructureSet(member) {\n      const {\n        classRef,\n        privateNamesMap,\n        file,\n        noUninitializedPrivateFieldAccess,\n      } = this;\n      const { name } = (member.node.property as t.PrivateName).id;\n      const {\n        id,\n        static: isStatic,\n        method: isMethod,\n        setId,\n      } = privateNamesMap.get(name);\n\n      if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n        if (isStatic) {\n          try {\n            // classStaticPrivateFieldDestructureSet was introduced in 7.13.10\n            // eslint-disable-next-line no-var\n            var helper = file.addHelper(\n              \"classStaticPrivateFieldDestructureSet\",\n            );\n          } catch {\n            throw new Error(\n              \"Babel can not transpile `[C.#p] = [0]` with @babel/helpers < 7.13.10, \\n\" +\n                \"please update @babel/helpers to the latest version.\",\n            );\n          }\n          return t.memberExpression(\n            t.callExpression(helper, [\n              this.receiver(member),\n              t.cloneNode(classRef),\n              t.cloneNode(id),\n            ]),\n            t.identifier(\"value\"),\n          );\n        }\n\n        return t.memberExpression(\n          t.callExpression(file.addHelper(\"classPrivateFieldDestructureSet\"), [\n            this.receiver(member),\n            t.cloneNode(id),\n          ]),\n          t.identifier(\"value\"),\n        );\n      }\n\n      if (isMethod && !setId) {\n        return t.memberExpression(\n          t.sequenceExpression([\n            // @ts-ignore(Babel 7 vs Babel 8) member.node.object is not t.Super\n            member.node.object,\n            readOnlyError(file, name),\n          ]),\n          t.identifier(\"_\"),\n        );\n      }\n\n      if (isStatic && !isMethod) {\n        const getCall = this.get(member);\n        if (\n          !noUninitializedPrivateFieldAccess ||\n          !t.isCallExpression(getCall)\n        ) {\n          return getCall;\n        }\n        const ref = getCall.arguments.pop();\n        getCall.arguments.push(template.expression.ast`(_) => ${ref} = _`);\n        return t.memberExpression(\n          t.callExpression(file.addHelper(\"toSetter\"), [getCall]),\n          t.identifier(\"_\"),\n        );\n      }\n\n      const setCall = this.set(member, t.identifier(\"_\"));\n      if (\n        !t.isCallExpression(setCall) ||\n        !t.isIdentifier(setCall.arguments[setCall.arguments.length - 1], {\n          name: \"_\",\n        })\n      ) {\n        throw member.buildCodeFrameError(\n          \"Internal Babel error while compiling this code. This is a Babel bug. \" +\n            \"Please report it at https://github.com/babel/babel/issues.\",\n        );\n      }\n\n      // someHelper(foo, bar, _) -> someHelper, [foo, bar]\n      // aFn.call(foo, bar, _) -> aFn, [bar], foo\n      let args: t.Expression[];\n      if (\n        t.isMemberExpression(setCall.callee, { computed: false }) &&\n        t.isIdentifier(setCall.callee.property) &&\n        setCall.callee.property.name === \"call\"\n      ) {\n        args = [\n          // @ts-ignore(Babel 7 vs Babel 8) member.node.object is not t.Super\n          setCall.callee.object,\n          t.arrayExpression(\n            // Remove '_'\n            (setCall.arguments as t.Expression[]).slice(1, -1),\n          ),\n          setCall.arguments[0] as t.Expression,\n        ];\n      } else {\n        args = [\n          setCall.callee as t.Expression,\n          t.arrayExpression(\n            // Remove '_'\n            (setCall.arguments as t.Expression[]).slice(0, -1),\n          ),\n        ];\n      }\n\n      return t.memberExpression(\n        t.callExpression(file.addHelper(\"toSetter\"), args),\n        t.identifier(\"_\"),\n      );\n    },\n\n    call(member, args: (t.Expression | t.SpreadElement)[]) {\n      // The first access (the get) should do the memo assignment.\n      this.memoise(member, 1);\n\n      return optimiseCall(this.get(member), this.receiver(member), args, false);\n    },\n\n    optionalCall(member, args: (t.Expression | t.SpreadElement)[]) {\n      this.memoise(member, 1);\n\n      return optimiseCall(this.get(member), this.receiver(member), args, true);\n    },\n\n    delete() {\n      throw new Error(\n        \"Internal Babel error: deleting private elements is a parsing error.\",\n      );\n    },\n  };\n\nconst privateNameHandlerLoose: Handler<PrivateNameState> = {\n  get(member) {\n    const { privateNamesMap, file } = this;\n    const { object } = member.node;\n    const { name } = (member.node.property as t.PrivateName).id;\n\n    return template.expression`BASE(REF, PROP)[PROP]`({\n      BASE: file.addHelper(\"classPrivateFieldLooseBase\"),\n      REF: t.cloneNode(object),\n      PROP: t.cloneNode(privateNamesMap.get(name).id),\n    });\n  },\n\n  set() {\n    // noop\n    throw new Error(\"private name handler with loose = true don't need set()\");\n  },\n\n  boundGet(member) {\n    return t.callExpression(\n      t.memberExpression(this.get(member), t.identifier(\"bind\")),\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n      [t.cloneNode(member.node.object as t.Expression)],\n    );\n  },\n\n  simpleSet(member) {\n    return this.get(member);\n  },\n\n  destructureSet(member) {\n    return this.get(member);\n  },\n\n  call(member, args) {\n    return t.callExpression(this.get(member), args);\n  },\n\n  optionalCall(member, args) {\n    return t.optionalCallExpression(this.get(member), args, true);\n  },\n\n  delete() {\n    throw new Error(\n      \"Internal Babel error: deleting private elements is a parsing error.\",\n    );\n  },\n};\n\nexport function transformPrivateNamesUsage(\n  ref: t.Identifier,\n  path: NodePath<t.Class>,\n  privateNamesMap: PrivateNamesMap,\n  {\n    privateFieldsAsProperties,\n    noUninitializedPrivateFieldAccess,\n    noDocumentAll,\n    innerBinding,\n  }: {\n    privateFieldsAsProperties: boolean;\n    noUninitializedPrivateFieldAccess: boolean;\n    noDocumentAll: boolean;\n    innerBinding: t.Identifier;\n  },\n  state: File,\n) {\n  if (!privateNamesMap.size) return;\n\n  const body = path.get(\"body\");\n  const handler = privateFieldsAsProperties\n    ? privateNameHandlerLoose\n    : privateNameHandlerSpec;\n\n  memberExpressionToFunctions<PrivateNameState>(body, privateNameVisitor, {\n    privateNamesMap,\n    classRef: ref,\n    file: state,\n    ...handler,\n    noDocumentAll,\n    noUninitializedPrivateFieldAccess,\n    innerBinding,\n  });\n  body.traverse(privateInVisitor, {\n    privateNamesMap,\n    classRef: ref,\n    file: state,\n    privateFieldsAsProperties,\n    innerBinding,\n  });\n}\n\nfunction buildPrivateFieldInitLoose(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateProperty>,\n  privateNamesMap: PrivateNamesMap,\n) {\n  const { id } = privateNamesMap.get(prop.node.key.id.name);\n  const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n  return inheritPropComments(\n    template.statement.ast`\n      Object.defineProperty(${ref}, ${t.cloneNode(id)}, {\n        // configurable is false by default\n        // enumerable is false by default\n        writable: true,\n        value: ${value}\n      });\n    ` as t.ExpressionStatement,\n    prop,\n  );\n}\n\nfunction buildPrivateInstanceFieldInitSpec(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateProperty>,\n  privateNamesMap: PrivateNamesMap,\n  state: File,\n) {\n  const { id } = privateNamesMap.get(prop.node.key.id.name);\n  const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n  if (!process.env.BABEL_8_BREAKING) {\n    if (!state.availableHelper(\"classPrivateFieldInitSpec\")) {\n      return inheritPropComments(\n        template.statement.ast`${t.cloneNode(id)}.set(${ref}, {\n          // configurable is always false for private elements\n          // enumerable is always false for private elements\n          writable: true,\n          value: ${value},\n        })` as t.ExpressionStatement,\n        prop,\n      );\n    }\n  }\n\n  const helper = state.addHelper(\"classPrivateFieldInitSpec\");\n  return inheritPropComments(\n    t.expressionStatement(\n      t.callExpression(helper, [\n        t.thisExpression(),\n        t.cloneNode(id),\n        process.env.BABEL_8_BREAKING || newHelpers(state)\n          ? value\n          : template.expression.ast`{ writable: true, value: ${value} }`,\n      ]),\n    ),\n    prop,\n  );\n}\n\nfunction buildPrivateStaticFieldInitSpec(\n  prop: NodePath<t.ClassPrivateProperty>,\n  privateNamesMap: PrivateNamesMap,\n  noUninitializedPrivateFieldAccess: boolean,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n\n  const value = noUninitializedPrivateFieldAccess\n    ? prop.node.value\n    : template.expression.ast`{\n        _: ${prop.node.value || t.buildUndefinedNode()}\n      }`;\n\n  return inheritPropComments(\n    t.variableDeclaration(\"var\", [\n      t.variableDeclarator(t.cloneNode(privateName.id), value),\n    ]),\n    prop,\n  );\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n  // eslint-disable-next-line no-var\n  var buildPrivateStaticFieldInitSpecOld = function (\n    prop: NodePath<t.ClassPrivateProperty>,\n    privateNamesMap: PrivateNamesMap,\n  ) {\n    const privateName = privateNamesMap.get(prop.node.key.id.name);\n    const { id, getId, setId, initAdded } = privateName;\n    const isGetterOrSetter = getId || setId;\n\n    if (!prop.isProperty() && (initAdded || !isGetterOrSetter)) return;\n\n    if (isGetterOrSetter) {\n      privateNamesMap.set(prop.node.key.id.name, {\n        ...privateName,\n        initAdded: true,\n      });\n\n      return inheritPropComments(\n        template.statement.ast`\n          var ${t.cloneNode(id)} = {\n            // configurable is false by default\n            // enumerable is false by default\n            // writable is false by default\n            get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n            set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n          }\n        `,\n        prop,\n      );\n    }\n\n    const value = prop.node.value || prop.scope.buildUndefinedNode();\n    return inheritPropComments(\n      template.statement.ast`\n        var ${t.cloneNode(id)} = {\n          // configurable is false by default\n          // enumerable is false by default\n          writable: true,\n          value: ${value}\n        };\n      `,\n      prop,\n    );\n  };\n}\n\nfunction buildPrivateMethodInitLoose(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateMethod>,\n  privateNamesMap: PrivateNamesMap,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n  const { methodId, id, getId, setId, initAdded } = privateName;\n  if (initAdded) return;\n\n  if (methodId) {\n    return inheritPropComments(\n      template.statement.ast`\n        Object.defineProperty(${ref}, ${id}, {\n          // configurable is false by default\n          // enumerable is false by default\n          // writable is false by default\n          value: ${methodId.name}\n        });\n      ` as t.ExpressionStatement,\n      prop,\n    );\n  }\n  const isGetterOrSetter = getId || setId;\n  if (isGetterOrSetter) {\n    privateNamesMap.set(prop.node.key.id.name, {\n      ...privateName,\n      initAdded: true,\n    });\n\n    return inheritPropComments(\n      template.statement.ast`\n        Object.defineProperty(${ref}, ${id}, {\n          // configurable is false by default\n          // enumerable is false by default\n          // writable is false by default\n          get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n          set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n        });\n      ` as t.ExpressionStatement,\n      prop,\n    );\n  }\n}\n\nfunction buildPrivateInstanceMethodInitSpec(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateMethod>,\n  privateNamesMap: PrivateNamesMap,\n  state: File,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n\n  if (privateName.initAdded) return;\n\n  if (!process.env.BABEL_8_BREAKING && !newHelpers(state)) {\n    const isGetterOrSetter = privateName.getId || privateName.setId;\n    if (isGetterOrSetter) {\n      return buildPrivateAccessorInitialization(\n        ref,\n        prop,\n        privateNamesMap,\n        state,\n      );\n    }\n  }\n\n  return buildPrivateInstanceMethodInitialization(\n    ref,\n    prop,\n    privateNamesMap,\n    state,\n  );\n}\n\nfunction buildPrivateAccessorInitialization(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateMethod>,\n  privateNamesMap: PrivateNamesMap,\n  state: File,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n  const { id, getId, setId } = privateName;\n\n  privateNamesMap.set(prop.node.key.id.name, {\n    ...privateName,\n    initAdded: true,\n  });\n\n  if (!process.env.BABEL_8_BREAKING) {\n    if (!state.availableHelper(\"classPrivateFieldInitSpec\")) {\n      return inheritPropComments(\n        template.statement.ast`\n          ${id}.set(${ref}, {\n            get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n            set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n          });\n        ` as t.ExpressionStatement,\n        prop,\n      );\n    }\n  }\n\n  const helper = state.addHelper(\"classPrivateFieldInitSpec\");\n  return inheritPropComments(\n    template.statement.ast`${helper}(\n      ${t.thisExpression()},\n      ${t.cloneNode(id)},\n      {\n        get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n        set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n      },\n    )` as t.ExpressionStatement,\n    prop,\n  );\n}\n\nfunction buildPrivateInstanceMethodInitialization(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateMethod>,\n  privateNamesMap: PrivateNamesMap,\n  state: File,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n  const { id } = privateName;\n\n  if (!process.env.BABEL_8_BREAKING) {\n    if (!state.availableHelper(\"classPrivateMethodInitSpec\")) {\n      return inheritPropComments(\n        template.statement.ast`${id}.add(${ref})` as t.ExpressionStatement,\n        prop,\n      );\n    }\n  }\n\n  const helper = state.addHelper(\"classPrivateMethodInitSpec\");\n  return inheritPropComments(\n    template.statement.ast`${helper}(\n      ${t.thisExpression()},\n      ${t.cloneNode(id)}\n    )` as t.ExpressionStatement,\n    prop,\n  );\n}\n\nfunction buildPublicFieldInitLoose(\n  ref: t.Expression,\n  prop: NodePath<t.ClassProperty>,\n) {\n  const { key, computed } = prop.node;\n  const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n  return inheritPropComments(\n    t.expressionStatement(\n      t.assignmentExpression(\n        \"=\",\n        t.memberExpression(ref, key, computed || t.isLiteral(key)),\n        value,\n      ),\n    ),\n    prop,\n  );\n}\n\nfunction buildPublicFieldInitSpec(\n  ref: t.Expression,\n  prop: NodePath<t.ClassProperty>,\n  state: File,\n) {\n  const { key, computed } = prop.node;\n  const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n  return inheritPropComments(\n    t.expressionStatement(\n      t.callExpression(state.addHelper(\"defineProperty\"), [\n        ref,\n        computed || t.isLiteral(key)\n          ? key\n          : t.stringLiteral((key as t.Identifier).name),\n        value,\n      ]),\n    ),\n    prop,\n  );\n}\n\nfunction buildPrivateStaticMethodInitLoose(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateMethod>,\n  state: File,\n  privateNamesMap: PrivateNamesMap,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n  const { id, methodId, getId, setId, initAdded } = privateName;\n\n  if (initAdded) return;\n\n  const isGetterOrSetter = getId || setId;\n  if (isGetterOrSetter) {\n    privateNamesMap.set(prop.node.key.id.name, {\n      ...privateName,\n      initAdded: true,\n    });\n\n    return inheritPropComments(\n      template.statement.ast`\n        Object.defineProperty(${ref}, ${id}, {\n          // configurable is false by default\n          // enumerable is false by default\n          // writable is false by default\n          get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n          set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n        })\n      `,\n      prop,\n    );\n  }\n\n  return inheritPropComments(\n    template.statement.ast`\n      Object.defineProperty(${ref}, ${id}, {\n        // configurable is false by default\n        // enumerable is false by default\n        // writable is false by default\n        value: ${methodId.name}\n      });\n    `,\n    prop,\n  );\n}\n\nfunction buildPrivateMethodDeclaration(\n  file: File,\n  prop: NodePath<t.ClassPrivateMethod>,\n  privateNamesMap: PrivateNamesMap,\n  privateFieldsAsSymbolsOrProperties = false,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n  const {\n    id,\n    methodId,\n    getId,\n    setId,\n    getterDeclared,\n    setterDeclared,\n    static: isStatic,\n  } = privateName;\n  const { params, body, generator, async } = prop.node;\n  const isGetter = getId && params.length === 0;\n  const isSetter = setId && params.length > 0;\n\n  if ((isGetter && getterDeclared) || (isSetter && setterDeclared)) {\n    privateNamesMap.set(prop.node.key.id.name, {\n      ...privateName,\n      initAdded: true,\n    });\n    return null;\n  }\n\n  if (\n    (process.env.BABEL_8_BREAKING || newHelpers(file)) &&\n    (isGetter || isSetter) &&\n    !privateFieldsAsSymbolsOrProperties\n  ) {\n    const scope = prop.get(\"body\").scope;\n    const thisArg = scope.generateUidIdentifier(\"this\");\n    const state: ReplaceThisState = {\n      thisRef: thisArg,\n      argumentsPath: [],\n    };\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    prop.traverse(thisContextVisitor, state);\n    if (state.argumentsPath.length) {\n      const argumentsId = scope.generateUidIdentifier(\"arguments\");\n      scope.push({\n        id: argumentsId,\n        init: template.expression.ast`[].slice.call(arguments, 1)`,\n      });\n      for (const path of state.argumentsPath) {\n        path.replaceWith(t.cloneNode(argumentsId));\n      }\n    }\n\n    params.unshift(t.cloneNode(thisArg));\n  }\n\n  let declId = methodId;\n\n  if (isGetter) {\n    privateNamesMap.set(prop.node.key.id.name, {\n      ...privateName,\n      getterDeclared: true,\n      initAdded: true,\n    });\n    declId = getId;\n  } else if (isSetter) {\n    privateNamesMap.set(prop.node.key.id.name, {\n      ...privateName,\n      setterDeclared: true,\n      initAdded: true,\n    });\n    declId = setId;\n  } else if (isStatic && !privateFieldsAsSymbolsOrProperties) {\n    declId = id;\n  }\n\n  return inheritPropComments(\n    t.functionDeclaration(\n      t.cloneNode(declId),\n      // @ts-expect-error params for ClassMethod has TSParameterProperty\n      params,\n      body,\n      generator,\n      async,\n    ),\n    prop,\n  );\n}\n\ntype ReplaceThisState = {\n  thisRef: t.Identifier;\n  needsClassRef?: boolean;\n  innerBinding?: t.Identifier | null;\n  argumentsPath?: NodePath<t.Identifier>[];\n};\n\ntype ReplaceInnerBindingReferenceState = ReplaceThisState;\n\nconst thisContextVisitor = traverse.visitors.merge<ReplaceThisState>([\n  {\n    Identifier(path, state) {\n      if (state.argumentsPath && path.node.name === \"arguments\") {\n        state.argumentsPath.push(path);\n      }\n    },\n    UnaryExpression(path) {\n      // Replace `delete this` with `true`\n      const { node } = path;\n      if (node.operator === \"delete\") {\n        const argument = skipTransparentExprWrapperNodes(node.argument);\n        if (t.isThisExpression(argument)) {\n          path.replaceWith(t.booleanLiteral(true));\n        }\n      }\n    },\n    ThisExpression(path, state) {\n      state.needsClassRef = true;\n      path.replaceWith(t.cloneNode(state.thisRef));\n    },\n    MetaProperty(path) {\n      const { node, scope } = path;\n      // if there are `new.target` in static field\n      // we should replace it with `undefined`\n      if (node.meta.name === \"new\" && node.property.name === \"target\") {\n        path.replaceWith(scope.buildUndefinedNode());\n      }\n    },\n  },\n  environmentVisitor,\n]);\n\nconst innerReferencesVisitor: Visitor<ReplaceInnerBindingReferenceState> = {\n  ReferencedIdentifier(path, state) {\n    if (\n      path.scope.bindingIdentifierEquals(path.node.name, state.innerBinding)\n    ) {\n      state.needsClassRef = true;\n      path.node.name = state.thisRef.name;\n    }\n  },\n};\n\nfunction replaceThisContext(\n  path: PropPath,\n  ref: t.Identifier,\n  innerBindingRef: t.Identifier | null,\n) {\n  const state: ReplaceThisState = {\n    thisRef: ref,\n    needsClassRef: false,\n    innerBinding: innerBindingRef,\n  };\n  if (!path.isMethod()) {\n    // replace `this` in property initializers and static blocks\n    path.traverse(thisContextVisitor, state);\n  }\n\n  // todo: use innerBinding.referencePaths to avoid full traversal\n  if (\n    innerBindingRef != null &&\n    state.thisRef?.name &&\n    state.thisRef.name !== innerBindingRef.name\n  ) {\n    path.traverse(innerReferencesVisitor, state);\n  }\n\n  return state.needsClassRef;\n}\n\nexport type PropNode =\n  | t.ClassProperty\n  | t.ClassPrivateMethod\n  | t.ClassPrivateProperty\n  | t.StaticBlock;\nexport type PropPath = NodePath<PropNode>;\n\nfunction isNameOrLength({ key, computed }: t.ClassProperty) {\n  if (key.type === \"Identifier\") {\n    return !computed && (key.name === \"name\" || key.name === \"length\");\n  }\n  if (key.type === \"StringLiteral\") {\n    return key.value === \"name\" || key.value === \"length\";\n  }\n  return false;\n}\n\n/**\n * Inherit comments from class members. This is a reduced version of\n * t.inheritsComments: the trailing comments are not inherited because\n * for most class members except the last one, their trailing comments are\n * the next sibling's leading comments.\n *\n * @template T transformed class member type\n * @param {T} node transformed class member\n * @param {PropPath} prop class member\n * @returns transformed class member type with comments inherited\n */\nfunction inheritPropComments<T extends t.Node>(node: T, prop: PropPath) {\n  t.inheritLeadingComments(node, prop.node);\n  t.inheritInnerComments(node, prop.node);\n  return node;\n}\n\n/**\n * ClassRefFlag records the requirement of the class binding reference.\n *\n * @enum {number}\n */\nconst enum ClassRefFlag {\n  None,\n  /**\n   * When this flag is enabled, the binding reference can be the class id,\n   * if exists, or the uid identifier generated for class expression. The\n   * reference is safe to be consumed by [[Define]].\n   */\n  ForDefine = 1 << 0,\n  /**\n   * When this flag is enabled, the reference must be a uid, because the outer\n   * class binding can be mutated by user codes.\n   * E.g.\n   * class C { static p = C }; const oldC = C; C = null; oldC.p;\n   * we must memoize class `C` before defining the property `p`.\n   */\n  ForInnerBinding = 1 << 1,\n}\n\nexport function buildFieldsInitNodes(\n  ref: t.Identifier | null,\n  superRef: t.Expression | undefined,\n  props: PropPath[],\n  privateNamesMap: PrivateNamesMap,\n  file: File,\n  setPublicClassFields: boolean,\n  privateFieldsAsSymbolsOrProperties: boolean,\n  noUninitializedPrivateFieldAccess: boolean,\n  constantSuper: boolean,\n  innerBindingRef: t.Identifier | null,\n) {\n  let classRefFlags = ClassRefFlag.None;\n  let injectSuperRef: t.Identifier;\n  const staticNodes: t.Statement[] = [];\n  const instanceNodes: t.ExpressionStatement[] = [];\n  let lastInstanceNodeReturnsThis = false;\n  // These nodes are pure and can be moved to the closest statement position\n  const pureStaticNodes: t.FunctionDeclaration[] = [];\n  let classBindingNode: t.ExpressionStatement | null = null;\n\n  const getSuperRef = t.isIdentifier(superRef)\n    ? () => superRef\n    : () => {\n        injectSuperRef ??=\n          props[0].scope.generateUidIdentifierBasedOnNode(superRef);\n        return injectSuperRef;\n      };\n\n  const classRefForInnerBinding =\n    ref ??\n    props[0].scope.generateUidIdentifier(innerBindingRef?.name || \"Class\");\n  ref ??= t.cloneNode(innerBindingRef);\n\n  for (const prop of props) {\n    prop.isClassProperty() && ts.assertFieldTransformed(prop);\n\n    // @ts-expect-error: TS doesn't infer that prop.node is not a StaticBlock\n    const isStatic = !t.isStaticBlock?.(prop.node) && prop.node.static;\n    const isInstance = !isStatic;\n    const isPrivate = prop.isPrivate();\n    const isPublic = !isPrivate;\n    const isField = prop.isProperty();\n    const isMethod = !isField;\n    const isStaticBlock = prop.isStaticBlock?.();\n\n    if (isStatic) classRefFlags |= ClassRefFlag.ForDefine;\n\n    if (isStatic || (isMethod && isPrivate) || isStaticBlock) {\n      new ReplaceSupers({\n        methodPath: prop,\n        constantSuper,\n        file: file,\n        refToPreserve: innerBindingRef,\n        getSuperRef,\n        getObjectRef() {\n          classRefFlags |= ClassRefFlag.ForInnerBinding;\n          if (isStatic || isStaticBlock) {\n            return classRefForInnerBinding;\n          } else {\n            return t.memberExpression(\n              classRefForInnerBinding,\n              t.identifier(\"prototype\"),\n            );\n          }\n        },\n      }).replace();\n\n      const replaced = replaceThisContext(\n        prop,\n        classRefForInnerBinding,\n        innerBindingRef,\n      );\n      if (replaced) {\n        classRefFlags |= ClassRefFlag.ForInnerBinding;\n      }\n    }\n\n    lastInstanceNodeReturnsThis = false;\n\n    // TODO(ts): there are so many `ts-expect-error` inside cases since\n    // ts can not infer type from pre-computed values (or a case test)\n    // even change `isStaticBlock` to `t.isStaticBlock(prop)` will not make prop\n    // a `NodePath<t.StaticBlock>`\n    // this maybe a bug for ts\n    switch (true) {\n      case isStaticBlock: {\n        const blockBody = prop.node.body;\n        // We special-case the single expression case to avoid the iife, since\n        // it's common.\n        if (blockBody.length === 1 && t.isExpressionStatement(blockBody[0])) {\n          staticNodes.push(inheritPropComments(blockBody[0], prop));\n        } else {\n          staticNodes.push(\n            t.inheritsComments(\n              template.statement.ast`(() => { ${blockBody} })()`,\n              prop.node,\n            ),\n          );\n        }\n        break;\n      }\n      case isStatic &&\n        isPrivate &&\n        isField &&\n        privateFieldsAsSymbolsOrProperties:\n        staticNodes.push(\n          buildPrivateFieldInitLoose(t.cloneNode(ref), prop, privateNamesMap),\n        );\n        break;\n      case isStatic &&\n        isPrivate &&\n        isField &&\n        !privateFieldsAsSymbolsOrProperties:\n        if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n          staticNodes.push(\n            buildPrivateStaticFieldInitSpecOld(prop, privateNamesMap),\n          );\n        } else {\n          staticNodes.push(\n            buildPrivateStaticFieldInitSpec(\n              prop,\n              privateNamesMap,\n              noUninitializedPrivateFieldAccess,\n            ),\n          );\n        }\n        break;\n      case isStatic && isPublic && isField && setPublicClassFields:\n        // Functions always have non-writable .name and .length properties,\n        // so we must always use [[Define]] for them.\n        // It might still be possible to a computed static fields whose resulting\n        // key is \"name\" or \"length\", but the assumption is telling us that it's\n        // not going to happen.\n        if (!isNameOrLength(prop.node)) {\n          staticNodes.push(buildPublicFieldInitLoose(t.cloneNode(ref), prop));\n          break;\n        }\n      // falls through\n      case isStatic && isPublic && isField && !setPublicClassFields:\n        staticNodes.push(\n          buildPublicFieldInitSpec(t.cloneNode(ref), prop, file),\n        );\n        break;\n      case isInstance &&\n        isPrivate &&\n        isField &&\n        privateFieldsAsSymbolsOrProperties:\n        instanceNodes.push(\n          buildPrivateFieldInitLoose(t.thisExpression(), prop, privateNamesMap),\n        );\n        break;\n      case isInstance &&\n        isPrivate &&\n        isField &&\n        !privateFieldsAsSymbolsOrProperties:\n        instanceNodes.push(\n          buildPrivateInstanceFieldInitSpec(\n            t.thisExpression(),\n            prop,\n            privateNamesMap,\n            file,\n          ),\n        );\n        break;\n      case isInstance &&\n        isPrivate &&\n        isMethod &&\n        privateFieldsAsSymbolsOrProperties:\n        instanceNodes.unshift(\n          buildPrivateMethodInitLoose(\n            t.thisExpression(),\n            prop,\n            privateNamesMap,\n          ),\n        );\n        pureStaticNodes.push(\n          buildPrivateMethodDeclaration(\n            file,\n            prop,\n            privateNamesMap,\n            privateFieldsAsSymbolsOrProperties,\n          ),\n        );\n        break;\n      case isInstance &&\n        isPrivate &&\n        isMethod &&\n        !privateFieldsAsSymbolsOrProperties:\n        instanceNodes.unshift(\n          buildPrivateInstanceMethodInitSpec(\n            t.thisExpression(),\n            prop,\n            privateNamesMap,\n            file,\n          ),\n        );\n        pureStaticNodes.push(\n          buildPrivateMethodDeclaration(\n            file,\n            prop,\n            privateNamesMap,\n            privateFieldsAsSymbolsOrProperties,\n          ),\n        );\n        break;\n      case isStatic &&\n        isPrivate &&\n        isMethod &&\n        !privateFieldsAsSymbolsOrProperties:\n        if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n          staticNodes.unshift(\n            // @ts-expect-error checked in switch\n            buildPrivateStaticFieldInitSpecOld(prop, privateNamesMap),\n          );\n        }\n        pureStaticNodes.push(\n          buildPrivateMethodDeclaration(\n            file,\n            prop,\n            privateNamesMap,\n            privateFieldsAsSymbolsOrProperties,\n          ),\n        );\n        break;\n      case isStatic &&\n        isPrivate &&\n        isMethod &&\n        privateFieldsAsSymbolsOrProperties:\n        staticNodes.unshift(\n          buildPrivateStaticMethodInitLoose(\n            t.cloneNode(ref),\n            prop,\n            file,\n            privateNamesMap,\n          ),\n        );\n        pureStaticNodes.push(\n          buildPrivateMethodDeclaration(\n            file,\n            prop,\n            privateNamesMap,\n            privateFieldsAsSymbolsOrProperties,\n          ),\n        );\n        break;\n      case isInstance && isPublic && isField && setPublicClassFields:\n        instanceNodes.push(buildPublicFieldInitLoose(t.thisExpression(), prop));\n        break;\n      case isInstance && isPublic && isField && !setPublicClassFields:\n        lastInstanceNodeReturnsThis = true;\n        instanceNodes.push(\n          buildPublicFieldInitSpec(t.thisExpression(), prop, file),\n        );\n        break;\n      default:\n        throw new Error(\"Unreachable.\");\n    }\n  }\n\n  if (classRefFlags & ClassRefFlag.ForInnerBinding && innerBindingRef != null) {\n    classBindingNode = t.expressionStatement(\n      t.assignmentExpression(\n        \"=\",\n        t.cloneNode(classRefForInnerBinding),\n        t.cloneNode(innerBindingRef),\n      ),\n    );\n  }\n\n  return {\n    staticNodes: staticNodes.filter(Boolean),\n    instanceNodes: instanceNodes.filter(Boolean),\n    lastInstanceNodeReturnsThis,\n    pureStaticNodes: pureStaticNodes.filter(Boolean),\n    classBindingNode,\n    wrapClass(path: NodePath<t.Class>) {\n      for (const prop of props) {\n        // Delete leading comments so that they don't get attached as\n        // trailing comments of the previous sibling.\n        // When transforming props, we explicitly attach their leading\n        // comments to the transformed node with `inheritPropComments`\n        // above.\n        prop.node.leadingComments = null;\n        prop.remove();\n      }\n\n      if (injectSuperRef) {\n        path.scope.push({ id: t.cloneNode(injectSuperRef) });\n        path.set(\n          \"superClass\",\n          t.assignmentExpression(\"=\", injectSuperRef, path.node.superClass),\n        );\n      }\n\n      if (classRefFlags !== ClassRefFlag.None) {\n        if (path.isClassExpression()) {\n          path.scope.push({ id: ref });\n          path.replaceWith(\n            t.assignmentExpression(\"=\", t.cloneNode(ref), path.node),\n          );\n        } else {\n          if (innerBindingRef == null) {\n            // export anonymous class declaration\n            path.node.id = ref;\n          }\n          if (classBindingNode != null) {\n            path.scope.push({ id: classRefForInnerBinding });\n          }\n        }\n      }\n\n      return path;\n    },\n  };\n}\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAGA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,yBAAA,GAAAF,OAAA;AACA,IAAAG,kCAAA,GAAAH,OAAA;AAKA,IAAAI,6BAAA,GAAAJ,OAAA;AACA,IAAAK,qBAAA,GAAAL,OAAA;AACA,IAAAM,wCAAA,GAAAN,OAAA;AAEA,IAAAO,EAAA,GAAAP,OAAA;AAkBmC;EAEjC,IAAIQ,UAAU,GAAIC,IAAU,IAAK;IAAA;IAS/B,OAAOA,IAAI,CAACC,eAAe,CAAC,uBAAuB,CAAC;EACtD,CAAC;AACH;AAEO,SAASC,oBAAoBA,CAClCC,SAAiB,EACjBC,kCAA2C,EAC3CC,KAAiB,EACjBL,IAAU,EACV;EACA,MAAMM,eAAgC,GAAG,IAAIC,GAAG,CAAC,CAAC;EAClD,IAAIC,YAA0B;EAC9B,KAAK,MAAMC,IAAI,IAAIJ,KAAK,EAAE;IACxB,IAAII,IAAI,CAACC,SAAS,CAAC,CAAC,EAAE;MACpB,MAAM;QAAEC;MAAK,CAAC,GAAGF,IAAI,CAACG,IAAI,CAACC,GAAG,CAACC,EAAE;MACjC,IAAIC,MAA2B,GAAGT,eAAe,CAACU,GAAG,CAACL,IAAI,CAAC;MAC3D,IAAI,CAACI,MAAM,EAAE;QACX,MAAME,QAAQ,GAAG,CAACR,IAAI,CAACS,UAAU,CAAC,CAAC;QACnC,MAAMC,QAAQ,GAAGV,IAAI,CAACG,IAAI,CAACQ,MAAM;QACjC,IAAIC,SAAS,GAAG,KAAK;QACrB,IAAIP,EAAgB;QACpB,IACE,CAACV,kCAAkC,IACFL,UAAU,CAACC,IAAI,CAAC,IACjDiB,QAAQ,IACR,CAACE,QAAQ,EACT;UAAA,IAAAG,aAAA;UACAD,SAAS,GAAG,CAAC,CAACb,YAAY;UAC1B,CAAAc,aAAA,GAAAd,YAAY,YAAAc,aAAA,GAAZd,YAAY,GAAKC,IAAI,CAACc,KAAK,CAACC,qBAAqB,CAC9C,GAAErB,SAAU,QACf,CAAC;UACDW,EAAE,GAAGN,YAAY;QACnB,CAAC,MAAM;UACLM,EAAE,GAAGL,IAAI,CAACc,KAAK,CAACC,qBAAqB,CAACb,IAAI,CAAC;QAC7C;QACAI,MAAM,GAAG;UAAED,EAAE;UAAEM,MAAM,EAAED,QAAQ;UAAEM,MAAM,EAAER,QAAQ;UAAEI;QAAU,CAAC;QAC9Df,eAAe,CAACoB,GAAG,CAACf,IAAI,EAAEI,MAAM,CAAC;MACnC;MACA,IAAIN,IAAI,CAACkB,oBAAoB,CAAC,CAAC,EAAE;QAC/B,IAAIlB,IAAI,CAACG,IAAI,CAACgB,IAAI,KAAK,KAAK,EAAE;UAC5B,MAAM;YAAEC;UAAK,CAAC,GAAGpB,IAAI,CAACG,IAAI,CAACiB,IAAI;UAC/B,IAAIC,CAAS;UACb,IAIED,IAAI,CAACE,MAAM,KAAK,CAAC,IACjBC,WAAC,CAACC,iBAAiB,CAAEH,CAAC,GAAGD,IAAI,CAAC,CAAC,CAAE,CAAC,IAClCG,WAAC,CAACE,gBAAgB,CAAEJ,CAAC,GAAGA,CAAC,CAACK,QAAS,CAAC,IACpCL,CAAC,CAACM,SAAS,CAACL,MAAM,KAAK,CAAC,IACxBC,WAAC,CAACK,gBAAgB,CAACP,CAAC,CAACM,SAAS,CAAC,CAAC,CAAC,CAAC,IAClCJ,WAAC,CAACM,YAAY,CAAER,CAAC,GAAGA,CAAC,CAACS,MAAO,CAAC,EAC9B;YACAxB,MAAM,CAACyB,KAAK,GAAGR,WAAC,CAACS,SAAS,CAACX,CAAC,CAAC;YAC7Bf,MAAM,CAAC2B,cAAc,GAAG,IAAI;UAC9B,CAAC,MAAM;YACL3B,MAAM,CAACyB,KAAK,GAAG/B,IAAI,CAACc,KAAK,CAACC,qBAAqB,CAAE,OAAMb,IAAK,EAAC,CAAC;UAChE;QACF,CAAC,MAAM,IAAIF,IAAI,CAACG,IAAI,CAACgB,IAAI,KAAK,KAAK,EAAE;UACnC,MAAM;YAAEe;UAAO,CAAC,GAAGlC,IAAI,CAACG,IAAI;UAC5B,MAAM;YAAEiB;UAAK,CAAC,GAAGpB,IAAI,CAACG,IAAI,CAACiB,IAAI;UAC/B,IAAIC,CAAS;UACb,IAIED,IAAI,CAACE,MAAM,KAAK,CAAC,IACjBC,WAAC,CAACY,qBAAqB,CAAEd,CAAC,GAAGD,IAAI,CAAC,CAAC,CAAE,CAAC,IACtCG,WAAC,CAACE,gBAAgB,CAAEJ,CAAC,GAAGA,CAAC,CAACe,UAAW,CAAC,IACtCf,CAAC,CAACM,SAAS,CAACL,MAAM,KAAK,CAAC,IACxBC,WAAC,CAACK,gBAAgB,CAACP,CAAC,CAACM,SAAS,CAAC,CAAC,CAAC,CAAC,IAClCJ,WAAC,CAACM,YAAY,CAACR,CAAC,CAACM,SAAS,CAAC,CAAC,CAAC,EAAE;YAC7BzB,IAAI,EAAGgC,MAAM,CAAC,CAAC,CAAC,CAAkBhC;UACpC,CAAC,CAAC,IACFqB,WAAC,CAACM,YAAY,CAAER,CAAC,GAAGA,CAAC,CAACS,MAAO,CAAC,EAC9B;YACAxB,MAAM,CAAC+B,KAAK,GAAGd,WAAC,CAACS,SAAS,CAACX,CAAC,CAAC;YAC7Bf,MAAM,CAACgC,cAAc,GAAG,IAAI;UAC9B,CAAC,MAAM;YACLhC,MAAM,CAAC+B,KAAK,GAAGrC,IAAI,CAACc,KAAK,CAACC,qBAAqB,CAAE,OAAMb,IAAK,EAAC,CAAC;UAChE;QACF,CAAC,MAAM,IAAIF,IAAI,CAACG,IAAI,CAACgB,IAAI,KAAK,QAAQ,EAAE;UACtCb,MAAM,CAACiC,QAAQ,GAAGvC,IAAI,CAACc,KAAK,CAACC,qBAAqB,CAACb,IAAI,CAAC;QAC1D;MACF;MACAL,eAAe,CAACoB,GAAG,CAACf,IAAI,EAAEI,MAAM,CAAC;IACnC;EACF;EACA,OAAOT,eAAe;AACxB;AAEO,SAAS2C,sBAAsBA,CACpC3C,eAAgC,EAChC4C,yBAAkC,EAClCC,sBAA+B,EAC/BC,KAAW,EACX;EACA,MAAMC,SAAwB,GAAG,EAAE;EAEnC,MAAMC,WAAW,GAAG,IAAIC,GAAG,CAAS,CAAC;EAErC,KAAK,MAAM,CAAC5C,IAAI,EAAE6C,KAAK,CAAC,IAAIlD,eAAe,EAAE;IAW3C,MAAM;MAAEc,MAAM,EAAED,QAAQ;MAAEM,MAAM,EAAER,QAAQ;MAAEuB,KAAK;MAAEM;IAAM,CAAC,GAAGU,KAAK;IAClE,MAAMC,gBAAgB,GAAGjB,KAAK,IAAIM,KAAK;IACvC,MAAMhC,EAAE,GAAGkB,WAAC,CAACS,SAAS,CAACe,KAAK,CAAC1C,EAAE,CAAC;IAEhC,IAAI4C,IAAkB;IAEtB,IAAIR,yBAAyB,EAAE;MAC7BQ,IAAI,GAAG1B,WAAC,CAAC2B,cAAc,CAACP,KAAK,CAACQ,SAAS,CAAC,2BAA2B,CAAC,EAAE,CACpE5B,WAAC,CAAC6B,aAAa,CAAClD,IAAI,CAAC,CACtB,CAAC;IACJ,CAAC,MAAM,IAAIwC,sBAAsB,EAAE;MACjCO,IAAI,GAAG1B,WAAC,CAAC2B,cAAc,CAAC3B,WAAC,CAAC8B,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC9B,WAAC,CAAC6B,aAAa,CAAClD,IAAI,CAAC,CAAC,CAAC;IAC1E,CAAC,MAAM,IAAI,CAACQ,QAAQ,EAAE;MACpB,IAAImC,WAAW,CAACS,GAAG,CAACjD,EAAE,CAACH,IAAI,CAAC,EAAE;MAC9B2C,WAAW,CAACU,GAAG,CAAClD,EAAE,CAACH,IAAI,CAAC;MAExB+C,IAAI,GAAG1B,WAAC,CAACiC,aAAa,CACpBjC,WAAC,CAAC8B,UAAU,CACV7C,QAAQ,KAEJ,CAACwC,gBAAgB,IACjB1D,UAAU,CAACqD,KAAK,CAAC,IACjB,SAAS,GACT,SACN,CAAC,EACD,EACF,CAAC;IACH;IAEA,IAAIM,IAAI,EAAE;MACR,IAAI,CAACP,sBAAsB,EAAE;QAC3B,IAAAe,6BAAc,EAACR,IAAI,CAAC;MACtB;MACAL,SAAS,CAACc,IAAI,CAACC,cAAQ,CAACC,SAAS,CAACC,GAAI,OAAMxD,EAAG,MAAK4C,IAAK,EAAC,CAAC;IAC7D;EACF;EAEA,OAAOL,SAAS;AAClB;AAUO,SAASkB,yBAAyBA,CACvCC,OAAsE,EACtE;EAGA,MAAMC,aAAa,GAAGC,cAAQ,CAACC,QAAQ,CAACC,KAAK,CAAC,CAAAC,MAAA,CAAAC,MAAA,KACvCN,OAAO,GACZO,iCAAkB,CACnB,CAAC;EAEF,MAAMC,kBAEL,GAAAH,MAAA,CAAAC,MAAA,KACIN,OAAO;IAEVS,KAAKA,CAACC,IAAI,EAAE;MACV,MAAM;QAAE5E;MAAgB,CAAC,GAAG,IAAI;MAChC,MAAMuB,IAAI,GAAGqD,IAAI,CAAClE,GAAG,CAAC,WAAW,CAAC;MAElC,MAAMmE,mBAAmB,GAAG,IAAI5E,GAAG,CAACD,eAAe,CAAC;MACpD,MAAM8E,UAAU,GAAG,EAAE;MACrB,KAAK,MAAM3E,IAAI,IAAIoB,IAAI,EAAE;QACvB,IAAI,CAACpB,IAAI,CAACC,SAAS,CAAC,CAAC,EAAE;QACvB,MAAM;UAAEC;QAAK,CAAC,GAAGF,IAAI,CAACG,IAAI,CAACC,GAAG,CAACC,EAAE;QACjCqE,mBAAmB,CAACE,MAAM,CAAC1E,IAAI,CAAC;QAChCyE,UAAU,CAACjB,IAAI,CAACxD,IAAI,CAAC;MACvB;MAIA,IAAI,CAACyE,UAAU,CAACrD,MAAM,EAAE;QACtB;MACF;MAKAmD,IAAI,CAAClE,GAAG,CAAC,MAAM,CAAC,CAAC0D,QAAQ,CAACD,aAAa,EAAAI,MAAA,CAAAC,MAAA,KAClC,IAAI;QACPM;MAAU,EACX,CAAC;MACFF,IAAI,CAACR,QAAQ,CAACM,kBAAkB,EAAAH,MAAA,CAAAC,MAAA,KAC3B,IAAI;QACPxE,eAAe,EAAE6E;MAAmB,EACrC,CAAC;MAIFD,IAAI,CAACI,OAAO,CAAC,MAAM,CAAC;IACtB;EAAC,EACF;EAED,OAAON,kBAAkB;AAC3B;AAWA,MAAMA,kBAAkB,GAAGT,yBAAyB,CAGlD;EACAgB,WAAWA,CAACL,IAAI,EAAE;IAAEM;EAAc,CAAC,EAAE;IACnC,MAAM;MAAElF,eAAe;MAAE8E;IAAW,CAAC,GAAG,IAAI;IAC5C,MAAM;MAAExE,IAAI;MAAE6E;IAAW,CAAC,GAAGP,IAAI;IAEjC,IACE,CAACO,UAAU,CAACC,kBAAkB,CAAC;MAAEC,QAAQ,EAAE/E;IAAK,CAAC,CAAC,IAClD,CAAC6E,UAAU,CAACG,0BAA0B,CAAC;MAAED,QAAQ,EAAE/E;IAAK,CAAC,CAAC,EAC1D;MACA;IACF;IACA,MAAM;MAAED;IAAK,CAAC,GAAGC,IAAI,CAACE,EAAE;IACxB,IAAI,CAACR,eAAe,CAACyD,GAAG,CAACpD,IAAI,CAAC,EAAE;IAChC,IAAIyE,UAAU,IAAIA,UAAU,CAACS,QAAQ,CAAClF,IAAI,CAAC,EAAE;IAE7C,IAAI,CAACmF,MAAM,CAACL,UAAU,EAAED,aAAa,CAAC;EACxC;AACF,CAAC,CAAC;AAGF,SAASO,QAAQA,CACfpF,IAAY,EACZY,KAAY,EACZyE,YAAsC,EACtC;EAIA,OACE,CAAAC,MAAA,GAAA1E,KAAK,aAAL0E,MAAA,CAAOC,UAAU,CAACvF,IAAI,CAAC,IACvB,CAACY,KAAK,CAAC4E,uBAAuB,CAACxF,IAAI,EAAEqF,YAAY,CAAC,EAClD;IAAA,IAAAC,MAAA;IACA1E,KAAK,CAAC6E,MAAM,CAACzF,IAAI,CAAC;IAClBY,KAAK,GAAGA,KAAK,CAAC8E,MAAM;EACtB;AACF;AAEO,SAASC,eAAeA,CAC7BC,GAAiB,EACjBvG,IAAU,EACVwG,aAAuB,EACvB;EACA,IAAIA,aAAa,IAAI,EAACxG,IAAI,CAACC,eAAe,YAApBD,IAAI,CAACC,eAAe,CAAG,YAAY,CAAC,GAAE,OAAOsG,GAAG;EACtE,OAAOvE,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC2C,GAAG,CAAC,CAAC;AAC9D;AAEA,MAAME,gBAAgB,GAAGlC,yBAAyB,CAQhD;EACAmC,gBAAgBA,CAACxB,IAAI,EAAE;IAAElF;EAAK,CAAC,EAAE;IAC/B,MAAM;MAAE2G,QAAQ;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAG3B,IAAI,CAACtE,IAAI;IAC3C,IAAI+F,QAAQ,KAAK,IAAI,EAAE;IACvB,IAAI,CAAC3E,WAAC,CAAC8E,aAAa,CAACF,IAAI,CAAC,EAAE;IAE5B,MAAM;MAAE1D,yBAAyB;MAAE5C,eAAe;MAAE8E;IAAW,CAAC,GAAG,IAAI;IAEvE,MAAM;MAAEzE;IAAK,CAAC,GAAGiG,IAAI,CAAC9F,EAAE;IAExB,IAAI,CAACR,eAAe,CAACyD,GAAG,CAACpD,IAAI,CAAC,EAAE;IAChC,IAAIyE,UAAU,IAAIA,UAAU,CAACS,QAAQ,CAAClF,IAAI,CAAC,EAAE;IAI7CoF,QAAQ,CAAC,IAAI,CAACgB,QAAQ,CAACpG,IAAI,EAAEuE,IAAI,CAAC3D,KAAK,EAAE,IAAI,CAACyE,YAAY,CAAC;IAE3D,IAAI9C,yBAAyB,EAAE;MAC7B,MAAM;QAAEpC;MAAG,CAAC,GAAGR,eAAe,CAACU,GAAG,CAACL,IAAI,CAAC;MACxCuE,IAAI,CAAC8B,WAAW,CAAC5C,cAAQ,CAACvB,UAAU,CAACyB,GAAI;AAC/C,+CAA+CgC,eAAe,CACpDO,KAAK,EACL7G,IACF,CAAE,KAAIgC,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAE;AAC9B,OAAO,CAAC;MACF;IACF;IAEA,MAAM;MAAEA,EAAE;MAAEM,MAAM,EAAED;IAAS,CAAC,GAAGb,eAAe,CAACU,GAAG,CAACL,IAAI,CAAC;IAE1D,IAAIQ,QAAQ,EAAE;MACZ+D,IAAI,CAAC8B,WAAW,CACd5C,cAAQ,CAACvB,UAAU,CAACyB,GAAI,GAAEgC,eAAe,CACvCO,KAAK,EACL7G,IACF,CAAE,QAAOgC,WAAC,CAACS,SAAS,CAAC,IAAI,CAACsE,QAAQ,CAAE,EACtC,CAAC;MACD;IACF;IAEA7B,IAAI,CAAC8B,WAAW,CACd5C,cAAQ,CAACvB,UAAU,CAACyB,GAAI,GAAEtC,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAE,QAAOwF,eAAe,CAC9DO,KAAK,EACL7G,IACF,CAAE,GACJ,CAAC;EACH;AACF,CAAC,CAAC;AASF,SAASiH,aAAaA,CAACjH,IAAU,EAAEW,IAAY,EAAE;EAC/C,OAAOqB,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,eAAe,CAAC,EAAE,CACvD5B,WAAC,CAAC6B,aAAa,CAAE,IAAGlD,IAAK,EAAC,CAAC,CAC5B,CAAC;AACJ;AAEA,SAASuG,cAAcA,CAAClH,IAAU,EAAEW,IAAY,EAAE;EAChD,IAEE,CAACX,IAAI,CAACC,eAAe,CAAC,gBAAgB,CAAC,EACvC;IACAkH,OAAO,CAACC,IAAI,CACT,gEACH,CAAC;IACD,OAAOpF,WAAC,CAACqF,kBAAkB,CAAC,CAAC;EAC/B;EACA,OAAOrF,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,gBAAgB,CAAC,EAAE,CACxD5B,WAAC,CAAC6B,aAAa,CAAE,IAAGlD,IAAK,EAAC,CAAC,CAC5B,CAAC;AACJ;AAEA,SAAS2G,6BAA6BA,CACpCC,IAAO,EACPC,iCAA0C,EAC1C;EACA,IAAIA,iCAAiC,EAAE,OAAOD,IAAI;EAClD,OAAOvF,WAAC,CAACyF,gBAAgB,CAACF,IAAI,EAAEvF,WAAC,CAAC8B,UAAU,CAAC,GAAG,CAAC,CAAC;AACpD;AAEA,MAAM4D,sBAAuE,GAC3E;EACEC,OAAOA,CAACC,MAAM,EAAEC,KAAK,EAAE;IACrB,MAAM;MAAEtG;IAAM,CAAC,GAAGqG,MAAM;IACxB,MAAM;MAAEE;IAAO,CAAC,GAAGF,MAAM,CAAChH,IAAgC;IAE1D,MAAMmH,IAAI,GAAGxG,KAAK,CAACyG,qBAAqB,CAACF,MAAM,CAAC;IAChD,IAAI,CAACC,IAAI,EAAE;MACT;IACF;IAEA,IAAI,CAACE,QAAQ,CAACvG,GAAG,CAACoG,MAAM,EAAEC,IAAI,EAAEF,KAAK,CAAC;EACxC,CAAC;EAEDK,QAAQA,CAACN,MAAM,EAAE;IACf,MAAM;MAAEE;IAAO,CAAC,GAAGF,MAAM,CAAChH,IAAgC;IAE1D,IAAI,IAAI,CAACqH,QAAQ,CAAClE,GAAG,CAAC+D,MAAM,CAAC,EAAE;MAC7B,OAAO9F,WAAC,CAACS,SAAS,CAAC,IAAI,CAACwF,QAAQ,CAACjH,GAAG,CAAC8G,MAAM,CAAC,CAAC;IAC/C;IAEA,OAAO9F,WAAC,CAACS,SAAS,CAACqF,MAAM,CAAC;EAC5B,CAAC;EAED9G,GAAGA,CAAC4G,MAAM,EAAE;IACV,MAAM;MACJb,QAAQ;MACRzG,eAAe;MACfN,IAAI;MACJgG,YAAY;MACZwB;IACF,CAAC,GAAG,IAAI;IACR,MAAM;MAAE7G;IAAK,CAAC,GAAIiH,MAAM,CAAChH,IAAI,CAAC+E,QAAQ,CAAmB7E,EAAE;IAC3D,MAAM;MACJA,EAAE;MACFM,MAAM,EAAED,QAAQ;MAChBM,MAAM,EAAER,QAAQ;MAChB+B,QAAQ;MACRR,KAAK;MACLM;IACF,CAAC,GAAGxC,eAAe,CAACU,GAAG,CAACL,IAAI,CAAC;IAC7B,MAAM8C,gBAAgB,GAAGjB,KAAK,IAAIM,KAAK;IAEvC,IAAI3B,QAAQ,EAAE;MAGZ4E,QAAQ,CAACgB,QAAQ,CAACpG,IAAI,EAAEiH,MAAM,CAACrG,KAAK,EAAEyE,YAAY,CAAC;MAEnD,IAAqC,CAACjG,UAAU,CAACC,IAAI,CAAC,EAAE;QAGtD,MAAMmI,UAAU,GACdlH,QAAQ,IAAI,CAACwC,gBAAgB,GACzB,6BAA6B,GAC7B,gCAAgC;QAEtC,OAAOzB,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAACuE,UAAU,CAAC,EAAE,CAClD,IAAI,CAACD,QAAQ,CAACN,MAAM,CAAC,EACrB5F,WAAC,CAACS,SAAS,CAACsE,QAAQ,CAAC,EACrB/E,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAC,CAChB,CAAC;MACJ;MAEA,MAAMoH,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAACN,MAAM,CAAC;MACtC,MAAMQ,SAAS,GACbpG,WAAC,CAACM,YAAY,CAAC4F,QAAQ,CAAC,IAAIA,QAAQ,CAACvH,IAAI,KAAKoG,QAAQ,CAACpG,IAAI;MAE7D,IAAI,CAACM,QAAQ,EAAE;QACb,IAAImH,SAAS,EAAE;UACb,OAAOd,6BAA6B,CAClCtF,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAC,EACf0G,iCACF,CAAC;QACH;QAEA,OAAOF,6BAA6B,CAClCtF,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,kBAAkB,CAAC,EAAE,CACnD5B,WAAC,CAACS,SAAS,CAACsE,QAAQ,CAAC,EACrBmB,QAAQ,EACRlG,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAC,CAChB,CAAC,EACF0G,iCACF,CAAC;MACH;MAEA,IAAIhF,KAAK,EAAE;QACT,IAAI4F,SAAS,EAAE;UACb,OAAOpG,WAAC,CAAC2B,cAAc,CAAC3B,WAAC,CAACS,SAAS,CAACD,KAAK,CAAC,EAAE,CAAC0F,QAAQ,CAAC,CAAC;QACzD;QACA,OAAOlG,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAC5D5B,WAAC,CAACS,SAAS,CAACsE,QAAQ,CAAC,EACrBmB,QAAQ,EACRlG,WAAC,CAACS,SAAS,CAACD,KAAK,CAAC,CACnB,CAAC;MACJ;MAEA,IAAIM,KAAK,EAAE;QACT,MAAMuF,GAAG,GAAGrG,WAAC,CAACqF,kBAAkB,CAAC,CAAC;QAClC,IAAIe,SAAS,EAAE,OAAOC,GAAG;QACzB,OAAOrG,WAAC,CAACsG,kBAAkB,CAAC,CAC1BtG,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,kBAAkB,CAAC,EAAE,CACnD5B,WAAC,CAACS,SAAS,CAACsE,QAAQ,CAAC,EACrBmB,QAAQ,CACT,CAAC,EACFG,GAAG,CACJ,CAAC;MACJ;MAEA,IAAID,SAAS,EAAE,OAAOpG,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAC;MACrC,OAAOkB,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAC1D5B,WAAC,CAACS,SAAS,CAACsE,QAAQ,CAAC,EACrBmB,QAAQ,EACRlG,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAC,CAChB,CAAC;IACJ;IAEA,IAAIG,QAAQ,EAAE;MACZ,IAAIwC,gBAAgB,EAAE;QACpB,IAAI,CAACjB,KAAK,EAAE;UACV,OAAOR,WAAC,CAACsG,kBAAkB,CAAC,CAC1B,IAAI,CAACJ,QAAQ,CAACN,MAAM,CAAC,EACrBV,cAAc,CAAClH,IAAI,EAAEW,IAAI,CAAC,CAC3B,CAAC;QACJ;QACA,IAAqC,CAACZ,UAAU,CAACC,IAAI,CAAC,EAAE;UACtD,OAAOgC,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,sBAAsB,CAAC,EAAE,CAC9D,IAAI,CAACsE,QAAQ,CAACN,MAAM,CAAC,EACrB5F,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAC,CAChB,CAAC;QACJ;QACA,OAAOkB,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAC5D5B,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAC,EACf,IAAI,CAACoH,QAAQ,CAACN,MAAM,CAAC,EACrB5F,WAAC,CAACS,SAAS,CAACD,KAAK,CAAC,CACnB,CAAC;MACJ;MACA,IAAqC,CAACzC,UAAU,CAACC,IAAI,CAAC,EAAE;QACtD,OAAOgC,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,uBAAuB,CAAC,EAAE,CAC/D,IAAI,CAACsE,QAAQ,CAACN,MAAM,CAAC,EACrB5F,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAC,EACfkB,WAAC,CAACS,SAAS,CAACO,QAAQ,CAAC,CACtB,CAAC;MACJ;MACA,OAAOhB,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAC1D5B,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAC,EACf,IAAI,CAACoH,QAAQ,CAACN,MAAM,CAAC,EACrB5F,WAAC,CAACS,SAAS,CAACO,QAAQ,CAAC,CACtB,CAAC;IACJ;IACA,IAAoCjD,UAAU,CAACC,IAAI,CAAC,EAAE;MACpD,OAAOgC,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,uBAAuB,CAAC,EAAE,CAC/D5B,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAC,EACf,IAAI,CAACoH,QAAQ,CAACN,MAAM,CAAC,CACtB,CAAC;IACJ;IAEA,OAAO5F,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,sBAAsB,CAAC,EAAE,CAC9D,IAAI,CAACsE,QAAQ,CAACN,MAAM,CAAC,EACrB5F,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAC,CAChB,CAAC;EACJ,CAAC;EAEDyH,QAAQA,CAACX,MAAM,EAAE;IACf,IAAI,CAACD,OAAO,CAACC,MAAM,EAAE,CAAC,CAAC;IAEvB,OAAO5F,WAAC,CAAC2B,cAAc,CACrB3B,WAAC,CAACyF,gBAAgB,CAAC,IAAI,CAACzG,GAAG,CAAC4G,MAAM,CAAC,EAAE5F,WAAC,CAAC8B,UAAU,CAAC,MAAM,CAAC,CAAC,EAC1D,CAAC,IAAI,CAACoE,QAAQ,CAACN,MAAM,CAAC,CACxB,CAAC;EACH,CAAC;EAEDlG,GAAGA,CAACkG,MAAM,EAAEpE,KAAK,EAAE;IACjB,MAAM;MACJuD,QAAQ;MACRzG,eAAe;MACfN,IAAI;MACJwH;IACF,CAAC,GAAG,IAAI;IACR,MAAM;MAAE7G;IAAK,CAAC,GAAIiH,MAAM,CAAChH,IAAI,CAAC+E,QAAQ,CAAmB7E,EAAE;IAC3D,MAAM;MACJA,EAAE;MACFM,MAAM,EAAED,QAAQ;MAChBM,MAAM,EAAER,QAAQ;MAChB6B,KAAK;MACLN;IACF,CAAC,GAAGlC,eAAe,CAACU,GAAG,CAACL,IAAI,CAAC;IAC7B,MAAM8C,gBAAgB,GAAGjB,KAAK,IAAIM,KAAK;IAEvC,IAAI3B,QAAQ,EAAE;MACZ,IAAqC,CAACpB,UAAU,CAACC,IAAI,CAAC,EAAE;QACtD,MAAMmI,UAAU,GACdlH,QAAQ,IAAI,CAACwC,gBAAgB,GACzB,6BAA6B,GAC7B,gCAAgC;QAEtC,OAAOzB,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAACuE,UAAU,CAAC,EAAE,CAClD,IAAI,CAACD,QAAQ,CAACN,MAAM,CAAC,EACrB5F,WAAC,CAACS,SAAS,CAACsE,QAAQ,CAAC,EACrB/E,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAC,EACf0C,KAAK,CACN,CAAC;MACJ;MAEA,MAAM0E,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAACN,MAAM,CAAC;MACtC,MAAMQ,SAAS,GACbpG,WAAC,CAACM,YAAY,CAAC4F,QAAQ,CAAC,IAAIA,QAAQ,CAACvH,IAAI,KAAKoG,QAAQ,CAACpG,IAAI;MAE7D,IAAIM,QAAQ,IAAI,CAAC6B,KAAK,EAAE;QACtB,MAAMuF,GAAG,GAAGpB,aAAa,CAACjH,IAAI,EAAEW,IAAI,CAAC;QACrC,IAAIyH,SAAS,EAAE,OAAOpG,WAAC,CAACsG,kBAAkB,CAAC,CAAC9E,KAAK,EAAE6E,GAAG,CAAC,CAAC;QACxD,OAAOrG,WAAC,CAACsG,kBAAkB,CAAC,CAC1B9E,KAAK,EACLxB,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,kBAAkB,CAAC,EAAE,CACnD5B,WAAC,CAACS,SAAS,CAACsE,QAAQ,CAAC,EACrBmB,QAAQ,CACT,CAAC,EACFjB,aAAa,CAACjH,IAAI,EAAEW,IAAI,CAAC,CAC1B,CAAC;MACJ;MAEA,IAAImC,KAAK,EAAE;QACT,IAAIsF,SAAS,EAAE;UACb,OAAOpG,WAAC,CAAC2B,cAAc,CAAC3B,WAAC,CAACS,SAAS,CAACK,KAAK,CAAC,EAAE,CAACoF,QAAQ,EAAE1E,KAAK,CAAC,CAAC;QAChE;QACA,OAAOxB,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAC5D5B,WAAC,CAACS,SAAS,CAACsE,QAAQ,CAAC,EACrB/E,WAAC,CAACS,SAAS,CAACK,KAAK,CAAC,EAClBoF,QAAQ,EACR1E,KAAK,CACN,CAAC;MACJ;MACA,OAAOxB,WAAC,CAACwG,oBAAoB,CAC3B,GAAG,EACHlB,6BAA6B,CAC3BtF,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAC,EACf0G,iCACF,CAAC,EACDY,SAAS,GACL5E,KAAK,GACLxB,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,kBAAkB,CAAC,EAAE,CACnD5B,WAAC,CAACS,SAAS,CAACsE,QAAQ,CAAC,EACrBmB,QAAQ,EACR1E,KAAK,CACN,CACP,CAAC;IACH;IACA,IAAIvC,QAAQ,EAAE;MACZ,IAAI6B,KAAK,EAAE;QACT,IAAqC,CAAC/C,UAAU,CAACC,IAAI,CAAC,EAAE;UACtD,OAAOgC,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,sBAAsB,CAAC,EAAE,CAC9D,IAAI,CAACsE,QAAQ,CAACN,MAAM,CAAC,EACrB5F,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAC,EACf0C,KAAK,CACN,CAAC;QACJ;QACA,OAAOxB,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAC5D5B,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAC,EACfkB,WAAC,CAACS,SAAS,CAACK,KAAK,CAAC,EAClB,IAAI,CAACoF,QAAQ,CAACN,MAAM,CAAC,EACrBpE,KAAK,CACN,CAAC;MACJ;MACA,OAAOxB,WAAC,CAACsG,kBAAkB,CAAC,CAC1B,IAAI,CAACJ,QAAQ,CAACN,MAAM,CAAC,EACrBpE,KAAK,EACLyD,aAAa,CAACjH,IAAI,EAAEW,IAAI,CAAC,CAC1B,CAAC;IACJ;IAEA,IAAoCZ,UAAU,CAACC,IAAI,CAAC,EAAE;MACpD,OAAOgC,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,uBAAuB,CAAC,EAAE,CAC/D5B,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAC,EACf,IAAI,CAACoH,QAAQ,CAACN,MAAM,CAAC,EACrBpE,KAAK,CACN,CAAC;IACJ;IAEA,OAAOxB,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,sBAAsB,CAAC,EAAE,CAC9D,IAAI,CAACsE,QAAQ,CAACN,MAAM,CAAC,EACrB5F,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAC,EACf0C,KAAK,CACN,CAAC;EACJ,CAAC;EAEDiF,cAAcA,CAACb,MAAM,EAAE;IACrB,MAAM;MACJb,QAAQ;MACRzG,eAAe;MACfN,IAAI;MACJwH;IACF,CAAC,GAAG,IAAI;IACR,MAAM;MAAE7G;IAAK,CAAC,GAAIiH,MAAM,CAAChH,IAAI,CAAC+E,QAAQ,CAAmB7E,EAAE;IAC3D,MAAM;MACJA,EAAE;MACFM,MAAM,EAAED,QAAQ;MAChBM,MAAM,EAAER,QAAQ;MAChB6B;IACF,CAAC,GAAGxC,eAAe,CAACU,GAAG,CAACL,IAAI,CAAC;IAE7B,IAAqC,CAACZ,UAAU,CAACC,IAAI,CAAC,EAAE;MACtD,IAAImB,QAAQ,EAAE;QACZ,IAAI;UAGF,IAAIuH,MAAM,GAAG1I,IAAI,CAAC4D,SAAS,CACzB,uCACF,CAAC;QACH,CAAC,CAAC,OAAA+E,OAAA,EAAM;UACN,MAAM,IAAIC,KAAK,CACb,0EAA0E,GACxE,qDACJ,CAAC;QACH;QACA,OAAO5G,WAAC,CAACyF,gBAAgB,CACvBzF,WAAC,CAAC2B,cAAc,CAAC+E,MAAM,EAAE,CACvB,IAAI,CAACR,QAAQ,CAACN,MAAM,CAAC,EACrB5F,WAAC,CAACS,SAAS,CAACsE,QAAQ,CAAC,EACrB/E,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAC,CAChB,CAAC,EACFkB,WAAC,CAAC8B,UAAU,CAAC,OAAO,CACtB,CAAC;MACH;MAEA,OAAO9B,WAAC,CAACyF,gBAAgB,CACvBzF,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,iCAAiC,CAAC,EAAE,CAClE,IAAI,CAACsE,QAAQ,CAACN,MAAM,CAAC,EACrB5F,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAC,CAChB,CAAC,EACFkB,WAAC,CAAC8B,UAAU,CAAC,OAAO,CACtB,CAAC;IACH;IAEA,IAAI7C,QAAQ,IAAI,CAAC6B,KAAK,EAAE;MACtB,OAAOd,WAAC,CAACyF,gBAAgB,CACvBzF,WAAC,CAACsG,kBAAkB,CAAC,CAEnBV,MAAM,CAAChH,IAAI,CAACkH,MAAM,EAClBb,aAAa,CAACjH,IAAI,EAAEW,IAAI,CAAC,CAC1B,CAAC,EACFqB,WAAC,CAAC8B,UAAU,CAAC,GAAG,CAClB,CAAC;IACH;IAEA,IAAI3C,QAAQ,IAAI,CAACF,QAAQ,EAAE;MACzB,MAAM4H,OAAO,GAAG,IAAI,CAAC7H,GAAG,CAAC4G,MAAM,CAAC;MAChC,IACE,CAACJ,iCAAiC,IAClC,CAACxF,WAAC,CAACE,gBAAgB,CAAC2G,OAAO,CAAC,EAC5B;QACA,OAAOA,OAAO;MAChB;MACA,MAAMC,GAAG,GAAGD,OAAO,CAACzG,SAAS,CAAC2G,GAAG,CAAC,CAAC;MACnCF,OAAO,CAACzG,SAAS,CAAC+B,IAAI,CAACC,cAAQ,CAACvB,UAAU,CAACyB,GAAI,UAASwE,GAAI,MAAK,CAAC;MAClE,OAAO9G,WAAC,CAACyF,gBAAgB,CACvBzF,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,UAAU,CAAC,EAAE,CAACiF,OAAO,CAAC,CAAC,EACvD7G,WAAC,CAAC8B,UAAU,CAAC,GAAG,CAClB,CAAC;IACH;IAEA,MAAMkF,OAAO,GAAG,IAAI,CAACtH,GAAG,CAACkG,MAAM,EAAE5F,WAAC,CAAC8B,UAAU,CAAC,GAAG,CAAC,CAAC;IACnD,IACE,CAAC9B,WAAC,CAACE,gBAAgB,CAAC8G,OAAO,CAAC,IAC5B,CAAChH,WAAC,CAACM,YAAY,CAAC0G,OAAO,CAAC5G,SAAS,CAAC4G,OAAO,CAAC5G,SAAS,CAACL,MAAM,GAAG,CAAC,CAAC,EAAE;MAC/DpB,IAAI,EAAE;IACR,CAAC,CAAC,EACF;MACA,MAAMiH,MAAM,CAACqB,mBAAmB,CAC9B,uEAAuE,GACrE,4DACJ,CAAC;IACH;IAIA,IAAIC,IAAoB;IACxB,IACElH,WAAC,CAAC0D,kBAAkB,CAACsD,OAAO,CAACzG,MAAM,EAAE;MAAE4G,QAAQ,EAAE;IAAM,CAAC,CAAC,IACzDnH,WAAC,CAACM,YAAY,CAAC0G,OAAO,CAACzG,MAAM,CAACoD,QAAQ,CAAC,IACvCqD,OAAO,CAACzG,MAAM,CAACoD,QAAQ,CAAChF,IAAI,KAAK,MAAM,EACvC;MACAuI,IAAI,GAAG,CAELF,OAAO,CAACzG,MAAM,CAACuF,MAAM,EACrB9F,WAAC,CAACoH,eAAe,CAEdJ,OAAO,CAAC5G,SAAS,CAAoBiH,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CACnD,CAAC,EACDL,OAAO,CAAC5G,SAAS,CAAC,CAAC,CAAC,CACrB;IACH,CAAC,MAAM;MACL8G,IAAI,GAAG,CACLF,OAAO,CAACzG,MAAM,EACdP,WAAC,CAACoH,eAAe,CAEdJ,OAAO,CAAC5G,SAAS,CAAoBiH,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CACnD,CAAC,CACF;IACH;IAEA,OAAOrH,WAAC,CAACyF,gBAAgB,CACvBzF,WAAC,CAAC2B,cAAc,CAAC3D,IAAI,CAAC4D,SAAS,CAAC,UAAU,CAAC,EAAEsF,IAAI,CAAC,EAClDlH,WAAC,CAAC8B,UAAU,CAAC,GAAG,CAClB,CAAC;EACH,CAAC;EAEDwF,IAAIA,CAAC1B,MAAM,EAAEsB,IAAwC,EAAE;IAErD,IAAI,CAACvB,OAAO,CAACC,MAAM,EAAE,CAAC,CAAC;IAEvB,OAAO,IAAA2B,qCAAY,EAAC,IAAI,CAACvI,GAAG,CAAC4G,MAAM,CAAC,EAAE,IAAI,CAACM,QAAQ,CAACN,MAAM,CAAC,EAAEsB,IAAI,EAAE,KAAK,CAAC;EAC3E,CAAC;EAEDM,YAAYA,CAAC5B,MAAM,EAAEsB,IAAwC,EAAE;IAC7D,IAAI,CAACvB,OAAO,CAACC,MAAM,EAAE,CAAC,CAAC;IAEvB,OAAO,IAAA2B,qCAAY,EAAC,IAAI,CAACvI,GAAG,CAAC4G,MAAM,CAAC,EAAE,IAAI,CAACM,QAAQ,CAACN,MAAM,CAAC,EAAEsB,IAAI,EAAE,IAAI,CAAC;EAC1E,CAAC;EAED7D,MAAMA,CAAA,EAAG;IACP,MAAM,IAAIuD,KAAK,CACb,qEACF,CAAC;EACH;AACF,CAAC;AAEH,MAAMa,uBAAkD,GAAG;EACzDzI,GAAGA,CAAC4G,MAAM,EAAE;IACV,MAAM;MAAEtH,eAAe;MAAEN;IAAK,CAAC,GAAG,IAAI;IACtC,MAAM;MAAE8H;IAAO,CAAC,GAAGF,MAAM,CAAChH,IAAI;IAC9B,MAAM;MAAED;IAAK,CAAC,GAAIiH,MAAM,CAAChH,IAAI,CAAC+E,QAAQ,CAAmB7E,EAAE;IAE3D,OAAOsD,cAAQ,CAACvB,UAAW,uBAAsB,CAAC;MAChD6G,IAAI,EAAE1J,IAAI,CAAC4D,SAAS,CAAC,4BAA4B,CAAC;MAClD+F,GAAG,EAAE3H,WAAC,CAACS,SAAS,CAACqF,MAAM,CAAC;MACxB8B,IAAI,EAAE5H,WAAC,CAACS,SAAS,CAACnC,eAAe,CAACU,GAAG,CAACL,IAAI,CAAC,CAACG,EAAE;IAChD,CAAC,CAAC;EACJ,CAAC;EAEDY,GAAGA,CAAA,EAAG;IAEJ,MAAM,IAAIkH,KAAK,CAAC,yDAAyD,CAAC;EAC5E,CAAC;EAEDL,QAAQA,CAACX,MAAM,EAAE;IACf,OAAO5F,WAAC,CAAC2B,cAAc,CACrB3B,WAAC,CAACyF,gBAAgB,CAAC,IAAI,CAACzG,GAAG,CAAC4G,MAAM,CAAC,EAAE5F,WAAC,CAAC8B,UAAU,CAAC,MAAM,CAAC,CAAC,EAE1D,CAAC9B,WAAC,CAACS,SAAS,CAACmF,MAAM,CAAChH,IAAI,CAACkH,MAAsB,CAAC,CAClD,CAAC;EACH,CAAC;EAED+B,SAASA,CAACjC,MAAM,EAAE;IAChB,OAAO,IAAI,CAAC5G,GAAG,CAAC4G,MAAM,CAAC;EACzB,CAAC;EAEDa,cAAcA,CAACb,MAAM,EAAE;IACrB,OAAO,IAAI,CAAC5G,GAAG,CAAC4G,MAAM,CAAC;EACzB,CAAC;EAED0B,IAAIA,CAAC1B,MAAM,EAAEsB,IAAI,EAAE;IACjB,OAAOlH,WAAC,CAAC2B,cAAc,CAAC,IAAI,CAAC3C,GAAG,CAAC4G,MAAM,CAAC,EAAEsB,IAAI,CAAC;EACjD,CAAC;EAEDM,YAAYA,CAAC5B,MAAM,EAAEsB,IAAI,EAAE;IACzB,OAAOlH,WAAC,CAAC8H,sBAAsB,CAAC,IAAI,CAAC9I,GAAG,CAAC4G,MAAM,CAAC,EAAEsB,IAAI,EAAE,IAAI,CAAC;EAC/D,CAAC;EAED7D,MAAMA,CAAA,EAAG;IACP,MAAM,IAAIuD,KAAK,CACb,qEACF,CAAC;EACH;AACF,CAAC;AAEM,SAASmB,0BAA0BA,CACxCjB,GAAiB,EACjB5D,IAAuB,EACvB5E,eAAgC,EAChC;EACE4C,yBAAyB;EACzBsE,iCAAiC;EACjChC,aAAa;EACbQ;AAMF,CAAC,EACD5C,KAAW,EACX;EACA,IAAI,CAAC9C,eAAe,CAAC0J,IAAI,EAAE;EAE3B,MAAMnI,IAAI,GAAGqD,IAAI,CAAClE,GAAG,CAAC,MAAM,CAAC;EAC7B,MAAMiJ,OAAO,GAAG/G,yBAAyB,GACrCuG,uBAAuB,GACvB/B,sBAAsB;EAE1B,IAAAwC,0CAA2B,EAAmBrI,IAAI,EAAEmD,kBAAkB,EAAAH,MAAA,CAAAC,MAAA;IACpExE,eAAe;IACfyG,QAAQ,EAAE+B,GAAG;IACb9I,IAAI,EAAEoD;EAAK,GACR6G,OAAO;IACVzE,aAAa;IACbgC,iCAAiC;IACjCxB;EAAY,EACb,CAAC;EACFnE,IAAI,CAAC6C,QAAQ,CAAC+B,gBAAgB,EAAE;IAC9BnG,eAAe;IACfyG,QAAQ,EAAE+B,GAAG;IACb9I,IAAI,EAAEoD,KAAK;IACXF,yBAAyB;IACzB8C;EACF,CAAC,CAAC;AACJ;AAEA,SAASmE,0BAA0BA,CACjCrB,GAAiB,EACjBrI,IAAsC,EACtCH,eAAgC,EAChC;EACA,MAAM;IAAEQ;EAAG,CAAC,GAAGR,eAAe,CAACU,GAAG,CAACP,IAAI,CAACG,IAAI,CAACC,GAAG,CAACC,EAAE,CAACH,IAAI,CAAC;EACzD,MAAM6C,KAAK,GAAG/C,IAAI,CAACG,IAAI,CAAC4C,KAAK,IAAI/C,IAAI,CAACc,KAAK,CAAC8F,kBAAkB,CAAC,CAAC;EAEhE,OAAO+C,mBAAmB,CACxBhG,cAAQ,CAACC,SAAS,CAACC,GAAI;AAC3B,8BAA8BwE,GAAI,KAAI9G,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAE;AACtD;AACA;AACA;AACA,iBAAiB0C,KAAM;AACvB;AACA,KAAK,EACD/C,IACF,CAAC;AACH;AAEA,SAAS4J,iCAAiCA,CACxCvB,GAAiB,EACjBrI,IAAsC,EACtCH,eAAgC,EAChC8C,KAAW,EACX;EACA,MAAM;IAAEtC;EAAG,CAAC,GAAGR,eAAe,CAACU,GAAG,CAACP,IAAI,CAACG,IAAI,CAACC,GAAG,CAACC,EAAE,CAACH,IAAI,CAAC;EACzD,MAAM6C,KAAK,GAAG/C,IAAI,CAACG,IAAI,CAAC4C,KAAK,IAAI/C,IAAI,CAACc,KAAK,CAAC8F,kBAAkB,CAAC,CAAC;EAE7B;IACjC,IAAI,CAACjE,KAAK,CAACnD,eAAe,CAAC,2BAA2B,CAAC,EAAE;MACvD,OAAOmK,mBAAmB,CACxBhG,cAAQ,CAACC,SAAS,CAACC,GAAI,GAAEtC,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAE,QAAOgI,GAAI;AAC5D;AACA;AACA;AACA,mBAAmBtF,KAAM;AACzB,WAAW,EACH/C,IACF,CAAC;IACH;EACF;EAEA,MAAMiI,MAAM,GAAGtF,KAAK,CAACQ,SAAS,CAAC,2BAA2B,CAAC;EAC3D,OAAOwG,mBAAmB,CACxBpI,WAAC,CAACsI,mBAAmB,CACnBtI,WAAC,CAAC2B,cAAc,CAAC+E,MAAM,EAAE,CACvB1G,WAAC,CAACuI,cAAc,CAAC,CAAC,EAClBvI,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAC,EACiBf,UAAU,CAACqD,KAAK,CAAC,GAC7CI,KAAK,GACLY,cAAQ,CAACvB,UAAU,CAACyB,GAAI,4BAA2Bd,KAAM,IAAG,CACjE,CACH,CAAC,EACD/C,IACF,CAAC;AACH;AAEA,SAAS+J,+BAA+BA,CACtC/J,IAAsC,EACtCH,eAAgC,EAChCkH,iCAA0C,EAC1C;EACA,MAAMiD,WAAW,GAAGnK,eAAe,CAACU,GAAG,CAACP,IAAI,CAACG,IAAI,CAACC,GAAG,CAACC,EAAE,CAACH,IAAI,CAAC;EAE9D,MAAM6C,KAAK,GAAGgE,iCAAiC,GAC3C/G,IAAI,CAACG,IAAI,CAAC4C,KAAK,GACfY,cAAQ,CAACvB,UAAU,CAACyB,GAAI;AAC9B,aAAa7D,IAAI,CAACG,IAAI,CAAC4C,KAAK,IAAIxB,WAAC,CAACqF,kBAAkB,CAAC,CAAE;AACvD,QAAQ;EAEN,OAAO+C,mBAAmB,CACxBpI,WAAC,CAAC0I,mBAAmB,CAAC,KAAK,EAAE,CAC3B1I,WAAC,CAAC2I,kBAAkB,CAAC3I,WAAC,CAACS,SAAS,CAACgI,WAAW,CAAC3J,EAAE,CAAC,EAAE0C,KAAK,CAAC,CACzD,CAAC,EACF/C,IACF,CAAC;AACH;AAEmC;EAEjC,IAAImK,kCAAkC,GAAG,SAAAA,CACvCnK,IAAsC,EACtCH,eAAgC,EAChC;IACA,MAAMmK,WAAW,GAAGnK,eAAe,CAACU,GAAG,CAACP,IAAI,CAACG,IAAI,CAACC,GAAG,CAACC,EAAE,CAACH,IAAI,CAAC;IAC9D,MAAM;MAAEG,EAAE;MAAE0B,KAAK;MAAEM,KAAK;MAAEzB;IAAU,CAAC,GAAGoJ,WAAW;IACnD,MAAMhH,gBAAgB,GAAGjB,KAAK,IAAIM,KAAK;IAEvC,IAAI,CAACrC,IAAI,CAACS,UAAU,CAAC,CAAC,KAAKG,SAAS,IAAI,CAACoC,gBAAgB,CAAC,EAAE;IAE5D,IAAIA,gBAAgB,EAAE;MACpBnD,eAAe,CAACoB,GAAG,CAACjB,IAAI,CAACG,IAAI,CAACC,GAAG,CAACC,EAAE,CAACH,IAAI,EAAAkE,MAAA,CAAAC,MAAA,KACpC2F,WAAW;QACdpJ,SAAS,EAAE;MAAI,EAChB,CAAC;MAEF,OAAO+I,mBAAmB,CACxBhG,cAAQ,CAACC,SAAS,CAACC,GAAI;AAC/B,gBAAgBtC,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAE;AAChC;AACA;AACA;AACA,mBAAmB0B,KAAK,GAAGA,KAAK,CAAC7B,IAAI,GAAGF,IAAI,CAACc,KAAK,CAAC8F,kBAAkB,CAAC,CAAE;AACxE,mBAAmBvE,KAAK,GAAGA,KAAK,CAACnC,IAAI,GAAGF,IAAI,CAACc,KAAK,CAAC8F,kBAAkB,CAAC,CAAE;AACxE;AACA,SAAS,EACD5G,IACF,CAAC;IACH;IAEA,MAAM+C,KAAK,GAAG/C,IAAI,CAACG,IAAI,CAAC4C,KAAK,IAAI/C,IAAI,CAACc,KAAK,CAAC8F,kBAAkB,CAAC,CAAC;IAChE,OAAO+C,mBAAmB,CACxBhG,cAAQ,CAACC,SAAS,CAACC,GAAI;AAC7B,cAActC,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAE;AAC9B;AACA;AACA;AACA,mBAAmB0C,KAAM;AACzB;AACA,OAAO,EACD/C,IACF,CAAC;EACH,CAAC;AACH;AAEA,SAASoK,2BAA2BA,CAClC/B,GAAiB,EACjBrI,IAAoC,EACpCH,eAAgC,EAChC;EACA,MAAMmK,WAAW,GAAGnK,eAAe,CAACU,GAAG,CAACP,IAAI,CAACG,IAAI,CAACC,GAAG,CAACC,EAAE,CAACH,IAAI,CAAC;EAC9D,MAAM;IAAEqC,QAAQ;IAAElC,EAAE;IAAE0B,KAAK;IAAEM,KAAK;IAAEzB;EAAU,CAAC,GAAGoJ,WAAW;EAC7D,IAAIpJ,SAAS,EAAE;EAEf,IAAI2B,QAAQ,EAAE;IACZ,OAAOoH,mBAAmB,CACxBhG,cAAQ,CAACC,SAAS,CAACC,GAAI;AAC7B,gCAAgCwE,GAAI,KAAIhI,EAAG;AAC3C;AACA;AACA;AACA,mBAAmBkC,QAAQ,CAACrC,IAAK;AACjC;AACA,OAAO,EACDF,IACF,CAAC;EACH;EACA,MAAMgD,gBAAgB,GAAGjB,KAAK,IAAIM,KAAK;EACvC,IAAIW,gBAAgB,EAAE;IACpBnD,eAAe,CAACoB,GAAG,CAACjB,IAAI,CAACG,IAAI,CAACC,GAAG,CAACC,EAAE,CAACH,IAAI,EAAAkE,MAAA,CAAAC,MAAA,KACpC2F,WAAW;MACdpJ,SAAS,EAAE;IAAI,EAChB,CAAC;IAEF,OAAO+I,mBAAmB,CACxBhG,cAAQ,CAACC,SAAS,CAACC,GAAI;AAC7B,gCAAgCwE,GAAI,KAAIhI,EAAG;AAC3C;AACA;AACA;AACA,iBAAiB0B,KAAK,GAAGA,KAAK,CAAC7B,IAAI,GAAGF,IAAI,CAACc,KAAK,CAAC8F,kBAAkB,CAAC,CAAE;AACtE,iBAAiBvE,KAAK,GAAGA,KAAK,CAACnC,IAAI,GAAGF,IAAI,CAACc,KAAK,CAAC8F,kBAAkB,CAAC,CAAE;AACtE;AACA,OAAO,EACD5G,IACF,CAAC;EACH;AACF;AAEA,SAASqK,kCAAkCA,CACzChC,GAAiB,EACjBrI,IAAoC,EACpCH,eAAgC,EAChC8C,KAAW,EACX;EACA,MAAMqH,WAAW,GAAGnK,eAAe,CAACU,GAAG,CAACP,IAAI,CAACG,IAAI,CAACC,GAAG,CAACC,EAAE,CAACH,IAAI,CAAC;EAE9D,IAAI8J,WAAW,CAACpJ,SAAS,EAAE;EAE3B,IAAqC,CAACtB,UAAU,CAACqD,KAAK,CAAC,EAAE;IACvD,MAAMK,gBAAgB,GAAGgH,WAAW,CAACjI,KAAK,IAAIiI,WAAW,CAAC3H,KAAK;IAC/D,IAAIW,gBAAgB,EAAE;MACpB,OAAOsH,kCAAkC,CACvCjC,GAAG,EACHrI,IAAI,EACJH,eAAe,EACf8C,KACF,CAAC;IACH;EACF;EAEA,OAAO4H,wCAAwC,CAC7ClC,GAAG,EACHrI,IAAI,EACJH,eAAe,EACf8C,KACF,CAAC;AACH;AAEA,SAAS2H,kCAAkCA,CACzCjC,GAAiB,EACjBrI,IAAoC,EACpCH,eAAgC,EAChC8C,KAAW,EACX;EACA,MAAMqH,WAAW,GAAGnK,eAAe,CAACU,GAAG,CAACP,IAAI,CAACG,IAAI,CAACC,GAAG,CAACC,EAAE,CAACH,IAAI,CAAC;EAC9D,MAAM;IAAEG,EAAE;IAAE0B,KAAK;IAAEM;EAAM,CAAC,GAAG2H,WAAW;EAExCnK,eAAe,CAACoB,GAAG,CAACjB,IAAI,CAACG,IAAI,CAACC,GAAG,CAACC,EAAE,CAACH,IAAI,EAAAkE,MAAA,CAAAC,MAAA,KACpC2F,WAAW;IACdpJ,SAAS,EAAE;EAAI,EAChB,CAAC;EAEiC;IACjC,IAAI,CAAC+B,KAAK,CAACnD,eAAe,CAAC,2BAA2B,CAAC,EAAE;MACvD,OAAOmK,mBAAmB,CACxBhG,cAAQ,CAACC,SAAS,CAACC,GAAI;AAC/B,YAAYxD,EAAG,QAAOgI,GAAI;AAC1B,mBAAmBtG,KAAK,GAAGA,KAAK,CAAC7B,IAAI,GAAGF,IAAI,CAACc,KAAK,CAAC8F,kBAAkB,CAAC,CAAE;AACxE,mBAAmBvE,KAAK,GAAGA,KAAK,CAACnC,IAAI,GAAGF,IAAI,CAACc,KAAK,CAAC8F,kBAAkB,CAAC,CAAE;AACxE;AACA,SAAS,EACD5G,IACF,CAAC;IACH;EACF;EAEA,MAAMiI,MAAM,GAAGtF,KAAK,CAACQ,SAAS,CAAC,2BAA2B,CAAC;EAC3D,OAAOwG,mBAAmB,CACxBhG,cAAQ,CAACC,SAAS,CAACC,GAAI,GAAEoE,MAAO;AACpC,QAAQ1G,WAAC,CAACuI,cAAc,CAAC,CAAE;AAC3B,QAAQvI,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAE;AACxB;AACA,eAAe0B,KAAK,GAAGA,KAAK,CAAC7B,IAAI,GAAGF,IAAI,CAACc,KAAK,CAAC8F,kBAAkB,CAAC,CAAE;AACpE,eAAevE,KAAK,GAAGA,KAAK,CAACnC,IAAI,GAAGF,IAAI,CAACc,KAAK,CAAC8F,kBAAkB,CAAC,CAAE;AACpE;AACA,MAAM,EACF5G,IACF,CAAC;AACH;AAEA,SAASuK,wCAAwCA,CAC/ClC,GAAiB,EACjBrI,IAAoC,EACpCH,eAAgC,EAChC8C,KAAW,EACX;EACA,MAAMqH,WAAW,GAAGnK,eAAe,CAACU,GAAG,CAACP,IAAI,CAACG,IAAI,CAACC,GAAG,CAACC,EAAE,CAACH,IAAI,CAAC;EAC9D,MAAM;IAAEG;EAAG,CAAC,GAAG2J,WAAW;EAES;IACjC,IAAI,CAACrH,KAAK,CAACnD,eAAe,CAAC,4BAA4B,CAAC,EAAE;MACxD,OAAOmK,mBAAmB,CACxBhG,cAAQ,CAACC,SAAS,CAACC,GAAI,GAAExD,EAAG,QAAOgI,GAAI,GAAE,EACzCrI,IACF,CAAC;IACH;EACF;EAEA,MAAMiI,MAAM,GAAGtF,KAAK,CAACQ,SAAS,CAAC,4BAA4B,CAAC;EAC5D,OAAOwG,mBAAmB,CACxBhG,cAAQ,CAACC,SAAS,CAACC,GAAI,GAAEoE,MAAO;AACpC,QAAQ1G,WAAC,CAACuI,cAAc,CAAC,CAAE;AAC3B,QAAQvI,WAAC,CAACS,SAAS,CAAC3B,EAAE,CAAE;AACxB,MAAM,EACFL,IACF,CAAC;AACH;AAEA,SAASwK,yBAAyBA,CAChCnC,GAAiB,EACjBrI,IAA+B,EAC/B;EACA,MAAM;IAAEI,GAAG;IAAEsI;EAAS,CAAC,GAAG1I,IAAI,CAACG,IAAI;EACnC,MAAM4C,KAAK,GAAG/C,IAAI,CAACG,IAAI,CAAC4C,KAAK,IAAI/C,IAAI,CAACc,KAAK,CAAC8F,kBAAkB,CAAC,CAAC;EAEhE,OAAO+C,mBAAmB,CACxBpI,WAAC,CAACsI,mBAAmB,CACnBtI,WAAC,CAACwG,oBAAoB,CACpB,GAAG,EACHxG,WAAC,CAACyF,gBAAgB,CAACqB,GAAG,EAAEjI,GAAG,EAAEsI,QAAQ,IAAInH,WAAC,CAACkJ,SAAS,CAACrK,GAAG,CAAC,CAAC,EAC1D2C,KACF,CACF,CAAC,EACD/C,IACF,CAAC;AACH;AAEA,SAAS0K,wBAAwBA,CAC/BrC,GAAiB,EACjBrI,IAA+B,EAC/B2C,KAAW,EACX;EACA,MAAM;IAAEvC,GAAG;IAAEsI;EAAS,CAAC,GAAG1I,IAAI,CAACG,IAAI;EACnC,MAAM4C,KAAK,GAAG/C,IAAI,CAACG,IAAI,CAAC4C,KAAK,IAAI/C,IAAI,CAACc,KAAK,CAAC8F,kBAAkB,CAAC,CAAC;EAEhE,OAAO+C,mBAAmB,CACxBpI,WAAC,CAACsI,mBAAmB,CACnBtI,WAAC,CAAC2B,cAAc,CAACP,KAAK,CAACQ,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAClDkF,GAAG,EACHK,QAAQ,IAAInH,WAAC,CAACkJ,SAAS,CAACrK,GAAG,CAAC,GACxBA,GAAG,GACHmB,WAAC,CAAC6B,aAAa,CAAEhD,GAAG,CAAkBF,IAAI,CAAC,EAC/C6C,KAAK,CACN,CACH,CAAC,EACD/C,IACF,CAAC;AACH;AAEA,SAAS2K,iCAAiCA,CACxCtC,GAAiB,EACjBrI,IAAoC,EACpC2C,KAAW,EACX9C,eAAgC,EAChC;EACA,MAAMmK,WAAW,GAAGnK,eAAe,CAACU,GAAG,CAACP,IAAI,CAACG,IAAI,CAACC,GAAG,CAACC,EAAE,CAACH,IAAI,CAAC;EAC9D,MAAM;IAAEG,EAAE;IAAEkC,QAAQ;IAAER,KAAK;IAAEM,KAAK;IAAEzB;EAAU,CAAC,GAAGoJ,WAAW;EAE7D,IAAIpJ,SAAS,EAAE;EAEf,MAAMoC,gBAAgB,GAAGjB,KAAK,IAAIM,KAAK;EACvC,IAAIW,gBAAgB,EAAE;IACpBnD,eAAe,CAACoB,GAAG,CAACjB,IAAI,CAACG,IAAI,CAACC,GAAG,CAACC,EAAE,CAACH,IAAI,EAAAkE,MAAA,CAAAC,MAAA,KACpC2F,WAAW;MACdpJ,SAAS,EAAE;IAAI,EAChB,CAAC;IAEF,OAAO+I,mBAAmB,CACxBhG,cAAQ,CAACC,SAAS,CAACC,GAAI;AAC7B,gCAAgCwE,GAAI,KAAIhI,EAAG;AAC3C;AACA;AACA;AACA,iBAAiB0B,KAAK,GAAGA,KAAK,CAAC7B,IAAI,GAAGF,IAAI,CAACc,KAAK,CAAC8F,kBAAkB,CAAC,CAAE;AACtE,iBAAiBvE,KAAK,GAAGA,KAAK,CAACnC,IAAI,GAAGF,IAAI,CAACc,KAAK,CAAC8F,kBAAkB,CAAC,CAAE;AACtE;AACA,OAAO,EACD5G,IACF,CAAC;EACH;EAEA,OAAO2J,mBAAmB,CACxBhG,cAAQ,CAACC,SAAS,CAACC,GAAI;AAC3B,8BAA8BwE,GAAI,KAAIhI,EAAG;AACzC;AACA;AACA;AACA,iBAAiBkC,QAAQ,CAACrC,IAAK;AAC/B;AACA,KAAK,EACDF,IACF,CAAC;AACH;AAEA,SAAS4K,6BAA6BA,CACpCrL,IAAU,EACVS,IAAoC,EACpCH,eAAgC,EAChCF,kCAAkC,GAAG,KAAK,EAC1C;EACA,MAAMqK,WAAW,GAAGnK,eAAe,CAACU,GAAG,CAACP,IAAI,CAACG,IAAI,CAACC,GAAG,CAACC,EAAE,CAACH,IAAI,CAAC;EAC9D,MAAM;IACJG,EAAE;IACFkC,QAAQ;IACRR,KAAK;IACLM,KAAK;IACLJ,cAAc;IACdK,cAAc;IACd3B,MAAM,EAAED;EACV,CAAC,GAAGsJ,WAAW;EACf,MAAM;IAAE9H,MAAM;IAAEd,IAAI;IAAEyJ,SAAS;IAAEC;EAAM,CAAC,GAAG9K,IAAI,CAACG,IAAI;EACpD,MAAM4K,QAAQ,GAAGhJ,KAAK,IAAIG,MAAM,CAACZ,MAAM,KAAK,CAAC;EAC7C,MAAM0J,QAAQ,GAAG3I,KAAK,IAAIH,MAAM,CAACZ,MAAM,GAAG,CAAC;EAE3C,IAAKyJ,QAAQ,IAAI9I,cAAc,IAAM+I,QAAQ,IAAI1I,cAAe,EAAE;IAChEzC,eAAe,CAACoB,GAAG,CAACjB,IAAI,CAACG,IAAI,CAACC,GAAG,CAACC,EAAE,CAACH,IAAI,EAAAkE,MAAA,CAAAC,MAAA,KACpC2F,WAAW;MACdpJ,SAAS,EAAE;IAAI,EAChB,CAAC;IACF,OAAO,IAAI;EACb;EAEA,IACmCtB,UAAU,CAACC,IAAI,CAAC,KAChDwL,QAAQ,IAAIC,QAAQ,KACrB,CAACrL,kCAAkC,EACnC;IACA,MAAMmB,KAAK,GAAGd,IAAI,CAACO,GAAG,CAAC,MAAM,CAAC,CAACO,KAAK;IACpC,MAAMmK,OAAO,GAAGnK,KAAK,CAACC,qBAAqB,CAAC,MAAM,CAAC;IACnD,MAAM4B,KAAuB,GAAG;MAC9BuI,OAAO,EAAED,OAAO;MAChBE,aAAa,EAAE;IACjB,CAAC;IAEDnL,IAAI,CAACiE,QAAQ,CAACmH,kBAAkB,EAAEzI,KAAK,CAAC;IACxC,IAAIA,KAAK,CAACwI,aAAa,CAAC7J,MAAM,EAAE;MAC9B,MAAM+J,WAAW,GAAGvK,KAAK,CAACC,qBAAqB,CAAC,WAAW,CAAC;MAC5DD,KAAK,CAAC4C,IAAI,CAAC;QACTrD,EAAE,EAAEgL,WAAW;QACfpI,IAAI,EAAEU,cAAQ,CAACvB,UAAU,CAACyB,GAAI;MAChC,CAAC,CAAC;MACF,KAAK,MAAMY,IAAI,IAAI9B,KAAK,CAACwI,aAAa,EAAE;QACtC1G,IAAI,CAAC8B,WAAW,CAAChF,WAAC,CAACS,SAAS,CAACqJ,WAAW,CAAC,CAAC;MAC5C;IACF;IAEAnJ,MAAM,CAACoJ,OAAO,CAAC/J,WAAC,CAACS,SAAS,CAACiJ,OAAO,CAAC,CAAC;EACtC;EAEA,IAAIM,MAAM,GAAGhJ,QAAQ;EAErB,IAAIwI,QAAQ,EAAE;IACZlL,eAAe,CAACoB,GAAG,CAACjB,IAAI,CAACG,IAAI,CAACC,GAAG,CAACC,EAAE,CAACH,IAAI,EAAAkE,MAAA,CAAAC,MAAA,KACpC2F,WAAW;MACd/H,cAAc,EAAE,IAAI;MACpBrB,SAAS,EAAE;IAAI,EAChB,CAAC;IACF2K,MAAM,GAAGxJ,KAAK;EAChB,CAAC,MAAM,IAAIiJ,QAAQ,EAAE;IACnBnL,eAAe,CAACoB,GAAG,CAACjB,IAAI,CAACG,IAAI,CAACC,GAAG,CAACC,EAAE,CAACH,IAAI,EAAAkE,MAAA,CAAAC,MAAA,KACpC2F,WAAW;MACd1H,cAAc,EAAE,IAAI;MACpB1B,SAAS,EAAE;IAAI,EAChB,CAAC;IACF2K,MAAM,GAAGlJ,KAAK;EAChB,CAAC,MAAM,IAAI3B,QAAQ,IAAI,CAACf,kCAAkC,EAAE;IAC1D4L,MAAM,GAAGlL,EAAE;EACb;EAEA,OAAOsJ,mBAAmB,CACxBpI,WAAC,CAACiK,mBAAmB,CACnBjK,WAAC,CAACS,SAAS,CAACuJ,MAAM,CAAC,EAEnBrJ,MAAM,EACNd,IAAI,EACJyJ,SAAS,EACTC,KACF,CAAC,EACD9K,IACF,CAAC;AACH;AAWA,MAAMoL,kBAAkB,GAAGnH,cAAQ,CAACC,QAAQ,CAACC,KAAK,CAAmB,CACnE;EACEsH,UAAUA,CAAChH,IAAI,EAAE9B,KAAK,EAAE;IACtB,IAAIA,KAAK,CAACwI,aAAa,IAAI1G,IAAI,CAACtE,IAAI,CAACD,IAAI,KAAK,WAAW,EAAE;MACzDyC,KAAK,CAACwI,aAAa,CAACzH,IAAI,CAACe,IAAI,CAAC;IAChC;EACF,CAAC;EACDiH,eAAeA,CAACjH,IAAI,EAAE;IAEpB,MAAM;MAAEtE;IAAK,CAAC,GAAGsE,IAAI;IACrB,IAAItE,IAAI,CAAC+F,QAAQ,KAAK,QAAQ,EAAE;MAC9B,MAAMxE,QAAQ,GAAG,IAAAiK,wEAA+B,EAACxL,IAAI,CAACuB,QAAQ,CAAC;MAC/D,IAAIH,WAAC,CAACK,gBAAgB,CAACF,QAAQ,CAAC,EAAE;QAChC+C,IAAI,CAAC8B,WAAW,CAAChF,WAAC,CAACqK,cAAc,CAAC,IAAI,CAAC,CAAC;MAC1C;IACF;EACF,CAAC;EACDC,cAAcA,CAACpH,IAAI,EAAE9B,KAAK,EAAE;IAC1BA,KAAK,CAACmJ,aAAa,GAAG,IAAI;IAC1BrH,IAAI,CAAC8B,WAAW,CAAChF,WAAC,CAACS,SAAS,CAACW,KAAK,CAACuI,OAAO,CAAC,CAAC;EAC9C,CAAC;EACDa,YAAYA,CAACtH,IAAI,EAAE;IACjB,MAAM;MAAEtE,IAAI;MAAEW;IAAM,CAAC,GAAG2D,IAAI;IAG5B,IAAItE,IAAI,CAAC6L,IAAI,CAAC9L,IAAI,KAAK,KAAK,IAAIC,IAAI,CAAC+E,QAAQ,CAAChF,IAAI,KAAK,QAAQ,EAAE;MAC/DuE,IAAI,CAAC8B,WAAW,CAACzF,KAAK,CAAC8F,kBAAkB,CAAC,CAAC,CAAC;IAC9C;EACF;AACF,CAAC,EACDtC,iCAAkB,CACnB,CAAC;AAEF,MAAM2H,sBAAkE,GAAG;EACzEC,oBAAoBA,CAACzH,IAAI,EAAE9B,KAAK,EAAE;IAChC,IACE8B,IAAI,CAAC3D,KAAK,CAAC4E,uBAAuB,CAACjB,IAAI,CAACtE,IAAI,CAACD,IAAI,EAAEyC,KAAK,CAAC4C,YAAY,CAAC,EACtE;MACA5C,KAAK,CAACmJ,aAAa,GAAG,IAAI;MAC1BrH,IAAI,CAACtE,IAAI,CAACD,IAAI,GAAGyC,KAAK,CAACuI,OAAO,CAAChL,IAAI;IACrC;EACF;AACF,CAAC;AAED,SAASiM,kBAAkBA,CACzB1H,IAAc,EACd4D,GAAiB,EACjB+D,eAAoC,EACpC;EAAA,IAAAC,cAAA;EACA,MAAM1J,KAAuB,GAAG;IAC9BuI,OAAO,EAAE7C,GAAG;IACZyD,aAAa,EAAE,KAAK;IACpBvG,YAAY,EAAE6G;EAChB,CAAC;EACD,IAAI,CAAC3H,IAAI,CAACjE,QAAQ,CAAC,CAAC,EAAE;IAEpBiE,IAAI,CAACR,QAAQ,CAACmH,kBAAkB,EAAEzI,KAAK,CAAC;EAC1C;EAGA,IACEyJ,eAAe,IAAI,IAAI,KAAAC,cAAA,GACvB1J,KAAK,CAACuI,OAAO,aAAbmB,cAAA,CAAenM,IAAI,IACnByC,KAAK,CAACuI,OAAO,CAAChL,IAAI,KAAKkM,eAAe,CAAClM,IAAI,EAC3C;IACAuE,IAAI,CAACR,QAAQ,CAACgI,sBAAsB,EAAEtJ,KAAK,CAAC;EAC9C;EAEA,OAAOA,KAAK,CAACmJ,aAAa;AAC5B;AASA,SAASQ,cAAcA,CAAC;EAAElM,GAAG;EAAEsI;AAA0B,CAAC,EAAE;EAC1D,IAAItI,GAAG,CAACmM,IAAI,KAAK,YAAY,EAAE;IAC7B,OAAO,CAAC7D,QAAQ,KAAKtI,GAAG,CAACF,IAAI,KAAK,MAAM,IAAIE,GAAG,CAACF,IAAI,KAAK,QAAQ,CAAC;EACpE;EACA,IAAIE,GAAG,CAACmM,IAAI,KAAK,eAAe,EAAE;IAChC,OAAOnM,GAAG,CAAC2C,KAAK,KAAK,MAAM,IAAI3C,GAAG,CAAC2C,KAAK,KAAK,QAAQ;EACvD;EACA,OAAO,KAAK;AACd;AAaA,SAAS4G,mBAAmBA,CAAmBxJ,IAAO,EAAEH,IAAc,EAAE;EACtEuB,WAAC,CAACiL,sBAAsB,CAACrM,IAAI,EAAEH,IAAI,CAACG,IAAI,CAAC;EACzCoB,WAAC,CAACkL,oBAAoB,CAACtM,IAAI,EAAEH,IAAI,CAACG,IAAI,CAAC;EACvC,OAAOA,IAAI;AACb;AAyBO,SAASuM,oBAAoBA,CAClCrE,GAAwB,EACxBsE,QAAkC,EAClC/M,KAAiB,EACjBC,eAAgC,EAChCN,IAAU,EACVqN,oBAA6B,EAC7BjN,kCAA2C,EAC3CoH,iCAA0C,EAC1C8F,aAAsB,EACtBT,eAAoC,EACpC;EAAA,IAAAU,IAAA,EAAAC,KAAA;EACA,IAAIC,aAAa,IAAoB;EACrC,IAAIC,cAA4B;EAChC,MAAMC,WAA0B,GAAG,EAAE;EACrC,MAAMC,aAAsC,GAAG,EAAE;EACjD,IAAIC,2BAA2B,GAAG,KAAK;EAEvC,MAAMC,eAAwC,GAAG,EAAE;EACnD,IAAIC,gBAA8C,GAAG,IAAI;EAEzD,MAAMC,WAAW,GAAGhM,WAAC,CAACM,YAAY,CAAC8K,QAAQ,CAAC,GACxC,MAAMA,QAAQ,GACd,MAAM;IAAA,IAAAa,eAAA;IACJ,CAAAA,eAAA,GAAAP,cAAc,YAAAO,eAAA,GAAdP,cAAc,GACZrN,KAAK,CAAC,CAAC,CAAC,CAACkB,KAAK,CAAC2M,gCAAgC,CAACd,QAAQ,CAAC;IAC3D,OAAOM,cAAc;EACvB,CAAC;EAEL,MAAMS,uBAAuB,IAAAZ,IAAA,GAC3BzE,GAAG,YAAAyE,IAAA,GACHlN,KAAK,CAAC,CAAC,CAAC,CAACkB,KAAK,CAACC,qBAAqB,CAAC,CAAAqL,eAAe,oBAAfA,eAAe,CAAElM,IAAI,KAAI,OAAO,CAAC;EACxE,CAAA6M,KAAA,GAAA1E,GAAG,YAAA0E,KAAA,GAAH1E,GAAG,GAAK9G,WAAC,CAACS,SAAS,CAACoK,eAAe,CAAC;EAEpC,KAAK,MAAMpM,IAAI,IAAIJ,KAAK,EAAE;IACxBI,IAAI,CAAC2N,eAAe,CAAC,CAAC,IAAItO,EAAE,CAACuO,sBAAsB,CAAC5N,IAAI,CAAC;IAGzD,MAAMU,QAAQ,GAAG,EAACa,WAAC,CAACsM,aAAa,YAAftM,WAAC,CAACsM,aAAa,CAAG7N,IAAI,CAACG,IAAI,CAAC,KAAIH,IAAI,CAACG,IAAI,CAACQ,MAAM;IAClE,MAAMmN,UAAU,GAAG,CAACpN,QAAQ;IAC5B,MAAMT,SAAS,GAAGD,IAAI,CAACC,SAAS,CAAC,CAAC;IAClC,MAAM8N,QAAQ,GAAG,CAAC9N,SAAS;IAC3B,MAAM+N,OAAO,GAAGhO,IAAI,CAACS,UAAU,CAAC,CAAC;IACjC,MAAMD,QAAQ,GAAG,CAACwN,OAAO;IACzB,MAAMH,aAAa,GAAG7N,IAAI,CAAC6N,aAAa,oBAAlB7N,IAAI,CAAC6N,aAAa,CAAG,CAAC;IAE5C,IAAInN,QAAQ,EAAEsM,aAAa,KAA0B;IAErD,IAAItM,QAAQ,IAAKF,QAAQ,IAAIP,SAAU,IAAI4N,aAAa,EAAE;MACxD,IAAII,4BAAa,CAAC;QAChBC,UAAU,EAAElO,IAAI;QAChB6M,aAAa;QACbtN,IAAI,EAAEA,IAAI;QACV4O,aAAa,EAAE/B,eAAe;QAC9BmB,WAAW;QACXa,YAAYA,CAAA,EAAG;UACbpB,aAAa,KAAgC;UAC7C,IAAItM,QAAQ,IAAImN,aAAa,EAAE;YAC7B,OAAOH,uBAAuB;UAChC,CAAC,MAAM;YACL,OAAOnM,WAAC,CAACyF,gBAAgB,CACvB0G,uBAAuB,EACvBnM,WAAC,CAAC8B,UAAU,CAAC,WAAW,CAC1B,CAAC;UACH;QACF;MACF,CAAC,CAAC,CAACgL,OAAO,CAAC,CAAC;MAEZ,MAAMC,QAAQ,GAAGnC,kBAAkB,CACjCnM,IAAI,EACJ0N,uBAAuB,EACvBtB,eACF,CAAC;MACD,IAAIkC,QAAQ,EAAE;QACZtB,aAAa,KAAgC;MAC/C;IACF;IAEAI,2BAA2B,GAAG,KAAK;IAOnC,QAAQ,IAAI;MACV,KAAKS,aAAa;QAAE;UAClB,MAAMU,SAAS,GAAGvO,IAAI,CAACG,IAAI,CAACiB,IAAI;UAGhC,IAAImN,SAAS,CAACjN,MAAM,KAAK,CAAC,IAAIC,WAAC,CAACY,qBAAqB,CAACoM,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;YACnErB,WAAW,CAACxJ,IAAI,CAACiG,mBAAmB,CAAC4E,SAAS,CAAC,CAAC,CAAC,EAAEvO,IAAI,CAAC,CAAC;UAC3D,CAAC,MAAM;YACLkN,WAAW,CAACxJ,IAAI,CACdnC,WAAC,CAACiN,gBAAgB,CAChB7K,cAAQ,CAACC,SAAS,CAACC,GAAI,YAAW0K,SAAU,OAAM,EAClDvO,IAAI,CAACG,IACP,CACF,CAAC;UACH;UACA;QACF;MACA,KAAKO,QAAQ,IACXT,SAAS,IACT+N,OAAO,IACPrO,kCAAkC;QAClCuN,WAAW,CAACxJ,IAAI,CACdgG,0BAA0B,CAACnI,WAAC,CAACS,SAAS,CAACqG,GAAG,CAAC,EAAErI,IAAI,EAAEH,eAAe,CACpE,CAAC;QACD;MACF,KAAKa,QAAQ,IACXT,SAAS,IACT+N,OAAO,IACP,CAACrO,kCAAkC;QACnC,IAAqC,CAACL,UAAU,CAACC,IAAI,CAAC,EAAE;UACtD2N,WAAW,CAACxJ,IAAI,CACdyG,kCAAkC,CAACnK,IAAI,EAAEH,eAAe,CAC1D,CAAC;QACH,CAAC,MAAM;UACLqN,WAAW,CAACxJ,IAAI,CACdqG,+BAA+B,CAC7B/J,IAAI,EACJH,eAAe,EACfkH,iCACF,CACF,CAAC;QACH;QACA;MACF,KAAKrG,QAAQ,IAAIqN,QAAQ,IAAIC,OAAO,IAAIpB,oBAAoB;QAM1D,IAAI,CAACN,cAAc,CAACtM,IAAI,CAACG,IAAI,CAAC,EAAE;UAC9B+M,WAAW,CAACxJ,IAAI,CAAC8G,yBAAyB,CAACjJ,WAAC,CAACS,SAAS,CAACqG,GAAG,CAAC,EAAErI,IAAI,CAAC,CAAC;UACnE;QACF;MAEF,KAAKU,QAAQ,IAAIqN,QAAQ,IAAIC,OAAO,IAAI,CAACpB,oBAAoB;QAC3DM,WAAW,CAACxJ,IAAI,CACdgH,wBAAwB,CAACnJ,WAAC,CAACS,SAAS,CAACqG,GAAG,CAAC,EAAErI,IAAI,EAAET,IAAI,CACvD,CAAC;QACD;MACF,KAAKuO,UAAU,IACb7N,SAAS,IACT+N,OAAO,IACPrO,kCAAkC;QAClCwN,aAAa,CAACzJ,IAAI,CAChBgG,0BAA0B,CAACnI,WAAC,CAACuI,cAAc,CAAC,CAAC,EAAE9J,IAAI,EAAEH,eAAe,CACtE,CAAC;QACD;MACF,KAAKiO,UAAU,IACb7N,SAAS,IACT+N,OAAO,IACP,CAACrO,kCAAkC;QACnCwN,aAAa,CAACzJ,IAAI,CAChBkG,iCAAiC,CAC/BrI,WAAC,CAACuI,cAAc,CAAC,CAAC,EAClB9J,IAAI,EACJH,eAAe,EACfN,IACF,CACF,CAAC;QACD;MACF,KAAKuO,UAAU,IACb7N,SAAS,IACTO,QAAQ,IACRb,kCAAkC;QAClCwN,aAAa,CAAC7B,OAAO,CACnBlB,2BAA2B,CACzB7I,WAAC,CAACuI,cAAc,CAAC,CAAC,EAClB9J,IAAI,EACJH,eACF,CACF,CAAC;QACDwN,eAAe,CAAC3J,IAAI,CAClBkH,6BAA6B,CAC3BrL,IAAI,EACJS,IAAI,EACJH,eAAe,EACfF,kCACF,CACF,CAAC;QACD;MACF,KAAKmO,UAAU,IACb7N,SAAS,IACTO,QAAQ,IACR,CAACb,kCAAkC;QACnCwN,aAAa,CAAC7B,OAAO,CACnBjB,kCAAkC,CAChC9I,WAAC,CAACuI,cAAc,CAAC,CAAC,EAClB9J,IAAI,EACJH,eAAe,EACfN,IACF,CACF,CAAC;QACD8N,eAAe,CAAC3J,IAAI,CAClBkH,6BAA6B,CAC3BrL,IAAI,EACJS,IAAI,EACJH,eAAe,EACfF,kCACF,CACF,CAAC;QACD;MACF,KAAKe,QAAQ,IACXT,SAAS,IACTO,QAAQ,IACR,CAACb,kCAAkC;QACnC,IAAqC,CAACL,UAAU,CAACC,IAAI,CAAC,EAAE;UACtD2N,WAAW,CAAC5B,OAAO,CAEjBnB,kCAAkC,CAACnK,IAAI,EAAEH,eAAe,CAC1D,CAAC;QACH;QACAwN,eAAe,CAAC3J,IAAI,CAClBkH,6BAA6B,CAC3BrL,IAAI,EACJS,IAAI,EACJH,eAAe,EACfF,kCACF,CACF,CAAC;QACD;MACF,KAAKe,QAAQ,IACXT,SAAS,IACTO,QAAQ,IACRb,kCAAkC;QAClCuN,WAAW,CAAC5B,OAAO,CACjBX,iCAAiC,CAC/BpJ,WAAC,CAACS,SAAS,CAACqG,GAAG,CAAC,EAChBrI,IAAI,EACJT,IAAI,EACJM,eACF,CACF,CAAC;QACDwN,eAAe,CAAC3J,IAAI,CAClBkH,6BAA6B,CAC3BrL,IAAI,EACJS,IAAI,EACJH,eAAe,EACfF,kCACF,CACF,CAAC;QACD;MACF,KAAKmO,UAAU,IAAIC,QAAQ,IAAIC,OAAO,IAAIpB,oBAAoB;QAC5DO,aAAa,CAACzJ,IAAI,CAAC8G,yBAAyB,CAACjJ,WAAC,CAACuI,cAAc,CAAC,CAAC,EAAE9J,IAAI,CAAC,CAAC;QACvE;MACF,KAAK8N,UAAU,IAAIC,QAAQ,IAAIC,OAAO,IAAI,CAACpB,oBAAoB;QAC7DQ,2BAA2B,GAAG,IAAI;QAClCD,aAAa,CAACzJ,IAAI,CAChBgH,wBAAwB,CAACnJ,WAAC,CAACuI,cAAc,CAAC,CAAC,EAAE9J,IAAI,EAAET,IAAI,CACzD,CAAC;QACD;MACF;QACE,MAAM,IAAI4I,KAAK,CAAC,cAAc,CAAC;IACnC;EACF;EAEA,IAAI6E,aAAa,IAA+B,IAAIZ,eAAe,IAAI,IAAI,EAAE;IAC3EkB,gBAAgB,GAAG/L,WAAC,CAACsI,mBAAmB,CACtCtI,WAAC,CAACwG,oBAAoB,CACpB,GAAG,EACHxG,WAAC,CAACS,SAAS,CAAC0L,uBAAuB,CAAC,EACpCnM,WAAC,CAACS,SAAS,CAACoK,eAAe,CAC7B,CACF,CAAC;EACH;EAEA,OAAO;IACLc,WAAW,EAAEA,WAAW,CAACuB,MAAM,CAACC,OAAO,CAAC;IACxCvB,aAAa,EAAEA,aAAa,CAACsB,MAAM,CAACC,OAAO,CAAC;IAC5CtB,2BAA2B;IAC3BC,eAAe,EAAEA,eAAe,CAACoB,MAAM,CAACC,OAAO,CAAC;IAChDpB,gBAAgB;IAChBqB,SAASA,CAAClK,IAAuB,EAAE;MACjC,KAAK,MAAMzE,IAAI,IAAIJ,KAAK,EAAE;QAMxBI,IAAI,CAACG,IAAI,CAACyO,eAAe,GAAG,IAAI;QAChC5O,IAAI,CAAC6O,MAAM,CAAC,CAAC;MACf;MAEA,IAAI5B,cAAc,EAAE;QAClBxI,IAAI,CAAC3D,KAAK,CAAC4C,IAAI,CAAC;UAAErD,EAAE,EAAEkB,WAAC,CAACS,SAAS,CAACiL,cAAc;QAAE,CAAC,CAAC;QACpDxI,IAAI,CAACxD,GAAG,CACN,YAAY,EACZM,WAAC,CAACwG,oBAAoB,CAAC,GAAG,EAAEkF,cAAc,EAAExI,IAAI,CAACtE,IAAI,CAAC2O,UAAU,CAClE,CAAC;MACH;MAEA,IAAI9B,aAAa,MAAsB,EAAE;QACvC,IAAIvI,IAAI,CAACsK,iBAAiB,CAAC,CAAC,EAAE;UAC5BtK,IAAI,CAAC3D,KAAK,CAAC4C,IAAI,CAAC;YAAErD,EAAE,EAAEgI;UAAI,CAAC,CAAC;UAC5B5D,IAAI,CAAC8B,WAAW,CACdhF,WAAC,CAACwG,oBAAoB,CAAC,GAAG,EAAExG,WAAC,CAACS,SAAS,CAACqG,GAAG,CAAC,EAAE5D,IAAI,CAACtE,IAAI,CACzD,CAAC;QACH,CAAC,MAAM;UACL,IAAIiM,eAAe,IAAI,IAAI,EAAE;YAE3B3H,IAAI,CAACtE,IAAI,CAACE,EAAE,GAAGgI,GAAG;UACpB;UACA,IAAIiF,gBAAgB,IAAI,IAAI,EAAE;YAC5B7I,IAAI,CAAC3D,KAAK,CAAC4C,IAAI,CAAC;cAAErD,EAAE,EAAEqN;YAAwB,CAAC,CAAC;UAClD;QACF;MACF;MAEA,OAAOjJ,IAAI;IACb;EACF,CAAC;AACH","ignoreList":[]}