{"version":3,"sources":["../src/index.ts","../src/parser.ts","../src/client.ts","../src/utils.ts","../src/ui.ts","../src/web-component.ts"],"sourcesContent":["import { AraClient, streamAra } from './client';\nimport type { AraClientInit, AraHandlers, AraStreamOptions, StartParams } from './types';\nimport { initPopup, initFull, type InitOptions, type Theme } from './ui';\nimport { defineAraFullChat } from './web-component';\n\nexport { AraClient, streamAra, initPopup as init, initFull, defineAraFullChat };\nexport type { AraClientInit, AraHandlers, AraStreamOptions, StartParams };\nexport type { InitOptions, Theme };\n\n// Minimal DOM widget (optional)\nexport type WidgetOptions = {\n  container?: HTMLElement | string;\n  client: AraClient;\n  chatId: string;\n  locale?: string;\n  placeholder?: string;\n  requestType?: string;\n  walletAddress?: string;\n};\n\nexport function createAraWidget(opts: WidgetOptions) {\n  const container =\n    typeof opts.container === 'string'\n      ? (document.querySelector(opts.container) as HTMLElement | null)\n      : opts.container ?? document.body;\n  if (!container) throw new Error('Container not found');\n\n  const root = document.createElement('div');\n  root.style.position = 'relative';\n  root.style.display = 'flex';\n  root.style.flexDirection = 'column';\n  root.style.border = '1px solid #e5e7eb';\n  root.style.borderRadius = '12px';\n  root.style.padding = '12px';\n  root.style.width = '320px';\n  root.style.height = '420px';\n  root.style.boxShadow = '0 10px 25px rgba(0,0,0,0.08)';\n  root.style.background = '#fff';\n\n  const view = document.createElement('div');\n  view.style.flex = '1';\n  view.style.overflow = 'auto';\n  view.style.fontFamily = 'system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial';\n  view.style.fontSize = '14px';\n  view.style.lineHeight = '1.5';\n  view.style.color = '#111827';\n\n  const inputWrap = document.createElement('div');\n  inputWrap.style.display = 'flex';\n  inputWrap.style.gap = '8px';\n\n  const input = document.createElement('input');\n  input.type = 'text';\n  input.placeholder = opts.placeholder ?? 'Ask ARA...';\n  input.style.flex = '1';\n  input.style.border = '1px solid #e5e7eb';\n  input.style.borderRadius = '8px';\n  input.style.padding = '8px 10px';\n\n  const send = document.createElement('button');\n  send.textContent = 'Send';\n  send.type = 'button';\n  send.style.border = '1px solid #e5e7eb';\n  send.style.borderRadius = '8px';\n  send.style.padding = '8px 12px';\n  send.style.background = '#111827';\n  send.style.color = '#fff';\n\n  inputWrap.appendChild(input);\n  inputWrap.appendChild(send);\n\n  root.appendChild(view);\n  root.appendChild(inputWrap);\n  container.appendChild(root);\n\n  let systemDiv: HTMLDivElement | null = null;\n  let answerDiv: HTMLDivElement | null = null;\n\n  function appendUser(text: string) {\n    const box = document.createElement('div');\n    box.style.margin = '8px 0';\n    box.style.textAlign = 'right';\n    box.innerHTML = `<span style=\"display:inline-block;background:#111827;color:#fff;padding:6px 10px;border-radius:10px 10px 2px 10px;max-width:80%\">${escapeHtml(\n      text\n    )}</span>`;\n    view.appendChild(box);\n    view.scrollTop = view.scrollHeight;\n  }\n\n  function begin(meta: Record<string, unknown>) {\n    systemDiv = document.createElement('div');\n    systemDiv.style.margin = '8px 0';\n    systemDiv.style.color = '#6b7280';\n    systemDiv.textContent = '[ARA connected]';\n    view.appendChild(systemDiv);\n\n    answerDiv = document.createElement('div');\n    answerDiv.style.margin = '8px 0';\n    answerDiv.style.textAlign = 'left';\n    answerDiv.innerHTML = `<span style=\"display:inline-block;background:#f3f4f6;color:#111827;padding:6px 10px;border-radius:10px 10px 10px 2px;max-width:80%\"></span>`;\n    view.appendChild(answerDiv);\n    view.scrollTop = view.scrollHeight;\n  }\n\n  function item(text: string) {\n    if (!answerDiv) return;\n    const span = answerDiv.querySelector('span');\n    if (!span) return;\n    span.textContent = (span.textContent ?? '') + text;\n    view.scrollTop = view.scrollHeight;\n  }\n\n  function end() {\n    systemDiv = null;\n    answerDiv = null;\n  }\n\n  function error(err: unknown) {\n    const box = document.createElement('div');\n    box.style.margin = '8px 0';\n    box.style.color = '#ef4444';\n    box.textContent = `Error: ${String(err)}`;\n    view.appendChild(box);\n  }\n\n  async function sendMessage() {\n    const q = input.value.trim();\n    if (!q) return;\n    appendUser(q);\n    input.value = '';\n    await opts.client.start(\n      {\n        body: {\n          chatId: opts.chatId,\n          question: q,\n          locale: opts.locale ?? (navigator.language || 'en-US'),\n          requestType: opts.requestType,\n          walletAddress: opts.walletAddress,\n        },\n      },\n      { onBegin: begin, onItem: (t) => item(t), onEnd: end, onError: error }\n    );\n  }\n\n  send.addEventListener('click', sendMessage);\n  let composing = false;\n  input.addEventListener('compositionstart', () => {\n    composing = true;\n  });\n  input.addEventListener('compositionend', () => {\n    composing = false;\n  });\n  input.addEventListener('keydown', (e) => {\n    // IME 조합(한글 등) 중 Enter 입력은 무시하여 중복 전송 방지\n    // 일부 브라우저는 조합 중 keyCode 229를 사용\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const anyEvent = e as any;\n    if (composing || (e as KeyboardEvent).isComposing || anyEvent.keyCode === 229) return;\n    if (e.key === 'Enter') {\n      e.preventDefault();\n      sendMessage();\n    }\n  });\n\n  return {\n    destroy() {\n      opts.client.cancel();\n      root.remove();\n    },\n  } as const;\n}\n\nfunction escapeHtml(s: string) {\n  return s\n    .replace(/&/g, '&amp;')\n    .replace(/</g, '&lt;')\n    .replace(/>/g, '&gt;')\n    .replace(/\"/g, '&quot;')\n    .replace(/'/g, '&#039;');\n}\n\ndeclare global {\n  interface Window {\n    AraEmbed?: {\n      AraClient: typeof AraClient;\n      createAraWidget: typeof createAraWidget;\n      init: typeof initPopup;\n      initFull: typeof initFull;\n      defineAraFullChat: typeof defineAraFullChat;\n    };\n  }\n}\n\n// UMD-style global for <script> usage when built as IIFE\nif (typeof window !== 'undefined') {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  (window as any).AraEmbed = { AraClient, createAraWidget, init: initPopup, initFull, defineAraFullChat };\n  try {\n    defineAraFullChat();\n  } catch {}\n}\n\n\n","import type { AraChunk } from './types';\n\nexport function splitIntoLines(buffer: string): { lines: string[]; rest: string } {\n  const parts = buffer.split(/\\r?\\n/);\n  const rest = parts.pop() ?? '';\n  return { lines: parts, rest };\n}\n\nexport function parseLine(line: string): AraChunk | null {\n  const trimmed = line.trim();\n  if (!trimmed) return null;\n  const payload = trimmed.startsWith('data:') ? trimmed.slice(5).trim() : trimmed;\n  try {\n    const obj = JSON.parse(payload);\n    if (obj && typeof obj === 'object' && 'type' in obj) {\n      return obj as AraChunk;\n    }\n  } catch {\n    // ignore malformed/partial lines\n  }\n  return null;\n}\n\n\n","import { parseLine, splitIntoLines } from './parser';\nimport type { AraClientInit, AraHandlers, AraStreamOptions, StartParams } from './types';\n\nexport async function streamAra(opts: AraStreamOptions, h: AraHandlers) {\n  const { baseUrl, bearerToken, body, headers = {}, signal } = opts;\n\n  const res = await fetch(baseUrl, {\n    method: 'POST',\n    headers: {\n      ...(bearerToken ? { Authorization: `Bearer ${bearerToken}` } : {}),\n      'Content-Type': 'application/json',\n      ...headers,\n    },\n    body: JSON.stringify(body),\n    signal,\n  });\n\n  if (!res.ok) {\n    const err = new Error(`HTTP ${res.status}`);\n    h.onError?.(err);\n    h.onFinally?.();\n    throw err;\n  }\n  if (!res.body) {\n    const err = new Error('ReadableStream missing');\n    h.onError?.(err);\n    h.onFinally?.();\n    throw err;\n  }\n\n  const reader = res.body.getReader();\n  const decoder = new TextDecoder('utf-8');\n  let buffer = '';\n\n  try {\n    while (true) {\n      const { done, value } = await reader.read();\n      if (done) break;\n      buffer += decoder.decode(value, { stream: true });\n      const { lines, rest } = splitIntoLines(buffer);\n      buffer = rest;\n      for (const line of lines) {\n        const obj = parseLine(line);\n        if (!obj) continue;\n        if (obj.type === 'begin') h.onBegin?.(obj.metadata as Record<string, unknown>);\n        else if (obj.type === 'item') h.onItem?.(obj.content, obj.metadata as Record<string, unknown>);\n        else if (obj.type === 'end') h.onEnd?.(obj.metadata as Record<string, unknown>);\n      }\n    }\n    const last = buffer.trim();\n    if (last) {\n      const obj = parseLine(last);\n      if (obj) {\n        if (obj.type === 'begin') h.onBegin?.(obj.metadata as Record<string, unknown>);\n        else if (obj.type === 'item') h.onItem?.(obj.content, obj.metadata as Record<string, unknown>);\n        else if (obj.type === 'end') h.onEnd?.(obj.metadata as Record<string, unknown>);\n      }\n    }\n  } catch (e) {\n    if ((e as { name?: string } | null)?.name !== 'AbortError') {\n      h.onError?.(e);\n    }\n  } finally {\n    try {\n      reader.releaseLock();\n    } catch {\n      // ignore\n    }\n    h.onFinally?.();\n  }\n}\n\nexport class AraClient {\n  private baseUrl: string;\n  private bearerToken?: string;\n  private defaultHeaders?: Record<string, string>;\n  private controller: AbortController | null = null;\n\n  constructor(init: AraClientInit) {\n    this.baseUrl = init.baseUrl;\n    this.bearerToken = init.bearerToken;\n    this.defaultHeaders = init.defaultHeaders;\n  }\n\n  cancel() {\n    this.controller?.abort();\n    this.controller = null;\n  }\n\n  async start(params: StartParams, handlers: AraHandlers) {\n    this.cancel();\n    const controller = new AbortController();\n    this.controller = controller;\n    const { headers, signal, ...rest } = params;\n    const opts: AraStreamOptions = {\n      baseUrl: this.baseUrl,\n      bearerToken: this.bearerToken,\n      body: rest.body,\n      headers: { ...this.defaultHeaders, ...headers },\n      signal: signal ?? controller.signal,\n    };\n    return streamAra(opts, handlers);\n  }\n}\n\n\n","export function generateId(length = 16) {\n  const array = new Uint8Array(length);\n  crypto.getRandomValues(array);\n  return Array.from(array, (b) => b.toString(16).padStart(2, '0')).join('');\n}\n\nexport function qs<T extends Element = HTMLElement>(sel: string, root: Document | HTMLElement = document) {\n  return root.querySelector(sel) as T | null;\n}\n\n\n","import { AraClient } from './client';\nimport { generateId } from './utils';\n// Cross SDK will be loaded from CDN or window.CrossSdk at runtime\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet CrossSdk: any = null;\n\n// CROSS SDK singleton (shared across widgets)\nlet crossSdkInitialized = false;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet crossSdkInstance: any = null;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet appkitWallet: any = null;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet crossAccountState: any = null;\nlet crossNetworkState: any = null;\n\nasync function ensureCrossSdk() {\n  if (crossSdkInitialized) return;\n  if (!CrossSdk) {\n    // Try global first (if user added a script tag), else load from CDN\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const w: any = typeof window !== 'undefined' ? (window as any) : null;\n    if (w && w.CrossSdk) {\n      CrossSdk = w.CrossSdk;\n    } else if (typeof window !== 'undefined') {\n      // Avoid TS module resolution by using eval'd dynamic import\n      // eslint-disable-next-line @typescript-eslint/no-implied-eval\n      const dynamicImport = new Function('u', 'return import(u)') as (u: string) => Promise<any>;\n      CrossSdk = await dynamicImport('https://sdk-cdn.crosstoken.io/cross-sdk/1.8.1/cross-sdk.js');\n    }\n  }\n  const metadata = {\n    name: 'ARA Embed',\n    description: 'ARA Chat + CROSS Wallet',\n    url: typeof window !== 'undefined' ? window.location.origin : '',\n    icons: ['https://contents.crosstoken.io/wallet/token/images/CROSSx.svg'],\n  };\n  const projectId = (typeof window !== 'undefined' && (window as any).VITE_PROJECT_ID) || '0979fd7c92ec3dbd8e78f433c3e5a523';\n  const redirectUrl = typeof window !== 'undefined' ? window.location.href : '';\n  if ((CrossSdk as any).initCrossSdk) {\n    crossSdkInstance = (CrossSdk as any).initCrossSdk(\n      projectId,\n      redirectUrl,\n      metadata,\n      'light',\n      undefined,\n      undefined,\n      (CrossSdk as any).ConstantsUtil?.getUniversalLink?.()\n    );\n  } else {\n    crossSdkInstance = (CrossSdk as any).initCrossSdkWithParams({ projectId, redirectUrl, metadata, themeMode: 'light' });\n  }\n  appkitWallet = (CrossSdk as any).useAppKitWallet();\n  crossSdkInstance.subscribeAccount((state: unknown) => {\n    crossAccountState = state as any;\n  });\n  if (crossSdkInstance.subscribeNetwork) {\n    crossSdkInstance.subscribeNetwork((state: unknown) => {\n      crossNetworkState = state as any;\n    });\n  }\n  crossSdkInitialized = true;\n}\n\nexport type ButtonTheme = {\n  backgroundColor?: string;\n  right?: number;\n  bottom?: number;\n  size?: number; // px\n  iconColor?: string;\n  customIconSrc?: string;\n  autoWindowOpen?: { autoOpen: boolean; openDelay?: number; autoOpenOnMobile?: boolean };\n};\n\nexport type MessageTheme = {\n  backgroundColor?: string;\n  textColor?: string;\n  showAvatar?: boolean;\n  avatarSrc?: string;\n};\n\nexport type TextInputTheme = {\n  placeholder?: string;\n  backgroundColor?: string;\n  textColor?: string;\n  sendButtonColor?: string;\n};\n\nexport type ChatWindowTheme = {\n  showTitle?: boolean;\n  title?: string;\n  titleAvatarSrc?: string;\n  titleBackgroundColor?: string;\n  titleTextColor?: string;\n  welcomeMessage?: string;\n  errorMessage?: string;\n  backgroundColor?: string;\n  height?: number;\n  width?: number;\n  fontSize?: number;\n  botMessage?: MessageTheme;\n  userMessage?: MessageTheme;\n  textInput?: TextInputTheme;\n};\n\nexport type Theme = {\n  button?: ButtonTheme;\n  chatWindow?: ChatWindowTheme;\n};\n\nexport type InitOptions = {\n  baseUrl: string;\n  bearerToken?: string;\n  chatId?: string;\n  locale?: string;\n  requestType?: string;\n  walletAddress?: string;\n  container?: HTMLElement | string; // for initFull only\n  theme?: Theme;\n};\n\ntype SendHandler = (q: string) => Promise<void>;\n\nfunction createBubble(theme: MessageTheme | undefined, align: 'left' | 'right', html: string) {\n  const wrap = document.createElement('div');\n  wrap.style.margin = '8px 0';\n  wrap.style.textAlign = align === 'left' ? 'left' : 'right';\n  const span = document.createElement('span');\n  span.style.display = 'inline-block';\n  span.style.padding = '8px 12px';\n  span.style.borderRadius = align === 'left' ? '12px 12px 12px 4px' : '12px 12px 4px 12px';\n  span.style.maxWidth = '80%';\n  span.style.wordBreak = 'break-word';\n  span.style.background = theme?.backgroundColor ?? (align === 'left' ? '#f3f4f6' : '#111827');\n  span.style.color = theme?.textColor ?? (align === 'left' ? '#111827' : '#fff');\n  span.innerHTML = html;\n  wrap.appendChild(span);\n  return wrap;\n}\n\nfunction attachCoreChat(container: HTMLElement, opts: InitOptions, client: AraClient) {\n  const theme = opts.theme?.chatWindow ?? {};\n\n  const root = document.createElement('div');\n  root.style.position = 'relative';\n  root.style.display = 'flex';\n  root.style.flexDirection = 'column';\n  root.style.background = theme.backgroundColor ?? '#fff';\n  root.style.width = (theme.width ?? 380) + 'px';\n  root.style.height = (theme.height ?? 560) + 'px';\n  root.style.border = '1px solid #e5e7eb';\n  root.style.borderRadius = '14px';\n  root.style.boxShadow = '0 12px 30px rgba(0,0,0,0.12)';\n  root.style.overflow = 'hidden';\n  root.style.fontFamily = 'system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial';\n  root.style.fontSize = (theme.fontSize ?? 14) + 'px';\n\n  const header = document.createElement('div');\n  header.style.display = 'flex';\n  header.style.alignItems = 'center';\n  header.style.gap = '8px';\n  header.style.padding = '10px 12px';\n  header.style.background = theme.titleBackgroundColor ?? '#111827';\n  header.style.color = theme.titleTextColor ?? '#fff';\n  header.style.position = 'relative';\n  if (theme.showTitle !== false) {\n    if (theme.titleAvatarSrc) {\n      const img = document.createElement('img');\n      img.src = theme.titleAvatarSrc;\n      img.alt = 'avatar';\n      img.width = 20;\n      img.height = 20;\n      img.style.borderRadius = '50%';\n      header.appendChild(img);\n    }\n    const title = document.createElement('div');\n    title.textContent = theme.title ?? 'ARA';\n    title.style.fontWeight = '600';\n    header.appendChild(title);\n  }\n\n  // Add action area (top-right \"+\" button)\n  const headerActions = document.createElement('div');\n  headerActions.style.marginLeft = 'auto';\n  headerActions.style.display = 'flex';\n  headerActions.style.alignItems = 'center';\n  headerActions.style.gap = '6px';\n\n  const plusBtn = document.createElement('button');\n  plusBtn.type = 'button';\n  plusBtn.setAttribute('aria-label', 'Open transfer widget');\n  plusBtn.textContent = '+';\n  plusBtn.style.width = '24px';\n  plusBtn.style.height = '24px';\n  plusBtn.style.lineHeight = '24px';\n  plusBtn.style.borderRadius = '6px';\n  plusBtn.style.border = '1px solid rgba(255,255,255,0.2)';\n  plusBtn.style.background = 'transparent';\n  plusBtn.style.color = header.style.color;\n  plusBtn.style.cursor = 'pointer';\n  plusBtn.style.fontWeight = '700';\n  plusBtn.style.fontSize = '16px';\n\n  headerActions.appendChild(plusBtn);\n  header.appendChild(headerActions);\n\n  const view = document.createElement('div');\n  view.style.flex = '1';\n  view.style.padding = '12px';\n  view.style.overflow = 'auto';\n\n  const inputWrap = document.createElement('div');\n  inputWrap.style.display = 'flex';\n  inputWrap.style.gap = '8px';\n  inputWrap.style.padding = '10px 12px';\n  inputWrap.style.borderTop = '1px solid #e5e7eb';\n\n  const input = document.createElement('input');\n  input.type = 'text';\n  input.placeholder = opts.theme?.chatWindow?.textInput?.placeholder ?? '메시지를 입력하세요';\n  input.style.flex = '1';\n  input.style.border = '1px solid #e5e7eb';\n  input.style.borderRadius = '10px';\n  input.style.padding = '10px 12px';\n  input.style.background = opts.theme?.chatWindow?.textInput?.backgroundColor ?? '#fff';\n  input.style.color = opts.theme?.chatWindow?.textInput?.textColor ?? '#111827';\n\n  const send = document.createElement('button');\n  send.textContent = '전송';\n  send.type = 'button';\n  send.style.border = '1px solid #e5e7eb';\n  send.style.borderRadius = '10px';\n  send.style.padding = '10px 12px';\n  send.style.background = opts.theme?.chatWindow?.textInput?.sendButtonColor ?? '#111827';\n  send.style.color = '#fff';\n\n  inputWrap.appendChild(input);\n  inputWrap.appendChild(send);\n\n  root.appendChild(header);\n  root.appendChild(view);\n  root.appendChild(inputWrap);\n  container.appendChild(root);\n\n  // Transfer widget shell (overlay inside chat window)\n  const widgetShell = document.createElement('div');\n  widgetShell.style.position = 'absolute';\n  widgetShell.style.top = '50px';\n  widgetShell.style.right = '12px';\n  widgetShell.style.zIndex = '10';\n  widgetShell.style.display = 'none';\n  root.appendChild(widgetShell);\n\n  const chatId = opts.chatId ?? generateId(12);\n  if (theme.welcomeMessage) {\n    view.appendChild(createBubble(theme.botMessage, 'left', escapeHtml(theme.welcomeMessage)));\n  }\n\n  let currentAnswer: HTMLDivElement | null = null;\n\n  function begin() {\n    currentAnswer = createBubble(theme.botMessage, 'left', '');\n    view.appendChild(currentAnswer);\n    view.scrollTop = view.scrollHeight;\n  }\n\n  function item(text: string) {\n    if (!currentAnswer) return;\n    const span = currentAnswer.querySelector('span');\n    if (!span) return;\n    span.textContent = (span.textContent ?? '') + text;\n    view.scrollTop = view.scrollHeight;\n  }\n\n  function end() {\n    currentAnswer = null;\n  }\n\n  function onError(err: unknown) {\n    const msg = theme.errorMessage ?? '오류가 발생했습니다';\n    view.appendChild(createBubble(theme.botMessage, 'left', `${msg}: ${escapeHtml(String(err))}`));\n  }\n\n  async function doSend(q: string) {\n    if (!q) return;\n    view.appendChild(createBubble(theme.userMessage, 'right', escapeHtml(q)));\n    input.value = '';\n    await client.start(\n      {\n        body: {\n          chatId,\n          question: q,\n          locale: opts.locale ?? (navigator.language || 'ko-KR'),\n          requestType: opts.requestType,\n          walletAddress: opts.walletAddress,\n        },\n      },\n      { onBegin: () => begin(), onItem: (t) => item(t), onEnd: () => end(), onError }\n    );\n  }\n\n  send.addEventListener('click', () => doSend(input.value.trim()));\n  let composing = false;\n  input.addEventListener('compositionstart', () => {\n    composing = true;\n  });\n  input.addEventListener('compositionend', () => {\n    composing = false;\n  });\n  input.addEventListener('keydown', (e) => {\n    // IME 조합(한글 등) 중 Enter 입력은 무시하여 중복 전송 방지\n    // 일부 브라우저는 조합 중 keyCode 229를 사용\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const anyEvent = e as any;\n    if (composing || (e as KeyboardEvent).isComposing || anyEvent.keyCode === 229) return;\n    if (e.key === 'Enter') {\n      e.preventDefault();\n      doSend(input.value.trim());\n    }\n  });\n\n  // Mount simple CROSS transfer widget\n  let widgetCreated = false;\n  let widgetOpen = false;\n  let setFromAddress: ((addr: string | null) => void) | null = null;\n  let updateBusy: ((busy: boolean, text?: string) => void) | null = null;\n\n  function ensureWidget() {\n    if (widgetCreated) return;\n    const controls = createCrossTransferWidget(widgetShell);\n    setFromAddress = controls.setFromAddress;\n    updateBusy = controls.updateBusy;\n    widgetCreated = true;\n  }\n\n  // CROSS SDK singleton (lazy init per page)\n  let crossSdkInitialized = false;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  let crossSdkInstance: any = null;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  let appkitWallet: any = null;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  let crossAccountState: any = null;\n\n  async function ensureCrossSdkLocal() {\n    if (crossSdkInitialized) return;\n    // 전역 CrossSdk 보장: window.CrossSdk 또는 CDN에서 동적 로드\n    if (!CrossSdk) {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      const w: any = typeof window !== 'undefined' ? (window as any) : null;\n      if (w && w.CrossSdk) {\n        CrossSdk = w.CrossSdk;\n      } else if (typeof window !== 'undefined') {\n        // eslint-disable-next-line @typescript-eslint/no-implied-eval\n        const dynamicImport = new Function('u', 'return import(u)') as (u: string) => Promise<any>;\n        CrossSdk = await dynamicImport('https://sdk-cdn.crosstoken.io/cross-sdk/1.8.1/cross-sdk.js');\n      }\n    }\n    const metadata = {\n      name: 'ARA Embed',\n      description: 'ARA Chat + CROSS Wallet',\n      url: typeof window !== 'undefined' ? window.location.origin : '',\n      icons: ['https://contents.crosstoken.io/wallet/token/images/CROSSx.svg'],\n    };\n    const projectId = (typeof window !== 'undefined' && (window as any).VITE_PROJECT_ID) || '0979fd7c92ec3dbd8e78f433c3e5a523';\n    const redirectUrl = typeof window !== 'undefined' ? window.location.href : '';\n    crossSdkInstance = (CrossSdk as any).initCrossSdkWithParams({ projectId, redirectUrl, metadata, themeMode: 'light' });\n    appkitWallet = (CrossSdk as any).useAppKitWallet();\n    crossSdkInstance.subscribeAccount((state: unknown) => {\n      crossAccountState = state as any;\n      // Update widget header shortcut if opened\n      setFromAddress?.((crossAccountState?.address as string) ?? null);\n    });\n    crossSdkInitialized = true;\n  }\n\n  plusBtn.addEventListener('click', async () => {\n    ensureWidget();\n    widgetOpen = !widgetOpen;\n    widgetShell.style.display = widgetOpen ? 'block' : 'none';\n    if (!widgetOpen) return;\n    await ensureCrossSdkLocal();\n    // reflect latest account\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const addr = (crossAccountState?.address as any) ?? null;\n    setFromAddress?.(addr ?? null);\n  });\n\n  return { root, doSend } as const;\n}\n\nexport function initPopup(options: InitOptions) {\n  const theme = options.theme?.button ?? {};\n\n  const client = new AraClient({ baseUrl: options.baseUrl, bearerToken: options.bearerToken });\n\n  const btn = document.createElement('button');\n  const size = theme.size ?? 56;\n  btn.style.position = 'fixed';\n  btn.style.right = (theme.right ?? 20) + 'px';\n  btn.style.bottom = (theme.bottom ?? 20) + 'px';\n  btn.style.width = size + 'px';\n  btn.style.height = size + 'px';\n  btn.style.borderRadius = '50%';\n  btn.style.border = 'none';\n  btn.style.boxShadow = '0 10px 20px rgba(0,0,0,0.15)';\n  btn.style.cursor = 'pointer';\n  btn.style.background = theme.backgroundColor ?? '#111827';\n  btn.style.color = theme.iconColor ?? '#fff';\n  btn.style.zIndex = '2147483000';\n  btn.setAttribute('aria-label', 'Open ARA chat');\n  if (theme.customIconSrc) {\n    btn.style.backgroundImage = `url(${theme.customIconSrc})`;\n    btn.style.backgroundSize = '60%';\n    btn.style.backgroundRepeat = 'no-repeat';\n    btn.style.backgroundPosition = 'center';\n  } else {\n    btn.innerHTML = 'ARA';\n    btn.style.fontWeight = '700';\n  }\n\n  const shell = document.createElement('div');\n  shell.style.position = 'fixed';\n  shell.style.right = ((theme.right ?? 20) + 4) + 'px';\n  shell.style.bottom = ((theme.bottom ?? 20) + (size + 10)) + 'px';\n  shell.style.zIndex = '2147483000';\n  shell.style.display = 'none';\n\n  const { root } = attachCoreChat(shell, options, client);\n\n  document.body.appendChild(btn);\n  document.body.appendChild(shell);\n\n  let open = false;\n  function toggle() {\n    open = !open;\n    shell.style.display = open ? 'block' : 'none';\n  }\n\n  btn.addEventListener('click', toggle);\n\n  if (theme.autoWindowOpen?.autoOpen) {\n    const delay = Math.max(0, (theme.autoWindowOpen.openDelay ?? 0)) * 1000;\n    const isMobile = /Mobi|Android/i.test(navigator.userAgent);\n    if (!isMobile || theme.autoWindowOpen.autoOpenOnMobile) {\n      setTimeout(() => {\n        toggle();\n      }, delay);\n    }\n  }\n\n  return {\n    open: () => {\n      if (!open) toggle();\n    },\n    close: () => {\n      if (open) toggle();\n    },\n    destroy: () => {\n      document.body.removeChild(btn);\n      document.body.removeChild(shell);\n    },\n  } as const;\n}\n\nexport function initFull(options: InitOptions) {\n  const client = new AraClient({ baseUrl: options.baseUrl, bearerToken: options.bearerToken });\n  const container =\n    typeof options.container === 'string'\n      ? (document.querySelector(options.container) as HTMLElement | null)\n      : options.container ?? null;\n\n  const mount = container ?? (() => {\n    const el = document.createElement('div');\n    el.style.position = 'fixed';\n    el.style.left = '0';\n    el.style.top = '0';\n    el.style.width = '100vw';\n    el.style.height = '100vh';\n    el.style.display = 'flex';\n    el.style.alignItems = 'center';\n    el.style.justifyContent = 'center';\n    el.style.background = options.theme?.chatWindow?.backgroundColor ?? '#f9fafb';\n    document.body.appendChild(el);\n    return el;\n  })();\n\n  const { root } = attachCoreChat(mount, options, client);\n  if (!container) {\n    // center dialog style\n    root.style.width = (options.theme?.chatWindow?.width ?? 560) + 'px';\n    root.style.height = (options.theme?.chatWindow?.height ?? 640) + 'px';\n  } else {\n    // fill container\n    root.style.width = '100%';\n    root.style.height = '100%';\n    root.style.borderRadius = '0';\n  }\n\n  return {\n    destroy: () => {\n      if (!container && mount.parentElement) {\n        mount.parentElement.removeChild(mount);\n      } else if (container) {\n        mount.innerHTML = '';\n      }\n    },\n  } as const;\n}\n\nfunction escapeHtml(s: string) {\n  return s\n    .replace(/&/g, '&amp;')\n    .replace(/</g, '&lt;')\n    .replace(/>/g, '&gt;')\n    .replace(/\"/g, '&quot;')\n    .replace(/'/g, '&#039;');\n}\n\n// Lightweight CROSS transfer widget (inside chat)\nfunction createCrossTransferWidget(mount: HTMLElement) {\n  const style = document.createElement('style');\n  style.textContent = `\n  .ara-xfer-panel { background:#1c2029; width:335px; border-radius:16px; padding:16px; color:#fff; box-shadow:0 10px 24px rgba(0,0,0,.28); }\n  .ara-xfer-title { display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; }\n  .ara-xfer-sub { color:#20e2bb; font-size:14px; font-weight:600; }\n  .ara-xfer-field { background:rgba(0,0,0,.3); border-radius:12px; padding:10px 12px; display:flex; align-items:center; gap:8px; }\n  .ara-xfer-label { font-size:12px; color:#fff; margin:6px 0 6px 2px; }\n  .ara-xfer-input { flex:1; background:transparent; border:none; outline:none; color:#fff; font-size:14px; }\n  .ara-xfer-meta { color:#9b8cef; font-size:12px; margin-top:6px; }\n  .ara-xfer-row { display:flex; flex-direction:column; gap:6px; margin-bottom:10px; }\n  .ara-xfer-button { width:100%; height:40px; border-radius:12px; background:#998aef; border:none; color:#000; font-size:15px; font-weight:600; cursor:pointer; }\n  .ara-xfer-button[disabled] { opacity:.6; cursor:not-allowed; }\n  .ara-xfer-from { display:flex; align-items:center; gap:8px; }\n  .ara-xfer-connect { margin-left:auto; background:transparent; color:#20e2bb; border:1px solid rgba(32,226,187,.4); padding:6px 10px; border-radius:8px; cursor:pointer; }\n  .ara-xfer-toast { margin-top:8px; font-size:12px; color:#20e2bb; min-height:16px; }\n  `;\n  mount.appendChild(style);\n\n  const root = document.createElement('div');\n  root.className = 'ara-xfer-panel';\n\n  const title = document.createElement('div');\n  title.className = 'ara-xfer-title';\n  title.innerHTML = `<div class=\"ara-xfer-sub\">Asset Transfer</div>`;\n  root.appendChild(title);\n\n  // From (wallet)\n  const fromRow = document.createElement('div');\n  fromRow.className = 'ara-xfer-row';\n  const fromLabel = document.createElement('div');\n  fromLabel.className = 'ara-xfer-label';\n  fromLabel.textContent = 'From';\n  const fromField = document.createElement('div');\n  fromField.className = 'ara-xfer-field ara-xfer-from';\n  const fromText = document.createElement('div');\n  fromText.style.fontSize = '14px';\n  fromText.textContent = '지갑이 연결되지 않았습니다';\n  const btnConnect = document.createElement('button');\n  btnConnect.className = 'ara-xfer-connect';\n  btnConnect.type = 'button';\n  btnConnect.textContent = 'Connect';\n  fromField.appendChild(fromText);\n  fromField.appendChild(btnConnect);\n  fromRow.appendChild(fromLabel);\n  fromRow.appendChild(fromField);\n  root.appendChild(fromRow);\n\n  // To\n  const toRow = document.createElement('div');\n  toRow.className = 'ara-xfer-row';\n  const toLabel = document.createElement('div');\n  toLabel.className = 'ara-xfer-label';\n  toLabel.textContent = 'To';\n  const toField = document.createElement('div');\n  toField.className = 'ara-xfer-field';\n  const toInput = document.createElement('input');\n  toInput.className = 'ara-xfer-input';\n  toInput.placeholder = 'Address (0x...) 또는 이름';\n  toField.appendChild(toInput);\n  toRow.appendChild(toLabel);\n  toRow.appendChild(toField);\n  root.appendChild(toRow);\n\n  // Amount\n  const amtRow = document.createElement('div');\n  amtRow.className = 'ara-xfer-row';\n  const amtLabel = document.createElement('div');\n  amtLabel.className = 'ara-xfer-label';\n  amtLabel.textContent = 'Amount (CROSS)';\n  const amtField = document.createElement('div');\n  amtField.className = 'ara-xfer-field';\n  const amtInput = document.createElement('input');\n  amtInput.className = 'ara-xfer-input';\n  amtInput.placeholder = '전송할 수량 입력';\n  amtInput.inputMode = 'decimal';\n  amtField.appendChild(amtInput);\n  const balanceMeta = document.createElement('div');\n  balanceMeta.className = 'ara-xfer-meta';\n  balanceMeta.textContent = 'Balance: -';\n  amtRow.appendChild(amtLabel);\n  amtRow.appendChild(amtField);\n  amtRow.appendChild(balanceMeta);\n  root.appendChild(amtRow);\n\n  const btnSend = document.createElement('button');\n  btnSend.className = 'ara-xfer-button';\n  btnSend.type = 'button';\n  btnSend.textContent = 'Transfer';\n  root.appendChild(btnSend);\n\n  const toast = document.createElement('div');\n  toast.className = 'ara-xfer-toast';\n  root.appendChild(toast);\n\n  mount.appendChild(root);\n\n  // State\n  let currentAccount: string | null = null;\n\n  function updateFrom(addr: string | null) {\n    currentAccount = addr;\n    if (addr) {\n      const short = addr.slice(0, 6) + '...' + addr.slice(-4);\n      fromText.textContent = short;\n      btnConnect.textContent = 'Connected';\n      btnConnect.disabled = true;\n    } else {\n      fromText.textContent = '지갑이 연결되지 않았습니다';\n      btnConnect.textContent = 'Connect';\n      btnConnect.disabled = false;\n    }\n  }\n\n  function setBusy(busy: boolean, text?: string) {\n    btnSend.disabled = busy;\n    btnConnect.disabled = btnConnect.disabled || busy;\n    toast.textContent = text ?? '';\n  }\n\n  function parseEtherToHexWei(v: string): string {\n    const s = v.trim();\n    if (!/^[0-9]+(\\.[0-9]{0,18})?$/.test(s)) throw new Error('잘못된 금액 형식');\n    const [intPart, fracPart = ''] = s.split('.');\n    const frac = (fracPart + '0'.repeat(18)).slice(0, 18);\n    const wei = BigInt(intPart) * 10n ** 18n + BigInt(frac);\n    return '0x' + wei.toString(16);\n  }\n\n  // Initialize CROSS SDK and subscribe to account updates\n  ensureCrossSdk().then(() => {\n    try {\n      crossSdkInstance?.subscribeAccount((state: unknown) => {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const s = state as any;\n        const addr = (s?.address as string) ?? null;\n        updateFrom(addr);\n        const b = (s?.balance as string | number | bigint | undefined);\n        if (b !== undefined && b !== null) {\n          const text = typeof b === 'bigint' ? b.toString() : String(b);\n          balanceMeta.textContent = `Balance: ${text}`;\n        }\n      });\n    } catch {}\n  });\n\n  async function connect() {\n    await ensureCrossSdk();\n    try {\n      await appkitWallet.connect('cross_wallet');\n    } catch (e) {\n      toast.textContent = '연결이 취소되었거나 실패했습니다';\n    }\n  }\n\n  async function send() {\n    await ensureCrossSdk();\n    if (!currentAccount) {\n      await connect();\n      if (!currentAccount) return;\n    }\n    const to = toInput.value.trim();\n    const amt = amtInput.value.trim();\n    if (!to) {\n      toast.textContent = '수신 주소를 입력하세요';\n      return;\n    }\n    if (!/^0x[0-9a-fA-F]{40}$/.test(to)) {\n      toast.textContent = '올바른 EVM 주소가 아닙니다';\n      return;\n    }\n    try {\n      setBusy(true, '전송 중...');\n      const amount = (() => {\n        const s = amt.trim();\n        if (!/^[0-9]+(\\.[0-9]{0,18})?$/.test(s)) throw new Error('잘못된 금액 형식');\n        return parseFloat(s || '0');\n      })();\n      const resTx = await (CrossSdk as any).SendController.sendNativeToken({\n        data: '0x',\n        receiverAddress: to,\n        sendTokenAmount: amount,\n        decimals: '18',\n        type: (CrossSdk as any).ConstantsUtil.TRANSACTION_TYPE.LEGACY,\n      });\n      const done = typeof resTx === 'string' ? resTx : (resTx?.hash ?? 'done');\n      setBusy(false, `전송 완료: ${String(done).slice(0, 18)}...`);\n    } catch (e) {\n      setBusy(false, `전송 실패: ${String(e)}`);\n    }\n  }\n\n  btnConnect.addEventListener('click', connect);\n  btnSend.addEventListener('click', send);\n\n  return {\n    setFromAddress(addr: string | null) {\n      updateFrom(addr);\n    },\n    updateBusy: setBusy,\n  } as const;\n}\n\n\n","import { initFull, type InitOptions } from './ui';\n\nexport function defineAraFullChat() {\n  if (typeof window === 'undefined') return;\n  if (customElements.get('ara-fullchat')) return;\n\n  class AraFullChatElement extends HTMLElement {\n    private _destroy?: () => void;\n\n    connectedCallback() {\n      const baseUrl = this.getAttribute('base-url') || '';\n      const bearerToken = this.getAttribute('bearer-token') || undefined;\n      const locale = this.getAttribute('locale') || undefined;\n      const requestType = this.getAttribute('request-type') || undefined;\n      const walletAddress = this.getAttribute('wallet-address') || undefined;\n\n      const options: InitOptions = {\n        baseUrl,\n        bearerToken,\n        locale,\n        requestType,\n        walletAddress,\n        container: this,\n      };\n\n      const instance = initFull(options);\n      this._destroy = instance.destroy;\n    }\n\n    disconnectedCallback() {\n      try {\n        this._destroy?.();\n      } catch {}\n      this._destroy = undefined;\n    }\n  }\n\n  customElements.define('ara-fullchat', AraFullChatElement);\n}\n\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEO,SAAS,eAAe,QAAmD;AAChF,QAAM,QAAQ,OAAO,MAAM,OAAO;AAClC,QAAM,OAAO,MAAM,IAAI,KAAK;AAC5B,SAAO,EAAE,OAAO,OAAO,KAAK;AAC9B;AAEO,SAAS,UAAU,MAA+B;AACvD,QAAM,UAAU,KAAK,KAAK;AAC1B,MAAI,CAAC,QAAS,QAAO;AACrB,QAAM,UAAU,QAAQ,WAAW,OAAO,IAAI,QAAQ,MAAM,CAAC,EAAE,KAAK,IAAI;AACxE,MAAI;AACF,UAAM,MAAM,KAAK,MAAM,OAAO;AAC9B,QAAI,OAAO,OAAO,QAAQ,YAAY,UAAU,KAAK;AACnD,aAAO;AAAA,IACT;AAAA,EACF,QAAQ;AAAA,EAER;AACA,SAAO;AACT;;;AClBA,eAAsB,UAAU,MAAwB,GAAgB;AACtE,QAAM,EAAE,SAAS,aAAa,MAAM,UAAU,CAAC,GAAG,OAAO,IAAI;AAE7D,QAAM,MAAM,MAAM,MAAM,SAAS;AAAA,IAC/B,QAAQ;AAAA,IACR,SAAS;AAAA,MACP,GAAI,cAAc,EAAE,eAAe,UAAU,WAAW,GAAG,IAAI,CAAC;AAAA,MAChE,gBAAgB;AAAA,MAChB,GAAG;AAAA,IACL;AAAA,IACA,MAAM,KAAK,UAAU,IAAI;AAAA,IACzB;AAAA,EACF,CAAC;AAED,MAAI,CAAC,IAAI,IAAI;AACX,UAAM,MAAM,IAAI,MAAM,QAAQ,IAAI,MAAM,EAAE;AAC1C,MAAE,UAAU,GAAG;AACf,MAAE,YAAY;AACd,UAAM;AAAA,EACR;AACA,MAAI,CAAC,IAAI,MAAM;AACb,UAAM,MAAM,IAAI,MAAM,wBAAwB;AAC9C,MAAE,UAAU,GAAG;AACf,MAAE,YAAY;AACd,UAAM;AAAA,EACR;AAEA,QAAM,SAAS,IAAI,KAAK,UAAU;AAClC,QAAM,UAAU,IAAI,YAAY,OAAO;AACvC,MAAI,SAAS;AAEb,MAAI;AACF,WAAO,MAAM;AACX,YAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAC1C,UAAI,KAAM;AACV,gBAAU,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC;AAChD,YAAM,EAAE,OAAO,KAAK,IAAI,eAAe,MAAM;AAC7C,eAAS;AACT,iBAAW,QAAQ,OAAO;AACxB,cAAM,MAAM,UAAU,IAAI;AAC1B,YAAI,CAAC,IAAK;AACV,YAAI,IAAI,SAAS,QAAS,GAAE,UAAU,IAAI,QAAmC;AAAA,iBACpE,IAAI,SAAS,OAAQ,GAAE,SAAS,IAAI,SAAS,IAAI,QAAmC;AAAA,iBACpF,IAAI,SAAS,MAAO,GAAE,QAAQ,IAAI,QAAmC;AAAA,MAChF;AAAA,IACF;AACA,UAAM,OAAO,OAAO,KAAK;AACzB,QAAI,MAAM;AACR,YAAM,MAAM,UAAU,IAAI;AAC1B,UAAI,KAAK;AACP,YAAI,IAAI,SAAS,QAAS,GAAE,UAAU,IAAI,QAAmC;AAAA,iBACpE,IAAI,SAAS,OAAQ,GAAE,SAAS,IAAI,SAAS,IAAI,QAAmC;AAAA,iBACpF,IAAI,SAAS,MAAO,GAAE,QAAQ,IAAI,QAAmC;AAAA,MAChF;AAAA,IACF;AAAA,EACF,SAAS,GAAG;AACV,QAAK,GAAgC,SAAS,cAAc;AAC1D,QAAE,UAAU,CAAC;AAAA,IACf;AAAA,EACF,UAAE;AACA,QAAI;AACF,aAAO,YAAY;AAAA,IACrB,QAAQ;AAAA,IAER;AACA,MAAE,YAAY;AAAA,EAChB;AACF;AAEO,IAAM,YAAN,MAAgB;AAAA,EAMrB,YAAY,MAAqB;AAFjC,SAAQ,aAAqC;AAG3C,SAAK,UAAU,KAAK;AACpB,SAAK,cAAc,KAAK;AACxB,SAAK,iBAAiB,KAAK;AAAA,EAC7B;AAAA,EAEA,SAAS;AACP,SAAK,YAAY,MAAM;AACvB,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,MAAM,MAAM,QAAqB,UAAuB;AACtD,SAAK,OAAO;AACZ,UAAM,aAAa,IAAI,gBAAgB;AACvC,SAAK,aAAa;AAClB,UAAM,EAAE,SAAS,QAAQ,GAAG,KAAK,IAAI;AACrC,UAAM,OAAyB;AAAA,MAC7B,SAAS,KAAK;AAAA,MACd,aAAa,KAAK;AAAA,MAClB,MAAM,KAAK;AAAA,MACX,SAAS,EAAE,GAAG,KAAK,gBAAgB,GAAG,QAAQ;AAAA,MAC9C,QAAQ,UAAU,WAAW;AAAA,IAC/B;AACA,WAAO,UAAU,MAAM,QAAQ;AAAA,EACjC;AACF;;;ACvGO,SAAS,WAAW,SAAS,IAAI;AACtC,QAAM,QAAQ,IAAI,WAAW,MAAM;AACnC,SAAO,gBAAgB,KAAK;AAC5B,SAAO,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AAC1E;;;ACAA,IAAI,WAAgB;AAGpB,IAAI,sBAAsB;AAE1B,IAAI,mBAAwB;AAE5B,IAAI,eAAoB;AAExB,IAAI,oBAAyB;AAC7B,IAAI,oBAAyB;AAE7B,eAAe,iBAAiB;AAC9B,MAAI,oBAAqB;AACzB,MAAI,CAAC,UAAU;AAGb,UAAM,IAAS,OAAO,WAAW,cAAe,SAAiB;AACjE,QAAI,KAAK,EAAE,UAAU;AACnB,iBAAW,EAAE;AAAA,IACf,WAAW,OAAO,WAAW,aAAa;AAGxC,YAAM,gBAAgB,IAAI,SAAS,KAAK,kBAAkB;AAC1D,iBAAW,MAAM,cAAc,4DAA4D;AAAA,IAC7F;AAAA,EACF;AACA,QAAM,WAAW;AAAA,IACf,MAAM;AAAA,IACN,aAAa;AAAA,IACb,KAAK,OAAO,WAAW,cAAc,OAAO,SAAS,SAAS;AAAA,IAC9D,OAAO,CAAC,+DAA+D;AAAA,EACzE;AACA,QAAM,YAAa,OAAO,WAAW,eAAgB,OAAe,mBAAoB;AACxF,QAAM,cAAc,OAAO,WAAW,cAAc,OAAO,SAAS,OAAO;AAC3E,MAAK,SAAiB,cAAc;AAClC,uBAAoB,SAAiB;AAAA,MACnC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACC,SAAiB,eAAe,mBAAmB;AAAA,IACtD;AAAA,EACF,OAAO;AACL,uBAAoB,SAAiB,uBAAuB,EAAE,WAAW,aAAa,UAAU,WAAW,QAAQ,CAAC;AAAA,EACtH;AACA,iBAAgB,SAAiB,gBAAgB;AACjD,mBAAiB,iBAAiB,CAAC,UAAmB;AACpD,wBAAoB;AAAA,EACtB,CAAC;AACD,MAAI,iBAAiB,kBAAkB;AACrC,qBAAiB,iBAAiB,CAAC,UAAmB;AACpD,0BAAoB;AAAA,IACtB,CAAC;AAAA,EACH;AACA,wBAAsB;AACxB;AA6DA,SAAS,aAAa,OAAiC,OAAyB,MAAc;AAC5F,QAAM,OAAO,SAAS,cAAc,KAAK;AACzC,OAAK,MAAM,SAAS;AACpB,OAAK,MAAM,YAAY,UAAU,SAAS,SAAS;AACnD,QAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,OAAK,MAAM,UAAU;AACrB,OAAK,MAAM,UAAU;AACrB,OAAK,MAAM,eAAe,UAAU,SAAS,uBAAuB;AACpE,OAAK,MAAM,WAAW;AACtB,OAAK,MAAM,YAAY;AACvB,OAAK,MAAM,aAAa,OAAO,oBAAoB,UAAU,SAAS,YAAY;AAClF,OAAK,MAAM,QAAQ,OAAO,cAAc,UAAU,SAAS,YAAY;AACvE,OAAK,YAAY;AACjB,OAAK,YAAY,IAAI;AACrB,SAAO;AACT;AAEA,SAAS,eAAe,WAAwB,MAAmB,QAAmB;AACpF,QAAM,QAAQ,KAAK,OAAO,cAAc,CAAC;AAEzC,QAAM,OAAO,SAAS,cAAc,KAAK;AACzC,OAAK,MAAM,WAAW;AACtB,OAAK,MAAM,UAAU;AACrB,OAAK,MAAM,gBAAgB;AAC3B,OAAK,MAAM,aAAa,MAAM,mBAAmB;AACjD,OAAK,MAAM,SAAS,MAAM,SAAS,OAAO;AAC1C,OAAK,MAAM,UAAU,MAAM,UAAU,OAAO;AAC5C,OAAK,MAAM,SAAS;AACpB,OAAK,MAAM,eAAe;AAC1B,OAAK,MAAM,YAAY;AACvB,OAAK,MAAM,WAAW;AACtB,OAAK,MAAM,aAAa;AACxB,OAAK,MAAM,YAAY,MAAM,YAAY,MAAM;AAE/C,QAAM,SAAS,SAAS,cAAc,KAAK;AAC3C,SAAO,MAAM,UAAU;AACvB,SAAO,MAAM,aAAa;AAC1B,SAAO,MAAM,MAAM;AACnB,SAAO,MAAM,UAAU;AACvB,SAAO,MAAM,aAAa,MAAM,wBAAwB;AACxD,SAAO,MAAM,QAAQ,MAAM,kBAAkB;AAC7C,SAAO,MAAM,WAAW;AACxB,MAAI,MAAM,cAAc,OAAO;AAC7B,QAAI,MAAM,gBAAgB;AACxB,YAAM,MAAM,SAAS,cAAc,KAAK;AACxC,UAAI,MAAM,MAAM;AAChB,UAAI,MAAM;AACV,UAAI,QAAQ;AACZ,UAAI,SAAS;AACb,UAAI,MAAM,eAAe;AACzB,aAAO,YAAY,GAAG;AAAA,IACxB;AACA,UAAM,QAAQ,SAAS,cAAc,KAAK;AAC1C,UAAM,cAAc,MAAM,SAAS;AACnC,UAAM,MAAM,aAAa;AACzB,WAAO,YAAY,KAAK;AAAA,EAC1B;AAGA,QAAM,gBAAgB,SAAS,cAAc,KAAK;AAClD,gBAAc,MAAM,aAAa;AACjC,gBAAc,MAAM,UAAU;AAC9B,gBAAc,MAAM,aAAa;AACjC,gBAAc,MAAM,MAAM;AAE1B,QAAM,UAAU,SAAS,cAAc,QAAQ;AAC/C,UAAQ,OAAO;AACf,UAAQ,aAAa,cAAc,sBAAsB;AACzD,UAAQ,cAAc;AACtB,UAAQ,MAAM,QAAQ;AACtB,UAAQ,MAAM,SAAS;AACvB,UAAQ,MAAM,aAAa;AAC3B,UAAQ,MAAM,eAAe;AAC7B,UAAQ,MAAM,SAAS;AACvB,UAAQ,MAAM,aAAa;AAC3B,UAAQ,MAAM,QAAQ,OAAO,MAAM;AACnC,UAAQ,MAAM,SAAS;AACvB,UAAQ,MAAM,aAAa;AAC3B,UAAQ,MAAM,WAAW;AAEzB,gBAAc,YAAY,OAAO;AACjC,SAAO,YAAY,aAAa;AAEhC,QAAM,OAAO,SAAS,cAAc,KAAK;AACzC,OAAK,MAAM,OAAO;AAClB,OAAK,MAAM,UAAU;AACrB,OAAK,MAAM,WAAW;AAEtB,QAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,YAAU,MAAM,UAAU;AAC1B,YAAU,MAAM,MAAM;AACtB,YAAU,MAAM,UAAU;AAC1B,YAAU,MAAM,YAAY;AAE5B,QAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,QAAM,OAAO;AACb,QAAM,cAAc,KAAK,OAAO,YAAY,WAAW,eAAe;AACtE,QAAM,MAAM,OAAO;AACnB,QAAM,MAAM,SAAS;AACrB,QAAM,MAAM,eAAe;AAC3B,QAAM,MAAM,UAAU;AACtB,QAAM,MAAM,aAAa,KAAK,OAAO,YAAY,WAAW,mBAAmB;AAC/E,QAAM,MAAM,QAAQ,KAAK,OAAO,YAAY,WAAW,aAAa;AAEpE,QAAM,OAAO,SAAS,cAAc,QAAQ;AAC5C,OAAK,cAAc;AACnB,OAAK,OAAO;AACZ,OAAK,MAAM,SAAS;AACpB,OAAK,MAAM,eAAe;AAC1B,OAAK,MAAM,UAAU;AACrB,OAAK,MAAM,aAAa,KAAK,OAAO,YAAY,WAAW,mBAAmB;AAC9E,OAAK,MAAM,QAAQ;AAEnB,YAAU,YAAY,KAAK;AAC3B,YAAU,YAAY,IAAI;AAE1B,OAAK,YAAY,MAAM;AACvB,OAAK,YAAY,IAAI;AACrB,OAAK,YAAY,SAAS;AAC1B,YAAU,YAAY,IAAI;AAG1B,QAAM,cAAc,SAAS,cAAc,KAAK;AAChD,cAAY,MAAM,WAAW;AAC7B,cAAY,MAAM,MAAM;AACxB,cAAY,MAAM,QAAQ;AAC1B,cAAY,MAAM,SAAS;AAC3B,cAAY,MAAM,UAAU;AAC5B,OAAK,YAAY,WAAW;AAE5B,QAAM,SAAS,KAAK,UAAU,WAAW,EAAE;AAC3C,MAAI,MAAM,gBAAgB;AACxB,SAAK,YAAY,aAAa,MAAM,YAAY,QAAQ,WAAW,MAAM,cAAc,CAAC,CAAC;AAAA,EAC3F;AAEA,MAAI,gBAAuC;AAE3C,WAAS,QAAQ;AACf,oBAAgB,aAAa,MAAM,YAAY,QAAQ,EAAE;AACzD,SAAK,YAAY,aAAa;AAC9B,SAAK,YAAY,KAAK;AAAA,EACxB;AAEA,WAAS,KAAK,MAAc;AAC1B,QAAI,CAAC,cAAe;AACpB,UAAM,OAAO,cAAc,cAAc,MAAM;AAC/C,QAAI,CAAC,KAAM;AACX,SAAK,eAAe,KAAK,eAAe,MAAM;AAC9C,SAAK,YAAY,KAAK;AAAA,EACxB;AAEA,WAAS,MAAM;AACb,oBAAgB;AAAA,EAClB;AAEA,WAAS,QAAQ,KAAc;AAC7B,UAAM,MAAM,MAAM,gBAAgB;AAClC,SAAK,YAAY,aAAa,MAAM,YAAY,QAAQ,GAAG,GAAG,KAAK,WAAW,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;AAAA,EAC/F;AAEA,iBAAe,OAAO,GAAW;AAC/B,QAAI,CAAC,EAAG;AACR,SAAK,YAAY,aAAa,MAAM,aAAa,SAAS,WAAW,CAAC,CAAC,CAAC;AACxE,UAAM,QAAQ;AACd,UAAM,OAAO;AAAA,MACX;AAAA,QACE,MAAM;AAAA,UACJ;AAAA,UACA,UAAU;AAAA,UACV,QAAQ,KAAK,WAAW,UAAU,YAAY;AAAA,UAC9C,aAAa,KAAK;AAAA,UAClB,eAAe,KAAK;AAAA,QACtB;AAAA,MACF;AAAA,MACA,EAAE,SAAS,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,GAAG,OAAO,MAAM,IAAI,GAAG,QAAQ;AAAA,IAChF;AAAA,EACF;AAEA,OAAK,iBAAiB,SAAS,MAAM,OAAO,MAAM,MAAM,KAAK,CAAC,CAAC;AAC/D,MAAI,YAAY;AAChB,QAAM,iBAAiB,oBAAoB,MAAM;AAC/C,gBAAY;AAAA,EACd,CAAC;AACD,QAAM,iBAAiB,kBAAkB,MAAM;AAC7C,gBAAY;AAAA,EACd,CAAC;AACD,QAAM,iBAAiB,WAAW,CAAC,MAAM;AAIvC,UAAM,WAAW;AACjB,QAAI,aAAc,EAAoB,eAAe,SAAS,YAAY,IAAK;AAC/E,QAAI,EAAE,QAAQ,SAAS;AACrB,QAAE,eAAe;AACjB,aAAO,MAAM,MAAM,KAAK,CAAC;AAAA,IAC3B;AAAA,EACF,CAAC;AAGD,MAAI,gBAAgB;AACpB,MAAI,aAAa;AACjB,MAAI,iBAAyD;AAC7D,MAAI,aAA8D;AAElE,WAAS,eAAe;AACtB,QAAI,cAAe;AACnB,UAAM,WAAW,0BAA0B,WAAW;AACtD,qBAAiB,SAAS;AAC1B,iBAAa,SAAS;AACtB,oBAAgB;AAAA,EAClB;AAGA,MAAIA,uBAAsB;AAE1B,MAAIC,oBAAwB;AAE5B,MAAIC,gBAAoB;AAExB,MAAIC,qBAAyB;AAE7B,iBAAe,sBAAsB;AACnC,QAAIH,qBAAqB;AAEzB,QAAI,CAAC,UAAU;AAEb,YAAM,IAAS,OAAO,WAAW,cAAe,SAAiB;AACjE,UAAI,KAAK,EAAE,UAAU;AACnB,mBAAW,EAAE;AAAA,MACf,WAAW,OAAO,WAAW,aAAa;AAExC,cAAM,gBAAgB,IAAI,SAAS,KAAK,kBAAkB;AAC1D,mBAAW,MAAM,cAAc,4DAA4D;AAAA,MAC7F;AAAA,IACF;AACA,UAAM,WAAW;AAAA,MACf,MAAM;AAAA,MACN,aAAa;AAAA,MACb,KAAK,OAAO,WAAW,cAAc,OAAO,SAAS,SAAS;AAAA,MAC9D,OAAO,CAAC,+DAA+D;AAAA,IACzE;AACA,UAAM,YAAa,OAAO,WAAW,eAAgB,OAAe,mBAAoB;AACxF,UAAM,cAAc,OAAO,WAAW,cAAc,OAAO,SAAS,OAAO;AAC3E,IAAAC,oBAAoB,SAAiB,uBAAuB,EAAE,WAAW,aAAa,UAAU,WAAW,QAAQ,CAAC;AACpH,IAAAC,gBAAgB,SAAiB,gBAAgB;AACjD,IAAAD,kBAAiB,iBAAiB,CAAC,UAAmB;AACpD,MAAAE,qBAAoB;AAEpB,uBAAkBA,oBAAmB,WAAsB,IAAI;AAAA,IACjE,CAAC;AACD,IAAAH,uBAAsB;AAAA,EACxB;AAEA,UAAQ,iBAAiB,SAAS,YAAY;AAC5C,iBAAa;AACb,iBAAa,CAAC;AACd,gBAAY,MAAM,UAAU,aAAa,UAAU;AACnD,QAAI,CAAC,WAAY;AACjB,UAAM,oBAAoB;AAG1B,UAAM,OAAQG,oBAAmB,WAAmB;AACpD,qBAAiB,QAAQ,IAAI;AAAA,EAC/B,CAAC;AAED,SAAO,EAAE,MAAM,OAAO;AACxB;AAEO,SAAS,UAAU,SAAsB;AAC9C,QAAM,QAAQ,QAAQ,OAAO,UAAU,CAAC;AAExC,QAAM,SAAS,IAAI,UAAU,EAAE,SAAS,QAAQ,SAAS,aAAa,QAAQ,YAAY,CAAC;AAE3F,QAAM,MAAM,SAAS,cAAc,QAAQ;AAC3C,QAAM,OAAO,MAAM,QAAQ;AAC3B,MAAI,MAAM,WAAW;AACrB,MAAI,MAAM,SAAS,MAAM,SAAS,MAAM;AACxC,MAAI,MAAM,UAAU,MAAM,UAAU,MAAM;AAC1C,MAAI,MAAM,QAAQ,OAAO;AACzB,MAAI,MAAM,SAAS,OAAO;AAC1B,MAAI,MAAM,eAAe;AACzB,MAAI,MAAM,SAAS;AACnB,MAAI,MAAM,YAAY;AACtB,MAAI,MAAM,SAAS;AACnB,MAAI,MAAM,aAAa,MAAM,mBAAmB;AAChD,MAAI,MAAM,QAAQ,MAAM,aAAa;AACrC,MAAI,MAAM,SAAS;AACnB,MAAI,aAAa,cAAc,eAAe;AAC9C,MAAI,MAAM,eAAe;AACvB,QAAI,MAAM,kBAAkB,OAAO,MAAM,aAAa;AACtD,QAAI,MAAM,iBAAiB;AAC3B,QAAI,MAAM,mBAAmB;AAC7B,QAAI,MAAM,qBAAqB;AAAA,EACjC,OAAO;AACL,QAAI,YAAY;AAChB,QAAI,MAAM,aAAa;AAAA,EACzB;AAEA,QAAM,QAAQ,SAAS,cAAc,KAAK;AAC1C,QAAM,MAAM,WAAW;AACvB,QAAM,MAAM,SAAU,MAAM,SAAS,MAAM,IAAK;AAChD,QAAM,MAAM,UAAW,MAAM,UAAU,OAAO,OAAO,MAAO;AAC5D,QAAM,MAAM,SAAS;AACrB,QAAM,MAAM,UAAU;AAEtB,QAAM,EAAE,KAAK,IAAI,eAAe,OAAO,SAAS,MAAM;AAEtD,WAAS,KAAK,YAAY,GAAG;AAC7B,WAAS,KAAK,YAAY,KAAK;AAE/B,MAAI,OAAO;AACX,WAAS,SAAS;AAChB,WAAO,CAAC;AACR,UAAM,MAAM,UAAU,OAAO,UAAU;AAAA,EACzC;AAEA,MAAI,iBAAiB,SAAS,MAAM;AAEpC,MAAI,MAAM,gBAAgB,UAAU;AAClC,UAAM,QAAQ,KAAK,IAAI,GAAI,MAAM,eAAe,aAAa,CAAE,IAAI;AACnE,UAAM,WAAW,gBAAgB,KAAK,UAAU,SAAS;AACzD,QAAI,CAAC,YAAY,MAAM,eAAe,kBAAkB;AACtD,iBAAW,MAAM;AACf,eAAO;AAAA,MACT,GAAG,KAAK;AAAA,IACV;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM,MAAM;AACV,UAAI,CAAC,KAAM,QAAO;AAAA,IACpB;AAAA,IACA,OAAO,MAAM;AACX,UAAI,KAAM,QAAO;AAAA,IACnB;AAAA,IACA,SAAS,MAAM;AACb,eAAS,KAAK,YAAY,GAAG;AAC7B,eAAS,KAAK,YAAY,KAAK;AAAA,IACjC;AAAA,EACF;AACF;AAEO,SAAS,SAAS,SAAsB;AAC7C,QAAM,SAAS,IAAI,UAAU,EAAE,SAAS,QAAQ,SAAS,aAAa,QAAQ,YAAY,CAAC;AAC3F,QAAM,YACJ,OAAO,QAAQ,cAAc,WACxB,SAAS,cAAc,QAAQ,SAAS,IACzC,QAAQ,aAAa;AAE3B,QAAM,QAAQ,cAAc,MAAM;AAChC,UAAM,KAAK,SAAS,cAAc,KAAK;AACvC,OAAG,MAAM,WAAW;AACpB,OAAG,MAAM,OAAO;AAChB,OAAG,MAAM,MAAM;AACf,OAAG,MAAM,QAAQ;AACjB,OAAG,MAAM,SAAS;AAClB,OAAG,MAAM,UAAU;AACnB,OAAG,MAAM,aAAa;AACtB,OAAG,MAAM,iBAAiB;AAC1B,OAAG,MAAM,aAAa,QAAQ,OAAO,YAAY,mBAAmB;AACpE,aAAS,KAAK,YAAY,EAAE;AAC5B,WAAO;AAAA,EACT,GAAG;AAEH,QAAM,EAAE,KAAK,IAAI,eAAe,OAAO,SAAS,MAAM;AACtD,MAAI,CAAC,WAAW;AAEd,SAAK,MAAM,SAAS,QAAQ,OAAO,YAAY,SAAS,OAAO;AAC/D,SAAK,MAAM,UAAU,QAAQ,OAAO,YAAY,UAAU,OAAO;AAAA,EACnE,OAAO;AAEL,SAAK,MAAM,QAAQ;AACnB,SAAK,MAAM,SAAS;AACpB,SAAK,MAAM,eAAe;AAAA,EAC5B;AAEA,SAAO;AAAA,IACL,SAAS,MAAM;AACb,UAAI,CAAC,aAAa,MAAM,eAAe;AACrC,cAAM,cAAc,YAAY,KAAK;AAAA,MACvC,WAAW,WAAW;AACpB,cAAM,YAAY;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,WAAW,GAAW;AAC7B,SAAO,EACJ,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,QAAQ,EACtB,QAAQ,MAAM,QAAQ;AAC3B;AAGA,SAAS,0BAA0B,OAAoB;AACrD,QAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,QAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAepB,QAAM,YAAY,KAAK;AAEvB,QAAM,OAAO,SAAS,cAAc,KAAK;AACzC,OAAK,YAAY;AAEjB,QAAM,QAAQ,SAAS,cAAc,KAAK;AAC1C,QAAM,YAAY;AAClB,QAAM,YAAY;AAClB,OAAK,YAAY,KAAK;AAGtB,QAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,UAAQ,YAAY;AACpB,QAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,YAAU,YAAY;AACtB,YAAU,cAAc;AACxB,QAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,YAAU,YAAY;AACtB,QAAM,WAAW,SAAS,cAAc,KAAK;AAC7C,WAAS,MAAM,WAAW;AAC1B,WAAS,cAAc;AACvB,QAAM,aAAa,SAAS,cAAc,QAAQ;AAClD,aAAW,YAAY;AACvB,aAAW,OAAO;AAClB,aAAW,cAAc;AACzB,YAAU,YAAY,QAAQ;AAC9B,YAAU,YAAY,UAAU;AAChC,UAAQ,YAAY,SAAS;AAC7B,UAAQ,YAAY,SAAS;AAC7B,OAAK,YAAY,OAAO;AAGxB,QAAM,QAAQ,SAAS,cAAc,KAAK;AAC1C,QAAM,YAAY;AAClB,QAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,UAAQ,YAAY;AACpB,UAAQ,cAAc;AACtB,QAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,UAAQ,YAAY;AACpB,QAAM,UAAU,SAAS,cAAc,OAAO;AAC9C,UAAQ,YAAY;AACpB,UAAQ,cAAc;AACtB,UAAQ,YAAY,OAAO;AAC3B,QAAM,YAAY,OAAO;AACzB,QAAM,YAAY,OAAO;AACzB,OAAK,YAAY,KAAK;AAGtB,QAAM,SAAS,SAAS,cAAc,KAAK;AAC3C,SAAO,YAAY;AACnB,QAAM,WAAW,SAAS,cAAc,KAAK;AAC7C,WAAS,YAAY;AACrB,WAAS,cAAc;AACvB,QAAM,WAAW,SAAS,cAAc,KAAK;AAC7C,WAAS,YAAY;AACrB,QAAM,WAAW,SAAS,cAAc,OAAO;AAC/C,WAAS,YAAY;AACrB,WAAS,cAAc;AACvB,WAAS,YAAY;AACrB,WAAS,YAAY,QAAQ;AAC7B,QAAM,cAAc,SAAS,cAAc,KAAK;AAChD,cAAY,YAAY;AACxB,cAAY,cAAc;AAC1B,SAAO,YAAY,QAAQ;AAC3B,SAAO,YAAY,QAAQ;AAC3B,SAAO,YAAY,WAAW;AAC9B,OAAK,YAAY,MAAM;AAEvB,QAAM,UAAU,SAAS,cAAc,QAAQ;AAC/C,UAAQ,YAAY;AACpB,UAAQ,OAAO;AACf,UAAQ,cAAc;AACtB,OAAK,YAAY,OAAO;AAExB,QAAM,QAAQ,SAAS,cAAc,KAAK;AAC1C,QAAM,YAAY;AAClB,OAAK,YAAY,KAAK;AAEtB,QAAM,YAAY,IAAI;AAGtB,MAAI,iBAAgC;AAEpC,WAAS,WAAW,MAAqB;AACvC,qBAAiB;AACjB,QAAI,MAAM;AACR,YAAM,QAAQ,KAAK,MAAM,GAAG,CAAC,IAAI,QAAQ,KAAK,MAAM,EAAE;AACtD,eAAS,cAAc;AACvB,iBAAW,cAAc;AACzB,iBAAW,WAAW;AAAA,IACxB,OAAO;AACL,eAAS,cAAc;AACvB,iBAAW,cAAc;AACzB,iBAAW,WAAW;AAAA,IACxB;AAAA,EACF;AAEA,WAAS,QAAQ,MAAe,MAAe;AAC7C,YAAQ,WAAW;AACnB,eAAW,WAAW,WAAW,YAAY;AAC7C,UAAM,cAAc,QAAQ;AAAA,EAC9B;AAEA,WAAS,mBAAmB,GAAmB;AAC7C,UAAM,IAAI,EAAE,KAAK;AACjB,QAAI,CAAC,2BAA2B,KAAK,CAAC,EAAG,OAAM,IAAI,MAAM,8CAAW;AACpE,UAAM,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG;AAC5C,UAAM,QAAQ,WAAW,IAAI,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE;AACpD,UAAM,MAAM,OAAO,OAAO,IAAI,OAAO,MAAM,OAAO,IAAI;AACtD,WAAO,OAAO,IAAI,SAAS,EAAE;AAAA,EAC/B;AAGA,iBAAe,EAAE,KAAK,MAAM;AAC1B,QAAI;AACF,wBAAkB,iBAAiB,CAAC,UAAmB;AAErD,cAAM,IAAI;AACV,cAAM,OAAQ,GAAG,WAAsB;AACvC,mBAAW,IAAI;AACf,cAAM,IAAK,GAAG;AACd,YAAI,MAAM,UAAa,MAAM,MAAM;AACjC,gBAAM,OAAO,OAAO,MAAM,WAAW,EAAE,SAAS,IAAI,OAAO,CAAC;AAC5D,sBAAY,cAAc,YAAY,IAAI;AAAA,QAC5C;AAAA,MACF,CAAC;AAAA,IACH,QAAQ;AAAA,IAAC;AAAA,EACX,CAAC;AAED,iBAAe,UAAU;AACvB,UAAM,eAAe;AACrB,QAAI;AACF,YAAM,aAAa,QAAQ,cAAc;AAAA,IAC3C,SAAS,GAAG;AACV,YAAM,cAAc;AAAA,IACtB;AAAA,EACF;AAEA,iBAAe,OAAO;AACpB,UAAM,eAAe;AACrB,QAAI,CAAC,gBAAgB;AACnB,YAAM,QAAQ;AACd,UAAI,CAAC,eAAgB;AAAA,IACvB;AACA,UAAM,KAAK,QAAQ,MAAM,KAAK;AAC9B,UAAM,MAAM,SAAS,MAAM,KAAK;AAChC,QAAI,CAAC,IAAI;AACP,YAAM,cAAc;AACpB;AAAA,IACF;AACA,QAAI,CAAC,sBAAsB,KAAK,EAAE,GAAG;AACnC,YAAM,cAAc;AACpB;AAAA,IACF;AACA,QAAI;AACF,cAAQ,MAAM,wBAAS;AACvB,YAAM,UAAU,MAAM;AACpB,cAAM,IAAI,IAAI,KAAK;AACnB,YAAI,CAAC,2BAA2B,KAAK,CAAC,EAAG,OAAM,IAAI,MAAM,8CAAW;AACpE,eAAO,WAAW,KAAK,GAAG;AAAA,MAC5B,GAAG;AACH,YAAM,QAAQ,MAAO,SAAiB,eAAe,gBAAgB;AAAA,QACnE,MAAM;AAAA,QACN,iBAAiB;AAAA,QACjB,iBAAiB;AAAA,QACjB,UAAU;AAAA,QACV,MAAO,SAAiB,cAAc,iBAAiB;AAAA,MACzD,CAAC;AACD,YAAM,OAAO,OAAO,UAAU,WAAW,QAAS,OAAO,QAAQ;AACjE,cAAQ,OAAO,8BAAU,OAAO,IAAI,EAAE,MAAM,GAAG,EAAE,CAAC,KAAK;AAAA,IACzD,SAAS,GAAG;AACV,cAAQ,OAAO,8BAAU,OAAO,CAAC,CAAC,EAAE;AAAA,IACtC;AAAA,EACF;AAEA,aAAW,iBAAiB,SAAS,OAAO;AAC5C,UAAQ,iBAAiB,SAAS,IAAI;AAEtC,SAAO;AAAA,IACL,eAAe,MAAqB;AAClC,iBAAW,IAAI;AAAA,IACjB;AAAA,IACA,YAAY;AAAA,EACd;AACF;;;AC/sBO,SAAS,oBAAoB;AAClC,MAAI,OAAO,WAAW,YAAa;AACnC,MAAI,eAAe,IAAI,cAAc,EAAG;AAAA,EAExC,MAAM,2BAA2B,YAAY;AAAA,IAG3C,oBAAoB;AAClB,YAAM,UAAU,KAAK,aAAa,UAAU,KAAK;AACjD,YAAM,cAAc,KAAK,aAAa,cAAc,KAAK;AACzD,YAAM,SAAS,KAAK,aAAa,QAAQ,KAAK;AAC9C,YAAM,cAAc,KAAK,aAAa,cAAc,KAAK;AACzD,YAAM,gBAAgB,KAAK,aAAa,gBAAgB,KAAK;AAE7D,YAAM,UAAuB;AAAA,QAC3B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW;AAAA,MACb;AAEA,YAAM,WAAW,SAAS,OAAO;AACjC,WAAK,WAAW,SAAS;AAAA,IAC3B;AAAA,IAEA,uBAAuB;AACrB,UAAI;AACF,aAAK,WAAW;AAAA,MAClB,QAAQ;AAAA,MAAC;AACT,WAAK,WAAW;AAAA,IAClB;AAAA,EACF;AAEA,iBAAe,OAAO,gBAAgB,kBAAkB;AAC1D;;;ALlBO,SAAS,gBAAgB,MAAqB;AACnD,QAAM,YACJ,OAAO,KAAK,cAAc,WACrB,SAAS,cAAc,KAAK,SAAS,IACtC,KAAK,aAAa,SAAS;AACjC,MAAI,CAAC,UAAW,OAAM,IAAI,MAAM,qBAAqB;AAErD,QAAM,OAAO,SAAS,cAAc,KAAK;AACzC,OAAK,MAAM,WAAW;AACtB,OAAK,MAAM,UAAU;AACrB,OAAK,MAAM,gBAAgB;AAC3B,OAAK,MAAM,SAAS;AACpB,OAAK,MAAM,eAAe;AAC1B,OAAK,MAAM,UAAU;AACrB,OAAK,MAAM,QAAQ;AACnB,OAAK,MAAM,SAAS;AACpB,OAAK,MAAM,YAAY;AACvB,OAAK,MAAM,aAAa;AAExB,QAAM,OAAO,SAAS,cAAc,KAAK;AACzC,OAAK,MAAM,OAAO;AAClB,OAAK,MAAM,WAAW;AACtB,OAAK,MAAM,aAAa;AACxB,OAAK,MAAM,WAAW;AACtB,OAAK,MAAM,aAAa;AACxB,OAAK,MAAM,QAAQ;AAEnB,QAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,YAAU,MAAM,UAAU;AAC1B,YAAU,MAAM,MAAM;AAEtB,QAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,QAAM,OAAO;AACb,QAAM,cAAc,KAAK,eAAe;AACxC,QAAM,MAAM,OAAO;AACnB,QAAM,MAAM,SAAS;AACrB,QAAM,MAAM,eAAe;AAC3B,QAAM,MAAM,UAAU;AAEtB,QAAM,OAAO,SAAS,cAAc,QAAQ;AAC5C,OAAK,cAAc;AACnB,OAAK,OAAO;AACZ,OAAK,MAAM,SAAS;AACpB,OAAK,MAAM,eAAe;AAC1B,OAAK,MAAM,UAAU;AACrB,OAAK,MAAM,aAAa;AACxB,OAAK,MAAM,QAAQ;AAEnB,YAAU,YAAY,KAAK;AAC3B,YAAU,YAAY,IAAI;AAE1B,OAAK,YAAY,IAAI;AACrB,OAAK,YAAY,SAAS;AAC1B,YAAU,YAAY,IAAI;AAE1B,MAAI,YAAmC;AACvC,MAAI,YAAmC;AAEvC,WAAS,WAAW,MAAc;AAChC,UAAM,MAAM,SAAS,cAAc,KAAK;AACxC,QAAI,MAAM,SAAS;AACnB,QAAI,MAAM,YAAY;AACtB,QAAI,YAAY,oIAAoIC;AAAA,MAClJ;AAAA,IACF,CAAC;AACD,SAAK,YAAY,GAAG;AACpB,SAAK,YAAY,KAAK;AAAA,EACxB;AAEA,WAAS,MAAM,MAA+B;AAC5C,gBAAY,SAAS,cAAc,KAAK;AACxC,cAAU,MAAM,SAAS;AACzB,cAAU,MAAM,QAAQ;AACxB,cAAU,cAAc;AACxB,SAAK,YAAY,SAAS;AAE1B,gBAAY,SAAS,cAAc,KAAK;AACxC,cAAU,MAAM,SAAS;AACzB,cAAU,MAAM,YAAY;AAC5B,cAAU,YAAY;AACtB,SAAK,YAAY,SAAS;AAC1B,SAAK,YAAY,KAAK;AAAA,EACxB;AAEA,WAAS,KAAK,MAAc;AAC1B,QAAI,CAAC,UAAW;AAChB,UAAM,OAAO,UAAU,cAAc,MAAM;AAC3C,QAAI,CAAC,KAAM;AACX,SAAK,eAAe,KAAK,eAAe,MAAM;AAC9C,SAAK,YAAY,KAAK;AAAA,EACxB;AAEA,WAAS,MAAM;AACb,gBAAY;AACZ,gBAAY;AAAA,EACd;AAEA,WAAS,MAAM,KAAc;AAC3B,UAAM,MAAM,SAAS,cAAc,KAAK;AACxC,QAAI,MAAM,SAAS;AACnB,QAAI,MAAM,QAAQ;AAClB,QAAI,cAAc,UAAU,OAAO,GAAG,CAAC;AACvC,SAAK,YAAY,GAAG;AAAA,EACtB;AAEA,iBAAe,cAAc;AAC3B,UAAM,IAAI,MAAM,MAAM,KAAK;AAC3B,QAAI,CAAC,EAAG;AACR,eAAW,CAAC;AACZ,UAAM,QAAQ;AACd,UAAM,KAAK,OAAO;AAAA,MAChB;AAAA,QACE,MAAM;AAAA,UACJ,QAAQ,KAAK;AAAA,UACb,UAAU;AAAA,UACV,QAAQ,KAAK,WAAW,UAAU,YAAY;AAAA,UAC9C,aAAa,KAAK;AAAA,UAClB,eAAe,KAAK;AAAA,QACtB;AAAA,MACF;AAAA,MACA,EAAE,SAAS,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,GAAG,OAAO,KAAK,SAAS,MAAM;AAAA,IACvE;AAAA,EACF;AAEA,OAAK,iBAAiB,SAAS,WAAW;AAC1C,MAAI,YAAY;AAChB,QAAM,iBAAiB,oBAAoB,MAAM;AAC/C,gBAAY;AAAA,EACd,CAAC;AACD,QAAM,iBAAiB,kBAAkB,MAAM;AAC7C,gBAAY;AAAA,EACd,CAAC;AACD,QAAM,iBAAiB,WAAW,CAAC,MAAM;AAIvC,UAAM,WAAW;AACjB,QAAI,aAAc,EAAoB,eAAe,SAAS,YAAY,IAAK;AAC/E,QAAI,EAAE,QAAQ,SAAS;AACrB,QAAE,eAAe;AACjB,kBAAY;AAAA,IACd;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL,UAAU;AACR,WAAK,OAAO,OAAO;AACnB,WAAK,OAAO;AAAA,IACd;AAAA,EACF;AACF;AAEA,SAASA,YAAW,GAAW;AAC7B,SAAO,EACJ,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,QAAQ,EACtB,QAAQ,MAAM,QAAQ;AAC3B;AAeA,IAAI,OAAO,WAAW,aAAa;AAEjC,EAAC,OAAe,WAAW,EAAE,WAAW,iBAAiB,MAAM,WAAW,UAAU,kBAAkB;AACtG,MAAI;AACF,sBAAkB;AAAA,EACpB,QAAQ;AAAA,EAAC;AACX;","names":["crossSdkInitialized","crossSdkInstance","appkitWallet","crossAccountState","escapeHtml"]}