{"version":3,"file":"index.mjs","sources":["../src/rollup-plugin-esbuild.ts","../src/rollup-plugin-types.ts","../src/rollup.ts"],"sourcesContent":["import { readFile } from 'node:fs/promises'\nimport { builtinModules, createRequire } from 'node:module'\nimport Path from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport type { OutputChunk, OutputOptions, Plugin, SourceMap } from 'rollup'\n\nexport function esbuild(\n  config: boolean | import('esbuild').BuildOptions,\n  minify: boolean = process.env['CI'] != null,\n): Plugin {\n  return {\n    name: 'esbuild',\n    async generateBundle(options, bundle) {\n      invariant(options.file, 'esbuild requires a single output file')\n      const entry = Path.basename(options.file)\n      const dir = Path.dirname(options.file)\n      const chunk = bundle[entry] as OutputChunk\n      invariant(chunk, 'entry chunk not found')\n      const esbuild = await import('esbuild')\n      config = config === true ? {} : config\n      invariant(config)\n      const format = config.format ?? getFormat(options)\n      const { errors, warnings, outputFiles } = await esbuild.build({\n        platform: 'neutral',\n        format,\n        ...config,\n        absWorkingDir: dir,\n        entryPoints: [options.file],\n        mainFields: ['module', 'main'],\n        plugins: [\n          BundleLoaderPlugin(),\n          NativeNodePackageResolver(config.platform),\n          NodeModulesPackageResolver(),\n        ],\n        minify,\n        write: false,\n        bundle: true,\n        splitting: false,\n        sourcemap: 'external',\n        outfile: `out/${entry}`,\n      })\n\n      errors.forEach((error) => {\n        this.error({\n          message: error.text,\n          loc:\n            error.location != null\n              ? {\n                  file: error.location.file,\n                  line: error.location.line,\n                  column: error.location.column,\n                }\n              : undefined,\n        })\n      })\n      warnings.forEach((warning) => {\n        this.warn({\n          message: warning.text,\n          loc:\n            warning.location != null\n              ? {\n                  file: warning.location.file,\n                  line: warning.location.line,\n                  column: warning.location.column,\n                }\n              : undefined,\n        })\n      })\n      invariant(outputFiles)\n      const outDir = Path.join(dir, 'out')\n      outputFiles.forEach((outputFile) => {\n        const id = Path.relative(outDir, outputFile.path)\n        if (id.endsWith('.map')) {\n          const chunk = bundle[id.slice(0, -4)] as OutputChunk\n          invariant(chunk)\n          chunk.map = createSourceMap(outputFile.text)\n        } else {\n          bundle[id] = {\n            ...chunk,\n            type: 'chunk',\n            fileName: Path.resolve(dir, id),\n            code: outputFile.text,\n          }\n        }\n      })\n\n      function BundleLoaderPlugin(): import('esbuild').Plugin {\n        return {\n          name: 'bundle-loader',\n          setup(build) {\n            build.onResolve({ filter: /./ }, ({ path }) => {\n              if (!path.startsWith(dir)) return null\n              const id = Path.relative(dir, path)\n              const chunk = bundle[id] as OutputChunk | undefined\n              if (chunk == null) return null\n              return { namespace: 'bundle', path: id }\n            })\n            build.onLoad(\n              { namespace: 'bundle', filter: /./ },\n              ({ path: id }) => {\n                const chunk = bundle[id] as OutputChunk | undefined\n                if (chunk == null) return null\n                const sourcemap = chunk.map?.toUrl()\n                const code =\n                  chunk.code +\n                  (sourcemap != null\n                    ? `\\n//# sourceMappingURL=${sourcemap}`\n                    : '')\n\n                return { contents: code, resolveDir: dir }\n              },\n            )\n          },\n        }\n      }\n    },\n  }\n}\n\nfunction NativeNodePackageResolver(\n  platform?: import('esbuild').Platform,\n): import('esbuild').Plugin {\n  return {\n    name: 'node-package-loader',\n    setup(build) {\n      if (platform === 'node') return\n      build.onResolve({ filter: /./ }, async ({ path }) => {\n        const name = path.startsWith('node:') ? path.slice(5) : path\n        if (builtinModules.includes(name)) {\n          const dir = Path.dirname(getCurrentFileName())\n          const absPackagePath = Path.resolve(\n            dir,\n            '../node_modules/',\n            '@jspm/core',\n            'nodelibs/browser',\n            `${name}.js`,\n          )\n\n          return {\n            path: absPackagePath,\n          }\n        }\n\n        return null\n      })\n    },\n  }\n}\n\nfunction NodeModulesPackageResolver(): import('esbuild').Plugin {\n  return {\n    name: 'node-modules-loader',\n    setup(build) {\n      build.onResolve(\n        { filter: /^[^.\\\\/]/ },\n        async ({ path, kind, namespace, resolveDir }) => {\n          if (build.initialOptions.external?.includes(path) === true) {\n            return null\n          }\n          if (resolveDir == null || namespace !== 'bundle') return null\n          if (path.startsWith('node:') || builtinModules.includes(path)) {\n            return null\n          }\n\n          const require = createRequire(Path.resolve(resolveDir, 'index.js'))\n          try {\n            const absPackagePath = require.resolve(`${path}/package.json`)\n            if (absPackagePath == null) return null\n            const pkg = JSON.parse(await readFile(absPackagePath, 'utf-8'))\n            const main =\n              kind === 'require-call' ? pkg.main : pkg.module ?? pkg.main\n            if (main == null) return null\n            return { path: Path.resolve(Path.dirname(absPackagePath), main) }\n          } catch {\n            const absPackagePath = require.resolve(path)\n            if (absPackagePath == null) return null\n            return { path: absPackagePath }\n          }\n        },\n      )\n    },\n  }\n}\n\nfunction getFormat(options: OutputOptions): import('esbuild').Format {\n  switch (options.format) {\n    case 'es':\n    case 'esm':\n    case 'module':\n      return 'esm'\n    case 'cjs':\n    case 'commonjs':\n      return 'cjs'\n    case 'iife':\n      return 'iife'\n    default:\n      throw new Error(`Unsupported format ${String(options.format)}`)\n  }\n}\n\nfunction invariant(\n  value: unknown,\n  message: string = 'invariant failed',\n): asserts value {\n  if (value == null || value === false) {\n    throw new Error(message)\n  }\n}\n\nfunction getCurrentFileName(): string {\n  try {\n    return fileURLToPath(import.meta.url)\n  } catch {\n    return __filename\n  }\n}\n\nfunction createSourceMap(contents: string): SourceMap {\n  const map = JSON.parse(contents)\n\n  return {\n    ...map,\n    toString: () => contents,\n    toUrl: () =>\n      `data:application/json;charset=utf-8;base64,${Buffer.from(\n        contents,\n      ).toString('base64')}`,\n  }\n}\n","import * as Path from 'node:path'\nimport { OutputAsset, Plugin, rollup } from 'rollup'\nimport dts from 'rollup-plugin-dts'\n\nexport function types(enabled = false): Plugin {\n  const cache = new Map<string, OutputAsset>()\n  let input: string | null = null\n\n  return {\n    name: 'types',\n    options(options) {\n      if (typeof options.input === 'string') {\n        input = options.input\n      }\n    },\n    async generateBundle(options, bundle) {\n      if (!enabled) return\n      if (options.file == null || input == null) return\n      if (options.file.endsWith('.d.ts')) return // already a types file\n\n      const dir = Path.dirname(options.file)\n      const entry = Path.basename(input.replace(/\\.ts$/, '.d.ts'))\n      if (bundle[entry] == null) return\n\n      Object.keys(bundle)\n        .filter((file) => file.endsWith('.d.ts') || file.endsWith('.d.ts.map'))\n        .forEach((id) => {\n          if (bundle[id]?.type !== 'asset')\n            throw new Error('Expected asset for .d.ts file')\n          cache.set(id, bundle[id] as OutputAsset)\n          // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n          delete bundle[id]\n        })\n\n      function isAsset(id: string): boolean {\n        const relativeId = Path.relative(dir, id)\n        return cache.has(relativeId)\n      }\n\n      const build = await rollup({\n        input: Path.resolve(dir, entry),\n        plugins: [\n          {\n            name: 'bundle',\n            resolveId(id, importer) {\n              if (!Path.isAbsolute(id)) {\n                if (!id.startsWith('.') || importer == null) {\n                  return { id, external: true }\n                }\n\n                id = Path.resolve(Path.dirname(importer), id)\n              }\n\n              if (!id.endsWith('.d.ts')) {\n                if (isAsset(id + '.d.ts')) id = id + '.d.ts'\n                else if (isAsset(id + '/index.d.ts')) id = id + '/index.d.ts'\n              }\n\n              if (!isAsset(id)) return\n              return id\n            },\n            load(id) {\n              if (!isAsset(id)) return\n              const relativeId = Path.relative(dir, id)\n              const codeAsset = cache.get(relativeId) as OutputAsset | null\n              if (codeAsset == null) return\n              const mapAsset = cache.get(\n                relativeId + '.map',\n              ) as OutputAsset | null\n              if (mapAsset == null) throw new Error('Enabled declaration maps')\n\n              return {\n                code: codeAsset.source as string,\n                map: JSON.parse(mapAsset.source as string),\n              }\n            },\n          },\n          dts(),\n        ],\n      })\n\n      const { output } = await build.generate({\n        format: 'module',\n        sourcemap: true,\n        file: entry,\n      })\n\n      output.forEach((chunk) => {\n        bundle[chunk.fileName] = chunk\n      })\n    },\n\n    buildEnd() {\n      cache.clear()\n    },\n  }\n}\n","import type { BuildOptions as ESBuildOptions } from 'esbuild'\nimport glob from 'fast-glob'\nimport * as FS from 'fs'\nimport * as Path from 'path'\nimport type { OutputOptions, Plugin, RollupOptions } from 'rollup'\nimport { TopologicalSort } from 'topological-sort'\nimport type {\n  CompilerOptions,\n  ModuleKind,\n  parseJsonSourceFileConfigFileContent,\n  readJsonConfigFile,\n  sys\n} from 'typescript'\nimport { inspect } from 'util'\nimport { esbuild } from './rollup-plugin-esbuild'\nimport { types } from './rollup-plugin-types'\n\nexport type ExtendedOutputOptions = OutputOptions & {\n  bundle?: boolean | ESBuildOptions\n}\nexport interface BuildConfig {\n  useMain: boolean\n  sources: Record<string, ExtendedOutputOptions[]>\n  external: string[]\n}\nexport interface PackageJson {\n  name?: string\n  version?: string\n  main?: string\n  module?: string\n  unpkg?: string\n  types?: string\n  dependencies: Record<string, string>\n  devDependencies: Record<string, string>\n  peerDependencies: Record<string, string>\n  buildConfig: BuildConfig\n  publishConfig: Partial<{\n    main: string\n    module: string\n    types: string\n    unpkg: string\n  }>\n}\nexport interface PackageInfo {\n  packageRoot: string\n  packageJson: PackageJson\n  tsconfig?: {\n    configFile: string\n    configOptions: CompilerOptions\n  }\n  rollupOptions: RollupOptions & {\n    input: string\n    output: OutputOptions[]\n    external: string[]\n    plugins: Plugin[]\n  }\n}\nexport interface GenerateOptions {\n  rootDir?: string\n  dirPatterns?: string[]\n  extend(info: PackageInfo): RollupOptions | RollupOptions[]\n}\n\nexport function generateRollupOptions(\n  options: GenerateOptions,\n): RollupOptions[] {\n  const typeConfigs: RollupOptions[] = []\n  const configs: RollupOptions[] = []\n\n  const packagesDir =\n    options.rootDir != null\n      ? Path.isAbsolute(options.rootDir)\n        ? options.rootDir\n        : Path.resolve(process.cwd(), options.rootDir)\n      : process.cwd()\n\n  const { packageNames, resolvedPackages } = getPackages(\n    packagesDir,\n    options.dirPatterns ?? ['**'],\n  )\n\n  const filterByFormat = createFilter<ExtendedOutputOptions>(\n    process.env['BUILD_FORMATS'],\n    (value) => [value.format],\n  )\n\n  const filterBySource = createFilter<string>(\n    process.env['BUILD_SOURCES'],\n    (value) => [value],\n  )\n\n  const filterByPackageName = createFilter<string>(\n    process.env['BUILD_PACKAGES'],\n    (value) => [resolvedPackages.get(value)?.name, value],\n  )\n\n  packageNames.filter(filterByPackageName).forEach((packageName) => {\n    const project = (...segments: string[]): string => {\n      return Path.resolve(packagesDir, packageName, ...segments)\n    }\n\n    const projectIf = (...segments: string[]): string | undefined => {\n      const fileName = project(...segments)\n      if (FS.existsSync(fileName)) return fileName\n      else return undefined\n    }\n\n    const packageJson = resolvedPackages.get(packageName)\n\n    if (packageJson == null) return // should never happen.\n\n    const external = [\n      ...Object.keys(packageJson.dependencies),\n      ...Object.keys(packageJson.peerDependencies),\n      ...(packageJson.buildConfig.external ?? []),\n    ]\n\n    const sources: BuildConfig['sources'] = {\n      ...packageJson.buildConfig.sources,\n    }\n\n    if (packageJson.buildConfig.useMain) {\n      const key =\n        packageJson.main?.endsWith('.ts') === true\n          ? packageJson.main\n          : 'src/index.ts'\n      const outputs = Object.entries({\n        ...packageJson,\n        ...packageJson.publishConfig,\n      })\n        .map(([key, value]) => ({ key, value }))\n        .filter(\n          (\n            item,\n          ): item is {\n            key: 'main' | 'module' | 'unpkg' | 'exports'\n            value: string\n          } => /^(main|module|unpkg)$/.test(item.key),\n        )\n        .flatMap<ExtendedOutputOptions>(({ key: type, value: file }) => {\n          if (type !== 'exports') {\n            return {\n              file,\n              format:\n                type === 'main' ? 'cjs' : type === 'unpkg' ? 'iife' : 'esm',\n            }\n          }\n\n          return Object.entries(flatten(file))\n            .filter(([key]) => key.startsWith('.|'))\n            .map(([key, value]) => ({\n              file: value,\n              format: key.endsWith('|require')\n                ? 'cjs'\n                : key.endsWith('|import')\n                ? 'esm'\n                : key.includes('|node|')\n                ? 'cjs'\n                : 'esm',\n            }))\n        })\n\n      if (key in sources) {\n        sources[key] = [...outputs, ...(sources[key] ?? [])]\n      } else {\n        sources[key] = outputs\n      }\n    }\n\n    let tsconfig: PackageInfo['tsconfig']\n    const configFile = projectIf('tsconfig.json')\n    if (configFile != null) {\n      tsconfig = {\n        configFile,\n        configOptions: getTSConfig(configFile),\n      }\n    }\n\n    Object.entries(sources)\n      .filter(([input]) => filterBySource(input))\n      .forEach(([input, outputs]) => {\n        const bundles = Array.from(outputs)\n          .filter(filterByFormat)\n          .map<OutputOptions>(({ bundle, ...output }) => ({\n            sourcemap: true,\n            preferConst: true,\n            exports: 'auto',\n            ...output,\n            file: output.file != null ? project(output.file) : output.file,\n            plugins:\n              bundle != null && bundle !== false ? [esbuild(bundle)] : [],\n          }))\n\n        const relInput = Path.relative(process.cwd(), project(input))\n        const packageRoot = project('.')\n\n        if (bundles.length > 0) {\n          const config = options.extend({\n            packageRoot,\n            packageJson,\n            tsconfig,\n            rollupOptions: {\n              input: relInput,\n              output: bundles,\n              external: external.slice(),\n              plugins: [types()],\n            },\n          })\n\n          configs.push(...(Array.isArray(config) ? config : [config]))\n        }\n      })\n  })\n\n  // FIXME: Disable eslint rule as it conflicts with typescript config.\n  // eslint-disable-next-line @typescript-eslint/dot-notation\n  if (process.env['DEBUG'] === 'rollup-monorepo-utils') {\n    console.log('Generated rollup configs:', inspect(configs, false, 4))\n  }\n\n  return [...typeConfigs, ...configs]\n}\n\nexport function getPackages(\n  rootDir: string,\n  patterns: string[] = ['**'],\n): {\n  packageNames: string[]\n  fullPackageNames: string[]\n  resolvedPackages: Map<string, PackageJson>\n} {\n  const packageJsonFiles = glob.sync(\n    patterns.map((pattern) => `${pattern.replace(/\\/$/, '')}/package.json`),\n    {\n      cwd: rootDir,\n      onlyFiles: true,\n      ignore: ['**/node_modules/**'],\n    },\n  )\n  const resolvedPackages = new Map<string, PackageJson>()\n  const nodes = new Map<string, string>()\n\n  packageJsonFiles.forEach((packageJsonFile) => {\n    const packageRelativePath = Path.dirname(packageJsonFile)\n    const packageFile = Path.resolve(rootDir, packageJsonFile)\n\n    if (FS.existsSync(packageFile)) {\n      const rawPackageJson = JSON.parse(\n        FS.readFileSync(packageFile, 'utf-8'),\n      ) as Partial<PackageJson>\n      const packageJson: PackageJson = {\n        dependencies: {},\n        devDependencies: {},\n        peerDependencies: {},\n        publishConfig: {},\n        ...rawPackageJson,\n        buildConfig: {\n          useMain: true,\n          sources: {},\n          external: [],\n          ...rawPackageJson.buildConfig,\n        },\n      }\n\n      resolvedPackages.set(packageRelativePath, packageJson)\n\n      nodes.set(packageJson.name ?? packageRelativePath, packageRelativePath)\n    }\n  })\n\n  const sortOp = new TopologicalSort(nodes)\n\n  resolvedPackages.forEach((packageJson, packageName) => {\n    new Set([\n      ...Object.keys(packageJson.dependencies),\n      ...Object.keys(packageJson.devDependencies),\n    ]).forEach((dependencyName) => {\n      if (nodes.has(dependencyName)) {\n        sortOp.addEdge(dependencyName, packageJson.name ?? packageName)\n      }\n    })\n  })\n  const sortedPackageNames = Array.from(sortOp.sort().keys())\n  const packageDirNames = sortedPackageNames.map((key) => nodes.get(key) ?? key)\n\n  return {\n    packageNames: packageDirNames,\n    fullPackageNames: sortedPackageNames,\n    resolvedPackages,\n  }\n}\n\nconst TS_CONFIG_CACHE = new Map<string, CompilerOptions>()\nfunction getTSConfig(configFile: string): CompilerOptions {\n  if (TS_CONFIG_CACHE.has(configFile))\n    return TS_CONFIG_CACHE.get(configFile) ?? {}\n\n  // Load typescript package from current working directory.\n  // eslint-disable-next-line @typescript-eslint/no-var-requires\n  const ts = require('typescript') as {\n    parseJsonSourceFileConfigFileContent: typeof parseJsonSourceFileConfigFileContent\n    readJsonConfigFile: typeof readJsonConfigFile\n    ModuleKind: typeof ModuleKind\n    sys: typeof sys\n  }\n\n  const configSource = ts.readJsonConfigFile(configFile, ts.sys.readFile)\n  const parsed = ts.parseJsonSourceFileConfigFileContent(\n    configSource,\n    ts.sys,\n    Path.dirname(configFile),\n  )\n\n  return parsed.options\n}\n\nfunction createFilter<T>(\n  matchRE: string | undefined,\n  getter: (value: T) => Array<string | undefined>,\n): (value: T) => boolean {\n  if (matchRE == null) return () => true\n\n  const RE = matchRE.startsWith('/')\n    ? new RegExp(matchRE.substring(1, matchRE.lastIndexOf('/')))\n    : new RegExp(matchRE, 'i')\n\n  return (value) =>\n    getter(value)\n      .filter((id): id is string => id != null)\n      .some((id) => RE.test(id))\n}\n\nfunction flatten(exports: any, prefix = ''): Record<string, string> {\n  const result: Record<string, string> = {}\n\n  for (const [key, value] of Object.entries(exports)) {\n    if (typeof value === 'string') {\n      result[prefix + key] = value\n    } else {\n      Object.assign(result, flatten(value, prefix + key + '|'))\n    }\n  }\n\n  return result\n}\n"],"names":["Path"],"mappings":";;;;;;;;;;;;;AAMgB,SAAA,OAAO,CACrB,MAAgD,EAChD,MAAA,GAAkB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAA;IAE3C,OAAO;AACL,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,MAAM,cAAc,CAAC,OAAO,EAAE,MAAM,EAAA;AAClC,YAAA,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,uCAAuC,CAAC,CAAA;YAChE,MAAM,KAAK,GAAGA,aAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACzC,MAAM,GAAG,GAAGA,aAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AACtC,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAgB,CAAA;AAC1C,YAAA,SAAS,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAA;AACzC,YAAA,MAAM,OAAO,GAAG,MAAM,OAAO,SAAS,CAAC,CAAA;AACvC,YAAA,MAAM,GAAG,MAAM,KAAK,IAAI,GAAG,EAAE,GAAG,MAAM,CAAA;YACtC,SAAS,CAAC,MAAM,CAAC,CAAA;YACjB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,CAAA;AAClD,YAAA,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC;AAC5D,gBAAA,QAAQ,EAAE,SAAS;gBACnB,MAAM;AACN,gBAAA,GAAG,MAAM;AACT,gBAAA,aAAa,EAAE,GAAG;AAClB,gBAAA,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3B,gBAAA,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;AAC9B,gBAAA,OAAO,EAAE;AACP,oBAAA,kBAAkB,EAAE;AACpB,oBAAA,yBAAyB,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC1C,oBAAA,0BAA0B,EAAE;AAC7B,iBAAA;gBACD,MAAM;AACN,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,SAAS,EAAE,KAAK;AAChB,gBAAA,SAAS,EAAE,UAAU;gBACrB,OAAO,EAAE,CAAO,IAAA,EAAA,KAAK,CAAE,CAAA;AACxB,aAAA,CAAC,CAAA;AAEF,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;gBACvB,IAAI,CAAC,KAAK,CAAC;oBACT,OAAO,EAAE,KAAK,CAAC,IAAI;AACnB,oBAAA,GAAG,EACD,KAAK,CAAC,QAAQ,IAAI,IAAI;AACpB,0BAAE;AACE,4BAAA,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI;AACzB,4BAAA,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI;AACzB,4BAAA,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;AAC9B,yBAAA;AACH,0BAAE,SAAS;AAChB,iBAAA,CAAC,CAAA;AACJ,aAAC,CAAC,CAAA;AACF,YAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;gBAC3B,IAAI,CAAC,IAAI,CAAC;oBACR,OAAO,EAAE,OAAO,CAAC,IAAI;AACrB,oBAAA,GAAG,EACD,OAAO,CAAC,QAAQ,IAAI,IAAI;AACtB,0BAAE;AACE,4BAAA,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;AAC3B,4BAAA,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;AAC3B,4BAAA,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;AAChC,yBAAA;AACH,0BAAE,SAAS;AAChB,iBAAA,CAAC,CAAA;AACJ,aAAC,CAAC,CAAA;YACF,SAAS,CAAC,WAAW,CAAC,CAAA;YACtB,MAAM,MAAM,GAAGA,aAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AACpC,YAAA,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;AACjC,gBAAA,MAAM,EAAE,GAAGA,aAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,CAAA;AACjD,gBAAA,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACvB,oBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAgB,CAAA;oBACpD,SAAS,CAAC,KAAK,CAAC,CAAA;oBAChB,KAAK,CAAC,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AAC7C,iBAAA;AAAM,qBAAA;oBACL,MAAM,CAAC,EAAE,CAAC,GAAG;AACX,wBAAA,GAAG,KAAK;AACR,wBAAA,IAAI,EAAE,OAAO;wBACb,QAAQ,EAAEA,aAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;wBAC/B,IAAI,EAAE,UAAU,CAAC,IAAI;qBACtB,CAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAA;AAEF,YAAA,SAAS,kBAAkB,GAAA;gBACzB,OAAO;AACL,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,KAAK,CAAC,KAAK,EAAA;AACT,wBAAA,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAI;AAC5C,4BAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AAAE,gCAAA,OAAO,IAAI,CAAA;4BACtC,MAAM,EAAE,GAAGA,aAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;AACnC,4BAAA,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAA4B,CAAA;4BACnD,IAAI,KAAK,IAAI,IAAI;AAAE,gCAAA,OAAO,IAAI,CAAA;4BAC9B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;AAC1C,yBAAC,CAAC,CAAA;wBACF,KAAK,CAAC,MAAM,CACV,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,EACpC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAI;AACf,4BAAA,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAA4B,CAAA;4BACnD,IAAI,KAAK,IAAI,IAAI;AAAE,gCAAA,OAAO,IAAI,CAAA;4BAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA;AACpC,4BAAA,MAAM,IAAI,GACR,KAAK,CAAC,IAAI;iCACT,SAAS,IAAI,IAAI;sCACd,CAA0B,uBAAA,EAAA,SAAS,CAAE,CAAA;sCACrC,EAAE,CAAC,CAAA;4BAET,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;AAC5C,yBAAC,CACF,CAAA;qBACF;iBACF,CAAA;aACF;SACF;KACF,CAAA;AACH,CAAC;AAED,SAAS,yBAAyB,CAChC,QAAqC,EAAA;IAErC,OAAO;AACL,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,CAAC,KAAK,EAAA;YACT,IAAI,QAAQ,KAAK,MAAM;gBAAE,OAAM;AAC/B,YAAA,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,KAAI;gBAClD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;AAC5D,gBAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBACjC,MAAM,GAAG,GAAGA,aAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAA;AAC9C,oBAAA,MAAM,cAAc,GAAGA,aAAI,CAAC,OAAO,CACjC,GAAG,EACH,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,GAAG,IAAI,CAAA,GAAA,CAAK,CACb,CAAA;oBAED,OAAO;AACL,wBAAA,IAAI,EAAE,cAAc;qBACrB,CAAA;AACF,iBAAA;AAED,gBAAA,OAAO,IAAI,CAAA;AACb,aAAC,CAAC,CAAA;SACH;KACF,CAAA;AACH,CAAC;AAED,SAAS,0BAA0B,GAAA;IACjC,OAAO;AACL,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,CAAC,KAAK,EAAA;YACT,KAAK,CAAC,SAAS,CACb,EAAE,MAAM,EAAE,UAAU,EAAE,EACtB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,KAAI;AAC9C,gBAAA,IAAI,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;AAC1D,oBAAA,OAAO,IAAI,CAAA;AACZ,iBAAA;AACD,gBAAA,IAAI,UAAU,IAAI,IAAI,IAAI,SAAS,KAAK,QAAQ;AAAE,oBAAA,OAAO,IAAI,CAAA;AAC7D,gBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC7D,oBAAA,OAAO,IAAI,CAAA;AACZ,iBAAA;AAED,gBAAA,MAAM,OAAO,GAAG,aAAa,CAACA,aAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAA;gBACnE,IAAI;oBACF,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAG,EAAA,IAAI,CAAe,aAAA,CAAA,CAAC,CAAA;oBAC9D,IAAI,cAAc,IAAI,IAAI;AAAE,wBAAA,OAAO,IAAI,CAAA;AACvC,oBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAA;oBAC/D,MAAM,IAAI,GACR,IAAI,KAAK,cAAc,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAA;oBAC7D,IAAI,IAAI,IAAI,IAAI;AAAE,wBAAA,OAAO,IAAI,CAAA;AAC7B,oBAAA,OAAO,EAAE,IAAI,EAAEA,aAAI,CAAC,OAAO,CAACA,aAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,EAAE,CAAA;AAClE,iBAAA;gBAAC,MAAM;oBACN,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;oBAC5C,IAAI,cAAc,IAAI,IAAI;AAAE,wBAAA,OAAO,IAAI,CAAA;AACvC,oBAAA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAA;AAChC,iBAAA;AACH,aAAC,CACF,CAAA;SACF;KACF,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,OAAsB,EAAA;IACvC,QAAQ,OAAO,CAAC,MAAM;AACpB,QAAA,KAAK,IAAI,CAAC;AACV,QAAA,KAAK,KAAK,CAAC;AACX,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,KAAK,CAAA;AACd,QAAA,KAAK,KAAK,CAAC;AACX,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,KAAK,CAAA;AACd,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,MAAM,CAAA;AACf,QAAA;AACE,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,mBAAA,EAAsB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAE,CAAA,CAAC,CAAA;AAClE,KAAA;AACH,CAAC;AAED,SAAS,SAAS,CAChB,KAAc,EACd,UAAkB,kBAAkB,EAAA;AAEpC,IAAA,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE;AACpC,QAAA,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;AACzB,KAAA;AACH,CAAC;AAED,SAAS,kBAAkB,GAAA;IACzB,IAAI;QACF,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACtC,KAAA;IAAC,MAAM;AACN,QAAA,OAAO,UAAU,CAAA;AAClB,KAAA;AACH,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB,EAAA;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAEhC,OAAO;AACL,QAAA,GAAG,GAAG;AACN,QAAA,QAAQ,EAAE,MAAM,QAAQ;AACxB,QAAA,KAAK,EAAE,MACL,CAAA,2CAAA,EAA8C,MAAM,CAAC,IAAI,CACvD,QAAQ,CACT,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAE,CAAA;KACzB,CAAA;AACH;;AChOgB,SAAA,KAAK,CAAC,OAAO,GAAG,KAAK,EAAA;AACnC,IAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAA;IAC5C,IAAI,KAAK,GAAkB,IAAI,CAAA;IAE/B,OAAO;AACL,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,OAAO,CAAC,OAAO,EAAA;AACb,YAAA,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;AACrC,gBAAA,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;AACtB,aAAA;SACF;AACD,QAAA,MAAM,cAAc,CAAC,OAAO,EAAE,MAAM,EAAA;AAClC,YAAA,IAAI,CAAC,OAAO;gBAAE,OAAM;YACpB,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI;gBAAE,OAAM;AACjD,YAAA,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAAE,gBAAA,OAAM;YAE1C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AACtC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;AAC5D,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI;gBAAE,OAAM;AAEjC,YAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAChB,iBAAA,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACtE,iBAAA,OAAO,CAAC,CAAC,EAAE,KAAI;AACd,gBAAA,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,KAAK,OAAO;AAC9B,oBAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;gBAClD,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAgB,CAAC,CAAA;;AAExC,gBAAA,OAAO,MAAM,CAAC,EAAE,CAAC,CAAA;AACnB,aAAC,CAAC,CAAA;YAEJ,SAAS,OAAO,CAAC,EAAU,EAAA;gBACzB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;AACzC,gBAAA,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;aAC7B;AAED,YAAA,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC;gBACzB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;AAC/B,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,IAAI,EAAE,QAAQ;wBACd,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAA;AACpB,4BAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;gCACxB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC3C,oCAAA,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;AAC9B,iCAAA;AAED,gCAAA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAA;AAC9C,6BAAA;AAED,4BAAA,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACzB,gCAAA,IAAI,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC;AAAE,oCAAA,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;AACvC,qCAAA,IAAI,OAAO,CAAC,EAAE,GAAG,aAAa,CAAC;AAAE,oCAAA,EAAE,GAAG,EAAE,GAAG,aAAa,CAAA;AAC9D,6BAAA;AAED,4BAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gCAAE,OAAM;AACxB,4BAAA,OAAO,EAAE,CAAA;yBACV;AACD,wBAAA,IAAI,CAAC,EAAE,EAAA;AACL,4BAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gCAAE,OAAM;4BACxB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;4BACzC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAuB,CAAA;4BAC7D,IAAI,SAAS,IAAI,IAAI;gCAAE,OAAM;4BAC7B,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CACxB,UAAU,GAAG,MAAM,CACE,CAAA;4BACvB,IAAI,QAAQ,IAAI,IAAI;AAAE,gCAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;4BAEjE,OAAO;gCACL,IAAI,EAAE,SAAS,CAAC,MAAgB;gCAChC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAgB,CAAC;6BAC3C,CAAA;yBACF;AACF,qBAAA;AACD,oBAAA,GAAG,EAAE;AACN,iBAAA;AACF,aAAA,CAAC,CAAA;YAEF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC;AACtC,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,IAAI,EAAE,KAAK;AACZ,aAAA,CAAC,CAAA;AAEF,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACvB,gBAAA,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAA;AAChC,aAAC,CAAC,CAAA;SACH;QAED,QAAQ,GAAA;YACN,KAAK,CAAC,KAAK,EAAE,CAAA;SACd;KACF,CAAA;AACH;;ACjCM,SAAU,qBAAqB,CACnC,OAAwB,EAAA;IAExB,MAAM,WAAW,GAAoB,EAAE,CAAA;IACvC,MAAM,OAAO,GAAoB,EAAE,CAAA;AAEnC,IAAA,MAAM,WAAW,GACf,OAAO,CAAC,OAAO,IAAI,IAAI;UACnBA,MAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;cAC9B,OAAO,CAAC,OAAO;AACjB,cAAEA,MAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC;AAChD,UAAE,OAAO,CAAC,GAAG,EAAE,CAAA;AAEnB,IAAA,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,WAAW,CACpD,WAAW,EACX,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,CAC9B,CAAA;IAED,MAAM,cAAc,GAAG,YAAY,CACjC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAC5B,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAC1B,CAAA;IAED,MAAM,cAAc,GAAG,YAAY,CACjC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAC5B,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,CACnB,CAAA;AAED,IAAA,MAAM,mBAAmB,GAAG,YAAY,CACtC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAC7B,CAAC,KAAK,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CACtD,CAAA;IAED,YAAY,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,KAAI;AAC/D,QAAA,MAAM,OAAO,GAAG,CAAC,GAAG,QAAkB,KAAY;YAChD,OAAOA,MAAI,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC,CAAA;AAC5D,SAAC,CAAA;AAED,QAAA,MAAM,SAAS,GAAG,CAAC,GAAG,QAAkB,KAAwB;AAC9D,YAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAA;AACrC,YAAA,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;AAAE,gBAAA,OAAO,QAAQ,CAAA;;AACvC,gBAAA,OAAO,SAAS,CAAA;AACvB,SAAC,CAAA;QAED,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAErD,IAAI,WAAW,IAAI,IAAI;AAAE,YAAA,OAAM;AAE/B,QAAA,MAAM,QAAQ,GAAG;AACf,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;AACxC,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC;YAC5C,IAAI,WAAW,CAAC,WAAW,CAAC,QAAQ,IAAI,EAAE,CAAC;SAC5C,CAAA;AAED,QAAA,MAAM,OAAO,GAA2B;AACtC,YAAA,GAAG,WAAW,CAAC,WAAW,CAAC,OAAO;SACnC,CAAA;AAED,QAAA,IAAI,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE;YACnC,MAAM,GAAG,GACP,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI;kBACtC,WAAW,CAAC,IAAI;kBAChB,cAAc,CAAA;AACpB,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC7B,gBAAA,GAAG,WAAW;gBACd,GAAG,WAAW,CAAC,aAAa;aAC7B,CAAC;AACC,iBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;AACvC,iBAAA,MAAM,CACL,CACE,IAAI,KAID,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAC5C;AACA,iBAAA,OAAO,CAAwB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAI;gBAC7D,IAAI,IAAI,KAAK,SAAS,EAAE;oBACtB,OAAO;wBACL,IAAI;wBACJ,MAAM,EACJ,IAAI,KAAK,MAAM,GAAG,KAAK,GAAG,IAAI,KAAK,OAAO,GAAG,MAAM,GAAG,KAAK;qBAC9D,CAAA;AACF,iBAAA;gBAED,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACjC,qBAAA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;qBACvC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM;AACtB,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AAC9B,0BAAE,KAAK;AACP,0BAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;AACzB,8BAAE,KAAK;AACP,8BAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACxB,kCAAE,KAAK;AACP,kCAAE,KAAK;AACV,iBAAA,CAAC,CAAC,CAAA;AACP,aAAC,CAAC,CAAA;YAEJ,IAAI,GAAG,IAAI,OAAO,EAAE;AAClB,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AACrD,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAA;AACvB,aAAA;AACF,SAAA;AAED,QAAA,IAAI,QAAiC,CAAA;AACrC,QAAA,MAAM,UAAU,GAAG,SAAS,CAAC,eAAe,CAAC,CAAA;QAC7C,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,YAAA,QAAQ,GAAG;gBACT,UAAU;AACV,gBAAA,aAAa,EAAE,WAAW,CAAC,UAAU,CAAC;aACvC,CAAA;AACF,SAAA;AAED,QAAA,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AACpB,aAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC,KAAK,CAAC,CAAC;aAC1C,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,KAAI;AAC5B,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;iBAChC,MAAM,CAAC,cAAc,CAAC;iBACtB,GAAG,CAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,MAAM;AAC9C,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,GAAG,MAAM;gBACT,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI;gBAC9D,OAAO,EACL,MAAM,IAAI,IAAI,IAAI,MAAM,KAAK,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE;AAC9D,aAAA,CAAC,CAAC,CAAA;AAEL,YAAA,MAAM,QAAQ,GAAGA,MAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;AAC7D,YAAA,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;AAEhC,YAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,gBAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;oBAC5B,WAAW;oBACX,WAAW;oBACX,QAAQ;AACR,oBAAA,aAAa,EAAE;AACb,wBAAA,KAAK,EAAE,QAAQ;AACf,wBAAA,MAAM,EAAE,OAAO;AACf,wBAAA,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE;AAC1B,wBAAA,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;AACnB,qBAAA;AACF,iBAAA,CAAC,CAAA;gBAEF,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC7D,aAAA;AACH,SAAC,CAAC,CAAA;AACN,KAAC,CAAC,CAAA;;;IAIF,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,uBAAuB,EAAE;AACpD,QAAA,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;AACrE,KAAA;AAED,IAAA,OAAO,CAAC,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,CAAA;AACrC,CAAC;AAEK,SAAU,WAAW,CACzB,OAAe,EACf,QAAqB,GAAA,CAAC,IAAI,CAAC,EAAA;IAM3B,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAChC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,CAAA,EAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAe,aAAA,CAAA,CAAC,EACvE;AACE,QAAA,GAAG,EAAE,OAAO;AACZ,QAAA,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,CAAC,oBAAoB,CAAC;AAC/B,KAAA,CACF,CAAA;AACD,IAAA,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAuB,CAAA;AACvD,IAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAA;AAEvC,IAAA,gBAAgB,CAAC,OAAO,CAAC,CAAC,eAAe,KAAI;QAC3C,MAAM,mBAAmB,GAAGA,MAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;QACzD,MAAM,WAAW,GAAGA,MAAI,CAAC,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;AAE1D,QAAA,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;AAC9B,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAC/B,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CACd,CAAA;AACzB,YAAA,MAAM,WAAW,GAAgB;AAC/B,gBAAA,YAAY,EAAE,EAAE;AAChB,gBAAA,eAAe,EAAE,EAAE;AACnB,gBAAA,gBAAgB,EAAE,EAAE;AACpB,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,GAAG,cAAc;AACjB,gBAAA,WAAW,EAAE;AACX,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,EAAE;oBACZ,GAAG,cAAc,CAAC,WAAW;AAC9B,iBAAA;aACF,CAAA;AAED,YAAA,gBAAgB,CAAC,GAAG,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAA;YAEtD,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,mBAAmB,EAAE,mBAAmB,CAAC,CAAA;AACxE,SAAA;AACH,KAAC,CAAC,CAAA;AAEF,IAAA,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAA;IAEzC,gBAAgB,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,WAAW,KAAI;AACpD,QAAA,IAAI,GAAG,CAAC;AACN,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;AACxC,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;AAC5C,SAAA,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,KAAI;AAC5B,YAAA,IAAI,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;gBAC7B,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,CAAA;AAChE,aAAA;AACH,SAAC,CAAC,CAAA;AACJ,KAAC,CAAC,CAAA;AACF,IAAA,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;IAC3D,MAAM,eAAe,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAA;IAE9E,OAAO;AACL,QAAA,YAAY,EAAE,eAAe;AAC7B,QAAA,gBAAgB,EAAE,kBAAkB;QACpC,gBAAgB;KACjB,CAAA;AACH,CAAC;AAED,MAAM,eAAe,GAAG,IAAI,GAAG,EAA2B,CAAA;AAC1D,SAAS,WAAW,CAAC,UAAkB,EAAA;AACrC,IAAA,IAAI,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;QACjC,OAAO,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;;;AAI9C,IAAA,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAK9B,CAAA;AAED,IAAA,MAAM,YAAY,GAAG,EAAE,CAAC,kBAAkB,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AACvE,IAAA,MAAM,MAAM,GAAG,EAAE,CAAC,oCAAoC,CACpD,YAAY,EACZ,EAAE,CAAC,GAAG,EACNA,MAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CACzB,CAAA;IAED,OAAO,MAAM,CAAC,OAAO,CAAA;AACvB,CAAC;AAED,SAAS,YAAY,CACnB,OAA2B,EAC3B,MAA+C,EAAA;IAE/C,IAAI,OAAO,IAAI,IAAI;AAAE,QAAA,OAAO,MAAM,IAAI,CAAA;AAEtC,IAAA,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;AAChC,UAAE,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;UAC1D,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAE5B,OAAO,CAAC,KAAK,KACX,MAAM,CAAC,KAAK,CAAC;SACV,MAAM,CAAC,CAAC,EAAE,KAAmB,EAAE,IAAI,IAAI,CAAC;AACxC,SAAA,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;AAChC,CAAC;AAED,SAAS,OAAO,CAAC,OAAY,EAAE,MAAM,GAAG,EAAE,EAAA;IACxC,MAAM,MAAM,GAA2B,EAAE,CAAA;AAEzC,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAClD,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAA;AAC7B,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAA;AAC1D,SAAA;AACF,KAAA;AAED,IAAA,OAAO,MAAM,CAAA;AACf;;;;"}