{"version":3,"sources":["../../../../src/server/route-modules/route-module.ts"],"sourcesContent":["import '../../build/adapter/setup-node-env.external'\nimport type { IncomingMessage, ServerResponse } from 'node:http'\nimport type {\n  InstrumentationOnRequestError,\n  RequestErrorContext,\n} from '../instrumentation/types'\nimport type { ParsedUrlQuery } from 'node:querystring'\nimport type { UrlWithParsedQuery } from 'node:url'\nimport type {\n  PrerenderManifest,\n  RequiredServerFilesManifest,\n} from '../../build'\nimport type { DevRoutesManifest } from '../lib/router-utils/setup-dev-bundler'\nimport type { RouteDefinition } from '../route-definitions/route-definition'\nimport type { DeepReadonly } from '../../shared/lib/deep-readonly'\nimport {\n  BUILD_ID_FILE,\n  BUILD_MANIFEST,\n  CLIENT_REFERENCE_MANIFEST,\n  DYNAMIC_CSS_MANIFEST,\n  NEXT_FONT_MANIFEST,\n  PRERENDER_MANIFEST,\n  REACT_LOADABLE_MANIFEST,\n  ROUTES_MANIFEST,\n  SERVER_FILES_MANIFEST,\n  SERVER_REFERENCE_MANIFEST,\n  SUBRESOURCE_INTEGRITY_MANIFEST,\n} from '../../shared/lib/constants'\nimport { parseReqUrl } from '../../lib/url'\nimport {\n  normalizeLocalePath,\n  type PathLocale,\n} from '../../shared/lib/i18n/normalize-locale-path'\nimport { isDynamicRoute } from '../../shared/lib/router/utils'\nimport { removePathPrefix } from '../../shared/lib/router/utils/remove-path-prefix'\nimport { getServerUtils } from '../server-utils'\nimport { detectDomainLocale } from '../../shared/lib/i18n/detect-domain-locale'\nimport { getHostname } from '../../shared/lib/get-hostname'\nimport { checkIsOnDemandRevalidate } from '../api-utils'\nimport type { PreviewData } from '../../types'\nimport type { BuildManifest } from '../get-page-files'\nimport type { ReactLoadableManifest } from '../load-components'\nimport type { NextFontManifest } from '../../build/webpack/plugins/next-font-manifest-plugin'\nimport { normalizeDataPath } from '../../shared/lib/page-path/normalize-data-path'\nimport { pathHasPrefix } from '../../shared/lib/router/utils/path-has-prefix'\nimport {\n  addRequestMeta,\n  getRequestMeta,\n  type NextIncomingMessage,\n} from '../request-meta'\nimport { patchSetHeaderWithCookieSupport } from '../lib/patch-set-header'\nimport { normalizePagePath } from '../../shared/lib/page-path/normalize-page-path'\nimport { isStaticMetadataRoute } from '../../lib/metadata/is-metadata-route'\nimport { IncrementalCache } from '../lib/incremental-cache'\nimport { initializeCacheHandlers, setCacheHandler } from '../use-cache/handlers'\nimport { interopDefault } from '../app-render/interop-default'\nimport { RouteKind } from '../route-kind'\nimport type { BaseNextRequest } from '../base-http'\nimport type { I18NConfig, NextConfigRuntime } from '../config-shared'\nimport ResponseCache, { type ResponseGenerator } from '../response-cache'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport {\n  RouterServerContextSymbol,\n  routerServerGlobal,\n  type RouterServerContext,\n} from '../lib/router-utils/router-server-context'\nimport { decodePathParams } from '../lib/router-utils/decode-path-params'\nimport { removeTrailingSlash } from '../../shared/lib/router/utils/remove-trailing-slash'\nimport { isInterceptionRouteRewrite } from '../../lib/is-interception-route-rewrite'\n\n/**\n * RouteModuleOptions is the options that are passed to the route module, other\n * route modules should extend this class to add specific options for their\n * route.\n */\nexport interface RouteModuleOptions<\n  D extends RouteDefinition = RouteDefinition,\n  U = unknown,\n> {\n  readonly definition: Readonly<D>\n  readonly userland: Readonly<U>\n  readonly distDir: string\n  readonly relativeProjectDir: string\n}\n\n/**\n * RouteHandlerContext is the base context for a route handler.\n */\nexport interface RouteModuleHandleContext {\n  /**\n   * Any matched parameters for the request. This is only defined for dynamic\n   * routes.\n   */\n  params: Record<string, string | string[] | undefined> | undefined\n}\n\nconst dynamicImportEsmDefault = (id: string) =>\n  import(/* webpackIgnore: true */ /* turbopackIgnore: true */ id).then(\n    (mod) => mod.default || mod\n  )\n\n/**\n * RouteModule is the base class for all route modules. This class should be\n * extended by all route modules.\n */\nexport abstract class RouteModule<\n  D extends RouteDefinition = RouteDefinition,\n  U = unknown,\n> {\n  /**\n   * The userland module. This is the module that is exported from the user's\n   * code. This is marked as readonly to ensure that the module is not mutated\n   * because the module (when compiled) only provides getters.\n   */\n  public readonly userland: Readonly<U>\n\n  /**\n   * The definition of the route.\n   */\n  public readonly definition: Readonly<D>\n\n  /**\n   * The shared modules that are exposed and required for the route module.\n   */\n  public static readonly sharedModules: any\n\n  public isDev: boolean\n  public distDir: string\n  public relativeProjectDir: string\n  public incrementCache?: IncrementalCache\n  public responseCache?: ResponseCache\n\n  constructor({\n    userland,\n    definition,\n    distDir,\n    relativeProjectDir,\n  }: RouteModuleOptions<D, U>) {\n    this.userland = userland\n    this.definition = definition\n    this.isDev = !!process.env.__NEXT_DEV_SERVER\n    this.distDir = distDir\n    this.relativeProjectDir = relativeProjectDir\n  }\n\n  private getRouterServerContext(\n    req: NextIncomingMessage\n  ): RouterServerContext[string] | undefined {\n    const hostname = getRequestMeta(req, 'hostname')\n    const revalidate = getRequestMeta(req, 'revalidate')\n    const render404 = getRequestMeta(req, 'render404')\n    const relativeProjectDir =\n      getRequestMeta(req, 'relativeProjectDir') || this.relativeProjectDir\n    const routerServerContext =\n      routerServerGlobal[RouterServerContextSymbol]?.[relativeProjectDir]\n\n    return {\n      ...routerServerContext,\n      ...(hostname !== undefined ? { hostname } : {}),\n      ...(revalidate !== undefined ? { revalidate } : {}),\n      ...(render404 !== undefined ? { render404 } : {}),\n    }\n  }\n\n  public normalizeUrl(\n    _req: IncomingMessage | BaseNextRequest,\n    _parsedUrl: UrlWithParsedQuery\n  ) {}\n\n  public async instrumentationOnRequestError(\n    req: IncomingMessage | BaseNextRequest,\n    ...args: Parameters<InstrumentationOnRequestError>\n  ) {\n    if (process.env.NEXT_RUNTIME === 'edge') {\n      const { getEdgeInstrumentationModule } = await import('../web/globals')\n      const instrumentation = await getEdgeInstrumentationModule()\n\n      if (instrumentation) {\n        await instrumentation.onRequestError?.(...args)\n      }\n    } else {\n      const { join } = require('node:path') as typeof import('node:path')\n      const absoluteProjectDir = join(\n        /* turbopackIgnore: true */\n        process.cwd(),\n        getRequestMeta(req, 'relativeProjectDir') || this.relativeProjectDir\n      )\n\n      const { instrumentationOnRequestError } = await import(\n        '../lib/router-utils/instrumentation-globals.external.js'\n      )\n\n      return instrumentationOnRequestError(\n        absoluteProjectDir,\n        this.distDir,\n        ...args\n      )\n    }\n  }\n\n  private loadManifests(\n    srcPage: string,\n    projectDir?: string\n  ): {\n    buildId: string\n    buildManifest: BuildManifest\n    fallbackBuildManifest: BuildManifest\n    routesManifest: DeepReadonly<DevRoutesManifest>\n    nextFontManifest: DeepReadonly<NextFontManifest>\n    prerenderManifest: DeepReadonly<PrerenderManifest>\n    serverFilesManifest: DeepReadonly<RequiredServerFilesManifest> | undefined\n    reactLoadableManifest: DeepReadonly<ReactLoadableManifest>\n    subresourceIntegrityManifest: any\n    clientReferenceManifest: any\n    serverActionsManifest: any\n    dynamicCssManifest: any\n    interceptionRoutePatterns: RegExp[]\n  } {\n    let result\n    if (process.env.NEXT_RUNTIME === 'edge') {\n      const { getEdgePreviewProps } =\n        require('../web/get-edge-preview-props') as typeof import('../web/get-edge-preview-props')\n\n      const maybeJSONParse = (str?: string) =>\n        str ? JSON.parse(str) : undefined\n\n      result = {\n        buildId: process.env.__NEXT_BUILD_ID || '',\n        buildManifest: self.__BUILD_MANIFEST as any,\n        fallbackBuildManifest: {} as any,\n        reactLoadableManifest: maybeJSONParse(self.__REACT_LOADABLE_MANIFEST),\n        nextFontManifest: maybeJSONParse(self.__NEXT_FONT_MANIFEST),\n        prerenderManifest: {\n          routes: {},\n          dynamicRoutes: {},\n          notFoundRoutes: [],\n          version: 4,\n          preview: getEdgePreviewProps(),\n        } as const,\n        routesManifest: {\n          version: 4,\n          caseSensitive: Boolean(process.env.__NEXT_CASE_SENSITIVE_ROUTES),\n          basePath: process.env.__NEXT_BASE_PATH || '',\n          rewrites: (process.env.__NEXT_REWRITES as any) || {\n            beforeFiles: [],\n            afterFiles: [],\n            fallback: [],\n          },\n          redirects: [],\n          headers: [],\n          onMatchHeaders: [],\n          i18n:\n            (process.env.__NEXT_I18N_CONFIG as any as I18NConfig) || undefined,\n          skipProxyUrlNormalize: Boolean(\n            process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE\n          ),\n        },\n        serverFilesManifest: self.__SERVER_FILES_MANIFEST,\n        clientReferenceManifest: self.__RSC_MANIFEST?.[srcPage],\n        serverActionsManifest: maybeJSONParse(self.__RSC_SERVER_MANIFEST),\n        subresourceIntegrityManifest: maybeJSONParse(\n          self.__SUBRESOURCE_INTEGRITY_MANIFEST\n        ),\n        dynamicCssManifest: maybeJSONParse(self.__DYNAMIC_CSS_MANIFEST),\n        interceptionRoutePatterns: (\n          maybeJSONParse(self.__INTERCEPTION_ROUTE_REWRITE_MANIFEST) ?? []\n        ).map((rewrite: any) => new RegExp(rewrite.regex)),\n      }\n    } else {\n      if (!projectDir) {\n        throw new Error('Invariant: projectDir is required for node runtime')\n      }\n      const { loadManifestFromRelativePath } =\n        require('../load-manifest.external') as typeof import('../load-manifest.external')\n      const normalizedPagePath = normalizePagePath(srcPage)\n\n      const router =\n        this.definition.kind === RouteKind.PAGES ||\n        this.definition.kind === RouteKind.PAGES_API\n          ? 'pages'\n          : 'app'\n\n      const [\n        routesManifest,\n        prerenderManifest,\n        buildManifest,\n        fallbackBuildManifest,\n        reactLoadableManifest,\n        nextFontManifest,\n        clientReferenceManifest,\n        serverActionsManifest,\n        subresourceIntegrityManifest,\n        serverFilesManifest,\n        buildId,\n        dynamicCssManifest,\n      ] = [\n        loadManifestFromRelativePath<DevRoutesManifest>({\n          projectDir,\n          distDir: this.distDir,\n          manifest: ROUTES_MANIFEST,\n          shouldCache: !this.isDev,\n        }),\n        loadManifestFromRelativePath<PrerenderManifest>({\n          projectDir,\n          distDir: this.distDir,\n          manifest: PRERENDER_MANIFEST,\n          shouldCache: !this.isDev,\n        }),\n        loadManifestFromRelativePath<BuildManifest>({\n          projectDir,\n          distDir: this.distDir,\n          manifest: BUILD_MANIFEST,\n          shouldCache: !this.isDev,\n        }),\n        srcPage === '/_error'\n          ? loadManifestFromRelativePath<BuildManifest>({\n              projectDir,\n              distDir: this.distDir,\n              manifest: `fallback-${BUILD_MANIFEST}`,\n              shouldCache: !this.isDev,\n              handleMissing: true,\n            })\n          : ({} as BuildManifest),\n        loadManifestFromRelativePath<ReactLoadableManifest>({\n          projectDir,\n          distDir: this.distDir,\n          manifest: process.env.TURBOPACK\n            ? `server/${router === 'app' ? 'app' : 'pages'}${normalizedPagePath}/${REACT_LOADABLE_MANIFEST}`\n            : REACT_LOADABLE_MANIFEST,\n          handleMissing: true,\n          shouldCache: !this.isDev,\n        }),\n        loadManifestFromRelativePath<NextFontManifest>({\n          projectDir,\n          distDir: this.distDir,\n          manifest: `server/${NEXT_FONT_MANIFEST}.json`,\n          shouldCache: !this.isDev,\n        }),\n        router === 'app' && !isStaticMetadataRoute(srcPage)\n          ? loadManifestFromRelativePath({\n              distDir: this.distDir,\n              projectDir,\n              useEval: true,\n              handleMissing: true,\n              manifest: `server/app${srcPage.replace(/%5F/g, '_') + '_' + CLIENT_REFERENCE_MANIFEST}.js`,\n              shouldCache: !this.isDev,\n            })\n          : undefined,\n        router === 'app'\n          ? loadManifestFromRelativePath<any>({\n              distDir: this.distDir,\n              projectDir,\n              manifest: `server/${SERVER_REFERENCE_MANIFEST}.json`,\n              handleMissing: true,\n              shouldCache: !this.isDev,\n            })\n          : {},\n        loadManifestFromRelativePath<Record<string, string>>({\n          projectDir,\n          distDir: this.distDir,\n          manifest: `server/${SUBRESOURCE_INTEGRITY_MANIFEST}.json`,\n          handleMissing: true,\n          shouldCache: !this.isDev,\n        }),\n        this.isDev\n          ? undefined\n          : loadManifestFromRelativePath<RequiredServerFilesManifest>({\n              projectDir,\n              distDir: this.distDir,\n              shouldCache: true,\n              manifest: `${SERVER_FILES_MANIFEST}.json`,\n            }),\n        this.isDev\n          ? 'development'\n          : loadManifestFromRelativePath<any>({\n              projectDir,\n              distDir: this.distDir,\n              manifest: BUILD_ID_FILE,\n              skipParse: true,\n              shouldCache: true,\n            }),\n        loadManifestFromRelativePath<any>({\n          projectDir,\n          distDir: this.distDir,\n          manifest: DYNAMIC_CSS_MANIFEST,\n          shouldCache: !this.isDev,\n          handleMissing: true,\n        }),\n      ]\n\n      result = {\n        buildId,\n        buildManifest,\n        fallbackBuildManifest,\n        routesManifest,\n        nextFontManifest,\n        prerenderManifest,\n        serverFilesManifest,\n        reactLoadableManifest,\n        clientReferenceManifest: (clientReferenceManifest as any)\n          ?.__RSC_MANIFEST?.[srcPage.replace(/%5F/g, '_')],\n        serverActionsManifest,\n        subresourceIntegrityManifest,\n        dynamicCssManifest,\n        interceptionRoutePatterns: routesManifest.rewrites.beforeFiles\n          .filter(isInterceptionRouteRewrite)\n          .map((rewrite) => new RegExp(rewrite.regex)),\n      }\n    }\n\n    return result\n  }\n\n  public async loadCustomCacheHandlers(\n    req: IncomingMessage | BaseNextRequest,\n    nextConfig: NextConfigRuntime\n  ) {\n    if (process.env.NEXT_RUNTIME !== 'edge') {\n      const { cacheMaxMemorySize, cacheHandlers } = nextConfig\n      if (!cacheHandlers) return\n\n      // If we've already initialized the cache handlers interface, don't do it\n      // again.\n      if (!initializeCacheHandlers(cacheMaxMemorySize)) return\n\n      for (const [kind, handler] of Object.entries(cacheHandlers)) {\n        if (!handler) continue\n\n        const { formatDynamicImportPath } =\n          require('../../lib/format-dynamic-import-path') as typeof import('../../lib/format-dynamic-import-path')\n\n        const { join } = require('node:path') as typeof import('node:path')\n        const absoluteProjectDir = join(\n          /* turbopackIgnore: true */\n          process.cwd(),\n          getRequestMeta(req, 'relativeProjectDir') || this.relativeProjectDir\n        )\n\n        setCacheHandler(\n          kind,\n          interopDefault(\n            await dynamicImportEsmDefault(\n              formatDynamicImportPath(\n                `${absoluteProjectDir}/${this.distDir}`,\n                handler\n              )\n            )\n          )\n        )\n      }\n    }\n  }\n\n  public async getIncrementalCache(\n    req: IncomingMessage | BaseNextRequest,\n    nextConfig: NextConfigRuntime,\n    prerenderManifest: DeepReadonly<PrerenderManifest>,\n    isMinimalMode: boolean\n  ): Promise<IncrementalCache> {\n    if (process.env.NEXT_RUNTIME === 'edge') {\n      return (globalThis as any).__incrementalCache\n    } else {\n      let CacheHandler: any\n      const { cacheHandler } = nextConfig\n\n      if (cacheHandler) {\n        const { formatDynamicImportPath } =\n          require('../../lib/format-dynamic-import-path') as typeof import('../../lib/format-dynamic-import-path')\n\n        CacheHandler = interopDefault(\n          await dynamicImportEsmDefault(\n            formatDynamicImportPath(this.distDir, cacheHandler)\n          )\n        )\n      }\n      const { join } = require('node:path') as typeof import('node:path')\n      const projectDir = join(\n        /* turbopackIgnore: true */\n        process.cwd(),\n        getRequestMeta(req, 'relativeProjectDir') || this.relativeProjectDir\n      )\n\n      await this.loadCustomCacheHandlers(req, nextConfig)\n\n      // incremental-cache is request specific\n      // although can have shared caches in module scope\n      // per-cache handler\n      const incrementalCache = new IncrementalCache({\n        fs: (\n          require('../lib/node-fs-methods') as typeof import('../lib/node-fs-methods')\n        ).nodeFs,\n        dev: this.isDev,\n        requestHeaders: req.headers,\n        allowedRevalidateHeaderKeys:\n          nextConfig.experimental.allowedRevalidateHeaderKeys,\n        minimalMode: isMinimalMode,\n        serverDistDir: `${projectDir}/${this.distDir}/server`,\n        fetchCacheKeyPrefix: nextConfig.experimental.fetchCacheKeyPrefix,\n        maxMemoryCacheSize: nextConfig.cacheMaxMemorySize,\n        flushToDisk: !isMinimalMode && nextConfig.experimental.isrFlushToDisk,\n        getPrerenderManifest: () => prerenderManifest,\n        CurCacheHandler: CacheHandler,\n      })\n\n      // we need to expose this on globalThis as the app-render\n      // workStore grabs the incrementalCache from there\n      ;(globalThis as any).__incrementalCache = incrementalCache\n      return incrementalCache\n    }\n  }\n\n  public async onRequestError(\n    req: IncomingMessage | BaseNextRequest,\n    err: unknown,\n    errorContext: RequestErrorContext,\n    silenceLog: boolean,\n    routerServerContext?: RouterServerContext[string]\n  ) {\n    if (!silenceLog) {\n      if (routerServerContext?.logErrorWithOriginalStack) {\n        routerServerContext.logErrorWithOriginalStack(err, 'app-dir')\n      } else {\n        console.error(err)\n      }\n    }\n    await this.instrumentationOnRequestError(\n      req,\n      err,\n      {\n        path: req.url || '/',\n        headers: req.headers,\n        method: req.method || 'GET',\n      },\n      errorContext\n    )\n  }\n\n  /** A more lightweight version of `prepare()` for only retrieving the config on edge */\n  public getNextConfigEdge(req: NextIncomingMessage): {\n    nextConfig: NextConfigRuntime\n    deploymentId: string\n  } {\n    if (process.env.NEXT_RUNTIME !== 'edge') {\n      throw new Error(\n        'Invariant: getNextConfigEdge must only be called in edge runtime'\n      )\n    }\n\n    let serverFilesManifest = self.__SERVER_FILES_MANIFEST as any as\n      | RequiredServerFilesManifest\n      | undefined\n    const routerServerContext = this.getRouterServerContext(req)\n    const nextConfig =\n      routerServerContext?.nextConfig || serverFilesManifest?.config\n\n    if (!nextConfig) {\n      throw new Error(\"Invariant: nextConfig couldn't be loaded\")\n    }\n\n    let deploymentId\n    if (nextConfig.experimental?.runtimeServerDeploymentId) {\n      if (!process.env.NEXT_DEPLOYMENT_ID) {\n        throw new Error(\n          'process.env.NEXT_DEPLOYMENT_ID is missing but runtimeServerDeploymentId is enabled'\n        )\n      }\n      deploymentId = process.env.NEXT_DEPLOYMENT_ID\n    } else {\n      deploymentId = nextConfig.deploymentId || ''\n    }\n\n    return { nextConfig, deploymentId }\n  }\n\n  public async prepare(\n    req: IncomingMessage | BaseNextRequest,\n    res: ServerResponse | null,\n    {\n      srcPage,\n      multiZoneDraftMode,\n    }: {\n      srcPage: string\n      multiZoneDraftMode?: boolean\n    }\n  ): Promise<\n    | {\n        buildId: string\n        deploymentId: string\n        clientAssetToken: string\n        locale?: string\n        locales?: readonly string[]\n        defaultLocale?: string\n        query: ParsedUrlQuery\n        originalQuery: ParsedUrlQuery\n        originalPathname: string\n        params?: ParsedUrlQuery\n        parsedUrl: UrlWithParsedQuery\n        previewData: PreviewData\n        pageIsDynamic: boolean\n        isDraftMode: boolean\n        resolvedPathname: string\n        encodedResolvedPathname: string\n        isNextDataRequest: boolean\n        buildManifest: DeepReadonly<BuildManifest>\n        fallbackBuildManifest: DeepReadonly<BuildManifest>\n        nextFontManifest: DeepReadonly<NextFontManifest>\n        serverFilesManifest:\n          | DeepReadonly<RequiredServerFilesManifest>\n          | undefined\n        reactLoadableManifest: DeepReadonly<ReactLoadableManifest>\n        routesManifest: DeepReadonly<DevRoutesManifest>\n        prerenderManifest: DeepReadonly<PrerenderManifest>\n        // we can't pull in the client reference type or it causes issues with\n        // our pre-compiled types\n        clientReferenceManifest?: any\n        serverActionsManifest?: any\n        dynamicCssManifest?: any\n        subresourceIntegrityManifest?: DeepReadonly<Record<string, string>>\n        isOnDemandRevalidate: boolean\n        revalidateOnlyGenerated: boolean\n        nextConfig: NextConfigRuntime\n        routerServerContext?: RouterServerContext[string]\n        interceptionRoutePatterns?: any\n      }\n    | undefined\n  > {\n    let absoluteProjectDir: string | undefined\n\n    // edge runtime handles loading instrumentation at the edge adapter level\n    if (process.env.NEXT_RUNTIME !== 'edge') {\n      if (res) {\n        patchSetHeaderWithCookieSupport(req, res)\n      }\n\n      const { join, relative } =\n        require('node:path') as typeof import('node:path')\n\n      absoluteProjectDir = join(\n        /* turbopackIgnore: true */\n        process.cwd(),\n        getRequestMeta(req, 'relativeProjectDir') || this.relativeProjectDir\n      )\n\n      const absoluteDistDir = getRequestMeta(req, 'distDir')\n\n      if (absoluteDistDir) {\n        this.distDir = relative(absoluteProjectDir, absoluteDistDir)\n      }\n      const { ensureInstrumentationRegistered } = await import(\n        '../lib/router-utils/instrumentation-globals.external.js'\n      )\n      // ensure instrumentation is registered and pass\n      // onRequestError below\n      ensureInstrumentationRegistered(absoluteProjectDir, this.distDir)\n    }\n    const manifests = this.loadManifests(srcPage, absoluteProjectDir)\n    const { routesManifest, prerenderManifest, serverFilesManifest } = manifests\n\n    const { basePath, i18n, rewrites } = routesManifest\n\n    const routerServerContext = this.getRouterServerContext(req)\n    const nextConfig =\n      routerServerContext?.nextConfig || serverFilesManifest?.config\n\n    // Injected in base-server.ts\n    const protocol = req.headers['x-forwarded-proto']?.includes('https')\n      ? 'https'\n      : 'http'\n\n    // When there are hostname and port we build an absolute URL\n    if (!getRequestMeta(req, 'initURL')) {\n      const initUrl = serverFilesManifest?.config.experimental.trustHostHeader\n        ? `${protocol}://${req.headers.host || 'localhost'}${req.url}`\n        : `${protocol}://${routerServerContext?.hostname || 'localhost'}${req.url}`\n\n      addRequestMeta(req, 'initURL', initUrl)\n      addRequestMeta(req, 'initProtocol', protocol)\n    }\n\n    if (basePath) {\n      req.url = removePathPrefix(req.url || '/', basePath)\n    }\n\n    const parsedUrl = parseReqUrl(req.url || '/')\n    addRequestMeta(req, 'initQuery', { ...parsedUrl?.query })\n    // if we couldn't parse the URL we can't continue\n    if (!parsedUrl) {\n      return\n    }\n    let isNextDataRequest = false\n\n    if (pathHasPrefix(parsedUrl.pathname || '/', '/_next/data')) {\n      isNextDataRequest = true\n      parsedUrl.pathname = normalizeDataPath(parsedUrl.pathname || '/')\n    }\n    this.normalizeUrl(req, parsedUrl)\n    let originalPathname = parsedUrl.pathname || '/'\n    const originalQuery = { ...parsedUrl.query }\n    const pageIsDynamic = isDynamicRoute(srcPage)\n\n    let localeResult: PathLocale | undefined\n    let detectedLocale: string | undefined\n\n    if (i18n) {\n      localeResult = normalizeLocalePath(\n        parsedUrl.pathname || '/',\n        i18n.locales\n      )\n\n      if (localeResult.detectedLocale) {\n        req.url = `${localeResult.pathname}${parsedUrl.search}`\n        originalPathname = localeResult.pathname\n\n        if (!detectedLocale) {\n          detectedLocale = localeResult.detectedLocale\n        }\n      }\n    }\n\n    // Normalize the page path for route matching. The srcPage contains the\n    // internal page path (e.g., /app/[slug]/page), but route matchers expect\n    // the pathname format (e.g., /app/[slug]).\n    const normalizedSrcPage = normalizeAppPath(srcPage)\n\n    const serverUtils = getServerUtils({\n      page: normalizedSrcPage,\n      i18n,\n      basePath,\n      rewrites,\n      pageIsDynamic,\n      trailingSlash: process.env.__NEXT_TRAILING_SLASH as any as boolean,\n      caseSensitive: Boolean(routesManifest.caseSensitive),\n    })\n\n    const domainLocale = detectDomainLocale(\n      i18n?.domains,\n      getHostname(parsedUrl, req.headers),\n      detectedLocale\n    )\n\n    if (Boolean(domainLocale)) {\n      addRequestMeta(req, 'isLocaleDomain', Boolean(domainLocale))\n    }\n\n    const defaultLocale =\n      getRequestMeta(req, 'defaultLocale') ||\n      domainLocale?.defaultLocale ||\n      i18n?.defaultLocale\n\n    // Ensure parsedUrl.pathname includes locale before processing\n    // rewrites or they won't match correctly.\n    if (defaultLocale && !detectedLocale) {\n      parsedUrl.pathname = `/${defaultLocale}${parsedUrl.pathname === '/' ? '' : parsedUrl.pathname}`\n    }\n    const locale =\n      getRequestMeta(req, 'locale') || detectedLocale || defaultLocale\n\n    // we apply rewrites against cloned URL so that we don't\n    // modify the original with the rewrite destination\n    const { rewriteParams, rewrittenParsedUrl } = serverUtils.handleRewrites(\n      req,\n      parsedUrl\n    )\n    const rewriteParamKeys = Object.keys(rewriteParams)\n    Object.assign(parsedUrl.query, rewrittenParsedUrl.query)\n\n    // after processing rewrites we want to remove locale\n    // from parsedUrl pathname\n    if (i18n) {\n      parsedUrl.pathname = normalizeLocalePath(\n        parsedUrl.pathname || '/',\n        i18n.locales\n      ).pathname\n\n      rewrittenParsedUrl.pathname = normalizeLocalePath(\n        rewrittenParsedUrl.pathname || '/',\n        i18n.locales\n      ).pathname\n    }\n\n    let params: Record<string, undefined | string | string[]> | undefined =\n      getRequestMeta(req, 'params')\n\n    // attempt parsing from pathname\n    if (!params && serverUtils.dynamicRouteMatcher) {\n      const paramsMatch = serverUtils.dynamicRouteMatcher(\n        normalizeDataPath(\n          rewrittenParsedUrl?.pathname || parsedUrl.pathname || '/'\n        )\n      )\n      const paramsResult = serverUtils.normalizeDynamicRouteParams(\n        paramsMatch || {},\n        true\n      )\n\n      if (paramsResult.hasValidParams) {\n        params = paramsResult.params\n      }\n    }\n\n    // Local \"next start\" expects the routing parsed query values\n    // to not be present in the URL although when deployed proxies\n    // will add query values from resolving the routes to pass to function.\n\n    // TODO: do we want to change expectations for \"next start\"\n    // to include these query values in the URL which affects asPath\n    // but would match deployed behavior, e.g. a rewrite from middleware\n    // that adds a query param would be in asPath as query but locally\n    // it won't be in the asPath but still available in the query object\n    const query = getRequestMeta(req, 'query') || {\n      ...parsedUrl.query,\n    }\n\n    const routeParamKeys = new Set<string>()\n    const combinedParamKeys = []\n\n    // We don't include rewriteParamKeys in the combinedParamKeys\n    // for app router since the searchParams is populated from the\n    // URL so we don't want to strip the rewrite params from the URL\n    // so that searchParams can include them.\n    if (\n      this.definition.kind === RouteKind.PAGES ||\n      this.definition.kind === RouteKind.PAGES_API\n    ) {\n      for (const key of [\n        ...rewriteParamKeys,\n        ...Object.keys(serverUtils.defaultRouteMatches || {}),\n      ]) {\n        // We only want to filter rewrite param keys from the URL\n        // if they are matches from the URL e.g. the key/value matches\n        // before and after applying the rewrites /:path for /hello and\n        // { path: 'hello' } but not for { path: 'another' } and /hello\n        // TODO: we should prefix rewrite param keys the same as we do\n        // for dynamic routes so we can identify them properly\n        const originalValue = Array.isArray(originalQuery[key])\n          ? originalQuery[key].join('')\n          : originalQuery[key]\n\n        const queryValue = Array.isArray(query[key])\n          ? query[key].join('')\n          : query[key]\n\n        if (!(key in originalQuery) || originalValue === queryValue) {\n          combinedParamKeys.push(key)\n        }\n      }\n    }\n\n    serverUtils.normalizeCdnUrl(req, combinedParamKeys)\n    // When Next is not hosted in a single process, upstream proxies will add query values for route params that were used to match the route.\n    // Outside of that environment, there is no reason to do any normalization to honor those query values.\n    if (!routerServerContext?.isWrappedByNextServer) {\n      serverUtils.normalizeQueryParams(query, routeParamKeys)\n    } else {\n      serverUtils.filterInternalQuery(query, [])\n    }\n    serverUtils.filterInternalQuery(originalQuery, combinedParamKeys)\n\n    if (pageIsDynamic) {\n      const queryResult = serverUtils.normalizeDynamicRouteParams(query, true)\n\n      const paramsResult = serverUtils.normalizeDynamicRouteParams(\n        params || {},\n        true\n      )\n\n      let paramsToInterpolate: ParsedUrlQuery\n\n      if (\n        // if both query and params are valid but one\n        // provided more information and the query params\n        // were nxtP prefixed rely on that one\n        query &&\n        params &&\n        paramsResult.hasValidParams &&\n        queryResult.hasValidParams &&\n        routeParamKeys.size > 0 &&\n        Object.keys(paramsResult.params).length <=\n          Object.keys(queryResult.params).length\n      ) {\n        paramsToInterpolate = queryResult.params\n        params = Object.assign(queryResult.params)\n      } else {\n        paramsToInterpolate =\n          paramsResult.hasValidParams && params\n            ? params\n            : queryResult.hasValidParams\n              ? query\n              : {}\n      }\n\n      req.url = serverUtils.interpolateDynamicPath(\n        req.url || '/',\n        paramsToInterpolate\n      )\n      parsedUrl.pathname = serverUtils.interpolateDynamicPath(\n        parsedUrl.pathname || '/',\n        paramsToInterpolate\n      )\n      originalPathname = serverUtils.interpolateDynamicPath(\n        originalPathname,\n        paramsToInterpolate\n      )\n\n      // try pulling from query if valid\n      if (!params) {\n        if (queryResult.hasValidParams) {\n          params = Object.assign({}, queryResult.params)\n\n          // If we pulled from query remove it so it's\n          // only in params\n          for (const key in serverUtils.defaultRouteMatches) {\n            delete query[key]\n          }\n        } else {\n          // use final params from URL matching\n          const paramsMatch = serverUtils.dynamicRouteMatcher?.(\n            normalizeDataPath(\n              localeResult?.pathname || parsedUrl.pathname || '/'\n            )\n          )\n          // we don't normalize these as they are allowed to be\n          // the literal slug matches here e.g. /blog/[slug]\n          // actually being requested\n          if (paramsMatch) {\n            params = Object.assign({}, paramsMatch)\n          }\n        }\n      }\n    }\n\n    // Remove any normalized params from the query if they\n    // weren't present as non-prefixed query key e.g.\n    // ?search=1&nxtPsearch=hello we don't delete search\n    for (const key of routeParamKeys) {\n      if (!(key in originalQuery)) {\n        delete query[key]\n        // handle the case where there's collision and we\n        // normalized nxtPid=123 -> id=123 but user also\n        // sends id=456 as separate key\n      } else if (\n        originalQuery[key] &&\n        query[key] &&\n        originalQuery[key] !== query[key]\n      ) {\n        query[key] = originalQuery[key]\n      }\n    }\n\n    const { isOnDemandRevalidate, revalidateOnlyGenerated } =\n      checkIsOnDemandRevalidate(req, prerenderManifest.preview)\n\n    let isDraftMode = false\n    let previewData: PreviewData\n\n    // preview data relies on non-edge utils\n    if (process.env.NEXT_RUNTIME !== 'edge' && res) {\n      const { tryGetPreviewData } =\n        require('../api-utils/node/try-get-preview-data') as typeof import('../api-utils/node/try-get-preview-data')\n\n      previewData = tryGetPreviewData(\n        req,\n        res,\n        prerenderManifest.preview,\n        Boolean(multiZoneDraftMode)\n      )\n      isDraftMode = previewData !== false\n    }\n\n    if (!nextConfig) {\n      throw new Error(\"Invariant: nextConfig couldn't be loaded\")\n    }\n\n    if (process.env.NEXT_RUNTIME !== 'edge') {\n      const { installProcessErrorHandlers } =\n        require('../node-environment-extensions/process-error-handlers') as typeof import('../node-environment-extensions/process-error-handlers')\n\n      installProcessErrorHandlers(\n        Boolean(\n          nextConfig.experimental.removeUncaughtErrorAndRejectionListeners\n        )\n      )\n    }\n\n    let resolvedPathname = normalizedSrcPage\n    if (isDynamicRoute(resolvedPathname) && params) {\n      resolvedPathname = serverUtils.interpolateDynamicPath(\n        resolvedPathname,\n        params\n      )\n    }\n\n    if (resolvedPathname === '/index') {\n      resolvedPathname = '/'\n    }\n\n    if (\n      res &&\n      Boolean(req.headers['x-nextjs-data']) &&\n      (!res.statusCode || res.statusCode === 200)\n    ) {\n      res.setHeader(\n        'x-nextjs-matched-path',\n        removeTrailingSlash(`${locale ? `/${locale}` : ''}${normalizedSrcPage}`)\n      )\n    }\n    const encodedResolvedPathname = resolvedPathname\n\n    // we decode for cache key/manifest usage encoded is\n    // for URL building\n    try {\n      resolvedPathname = decodePathParams(resolvedPathname)\n    } catch (_) {}\n\n    resolvedPathname = removeTrailingSlash(resolvedPathname)\n    addRequestMeta(req, 'resolvedPathname', resolvedPathname)\n\n    let deploymentId\n    if (nextConfig.experimental?.runtimeServerDeploymentId) {\n      if (!process.env.NEXT_DEPLOYMENT_ID) {\n        throw new Error(\n          'process.env.NEXT_DEPLOYMENT_ID is missing but runtimeServerDeploymentId is enabled'\n        )\n      }\n      deploymentId = process.env.NEXT_DEPLOYMENT_ID\n    } else {\n      deploymentId = nextConfig.deploymentId || ''\n    }\n\n    return {\n      query,\n      originalQuery,\n      originalPathname,\n      params,\n      parsedUrl,\n      locale,\n      isNextDataRequest,\n      locales: i18n?.locales,\n      defaultLocale,\n      isDraftMode,\n      previewData,\n      pageIsDynamic,\n      resolvedPathname,\n      encodedResolvedPathname,\n      isOnDemandRevalidate,\n      revalidateOnlyGenerated,\n      ...manifests,\n      // loadManifest returns a readonly object, but we don't want to propagate that throughout the\n      // whole codebase (for now)\n      nextConfig:\n        nextConfig satisfies DeepReadonly<NextConfigRuntime> as NextConfigRuntime,\n      routerServerContext,\n      deploymentId,\n      clientAssetToken:\n        nextConfig.experimental.immutableAssetToken || deploymentId,\n    }\n  }\n\n  public getResponseCache(req: IncomingMessage | BaseNextRequest) {\n    if (!this.responseCache) {\n      const minimalMode = getRequestMeta(req, 'minimalMode') ?? false\n      this.responseCache = new ResponseCache(minimalMode)\n    }\n    return this.responseCache\n  }\n\n  public async handleResponse({\n    req,\n    nextConfig,\n    cacheKey,\n    routeKind,\n    isFallback,\n    prerenderManifest,\n    isRoutePPREnabled,\n    isOnDemandRevalidate,\n    revalidateOnlyGenerated,\n    responseGenerator,\n    waitUntil,\n    isMinimalMode,\n  }: {\n    req: IncomingMessage | BaseNextRequest\n    nextConfig: NextConfigRuntime\n    cacheKey: string | null\n    routeKind: RouteKind\n    isFallback?: boolean\n    prerenderManifest: DeepReadonly<PrerenderManifest>\n    isRoutePPREnabled?: boolean\n    isOnDemandRevalidate?: boolean\n    revalidateOnlyGenerated?: boolean\n    responseGenerator: ResponseGenerator\n    waitUntil?: (prom: Promise<any>) => void\n    isMinimalMode: boolean\n  }) {\n    const responseCache = this.getResponseCache(req)\n    const cacheEntry = await responseCache.get(cacheKey, responseGenerator, {\n      routeKind,\n      isFallback,\n      isRoutePPREnabled,\n      isOnDemandRevalidate,\n      isPrefetch: req.headers.purpose === 'prefetch',\n      // Use x-invocation-id header to scope the in-memory cache to a single\n      // revalidation request in minimal mode.\n      invocationID: req.headers['x-invocation-id'] as string | undefined,\n      incrementalCache: await this.getIncrementalCache(\n        req,\n        nextConfig,\n        prerenderManifest,\n        isMinimalMode\n      ),\n      waitUntil,\n    })\n\n    if (!cacheEntry) {\n      if (\n        cacheKey &&\n        // revalidate only generated can bail even if cacheKey is provided\n        !(isOnDemandRevalidate && revalidateOnlyGenerated)\n      ) {\n        // A cache entry might not be generated if a response is written\n        // in `getInitialProps` or `getServerSideProps`, but those shouldn't\n        // have a cache key. If we do have a cache key but we don't end up\n        // with a cache entry, then either Next.js or the application has a\n        // bug that needs fixing.\n        throw new Error('invariant: cache entry required but not generated')\n      }\n    }\n    return cacheEntry\n  }\n}\n"],"names":["BUILD_ID_FILE","BUILD_MANIFEST","CLIENT_REFERENCE_MANIFEST","DYNAMIC_CSS_MANIFEST","NEXT_FONT_MANIFEST","PRERENDER_MANIFEST","REACT_LOADABLE_MANIFEST","ROUTES_MANIFEST","SERVER_FILES_MANIFEST","SERVER_REFERENCE_MANIFEST","SUBRESOURCE_INTEGRITY_MANIFEST","parseReqUrl","normalizeLocalePath","isDynamicRoute","removePathPrefix","getServerUtils","detectDomainLocale","getHostname","checkIsOnDemandRevalidate","normalizeDataPath","pathHasPrefix","addRequestMeta","getRequestMeta","patchSetHeaderWithCookieSupport","normalizePagePath","isStaticMetadataRoute","IncrementalCache","initializeCacheHandlers","setCacheHandler","interopDefault","RouteKind","ResponseCache","normalizeAppPath","RouterServerContextSymbol","routerServerGlobal","decodePathParams","removeTrailingSlash","isInterceptionRouteRewrite","dynamicImportEsmDefault","id","then","mod","default","RouteModule","constructor","userland","definition","distDir","relativeProjectDir","isDev","process","env","__NEXT_DEV_SERVER","getRouterServerContext","req","hostname","revalidate","render404","routerServerContext","undefined","normalizeUrl","_req","_parsedUrl","instrumentationOnRequestError","args","NEXT_RUNTIME","getEdgeInstrumentationModule","instrumentation","onRequestError","join","require","absoluteProjectDir","cwd","loadManifests","srcPage","projectDir","result","self","getEdgePreviewProps","maybeJSONParse","str","JSON","parse","buildId","__NEXT_BUILD_ID","buildManifest","__BUILD_MANIFEST","fallbackBuildManifest","reactLoadableManifest","__REACT_LOADABLE_MANIFEST","nextFontManifest","__NEXT_FONT_MANIFEST","prerenderManifest","routes","dynamicRoutes","notFoundRoutes","version","preview","routesManifest","caseSensitive","Boolean","__NEXT_CASE_SENSITIVE_ROUTES","basePath","__NEXT_BASE_PATH","rewrites","__NEXT_REWRITES","beforeFiles","afterFiles","fallback","redirects","headers","onMatchHeaders","i18n","__NEXT_I18N_CONFIG","skipProxyUrlNormalize","__NEXT_NO_MIDDLEWARE_URL_NORMALIZE","serverFilesManifest","__SERVER_FILES_MANIFEST","clientReferenceManifest","__RSC_MANIFEST","serverActionsManifest","__RSC_SERVER_MANIFEST","subresourceIntegrityManifest","__SUBRESOURCE_INTEGRITY_MANIFEST","dynamicCssManifest","__DYNAMIC_CSS_MANIFEST","interceptionRoutePatterns","__INTERCEPTION_ROUTE_REWRITE_MANIFEST","map","rewrite","RegExp","regex","Error","loadManifestFromRelativePath","normalizedPagePath","router","kind","PAGES","PAGES_API","manifest","shouldCache","handleMissing","TURBOPACK","useEval","replace","skipParse","filter","loadCustomCacheHandlers","nextConfig","cacheMaxMemorySize","cacheHandlers","handler","Object","entries","formatDynamicImportPath","getIncrementalCache","isMinimalMode","globalThis","__incrementalCache","CacheHandler","cacheHandler","incrementalCache","fs","nodeFs","dev","requestHeaders","allowedRevalidateHeaderKeys","experimental","minimalMode","serverDistDir","fetchCacheKeyPrefix","maxMemoryCacheSize","flushToDisk","isrFlushToDisk","getPrerenderManifest","CurCacheHandler","err","errorContext","silenceLog","logErrorWithOriginalStack","console","error","path","url","method","getNextConfigEdge","config","deploymentId","runtimeServerDeploymentId","NEXT_DEPLOYMENT_ID","prepare","res","multiZoneDraftMode","relative","absoluteDistDir","ensureInstrumentationRegistered","manifests","protocol","includes","initUrl","trustHostHeader","host","parsedUrl","query","isNextDataRequest","pathname","originalPathname","originalQuery","pageIsDynamic","localeResult","detectedLocale","locales","search","normalizedSrcPage","serverUtils","page","trailingSlash","__NEXT_TRAILING_SLASH","domainLocale","domains","defaultLocale","locale","rewriteParams","rewrittenParsedUrl","handleRewrites","rewriteParamKeys","keys","assign","params","dynamicRouteMatcher","paramsMatch","paramsResult","normalizeDynamicRouteParams","hasValidParams","routeParamKeys","Set","combinedParamKeys","key","defaultRouteMatches","originalValue","Array","isArray","queryValue","push","normalizeCdnUrl","isWrappedByNextServer","normalizeQueryParams","filterInternalQuery","queryResult","paramsToInterpolate","size","length","interpolateDynamicPath","isOnDemandRevalidate","revalidateOnlyGenerated","isDraftMode","previewData","tryGetPreviewData","installProcessErrorHandlers","removeUncaughtErrorAndRejectionListeners","resolvedPathname","statusCode","setHeader","encodedResolvedPathname","_","clientAssetToken","immutableAssetToken","getResponseCache","responseCache","handleResponse","cacheKey","routeKind","isFallback","isRoutePPREnabled","responseGenerator","waitUntil","cacheEntry","get","isPrefetch","purpose","invocationID"],"mappings":"AAAA,OAAO,8CAA6C;AAepD,SACEA,aAAa,EACbC,cAAc,EACdC,yBAAyB,EACzBC,oBAAoB,EACpBC,kBAAkB,EAClBC,kBAAkB,EAClBC,uBAAuB,EACvBC,eAAe,EACfC,qBAAqB,EACrBC,yBAAyB,EACzBC,8BAA8B,QACzB,6BAA4B;AACnC,SAASC,WAAW,QAAQ,gBAAe;AAC3C,SACEC,mBAAmB,QAEd,8CAA6C;AACpD,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,gBAAgB,QAAQ,mDAAkD;AACnF,SAASC,cAAc,QAAQ,kBAAiB;AAChD,SAASC,kBAAkB,QAAQ,6CAA4C;AAC/E,SAASC,WAAW,QAAQ,gCAA+B;AAC3D,SAASC,yBAAyB,QAAQ,eAAc;AAKxD,SAASC,iBAAiB,QAAQ,iDAAgD;AAClF,SAASC,aAAa,QAAQ,gDAA+C;AAC7E,SACEC,cAAc,EACdC,cAAc,QAET,kBAAiB;AACxB,SAASC,+BAA+B,QAAQ,0BAAyB;AACzE,SAASC,iBAAiB,QAAQ,iDAAgD;AAClF,SAASC,qBAAqB,QAAQ,uCAAsC;AAC5E,SAASC,gBAAgB,QAAQ,2BAA0B;AAC3D,SAASC,uBAAuB,EAAEC,eAAe,QAAQ,wBAAuB;AAChF,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,SAAS,QAAQ,gBAAe;AAGzC,OAAOC,mBAA+C,oBAAmB;AACzE,SAASC,gBAAgB,QAAQ,0CAAyC;AAC1E,SACEC,yBAAyB,EACzBC,kBAAkB,QAEb,4CAA2C;AAClD,SAASC,gBAAgB,QAAQ,yCAAwC;AACzE,SAASC,mBAAmB,QAAQ,sDAAqD;AACzF,SAASC,0BAA0B,QAAQ,0CAAyC;AA4BpF,MAAMC,0BAA0B,CAACC,KAC/B,MAAM,CAAC,uBAAuB,GAAG,yBAAyB,GAAGA,IAAIC,IAAI,CACnE,CAACC,MAAQA,IAAIC,OAAO,IAAID;AAG5B;;;CAGC,GACD,OAAO,MAAeE;IA2BpBC,YAAY,EACVC,QAAQ,EACRC,UAAU,EACVC,OAAO,EACPC,kBAAkB,EACO,CAAE;QAC3B,IAAI,CAACH,QAAQ,GAAGA;QAChB,IAAI,CAACC,UAAU,GAAGA;QAClB,IAAI,CAACG,KAAK,GAAG,CAAC,CAACC,QAAQC,GAAG,CAACC,iBAAiB;QAC5C,IAAI,CAACL,OAAO,GAAGA;QACf,IAAI,CAACC,kBAAkB,GAAGA;IAC5B;IAEQK,uBACNC,GAAwB,EACiB;YAOvCpB;QANF,MAAMqB,WAAWjC,eAAegC,KAAK;QACrC,MAAME,aAAalC,eAAegC,KAAK;QACvC,MAAMG,YAAYnC,eAAegC,KAAK;QACtC,MAAMN,qBACJ1B,eAAegC,KAAK,yBAAyB,IAAI,CAACN,kBAAkB;QACtE,MAAMU,uBACJxB,gDAAAA,kBAAkB,CAACD,0BAA0B,qBAA7CC,6CAA+C,CAACc,mBAAmB;QAErE,OAAO;YACL,GAAGU,mBAAmB;YACtB,GAAIH,aAAaI,YAAY;gBAAEJ;YAAS,IAAI,CAAC,CAAC;YAC9C,GAAIC,eAAeG,YAAY;gBAAEH;YAAW,IAAI,CAAC,CAAC;YAClD,GAAIC,cAAcE,YAAY;gBAAEF;YAAU,IAAI,CAAC,CAAC;QAClD;IACF;IAEOG,aACLC,IAAuC,EACvCC,UAA8B,EAC9B,CAAC;IAEH,MAAaC,8BACXT,GAAsC,EACtC,GAAGU,IAA+C,EAClD;QACA,IAAId,QAAQC,GAAG,CAACc,YAAY,KAAK,QAAQ;YACvC,MAAM,EAAEC,4BAA4B,EAAE,GAAG,MAAM,MAAM,CAAC;YACtD,MAAMC,kBAAkB,MAAMD;YAE9B,IAAIC,iBAAiB;gBACnB,OAAMA,gBAAgBC,cAAc,oBAA9BD,gBAAgBC,cAAc,MAA9BD,oBAAoCH;YAC5C;QACF,OAAO;YACL,MAAM,EAAEK,IAAI,EAAE,GAAGC,QAAQ;YACzB,MAAMC,qBAAqBF,KACzB,yBAAyB,GACzBnB,QAAQsB,GAAG,IACXlD,eAAegC,KAAK,yBAAyB,IAAI,CAACN,kBAAkB;YAGtE,MAAM,EAAEe,6BAA6B,EAAE,GAAG,MAAM,MAAM,CACpD;YAGF,OAAOA,8BACLQ,oBACA,IAAI,CAACxB,OAAO,KACTiB;QAEP;IACF;IAEQS,cACNC,OAAe,EACfC,UAAmB,EAenB;QACA,IAAIC;QACJ,IAAI1B,QAAQC,GAAG,CAACc,YAAY,KAAK,QAAQ;gBAuCZY;YAtC3B,MAAM,EAAEC,mBAAmB,EAAE,GAC3BR,QAAQ;YAEV,MAAMS,iBAAiB,CAACC,MACtBA,MAAMC,KAAKC,KAAK,CAACF,OAAOrB;YAE1BiB,SAAS;gBACPO,SAASjC,QAAQC,GAAG,CAACiC,eAAe,IAAI;gBACxCC,eAAeR,KAAKS,gBAAgB;gBACpCC,uBAAuB,CAAC;gBACxBC,uBAAuBT,eAAeF,KAAKY,yBAAyB;gBACpEC,kBAAkBX,eAAeF,KAAKc,oBAAoB;gBAC1DC,mBAAmB;oBACjBC,QAAQ,CAAC;oBACTC,eAAe,CAAC;oBAChBC,gBAAgB,EAAE;oBAClBC,SAAS;oBACTC,SAASnB;gBACX;gBACAoB,gBAAgB;oBACdF,SAAS;oBACTG,eAAeC,QAAQlD,QAAQC,GAAG,CAACkD,4BAA4B;oBAC/DC,UAAUpD,QAAQC,GAAG,CAACoD,gBAAgB,IAAI;oBAC1CC,UAAU,AAACtD,QAAQC,GAAG,CAACsD,eAAe,IAAY;wBAChDC,aAAa,EAAE;wBACfC,YAAY,EAAE;wBACdC,UAAU,EAAE;oBACd;oBACAC,WAAW,EAAE;oBACbC,SAAS,EAAE;oBACXC,gBAAgB,EAAE;oBAClBC,MACE,AAAC9D,QAAQC,GAAG,CAAC8D,kBAAkB,IAA0BtD;oBAC3DuD,uBAAuBd,QACrBlD,QAAQC,GAAG,CAACgE,kCAAkC;gBAElD;gBACAC,qBAAqBvC,KAAKwC,uBAAuB;gBACjDC,uBAAuB,GAAEzC,uBAAAA,KAAK0C,cAAc,qBAAnB1C,oBAAqB,CAACH,QAAQ;gBACvD8C,uBAAuBzC,eAAeF,KAAK4C,qBAAqB;gBAChEC,8BAA8B3C,eAC5BF,KAAK8C,gCAAgC;gBAEvCC,oBAAoB7C,eAAeF,KAAKgD,sBAAsB;gBAC9DC,2BAA2B,AACzB/C,CAAAA,eAAeF,KAAKkD,qCAAqC,KAAK,EAAE,AAAD,EAC/DC,GAAG,CAAC,CAACC,UAAiB,IAAIC,OAAOD,QAAQE,KAAK;YAClD;QACF,OAAO;gBAmIsB;YAlI3B,IAAI,CAACxD,YAAY;gBACf,MAAM,qBAA+D,CAA/D,IAAIyD,MAAM,uDAAV,qBAAA;2BAAA;gCAAA;kCAAA;gBAA8D;YACtE;YACA,MAAM,EAAEC,4BAA4B,EAAE,GACpC/D,QAAQ;YACV,MAAMgE,qBAAqB9G,kBAAkBkD;YAE7C,MAAM6D,SACJ,IAAI,CAACzF,UAAU,CAAC0F,IAAI,KAAK1G,UAAU2G,KAAK,IACxC,IAAI,CAAC3F,UAAU,CAAC0F,IAAI,KAAK1G,UAAU4G,SAAS,GACxC,UACA;YAEN,MAAM,CACJxC,gBACAN,mBACAP,eACAE,uBACAC,uBACAE,kBACA4B,yBACAE,uBACAE,8BACAN,qBACAjC,SACAyC,mBACD,GAAG;gBACFS,6BAAgD;oBAC9C1D;oBACA5B,SAAS,IAAI,CAACA,OAAO;oBACrB4F,UAAUpI;oBACVqI,aAAa,CAAC,IAAI,CAAC3F,KAAK;gBAC1B;gBACAoF,6BAAgD;oBAC9C1D;oBACA5B,SAAS,IAAI,CAACA,OAAO;oBACrB4F,UAAUtI;oBACVuI,aAAa,CAAC,IAAI,CAAC3F,KAAK;gBAC1B;gBACAoF,6BAA4C;oBAC1C1D;oBACA5B,SAAS,IAAI,CAACA,OAAO;oBACrB4F,UAAU1I;oBACV2I,aAAa,CAAC,IAAI,CAAC3F,KAAK;gBAC1B;gBACAyB,YAAY,YACR2D,6BAA4C;oBAC1C1D;oBACA5B,SAAS,IAAI,CAACA,OAAO;oBACrB4F,UAAU,CAAC,SAAS,EAAE1I,gBAAgB;oBACtC2I,aAAa,CAAC,IAAI,CAAC3F,KAAK;oBACxB4F,eAAe;gBACjB,KACC,CAAC;gBACNR,6BAAoD;oBAClD1D;oBACA5B,SAAS,IAAI,CAACA,OAAO;oBACrB4F,UAAUzF,QAAQC,GAAG,CAAC2F,SAAS,GAC3B,CAAC,OAAO,EAAEP,WAAW,QAAQ,QAAQ,UAAUD,mBAAmB,CAAC,EAAEhI,yBAAyB,GAC9FA;oBACJuI,eAAe;oBACfD,aAAa,CAAC,IAAI,CAAC3F,KAAK;gBAC1B;gBACAoF,6BAA+C;oBAC7C1D;oBACA5B,SAAS,IAAI,CAACA,OAAO;oBACrB4F,UAAU,CAAC,OAAO,EAAEvI,mBAAmB,KAAK,CAAC;oBAC7CwI,aAAa,CAAC,IAAI,CAAC3F,KAAK;gBAC1B;gBACAsF,WAAW,SAAS,CAAC9G,sBAAsBiD,WACvC2D,6BAA6B;oBAC3BtF,SAAS,IAAI,CAACA,OAAO;oBACrB4B;oBACAoE,SAAS;oBACTF,eAAe;oBACfF,UAAU,CAAC,UAAU,EAAEjE,QAAQsE,OAAO,CAAC,QAAQ,OAAO,MAAM9I,0BAA0B,GAAG,CAAC;oBAC1F0I,aAAa,CAAC,IAAI,CAAC3F,KAAK;gBAC1B,KACAU;gBACJ4E,WAAW,QACPF,6BAAkC;oBAChCtF,SAAS,IAAI,CAACA,OAAO;oBACrB4B;oBACAgE,UAAU,CAAC,OAAO,EAAElI,0BAA0B,KAAK,CAAC;oBACpDoI,eAAe;oBACfD,aAAa,CAAC,IAAI,CAAC3F,KAAK;gBAC1B,KACA,CAAC;gBACLoF,6BAAqD;oBACnD1D;oBACA5B,SAAS,IAAI,CAACA,OAAO;oBACrB4F,UAAU,CAAC,OAAO,EAAEjI,+BAA+B,KAAK,CAAC;oBACzDmI,eAAe;oBACfD,aAAa,CAAC,IAAI,CAAC3F,KAAK;gBAC1B;gBACA,IAAI,CAACA,KAAK,GACNU,YACA0E,6BAA0D;oBACxD1D;oBACA5B,SAAS,IAAI,CAACA,OAAO;oBACrB6F,aAAa;oBACbD,UAAU,GAAGnI,sBAAsB,KAAK,CAAC;gBAC3C;gBACJ,IAAI,CAACyC,KAAK,GACN,gBACAoF,6BAAkC;oBAChC1D;oBACA5B,SAAS,IAAI,CAACA,OAAO;oBACrB4F,UAAU3I;oBACViJ,WAAW;oBACXL,aAAa;gBACf;gBACJP,6BAAkC;oBAChC1D;oBACA5B,SAAS,IAAI,CAACA,OAAO;oBACrB4F,UAAUxI;oBACVyI,aAAa,CAAC,IAAI,CAAC3F,KAAK;oBACxB4F,eAAe;gBACjB;aACD;YAEDjE,SAAS;gBACPO;gBACAE;gBACAE;gBACAW;gBACAR;gBACAE;gBACAwB;gBACA5B;gBACA8B,uBAAuB,EAAGA,4CAAD,0CAAA,AAACA,wBACtBC,cAAc,qBADO,uCACL,CAAC7C,QAAQsE,OAAO,CAAC,QAAQ,KAAK;gBAClDxB;gBACAE;gBACAE;gBACAE,2BAA2B5B,eAAeM,QAAQ,CAACE,WAAW,CAC3DwC,MAAM,CAAC7G,4BACP2F,GAAG,CAAC,CAACC,UAAY,IAAIC,OAAOD,QAAQE,KAAK;YAC9C;QACF;QAEA,OAAOvD;IACT;IAEA,MAAauE,wBACX7F,GAAsC,EACtC8F,UAA6B,EAC7B;QACA,IAAIlG,QAAQC,GAAG,CAACc,YAAY,KAAK,QAAQ;YACvC,MAAM,EAAEoF,kBAAkB,EAAEC,aAAa,EAAE,GAAGF;YAC9C,IAAI,CAACE,eAAe;YAEpB,yEAAyE;YACzE,SAAS;YACT,IAAI,CAAC3H,wBAAwB0H,qBAAqB;YAElD,KAAK,MAAM,CAACb,MAAMe,QAAQ,IAAIC,OAAOC,OAAO,CAACH,eAAgB;gBAC3D,IAAI,CAACC,SAAS;gBAEd,MAAM,EAAEG,uBAAuB,EAAE,GAC/BpF,QAAQ;gBAEV,MAAM,EAAED,IAAI,EAAE,GAAGC,QAAQ;gBACzB,MAAMC,qBAAqBF,KACzB,yBAAyB,GACzBnB,QAAQsB,GAAG,IACXlD,eAAegC,KAAK,yBAAyB,IAAI,CAACN,kBAAkB;gBAGtEpB,gBACE4G,MACA3G,eACE,MAAMS,wBACJoH,wBACE,GAAGnF,mBAAmB,CAAC,EAAE,IAAI,CAACxB,OAAO,EAAE,EACvCwG;YAKV;QACF;IACF;IAEA,MAAaI,oBACXrG,GAAsC,EACtC8F,UAA6B,EAC7BxD,iBAAkD,EAClDgE,aAAsB,EACK;QAC3B,IAAI1G,QAAQC,GAAG,CAACc,YAAY,KAAK,QAAQ;YACvC,OAAO,AAAC4F,WAAmBC,kBAAkB;QAC/C,OAAO;YACL,IAAIC;YACJ,MAAM,EAAEC,YAAY,EAAE,GAAGZ;YAEzB,IAAIY,cAAc;gBAChB,MAAM,EAAEN,uBAAuB,EAAE,GAC/BpF,QAAQ;gBAEVyF,eAAelI,eACb,MAAMS,wBACJoH,wBAAwB,IAAI,CAAC3G,OAAO,EAAEiH;YAG5C;YACA,MAAM,EAAE3F,IAAI,EAAE,GAAGC,QAAQ;YACzB,MAAMK,aAAaN,KACjB,yBAAyB,GACzBnB,QAAQsB,GAAG,IACXlD,eAAegC,KAAK,yBAAyB,IAAI,CAACN,kBAAkB;YAGtE,MAAM,IAAI,CAACmG,uBAAuB,CAAC7F,KAAK8F;YAExC,wCAAwC;YACxC,kDAAkD;YAClD,oBAAoB;YACpB,MAAMa,mBAAmB,IAAIvI,iBAAiB;gBAC5CwI,IAAI,AACF5F,QAAQ,0BACR6F,MAAM;gBACRC,KAAK,IAAI,CAACnH,KAAK;gBACfoH,gBAAgB/G,IAAIwD,OAAO;gBAC3BwD,6BACElB,WAAWmB,YAAY,CAACD,2BAA2B;gBACrDE,aAAaZ;gBACba,eAAe,GAAG9F,WAAW,CAAC,EAAE,IAAI,CAAC5B,OAAO,CAAC,OAAO,CAAC;gBACrD2H,qBAAqBtB,WAAWmB,YAAY,CAACG,mBAAmB;gBAChEC,oBAAoBvB,WAAWC,kBAAkB;gBACjDuB,aAAa,CAAChB,iBAAiBR,WAAWmB,YAAY,CAACM,cAAc;gBACrEC,sBAAsB,IAAMlF;gBAC5BmF,iBAAiBhB;YACnB;YAIEF,WAAmBC,kBAAkB,GAAGG;YAC1C,OAAOA;QACT;IACF;IAEA,MAAa7F,eACXd,GAAsC,EACtC0H,GAAY,EACZC,YAAiC,EACjCC,UAAmB,EACnBxH,mBAAiD,EACjD;QACA,IAAI,CAACwH,YAAY;YACf,IAAIxH,uCAAAA,oBAAqByH,yBAAyB,EAAE;gBAClDzH,oBAAoByH,yBAAyB,CAACH,KAAK;YACrD,OAAO;gBACLI,QAAQC,KAAK,CAACL;YAChB;QACF;QACA,MAAM,IAAI,CAACjH,6BAA6B,CACtCT,KACA0H,KACA;YACEM,MAAMhI,IAAIiI,GAAG,IAAI;YACjBzE,SAASxD,IAAIwD,OAAO;YACpB0E,QAAQlI,IAAIkI,MAAM,IAAI;QACxB,GACAP;IAEJ;IAEA,qFAAqF,GACrF,AAAOQ,kBAAkBnI,GAAwB,EAG/C;YAmBI8F;QAlBJ,IAAIlG,QAAQC,GAAG,CAACc,YAAY,KAAK,QAAQ;YACvC,MAAM,qBAEL,CAFK,IAAImE,MACR,qEADI,qBAAA;uBAAA;4BAAA;8BAAA;YAEN;QACF;QAEA,IAAIhB,sBAAsBvC,KAAKwC,uBAAuB;QAGtD,MAAM3D,sBAAsB,IAAI,CAACL,sBAAsB,CAACC;QACxD,MAAM8F,aACJ1F,CAAAA,uCAAAA,oBAAqB0F,UAAU,MAAIhC,uCAAAA,oBAAqBsE,MAAM;QAEhE,IAAI,CAACtC,YAAY;YACf,MAAM,qBAAqD,CAArD,IAAIhB,MAAM,6CAAV,qBAAA;uBAAA;4BAAA;8BAAA;YAAoD;QAC5D;QAEA,IAAIuD;QACJ,KAAIvC,2BAAAA,WAAWmB,YAAY,qBAAvBnB,yBAAyBwC,yBAAyB,EAAE;YACtD,IAAI,CAAC1I,QAAQC,GAAG,CAAC0I,kBAAkB,EAAE;gBACnC,MAAM,qBAEL,CAFK,IAAIzD,MACR,uFADI,qBAAA;2BAAA;gCAAA;kCAAA;gBAEN;YACF;YACAuD,eAAezI,QAAQC,GAAG,CAAC0I,kBAAkB;QAC/C,OAAO;YACLF,eAAevC,WAAWuC,YAAY,IAAI;QAC5C;QAEA,OAAO;YAAEvC;YAAYuC;QAAa;IACpC;IAEA,MAAaG,QACXxI,GAAsC,EACtCyI,GAA0B,EAC1B,EACErH,OAAO,EACPsH,kBAAkB,EAInB,EA0CD;YAwCiB1I,8BAiWb8F;QAxYJ,IAAI7E;QAEJ,yEAAyE;QACzE,IAAIrB,QAAQC,GAAG,CAACc,YAAY,KAAK,QAAQ;YACvC,IAAI8H,KAAK;gBACPxK,gCAAgC+B,KAAKyI;YACvC;YAEA,MAAM,EAAE1H,IAAI,EAAE4H,QAAQ,EAAE,GACtB3H,QAAQ;YAEVC,qBAAqBF,KACnB,yBAAyB,GACzBnB,QAAQsB,GAAG,IACXlD,eAAegC,KAAK,yBAAyB,IAAI,CAACN,kBAAkB;YAGtE,MAAMkJ,kBAAkB5K,eAAegC,KAAK;YAE5C,IAAI4I,iBAAiB;gBACnB,IAAI,CAACnJ,OAAO,GAAGkJ,SAAS1H,oBAAoB2H;YAC9C;YACA,MAAM,EAAEC,+BAA+B,EAAE,GAAG,MAAM,MAAM,CACtD;YAEF,gDAAgD;YAChD,uBAAuB;YACvBA,gCAAgC5H,oBAAoB,IAAI,CAACxB,OAAO;QAClE;QACA,MAAMqJ,YAAY,IAAI,CAAC3H,aAAa,CAACC,SAASH;QAC9C,MAAM,EAAE2B,cAAc,EAAEN,iBAAiB,EAAEwB,mBAAmB,EAAE,GAAGgF;QAEnE,MAAM,EAAE9F,QAAQ,EAAEU,IAAI,EAAER,QAAQ,EAAE,GAAGN;QAErC,MAAMxC,sBAAsB,IAAI,CAACL,sBAAsB,CAACC;QACxD,MAAM8F,aACJ1F,CAAAA,uCAAAA,oBAAqB0F,UAAU,MAAIhC,uCAAAA,oBAAqBsE,MAAM;QAEhE,6BAA6B;QAC7B,MAAMW,WAAW/I,EAAAA,+BAAAA,IAAIwD,OAAO,CAAC,oBAAoB,qBAAhCxD,6BAAkCgJ,QAAQ,CAAC,YACxD,UACA;QAEJ,4DAA4D;QAC5D,IAAI,CAAChL,eAAegC,KAAK,YAAY;YACnC,MAAMiJ,UAAUnF,CAAAA,uCAAAA,oBAAqBsE,MAAM,CAACnB,YAAY,CAACiC,eAAe,IACpE,GAAGH,SAAS,GAAG,EAAE/I,IAAIwD,OAAO,CAAC2F,IAAI,IAAI,cAAcnJ,IAAIiI,GAAG,EAAE,GAC5D,GAAGc,SAAS,GAAG,EAAE3I,CAAAA,uCAAAA,oBAAqBH,QAAQ,KAAI,cAAcD,IAAIiI,GAAG,EAAE;YAE7ElK,eAAeiC,KAAK,WAAWiJ;YAC/BlL,eAAeiC,KAAK,gBAAgB+I;QACtC;QAEA,IAAI/F,UAAU;YACZhD,IAAIiI,GAAG,GAAGzK,iBAAiBwC,IAAIiI,GAAG,IAAI,KAAKjF;QAC7C;QAEA,MAAMoG,YAAY/L,YAAY2C,IAAIiI,GAAG,IAAI;QACzClK,eAAeiC,KAAK,aAAa;eAAKoJ,6BAAAA,UAAWC,KAAK,AAAnB;QAAoB;QACvD,iDAAiD;QACjD,IAAI,CAACD,WAAW;YACd;QACF;QACA,IAAIE,oBAAoB;QAExB,IAAIxL,cAAcsL,UAAUG,QAAQ,IAAI,KAAK,gBAAgB;YAC3DD,oBAAoB;YACpBF,UAAUG,QAAQ,GAAG1L,kBAAkBuL,UAAUG,QAAQ,IAAI;QAC/D;QACA,IAAI,CAACjJ,YAAY,CAACN,KAAKoJ;QACvB,IAAII,mBAAmBJ,UAAUG,QAAQ,IAAI;QAC7C,MAAME,gBAAgB;YAAE,GAAGL,UAAUC,KAAK;QAAC;QAC3C,MAAMK,gBAAgBnM,eAAe6D;QAErC,IAAIuI;QACJ,IAAIC;QAEJ,IAAIlG,MAAM;YACRiG,eAAerM,oBACb8L,UAAUG,QAAQ,IAAI,KACtB7F,KAAKmG,OAAO;YAGd,IAAIF,aAAaC,cAAc,EAAE;gBAC/B5J,IAAIiI,GAAG,GAAG,GAAG0B,aAAaJ,QAAQ,GAAGH,UAAUU,MAAM,EAAE;gBACvDN,mBAAmBG,aAAaJ,QAAQ;gBAExC,IAAI,CAACK,gBAAgB;oBACnBA,iBAAiBD,aAAaC,cAAc;gBAC9C;YACF;QACF;QAEA,uEAAuE;QACvE,yEAAyE;QACzE,2CAA2C;QAC3C,MAAMG,oBAAoBrL,iBAAiB0C;QAE3C,MAAM4I,cAAcvM,eAAe;YACjCwM,MAAMF;YACNrG;YACAV;YACAE;YACAwG;YACAQ,eAAetK,QAAQC,GAAG,CAACsK,qBAAqB;YAChDtH,eAAeC,QAAQF,eAAeC,aAAa;QACrD;QAEA,MAAMuH,eAAe1M,mBACnBgG,wBAAAA,KAAM2G,OAAO,EACb1M,YAAYyL,WAAWpJ,IAAIwD,OAAO,GAClCoG;QAGF,IAAI9G,QAAQsH,eAAe;YACzBrM,eAAeiC,KAAK,kBAAkB8C,QAAQsH;QAChD;QAEA,MAAME,gBACJtM,eAAegC,KAAK,qBACpBoK,gCAAAA,aAAcE,aAAa,MAC3B5G,wBAAAA,KAAM4G,aAAa;QAErB,8DAA8D;QAC9D,0CAA0C;QAC1C,IAAIA,iBAAiB,CAACV,gBAAgB;YACpCR,UAAUG,QAAQ,GAAG,CAAC,CAAC,EAAEe,gBAAgBlB,UAAUG,QAAQ,KAAK,MAAM,KAAKH,UAAUG,QAAQ,EAAE;QACjG;QACA,MAAMgB,SACJvM,eAAegC,KAAK,aAAa4J,kBAAkBU;QAErD,wDAAwD;QACxD,mDAAmD;QACnD,MAAM,EAAEE,aAAa,EAAEC,kBAAkB,EAAE,GAAGT,YAAYU,cAAc,CACtE1K,KACAoJ;QAEF,MAAMuB,mBAAmBzE,OAAO0E,IAAI,CAACJ;QACrCtE,OAAO2E,MAAM,CAACzB,UAAUC,KAAK,EAAEoB,mBAAmBpB,KAAK;QAEvD,qDAAqD;QACrD,0BAA0B;QAC1B,IAAI3F,MAAM;YACR0F,UAAUG,QAAQ,GAAGjM,oBACnB8L,UAAUG,QAAQ,IAAI,KACtB7F,KAAKmG,OAAO,EACZN,QAAQ;YAEVkB,mBAAmBlB,QAAQ,GAAGjM,oBAC5BmN,mBAAmBlB,QAAQ,IAAI,KAC/B7F,KAAKmG,OAAO,EACZN,QAAQ;QACZ;QAEA,IAAIuB,SACF9M,eAAegC,KAAK;QAEtB,gCAAgC;QAChC,IAAI,CAAC8K,UAAUd,YAAYe,mBAAmB,EAAE;YAC9C,MAAMC,cAAchB,YAAYe,mBAAmB,CACjDlN,kBACE4M,CAAAA,sCAAAA,mBAAoBlB,QAAQ,KAAIH,UAAUG,QAAQ,IAAI;YAG1D,MAAM0B,eAAejB,YAAYkB,2BAA2B,CAC1DF,eAAe,CAAC,GAChB;YAGF,IAAIC,aAAaE,cAAc,EAAE;gBAC/BL,SAASG,aAAaH,MAAM;YAC9B;QACF;QAEA,6DAA6D;QAC7D,8DAA8D;QAC9D,uEAAuE;QAEvE,2DAA2D;QAC3D,gEAAgE;QAChE,oEAAoE;QACpE,kEAAkE;QAClE,oEAAoE;QACpE,MAAMzB,QAAQrL,eAAegC,KAAK,YAAY;YAC5C,GAAGoJ,UAAUC,KAAK;QACpB;QAEA,MAAM+B,iBAAiB,IAAIC;QAC3B,MAAMC,oBAAoB,EAAE;QAE5B,6DAA6D;QAC7D,8DAA8D;QAC9D,gEAAgE;QAChE,yCAAyC;QACzC,IACE,IAAI,CAAC9L,UAAU,CAAC0F,IAAI,KAAK1G,UAAU2G,KAAK,IACxC,IAAI,CAAC3F,UAAU,CAAC0F,IAAI,KAAK1G,UAAU4G,SAAS,EAC5C;YACA,KAAK,MAAMmG,OAAO;mBACbZ;mBACAzE,OAAO0E,IAAI,CAACZ,YAAYwB,mBAAmB,IAAI,CAAC;aACpD,CAAE;gBACD,yDAAyD;gBACzD,8DAA8D;gBAC9D,+DAA+D;gBAC/D,+DAA+D;gBAC/D,8DAA8D;gBAC9D,sDAAsD;gBACtD,MAAMC,gBAAgBC,MAAMC,OAAO,CAAClC,aAAa,CAAC8B,IAAI,IAClD9B,aAAa,CAAC8B,IAAI,CAACxK,IAAI,CAAC,MACxB0I,aAAa,CAAC8B,IAAI;gBAEtB,MAAMK,aAAaF,MAAMC,OAAO,CAACtC,KAAK,CAACkC,IAAI,IACvClC,KAAK,CAACkC,IAAI,CAACxK,IAAI,CAAC,MAChBsI,KAAK,CAACkC,IAAI;gBAEd,IAAI,CAAEA,CAAAA,OAAO9B,aAAY,KAAMgC,kBAAkBG,YAAY;oBAC3DN,kBAAkBO,IAAI,CAACN;gBACzB;YACF;QACF;QAEAvB,YAAY8B,eAAe,CAAC9L,KAAKsL;QACjC,0IAA0I;QAC1I,uGAAuG;QACvG,IAAI,EAAClL,uCAAAA,oBAAqB2L,qBAAqB,GAAE;YAC/C/B,YAAYgC,oBAAoB,CAAC3C,OAAO+B;QAC1C,OAAO;YACLpB,YAAYiC,mBAAmB,CAAC5C,OAAO,EAAE;QAC3C;QACAW,YAAYiC,mBAAmB,CAACxC,eAAe6B;QAE/C,IAAI5B,eAAe;YACjB,MAAMwC,cAAclC,YAAYkB,2BAA2B,CAAC7B,OAAO;YAEnE,MAAM4B,eAAejB,YAAYkB,2BAA2B,CAC1DJ,UAAU,CAAC,GACX;YAGF,IAAIqB;YAEJ,IACE,6CAA6C;YAC7C,iDAAiD;YACjD,sCAAsC;YACtC9C,SACAyB,UACAG,aAAaE,cAAc,IAC3Be,YAAYf,cAAc,IAC1BC,eAAegB,IAAI,GAAG,KACtBlG,OAAO0E,IAAI,CAACK,aAAaH,MAAM,EAAEuB,MAAM,IACrCnG,OAAO0E,IAAI,CAACsB,YAAYpB,MAAM,EAAEuB,MAAM,EACxC;gBACAF,sBAAsBD,YAAYpB,MAAM;gBACxCA,SAAS5E,OAAO2E,MAAM,CAACqB,YAAYpB,MAAM;YAC3C,OAAO;gBACLqB,sBACElB,aAAaE,cAAc,IAAIL,SAC3BA,SACAoB,YAAYf,cAAc,GACxB9B,QACA,CAAC;YACX;YAEArJ,IAAIiI,GAAG,GAAG+B,YAAYsC,sBAAsB,CAC1CtM,IAAIiI,GAAG,IAAI,KACXkE;YAEF/C,UAAUG,QAAQ,GAAGS,YAAYsC,sBAAsB,CACrDlD,UAAUG,QAAQ,IAAI,KACtB4C;YAEF3C,mBAAmBQ,YAAYsC,sBAAsB,CACnD9C,kBACA2C;YAGF,kCAAkC;YAClC,IAAI,CAACrB,QAAQ;gBACX,IAAIoB,YAAYf,cAAc,EAAE;oBAC9BL,SAAS5E,OAAO2E,MAAM,CAAC,CAAC,GAAGqB,YAAYpB,MAAM;oBAE7C,4CAA4C;oBAC5C,iBAAiB;oBACjB,IAAK,MAAMS,OAAOvB,YAAYwB,mBAAmB,CAAE;wBACjD,OAAOnC,KAAK,CAACkC,IAAI;oBACnB;gBACF,OAAO;oBACL,qCAAqC;oBACrC,MAAMP,cAAchB,YAAYe,mBAAmB,oBAA/Bf,YAAYe,mBAAmB,MAA/Bf,aAClBnM,kBACE8L,CAAAA,gCAAAA,aAAcJ,QAAQ,KAAIH,UAAUG,QAAQ,IAAI;oBAGpD,qDAAqD;oBACrD,kDAAkD;oBAClD,2BAA2B;oBAC3B,IAAIyB,aAAa;wBACfF,SAAS5E,OAAO2E,MAAM,CAAC,CAAC,GAAGG;oBAC7B;gBACF;YACF;QACF;QAEA,sDAAsD;QACtD,iDAAiD;QACjD,oDAAoD;QACpD,KAAK,MAAMO,OAAOH,eAAgB;YAChC,IAAI,CAAEG,CAAAA,OAAO9B,aAAY,GAAI;gBAC3B,OAAOJ,KAAK,CAACkC,IAAI;YACjB,iDAAiD;YACjD,gDAAgD;YAChD,+BAA+B;YACjC,OAAO,IACL9B,aAAa,CAAC8B,IAAI,IAClBlC,KAAK,CAACkC,IAAI,IACV9B,aAAa,CAAC8B,IAAI,KAAKlC,KAAK,CAACkC,IAAI,EACjC;gBACAlC,KAAK,CAACkC,IAAI,GAAG9B,aAAa,CAAC8B,IAAI;YACjC;QACF;QAEA,MAAM,EAAEgB,oBAAoB,EAAEC,uBAAuB,EAAE,GACrD5O,0BAA0BoC,KAAKsC,kBAAkBK,OAAO;QAE1D,IAAI8J,cAAc;QAClB,IAAIC;QAEJ,wCAAwC;QACxC,IAAI9M,QAAQC,GAAG,CAACc,YAAY,KAAK,UAAU8H,KAAK;YAC9C,MAAM,EAAEkE,iBAAiB,EAAE,GACzB3L,QAAQ;YAEV0L,cAAcC,kBACZ3M,KACAyI,KACAnG,kBAAkBK,OAAO,EACzBG,QAAQ4F;YAEV+D,cAAcC,gBAAgB;QAChC;QAEA,IAAI,CAAC5G,YAAY;YACf,MAAM,qBAAqD,CAArD,IAAIhB,MAAM,6CAAV,qBAAA;uBAAA;4BAAA;8BAAA;YAAoD;QAC5D;QAEA,IAAIlF,QAAQC,GAAG,CAACc,YAAY,KAAK,QAAQ;YACvC,MAAM,EAAEiM,2BAA2B,EAAE,GACnC5L,QAAQ;YAEV4L,4BACE9J,QACEgD,WAAWmB,YAAY,CAAC4F,wCAAwC;QAGtE;QAEA,IAAIC,mBAAmB/C;QACvB,IAAIxM,eAAeuP,qBAAqBhC,QAAQ;YAC9CgC,mBAAmB9C,YAAYsC,sBAAsB,CACnDQ,kBACAhC;QAEJ;QAEA,IAAIgC,qBAAqB,UAAU;YACjCA,mBAAmB;QACrB;QAEA,IACErE,OACA3F,QAAQ9C,IAAIwD,OAAO,CAAC,gBAAgB,KACnC,CAAA,CAACiF,IAAIsE,UAAU,IAAItE,IAAIsE,UAAU,KAAK,GAAE,GACzC;YACAtE,IAAIuE,SAAS,CACX,yBACAlO,oBAAoB,GAAGyL,SAAS,CAAC,CAAC,EAAEA,QAAQ,GAAG,KAAKR,mBAAmB;QAE3E;QACA,MAAMkD,0BAA0BH;QAEhC,oDAAoD;QACpD,mBAAmB;QACnB,IAAI;YACFA,mBAAmBjO,iBAAiBiO;QACtC,EAAE,OAAOI,GAAG,CAAC;QAEbJ,mBAAmBhO,oBAAoBgO;QACvC/O,eAAeiC,KAAK,oBAAoB8M;QAExC,IAAIzE;QACJ,KAAIvC,2BAAAA,WAAWmB,YAAY,qBAAvBnB,yBAAyBwC,yBAAyB,EAAE;YACtD,IAAI,CAAC1I,QAAQC,GAAG,CAAC0I,kBAAkB,EAAE;gBACnC,MAAM,qBAEL,CAFK,IAAIzD,MACR,uFADI,qBAAA;2BAAA;gCAAA;kCAAA;gBAEN;YACF;YACAuD,eAAezI,QAAQC,GAAG,CAAC0I,kBAAkB;QAC/C,OAAO;YACLF,eAAevC,WAAWuC,YAAY,IAAI;QAC5C;QAEA,OAAO;YACLgB;YACAI;YACAD;YACAsB;YACA1B;YACAmB;YACAjB;YACAO,OAAO,EAAEnG,wBAAAA,KAAMmG,OAAO;YACtBS;YACAmC;YACAC;YACAhD;YACAoD;YACAG;YACAV;YACAC;YACA,GAAG1D,SAAS;YACZ,6FAA6F;YAC7F,2BAA2B;YAC3BhD,YACEA;YACF1F;YACAiI;YACA8E,kBACErH,WAAWmB,YAAY,CAACmG,mBAAmB,IAAI/E;QACnD;IACF;IAEOgF,iBAAiBrN,GAAsC,EAAE;QAC9D,IAAI,CAAC,IAAI,CAACsN,aAAa,EAAE;YACvB,MAAMpG,cAAclJ,eAAegC,KAAK,kBAAkB;YAC1D,IAAI,CAACsN,aAAa,GAAG,IAAI7O,cAAcyI;QACzC;QACA,OAAO,IAAI,CAACoG,aAAa;IAC3B;IAEA,MAAaC,eAAe,EAC1BvN,GAAG,EACH8F,UAAU,EACV0H,QAAQ,EACRC,SAAS,EACTC,UAAU,EACVpL,iBAAiB,EACjBqL,iBAAiB,EACjBpB,oBAAoB,EACpBC,uBAAuB,EACvBoB,iBAAiB,EACjBC,SAAS,EACTvH,aAAa,EAcd,EAAE;QACD,MAAMgH,gBAAgB,IAAI,CAACD,gBAAgB,CAACrN;QAC5C,MAAM8N,aAAa,MAAMR,cAAcS,GAAG,CAACP,UAAUI,mBAAmB;YACtEH;YACAC;YACAC;YACApB;YACAyB,YAAYhO,IAAIwD,OAAO,CAACyK,OAAO,KAAK;YACpC,sEAAsE;YACtE,wCAAwC;YACxCC,cAAclO,IAAIwD,OAAO,CAAC,kBAAkB;YAC5CmD,kBAAkB,MAAM,IAAI,CAACN,mBAAmB,CAC9CrG,KACA8F,YACAxD,mBACAgE;YAEFuH;QACF;QAEA,IAAI,CAACC,YAAY;YACf,IACEN,YACA,kEAAkE;YAClE,CAAEjB,CAAAA,wBAAwBC,uBAAsB,GAChD;gBACA,gEAAgE;gBAChE,oEAAoE;gBACpE,kEAAkE;gBAClE,mEAAmE;gBACnE,yBAAyB;gBACzB,MAAM,qBAA8D,CAA9D,IAAI1H,MAAM,sDAAV,qBAAA;2BAAA;gCAAA;kCAAA;gBAA6D;YACrE;QACF;QACA,OAAOgJ;IACT;AACF","ignoreList":[0]}