{"agent":"reviewer","tool":"bundle_grep","args":{"text":"wallet"},"result":"<untrusted_content source=\"site-bundles\">\nhttps://spreadonchain.fun/app.js @25585: …nfinish = () => c.remove();\n    }\n  }\n\n  // =====================================================================\n  //  Wallet\n  // =====================================================================\n  const wallet = { pk: null, provider: null …\n\nhttps://spreadonchain.fun/app.js @25675: …=======================\n  //  Wallet\n  // =====================================================================\n  const wallet = { pk: null, provider: null };\n  function getProvider() {\n    if (window.phantom?.solana?.isPhantom) return window.pha…\n\nhttps://spreadonchain.fun/app.js @26026: …pack) return window.backpack;\n    if (window.solana) return window.solana;\n    return null;\n  }\n  async function connectWallet() {\n    const p = getProvider();\n    if (!p) {\n      toast('No Solana wallet found — install Phantom or Solflare');\n   …\n\nhttps://spreadonchain.fun/app.js @26103: …  return null;\n  }\n  async function connectWallet() {\n    const p = getProvider();\n    if (!p) {\n      toast('No Solana wallet found — install Phantom or Solflare');\n      window.open('https://phantom.app/', '_blank');\n      throw new Error('No w…\n\nhttps://spreadonchain.fun/app.js @26228: …t found — install Phantom or Solflare');\n      window.open('https://phantom.app/', '_blank');\n      throw new Error('No wallet');\n    }\n    const r = await p.connect();\n    const pk = (r && r.publicKey) || p.publicKey;\n    wallet.pk = pk.toString…\n</untrusted_content>","isError":false,"images":[]}