botanary-mcp 0.10.1 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,30 +1,2 @@
1
1
  #!/usr/bin/env node
2
- var xt=Object.defineProperty;var Pt=(e,t)=>()=>(e&&(t=e(e=0)),t);var Ot=(e,t)=>{for(var n in t)xt(e,n,{get:t[n],enumerable:!0})};var we={};Ot(we,{getFallbackCount:()=>ye,pollSource:()=>E,resetFallbackCount:()=>Gt,sseSource:()=>R,waitFor:()=>_,withFallback:()=>C});function ye(){return oe}function Gt(){oe=0}function E(e,t,n=s=>new Promise(r=>setTimeout(r,s))){return{async*watch(s){for(;!s.aborted;){if(yield await e(),s.aborted)return;await n(t)}}}}function R(e,t,n){return{async*watch(s){let r=new AbortController,l=()=>r.abort();s.addEventListener("abort",l,{once:!0});let a=setTimeout(()=>r.abort(),jt),o;try{o=await fetch(e,{headers:{Authorization:`Bearer ${t}`,Accept:"text/event-stream"},signal:r.signal})}finally{clearTimeout(a)}if(!o.ok||!o.body)throw new Error(`stream ${o.status}`);let i=o.body.getReader(),c=new TextDecoder,d="";for(;!s.aborted;){let{done:u,value:h}=await i.read();if(u)return;d+=c.decode(h,{stream:!0});let g=d.indexOf(`
3
-
4
- `);for(;g!==-1;){let f=d.slice(0,g);d=d.slice(g+2);let p=f.split(`
5
- `).find(w=>w.startsWith("data:"));if(p)try{yield n(JSON.parse(p.slice(5).trim()))}catch{}g=d.indexOf(`
6
-
7
- `)}}s.removeEventListener("abort",l)}}}function C(e,t){return{async*watch(n){try{let s=!1;for await(let r of e.watch(n))s=!0,yield r;if(n.aborted)return;s||(oe++,yield*t.watch(n))}catch{n.aborted||(oe++,yield*t.watch(n))}}}}async function _(e,t){let n=t.now??(()=>Date.now()),s=t.heartbeatMs??Wt,r,l=null,a=n();if(a>=t.deadline)return{state:r??{},terminal:!1};for await(let o of e.watch(t.ctx.signal)){r=o;let i=t.describe(o),c=n();if((i!==l||c-a>=s)&&(t.ctx.progress({message:i}),l=i,a=c),t.isTerminal(o))return{state:o,terminal:!0};if(t.ctx.signal.aborted||c>=t.deadline)break}return{state:r??{},terminal:!1}}var oe,Wt,jt,L=Pt(()=>{"use strict";oe=0;Wt=5e3;jt=3e3});import{StdioServerTransport as pa}from"@modelcontextprotocol/sdk/server/stdio.js";import{randomBytes as Zn}from"node:crypto";var T="default";var Nt=/[.:/\\]/,U=class extends Error{constructor(t){super(t),this.name="ProfileError"}};function Ct(e){if(typeof e!="string")return null;let t=e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");if(t.length===0)return null;let n=t.slice(0,48).replace(/-+$/g,"");return n.length>0?n:null}function fe(e){let t=e.trim();if(t.length===0)throw new U("BOTANARY_AGENT_PROFILE is set but empty - unset it or give it a name.");if(Nt.test(t))throw new U(`BOTANARY_AGENT_PROFILE ${JSON.stringify(e)} may not contain '.', ':', '/' or '\\\\'. The tool half is added automatically - set just the agent name, e.g. 'trading'.`);if(!/^[a-z0-9][a-z0-9-]*$/.test(t))throw new U(`BOTANARY_AGENT_PROFILE ${JSON.stringify(e)} must be a lowercase slug: a-z, 0-9 and hyphens, starting with a letter or digit.`);if(t.length>48)throw new U(`BOTANARY_AGENT_PROFILE ${JSON.stringify(e)} is longer than 48 characters.`);return t}function Le(e){let t=Ct(e.clientName);if(e.explicit!==void 0&&e.explicit.trim().length>0){let n=fe(e.explicit);return t===null?{key:n,tool:null,agent:n,source:"explicit"}:{key:n===t?t:`${t}.${n}`,tool:t,agent:n,source:"explicit"}}return e.hasLegacyIdentity?{key:T,tool:null,agent:null,source:"legacy"}:t!==null?{key:t,tool:t,agent:t,source:"client-info"}:{key:T,tool:null,agent:null,source:"fallback"}}function te(e){return e===T}function ne(e){switch(e.source){case"explicit":return`BOTANARY_AGENT_PROFILE=${e.agent}`;case"legacy":return"this machine has a pre-profiles identity, which keeps its original storage";case"client-info":return`derived from the connecting client's reported name (${e.tool})`;case"fallback":return"nothing named a profile and this machine has no prior identity"}}function k(e,t){return t?e.split(t).join("\xABredacted\xBB"):e}var qe="https://botanary-canonical-path.invalid",Be="(?:[A-Za-z0-9\\-._~!$&'()*+,;=:@]|%[0-9A-Fa-f]{2})",$t=`${Be}+`,Lt=new RegExp(`^${Be}+$`),qt=new RegExp("^(?:[A-Za-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})*$"),Bt=/^\.{1,2}$/,Ut=/[/\\#?]/,Dt=/[\u0000-\u001f\u007f]/,Ht=6;function Mt(e){let t=e;for(let n=0;n<Ht;n+=1){if(Bt.test(t)||Ut.test(t)||Dt.test(t))return!0;if(!t.includes("%"))return!1;let s;try{s=decodeURIComponent(t)}catch{return!0}if(s===t)return!1;t=s}return!0}function D(e){if(typeof e!="string"||e.length===0||!e.startsWith("/")||e.startsWith("//"))return null;let t=e.indexOf("?"),n=t===-1?e:e.slice(0,t),s=t===-1?"":e.slice(t),r=n.split("/");for(let a=1;a<r.length;a+=1){let o=r[a];if(!Lt.test(o)||Mt(o))return null}if(s!==""&&!qt.test(s.slice(1)))return null;let l;try{l=new URL(n+s,qe)}catch{return null}return l.origin!==qe||l.hash!==""||l.pathname!==n||l.search!==s?null:{path:n,query:s,full:n+s}}function ae(e){return e==="/v1"?"":e.startsWith("/v1/")?e.slice(3):e}function H(e){let t=e.split("/").map(n=>n.startsWith("{")&&n.endsWith("}")?$t:n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("/");return new RegExp(`^${t}$`)}function V(e){let t=typeof e=="string"?e:String(e);return t.length>200?`${t.slice(0,200)}...`:t}function M(e,t){return`"${V(e)}" is not a canonical request path - ${t} refuses it before any allowlist is consulted. A path must be absolute, must not begin "//", must carry no fragment, no query ambiguity and no empty segment, and every segment must consist only of unreserved characters or well-formed %XX escapes that do not decode - through any number of layers - to a separator ("/", "\\"), a fragment marker ("#") or a traversal (".", ".."). The rule is that the string validated and the string requested must be ONE string: anything the URL parser would rewrite is refused here rather than validated as one route and sent as another.`}import{BotanaryApiError as Ft}from"@botanary/agent";import{BotanaryApiError as N}from"@botanary/agent";var se=class{constructor(t,n=fetch){this.baseUrl=t;this.fetchImpl=n}async post(t,n,s){return this.#e("POST",t,n,s)}async put(t,n,s){return this.#e("PUT",t,n,s)}async patch(t,n,s){return this.#e("PATCH",t,n,s)}async get(t,n){return this.#e("GET",t,void 0,n)}async delete(t,n){return this.#e("DELETE",t,void 0,n)}async#e(t,n,s,r){let l=D(n);if(!l)throw new Error(M(n,"BotanaryApiClient"));let a=await this.fetchImpl(`${this.baseUrl}${l.full}`,{method:t,headers:{"content-type":"application/json",...r?{authorization:`Bearer ${r}`}:{},...l.path.startsWith("/v1/spore/")?{"x-spore-protocol":"1"}:{}},...s!==void 0?{body:JSON.stringify(s)}:{}}),o;if(a.status!==204&&a.headers.get("content-length")!=="0")try{o=await a.json()}catch{o=void 0}if(!a.ok){let i=a.headers.get("retry-after"),c=i!=null?Number.parseInt(i,10):Number.NaN;throw new Ft(o?.error?.message??`${n} failed with ${a.status}`,a.status,o?.error?.details??null,Number.isFinite(c)&&c>=0?c:null)}return o??{}}};var Ue="https://app.botanary.xyz";function z(e){let t;try{t=new URL(e)}catch{return Ue}return t.hostname.startsWith("api.")?`${t.protocol}//${t.hostname.slice(4)}`:(t.hostname==="localhost"||t.hostname==="127.0.0.1")&&t.port==="3000"?`${t.protocol}//${t.hostname}:3001`:Ue}function O(e,t){let n=`${z(e)}/account/setup`;return Number.isFinite(t)?`${n}?chainId=${Number(t)}`:n}L();var Kt="backend store-backed (GET /balance makes zero external calls) - may lag the chain by a refresh cycle";function A(e,t,n,s={},r={}){return{state:e,summary:t,blockers:n,facts:s,freshness:r}}async function De(e){let t=(await e.handles.list()).map(p=>({id:p.id,kind:p.kind,label:p.label,expiresAt:p.expiresAt})),s=ye()>0?"polling (stream unavailable)":"stream (or polling as fallback)",r={profile:e.profile.key,profileSource:ne(e.profile),reportedClient:e.profile.tool};if(!await e.store.hasIdentity())return A("no_key","No agent key exists on this machine yet.",[{code:"no_key",severity:"blocking",detail:`Nothing is stored at this machine's identity path for profile "${e.profile.key}".`,nextAction:"Call get_pairing_code to create an identity and get a code for the owner to claim."}],{pending:t,transport:s,...r});let l;try{l=await e.me()}catch(p){return p instanceof N&&(p.status===401||p.status===404)?A("key_unclaimed","This machine has a key, but no Botanary account has claimed it.",[{code:"key_unclaimed",severity:"blocking",detail:`The backend does not recognise this agent (HTTP ${p.status}).`,nextAction:"Call get_pairing_code and give the code to the owner to enter in Botanary."}],{pending:t,transport:s,...r}):A("backend_unavailable","Could not reach the Botanary backend to ask who this agent is.",[{code:"backend_unavailable",severity:"blocking",detail:p instanceof Error?p.message:String(p),nextAction:"Retry once the backend is reachable. Nothing local is wrong."}],{pending:t,transport:s,...r})}let a={agent:{id:l.id,name:l.name,address:l.address,fingerprint:l.fingerprint},account:{accountId:l.accountId,address:l.accountAddress??null},grant:l.grant,pending:t,transport:s,...r},o=l.accountAddress?`account ${l.accountAddress}`:`account ${l.accountId}`;if(!l.grant)return A("connected_no_grant",`Connected to ${o}, but the owner has not granted this agent anything yet.`,[{code:"no_grant",severity:"blocking",detail:"GET /agents/me reports grant: null.",nextAction:"Ask the owner to create a grant for this agent in Botanary, or use request_approval for a one-off action."}],a);let i=l.grant;if(i.status!=="active")return A("grant_inactive",`This agent's grant is ${i.status}, so nothing can be spent under it.`,[{code:"grant_inactive",severity:"blocking",detail:`Grant ${i.id} has status "${i.status}".`,nextAction:"Ask the owner to re-issue or unfreeze the grant in Botanary."}],a);let c={},d=[];if(l.accountSetup&&!l.accountSetup.ready){let p=l.accountSetup.missing.length?l.accountSetup.missing.join(", "):"a required component";return A("setup_required",`Connected with an active grant on ${i.chain??`chain ${i.chainId}`}, but the account is missing ${p} - nothing can be spent under this grant until the owner installs it.`,[{code:"setup_required",severity:"blocking",detail:`Account is missing ${p} on chainId ${l.accountSetup.chainId}. Every action under this grant will be refused, and retrying cannot change that - installing a module is an authority change only the owner can sign.`,nextAction:`Ask the owner to open ${O(e.apiBaseUrl,l.accountSetup.chainId)} and complete account setup (one signature), then retry.`}],a,c)}let u;try{let p=await e.listChains(),w=Array.isArray(p)?p.find(y=>y.chainId===i.chainId):void 0;if(!w)return A("chain_unusable",`This grant is on chain ${i.chainId}, which this backend does not serve.`,[{code:"chain_not_served",severity:"blocking",detail:`chainId ${i.chainId} is absent from GET /chains.`,nextAction:"Ask the owner to re-grant on a chain this build serves."}],a,c);if(u=w.chainTier,a.chain=w,u==="watch")return A("chain_unusable",`${w.name??i.chainId} is watch-tier: read-only, with no bundler and no authority.`,[{code:"chain_watch_only",severity:"blocking",detail:`chainTier is "watch" for chainId ${i.chainId}.`,nextAction:"Ask the owner to re-grant on a basic- or botanary-tier chain."}],a,c)}catch(p){c.chains=`unavailable: ${p instanceof Error?p.message:String(p)}`,d.push({code:"chains_unknown",severity:"warning",detail:"GET /chains failed, so this agent cannot confirm the grant chain is usable.",nextAction:"Retry diagnose; treat any spend as unverified until this clears."})}let g=i.policySet?.budgets?.[0]?.token?.symbol;try{let p=await e.getBalance();c.balance=Kt;let y=(Array.isArray(p.tokens)?p.tokens.find(S=>S.symbol===g&&S.chainId===i.chainId):void 0)?.amount??0;if(a.funding={symbol:g,chainId:i.chainId,amount:y},y<=0)return A("unfunded",`Connected to ${o}, but it holds 0 ${g??"of the budgeted token"} on ${i.chain??`chain ${i.chainId}`} - the only chain this grant covers.`,[...d,{code:"unfunded",severity:"blocking",detail:`Grant budgets ${g} on chainId ${i.chainId}; the backend reports ${y}.`,nextAction:`Fund this account on ${i.chain??`chain ${i.chainId}`}, or ask the owner to re-grant on a funded chain.`}],a,c)}catch(p){c.balance=`unavailable: ${p instanceof Error?p.message:String(p)}`,d.push({code:"funding_unknown",severity:"warning",detail:"GET /balance failed, so this agent cannot confirm the account is funded.",nextAction:"Retry diagnose before spending."})}let f=i.spentToDate?.[0]?.remaining;return typeof f=="number"&&f<=0?A("budget_exhausted","This agent's grant has no remaining budget.",[...d,{code:"budget_exhausted",severity:"blocking",detail:`spentToDate reports remaining ${f}.`,nextAction:"Ask the owner to raise the budget or issue a new grant."}],a,c):d.length>0?A("degraded","Connected with an active grant, but some checks could not be completed.",d,a,c):A("ready",`Connected to ${o} with an active grant on ${i.chain??`chain ${i.chainId}`}, and the account is funded.`,[],a,c)}function be(e){let n=e?.details?.missingModule;return typeof n=="string"&&n.length>0?n:null}function Y(e){let t=e.accountAddress?` on account ${e.accountAddress}`:"";if(!e.grant)return`Nothing yet - this agent is connected${t} but has not been granted anything. It can read balances and draft a payment (propose_payment will explain exactly why it refuses to relay one), but it cannot spend. Ask your owner to create a grant naming this agent's address (${e.address}) in Botanary, or call request_approval to ask for one specific payment right now.${e.accountAddress?` If ${e.accountAddress} is not the account you have open in Botanary, you are signed in as a different owner - that, not a missing grant, is why this agent is not in your list.`:""}`;let n=e.grant,s=n.spentToDate.map(r=>`${r.remaining} ${r.token.symbol} remaining of ${r.limit}${r.expiresAt?` (until ${r.expiresAt})`:""}`).join("; ");return`Grant status: ${n.status}. ${n.humanSummary}${s?` Remaining: ${s}.`:""}`}function J(e,t){let n=e.policySet.budgets.findIndex(s=>s.token.assetRef===t);return n===-1?void 0:e.spentToDate[n]}L();async function ke(e,t,n){switch(t.kind){case"op":{let r=await e.awaitTerminal(t.ref.opId,6e5);return r&&String(r.status)!=="pending"&&await e.handles.close(t.id),{handle:t.id,kind:t.kind,label:t.label,receipt:r}}case"send":{let r=(await e.walletSession())?.sessionToken;if(!r)return{handle:t.id,kind:t.kind,label:t.label,message:"The wallet session has ended. Call wallet_login to reconnect and retry wallet_status to learn the outcome."};let l=new Set(["relayed","rejected","expired","failed"]),a=await _(C(R(`${e.apiBaseUrl}/v1/sign-requests/${t.ref.signRequestId}/stream`,r,o=>o),E(()=>e.api.get(`/v1/sign-requests/${t.ref.signRequestId}`,r),2e3)),{isTerminal:o=>l.has(o.status),describe:o=>`Request ${o.status}.`,deadline:Date.parse(t.expiresAt),ctx:n});return a.terminal&&await e.handles.close(t.id),{handle:t.id,kind:t.kind,label:t.label,url:t.url??null,status:a.state.status,opId:a.state.opId??null,txHash:a.state.txHash??null,settled:a.terminal}}case"approval":{let r=(await e.walletSession())?.sessionToken;if(!r)return{handle:t.id,kind:t.kind,label:t.label,message:"The wallet session has ended. Call wallet_login to reconnect and retry wallet_status to learn the outcome."};let l=(o,i)=>o.find(c=>c.id===i),a=await _(C(R(`${e.apiBaseUrl}/v1/agents/requests/stream`,r,o=>o),E(()=>e.listRequests(),5e3)),{isTerminal:o=>{let i=l(o,t.ref.requestId);return i!==void 0&&i.status!=="pending"},describe:o=>`Approval request ${l(o,t.ref.requestId)?.status??"pending"}.`,deadline:Date.parse(t.expiresAt),ctx:n});return a.terminal&&await e.handles.close(t.id),{handle:t.id,kind:t.kind,label:t.label,request:l(a.state,t.ref.requestId)??null,settled:a.terminal}}case"pair":{let s=t.ref.code,r=await _(C(R(`${e.apiBaseUrl}/v1/agents/pairing/${s}/stream`,await e.ensureSession(),l=>({claimed:!!l})),E(()=>e.me().then(()=>({claimed:!0})).catch(()=>({claimed:!1})),3e3)),{isTerminal:l=>l.claimed,describe:l=>l.claimed?"Agent claimed.":`Waiting for pairing claim for code ${s??"unknown"}.`,deadline:Date.parse(t.expiresAt),ctx:n});return r.terminal&&await e.handles.close(t.id),{handle:t.id,kind:t.kind,label:t.label,claimed:r.terminal,settled:r.terminal,message:r.terminal?"This machine is now a connected agent.":`The code has not been claimed yet and this wait has ended. The code is still live until ${t.expiresAt} - call botanary_wait to keep waiting, or regenerate_pairing_code for a fresh one.`}}default:return{handle:t.id,kind:t.kind,message:`This handle cannot be resumed by this build. It is still live: ${t.url??t.label}.`}}}L();import{AgentRuntime as vn,DEFAULT_API_BASE_URL as Tn}from"@botanary/agent";import{DEFAULT_API_BASE_URL as Xs,awaitTerminalWith as Ze}from"@botanary/agent";import{join as he}from"node:path";import{dirname as zt}from"node:path";import{chmod as We,mkdir as Yt,readFile as Jt,rm as Xt,stat as Da,writeFile as Qt}from"node:fs/promises";var v=class extends Error{constructor(n,s,r){super(`[${n}] ${s} failed: ${r}`);this.backend=n;this.operation=s;this.name="KeyBackendError"}},re="botanary-mcp",F="agent-identity",He="wallet-session";function Me(e){return e==="default"?F:`${F}:${e}`}import{homedir as Vt}from"node:os";import{join as G}from"node:path";function x(){return process.env.BOTANARY_MCP_HOME||G(Vt(),".botanary-mcp")}function Fe(e){return te(e)?x():G(x(),"profiles",e)}function Se(e=T){return G(Fe(e),"identity.json")}function ie(e=T){return G(Fe(e),"identity.key")}function Ge(){return G(x(),"identity.json")}function le(){return G(x(),"handles.json")}function P(e=ie()){return{id:"file-fallback",label:`Local file (${e}, mode 0600)`,async isAvailable(){return!0},async save(t){let n=zt(e);await Yt(n,{recursive:!0,mode:448}),await We(n,448).catch(()=>{}),await Qt(e,t,{encoding:"utf8",mode:384}),await We(e,384).catch(()=>{})},async load(){try{let t=await Jt(e,"utf8");return t.length>0?t:null}catch(t){if(t.code==="ENOENT")return null;throw new v("file-fallback","load",t.message)}},async delete(){await Xt(e,{force:!0})}}}var W=async(e,t,n)=>{let{spawn:s}=await import("node:child_process");return new Promise((r,l)=>{let a=s(e,t,{stdio:["pipe","pipe","pipe"]}),o="",i="";a.stdout.on("data",c=>{o+=c.toString("utf8")}),a.stderr.on("data",c=>{i+=c.toString("utf8")}),a.on("error",c=>{l(c)}),a.on("close",c=>{r({stdout:o,stderr:i,code:c??-1})}),n?.input!==void 0&&a.stdin.write(n.input,"utf8"),a.stdin.end()})};var je=new Set([1]);function ce(e=W,t=F,n=re){return{id:"libsecret",label:"Linux Secret Service (libsecret)",async isAvailable(){if(process.platform!=="linux")return!1;try{let s=await e("secret-tool",["lookup","service","__botanary-mcp-availability-probe__"]);return s.code===0||je.has(s.code)}catch{return!1}},async save(s){let r=await e("secret-tool",["store","--label=Botanary agent identity","service",n,"account",t],{input:s});if(r.code!==0)throw new v("libsecret","save",k(r.stderr||`exit ${r.code}`,s))},async load(){let s=await e("secret-tool",["lookup","service",n,"account",t]);if(s.code!==0){if(je.has(s.code)&&!s.stderr.trim())return null;throw new v("libsecret","load",s.stderr||`exit ${s.code}`)}let r=s.stdout.replace(/\n$/,"");return r.length>0?r:null},async delete(){let s=await e("secret-tool",["clear","service",n,"account",t]);if(s.code!==0)throw new v("libsecret","delete",s.stderr||`exit ${s.code}`)}}}var Ke=/could not be found|item.*could not be found|specified item could not be found/i;function de(e=W,t=F,n=re){return{id:"macos-keychain",label:"macOS Keychain",async isAvailable(){if(process.platform!=="darwin")return!1;try{return await e("security",["help"]),!0}catch{return!1}},async save(s){let r=await e("security",["add-generic-password","-a",t,"-s",n,"-w",s,"-U"]);if(r.code!==0)throw new v("macos-keychain","save",k(r.stderr||`exit ${r.code}`,s))},async load(){let s=await e("security",["find-generic-password","-a",t,"-s",n,"-w"]);if(s.code!==0){if(Ke.test(s.stderr))return null;throw new v("macos-keychain","load",s.stderr||`exit ${s.code}`)}return s.stdout.trim()},async delete(){let s=await e("security",["delete-generic-password","-a",t,"-s",n]);if(s.code!==0&&!Ke.test(s.stderr))throw new v("macos-keychain","delete",s.stderr||`exit ${s.code}`)}}}import{dirname as Zt,join as en}from"node:path";import{mkdir as tn,readFile as nn,rm as an,writeFile as sn}from"node:fs/promises";var on=["Add-Type -AssemblyName System.Security","$text = [Console]::In.ReadToEnd()","$bytes = [System.Text.Encoding]::UTF8.GetBytes($text)","$protected = [System.Security.Cryptography.ProtectedData]::Protect($bytes, $null, [System.Security.Cryptography.DataProtectionScope]::CurrentUser)","[Console]::Out.Write([Convert]::ToBase64String($protected))"].join(`
8
- `),rn=["Add-Type -AssemblyName System.Security","$b64 = [Console]::In.ReadToEnd()","$bytes = [Convert]::FromBase64String($b64)","$unprotected = [System.Security.Cryptography.ProtectedData]::Unprotect($bytes, $null, [System.Security.Cryptography.DataProtectionScope]::CurrentUser)","[Console]::Out.Write([System.Text.Encoding]::UTF8.GetString($unprotected))"].join(`
9
- `),ve=["-NoProfile","-NonInteractive","-Command"];function ln(e="identity.dpapi"){return en(x(),e)}function ue(e=W,t=ln()){return{id:"windows-dpapi",label:"Windows credential storage (DPAPI, current user)",async isAvailable(){if(process.platform!=="win32")return!1;try{let n=await e("powershell",[...ve,"Write-Output ok"]);return n.code===0&&n.stdout.trim()==="ok"}catch{return!1}},async save(n){let s=await e("powershell",[...ve,on],{input:n});if(s.code!==0||!s.stdout.trim())throw new v("windows-dpapi","save",k(s.stderr||`exit ${s.code}`,n));await tn(Zt(t),{recursive:!0,mode:448}),await sn(t,s.stdout.trim(),{encoding:"utf8",mode:384})},async load(){let n;try{n=(await nn(t,"utf8")).trim()}catch(r){if(r.code==="ENOENT")return null;throw new v("windows-dpapi","load",r.message)}if(!n)return null;let s=await e("powershell",[...ve,rn],{input:n});if(s.code!==0)throw new v("windows-dpapi","load",s.stderr||`exit ${s.code}`);return s.stdout.trim()},async delete(){await an(t,{force:!0})}}}function X(e=process.platform,t=!1,n=T){let s=t?He:Me(n),r=t?he(x(),"wallet.key"):ie(n),l=t?he(x(),"wallet.dpapi"):te(n)?he(x(),"identity.dpapi"):he(x(),"profiles",n,"identity.dpapi");switch(e){case"darwin":return[de(void 0,s),P(r)];case"linux":return[ce(void 0,s),P(r)];case"win32":return[ue(void 0,l),P(r)];default:return[P(r)]}}import{mkdir as dn,readFile as un,rm as hn,writeFile as pn}from"node:fs/promises";import{dirname as gn}from"node:path";import{crockfordBase32 as fs,deriveFingerprint as Ve,generatePairingNonce as ys,FINGERPRINT_BYTES as ws,NONCE_BYTES as bs}from"@botanary/agent";import{generatePrivateKey as cn,privateKeyToAccount as Te}from"viem/accounts";function ze(){let e=cn();return Ae(e)}function Ae(e){let t=Te(e);return{privateKey:e,address:t.address,publicKey:t.publicKey}}async function Ye(e,t){return Te(e).signMessage({message:t})}async function Je(e,t){return Te(e).sign({hash:t})}var Ie=class extends Error{constructor(t){super(t),this.name="IdentityCorruptError"}},Ee=class extends Error{constructor(t){super(t),this.name="IdentityMissingKeyError"}},Re=class extends Error{constructor(t){super(t),this.name="IdentityMismatchError"}},_e=class{#e;#t;#n;constructor(t,n){if(t.length===0)throw new Error("IdentityStore needs at least one KeyBackend candidate");this.#e=t,this.#t=n?.metadataPath??Se(),this.#n=n?.keypairFactory??ze}async hasIdentity(){return await this.#i()!==null}async ensure(){let t=await this.#i();return t?Xe(t):this.#s()}async sign(t){let n=await this.#i();if(!n)throw new Error("no agent identity yet - call ensure() (or the get_identity tool) first");let s=await this.#o(n);return Ye(s,t)}async signHash(t){let n=await this.#i();if(!n)throw new Error("no agent identity yet - call ensure() (or the get_identity tool) first");let s=await this.#o(n);return Je(s,t)}async forget(){let t=[];for(let n of this.#e)try{await n.delete()}catch(s){t.push(s)}if(await hn(this.#t,{force:!0}),t.length>0&&t.length===this.#e.length)throw new AggregateError(t,"failed to delete the agent key from every backend")}async exportForTest(){if(!process.env.VITEST&&process.env.NODE_ENV!=="test")throw new Error("exportForTest is available only under the test runner.");let t=await this.#i();if(!t)throw new Error("no agent identity yet");return{privateKey:await this.#o(t)}}async#s(){let t=this.#n(),n=new Date().toISOString(),s={v:1,privateKey:t.privateKey,createdAt:n},r=await this.#a(s,t.privateKey),l={v:1,address:t.address,publicKey:t.publicKey,fingerprint:Ve(t.address),createdAt:n,backend:r.id};return await this.#l(l),Xe(l)}async#a(t,n){let s=JSON.stringify(t),r;for(let a of this.#e)if(await a.isAvailable())try{return await a.save(s),a}catch(o){r=o}let l=k(r instanceof Error?r.message:String(r),n);throw new Error(`could not save the agent key to any storage backend: ${l}`)}async#r(){let t=[];for(let n of this.#e){let s;try{s=await n.load()}catch(l){t.push({backendId:n.id,message:l instanceof Error?l.message:String(l)});continue}if(s===null)continue;let r=mn(s);if(r)return{found:{backend:n,payload:r},backendErrors:t}}return{found:null,backendErrors:t}}async#o(t){let{found:n,backendErrors:s}=await this.#r();if(!n){let l=s.length>0?` (${s.map(a=>`${a.backendId}: ${a.message}`).join("; ")})`:"";throw new Ee(`identity metadata exists (address ${t.address}) but no backend holds its private key${l} - it may have been deleted (directly via the OS keychain, or via "botanary-mcp forget"). Run "botanary-mcp forget" to clear stale metadata and let a fresh identity be created on next use, or restore the key if you still have it.`)}let r=Ae(n.payload.privateKey);if(r.address.toLowerCase()!==t.address.toLowerCase())throw new Re(`the key found in ${n.backend.label} does not match the stored identity (expected ${t.address}, found a key for ${r.address}) - refusing to sign with it.`);return r.privateKey}async#i(){let t;try{t=await un(this.#t,"utf8")}catch(s){if(s.code==="ENOENT")return null;throw s}let n=fn(t);if(n)return n;throw new Ie(`${this.#t} exists but could not be read as agent identity metadata. Back it up and remove it (or run "botanary-mcp forget") before continuing - refusing to silently overwrite it with a new identity.`)}async#l(t){await dn(gn(this.#t),{recursive:!0}),await pn(this.#t,`${JSON.stringify(t,null,2)}
10
- `,"utf8")}};function xe(e=T,t=process.platform){return new _e(X(t,!1,e),{metadataPath:Se(e)})}function Xe(e){return{address:e.address,publicKey:e.publicKey,fingerprint:e.fingerprint,createdAt:e.createdAt,backend:e.backend}}function mn(e){try{let t=JSON.parse(e);return t&&t.v===1&&typeof t.privateKey=="string"?t:null}catch{return null}}function fn(e){try{let t=JSON.parse(e);return t&&t.v===1&&typeof t.address=="string"?t:null}catch{return null}}var Q=class{#e;constructor(t){if(t.length===0)throw new Error("WalletSessionStore needs at least one KeyBackend candidate");this.#e=t}async load(){for(let t of this.#e){let n;try{n=await t.load()}catch{continue}if(n===null)continue;let s=yn(n);if(s)return s}return null}async save(t){let n=JSON.stringify(t),s;for(let l of this.#e)if(await l.isAvailable())try{await l.save(n);return}catch(a){s=a}let r=k(s instanceof Error?s.message:String(s),t.sessionToken);throw new Error(`could not save the wallet session to any storage backend: ${r}`)}async switchAccount(t){let n=await this.load();if(!n)return null;let s={...n,accountId:t};return await this.save(s),s}async clear(){let t=[];for(let n of this.#e)try{await n.delete()}catch(s){t.push(s)}if(t.length>0&&t.length===this.#e.length)throw new AggregateError(t,"failed to clear the wallet session from every backend")}};function yn(e){try{let t=JSON.parse(e);return t&&typeof t.sessionToken=="string"&&typeof t.signerAddress=="string"&&typeof t.savedAt=="string"?t:null}catch{return null}}import{readFileSync as wn,writeFileSync as bn,mkdirSync as kn}from"node:fs";import{dirname as Sn}from"node:path";var pe=class{#e;constructor(t){this.#e=t}async open(t,n){let s={...t,id:`hnd_${Math.random().toString(36).slice(2,10)}${Date.now().toString(36)}`,createdAt:new Date().toISOString()};if(n!==void 0){for(let l of this.#e(s.id))if(await l.isAvailable())try{await l.save(n);break}catch{}}let r=await this.list();return this.#s([...r,s]),s}async list(){let t=this.#n(),n=Date.now(),s=[],r=[];for(let l of t)(Date.parse(l.expiresAt)>n?s:r).push(l);if(r.length>0){for(let l of r)await this.#t(l.id);this.#s(s)}return s}async get(t){return(await this.list()).find(n=>n.id===t)??null}async latest(t){let n=await this.list(),s=t?n.filter(r=>r.kind===t):n;return s.length===0?null:s[s.length-1]}async secretFor(t){for(let n of this.#e(t))try{let s=await n.load();if(s!==null)return s}catch{continue}return null}async close(t){await this.#t(t),this.#s((await this.list()).filter(n=>n.id!==t))}async#t(t){for(let n of this.#e(t))try{await n.delete()}catch{}}#n(){try{let t=JSON.parse(wn(le(),"utf8"));return Array.isArray(t)?t:[]}catch{return[]}}#s(t){try{kn(Sn(le()),{recursive:!0}),bn(le(),JSON.stringify(t,null,2),{mode:384})}catch{}}};function An(e,t=process.platform){let n=`handle-${e}`,s="botanary-mcp";switch(t){case"darwin":return[de(void 0,n,s),P()];case"linux":return[ce(void 0,n,s),P()];case"win32":return[ue(),P()];default:return[P()]}}var Pe=class extends vn{#e;#t;#n;#s;#a;#r;constructor(t,n){let s=n?.baseUrl??process.env.BOTANARY_API_URL??Tn,r=new se(s,n?.fetch??fetch);super(t,{baseUrl:s,transport:r}),this.#e=t,this.#t=r,this.#n=n?.walletSessionStore??new Q(X(void 0,!0)),this.#s=n?.handles??new pe(l=>An(l)),this.#a=n?.profile??{key:T,tool:null,agent:null,source:"fallback"},this.#r=n?.identityStoreFactory??null,this.#o()}get profile(){return this.#a}adoptProfile(t){if(this.identityMaterialized)throw new Error(`cannot adopt profile "${t.key}": this runtime has already materialized identity The profile must be adopted before anything reads the identity.`);let n=this.#a.key;this.#a=t,this.#o(),!(this.#r===null||t.key===n)&&(this.#e=this.#r(t.key),this.replaceSigner(this.#e))}get store(){return this.#e}get walletSessionStore(){return this.#n}get handles(){return this.#s}get api(){return this.#t}#o(){this.setProvenance({...this.#a.tool?{client:this.#a.tool}:{},...this.#a.key!==T?{profile:this.#a.key}:{}})}async walletSession(){return this.#n.load()}async walletLogout(){let t=await this.#n.load();if(t){try{await this.#t.delete("/v1/auth/session",t.sessionToken)}catch(n){n instanceof N&&n.status}await this.#n.clear()}}};function Qe(e){e?.profile===void 0&&process.env.BOTANARY_AGENT_PROFILE&&fe(process.env.BOTANARY_AGENT_PROFILE);let t=e?.profile?.key??T,n=X(void 0,!0);return new Pe(xe(t),{identityStoreFactory:xe,walletSessionStore:new Q(n),...e?.baseUrl!==void 0?{baseUrl:e.baseUrl}:{},...e?.fetch!==void 0?{fetch:e.fetch}:{},...e?.profile!==void 0?{profile:e.profile}:{}})}L();var In="Botanary MCP";function et(e){let t=(e.BOTANARY_MCP_CLIENT_NAME??"").trim();return(t.length>0?t:In).slice(0,32)}function tt(e,t){return{clientName:et(t),clientVersion:e.slice(0,32)}}function nt(e){return{kind:"send",chainKey:e.chainKey,token:e.token,amount:String(e.amount),amountRaw:e.amountRaw,to:e.recipient,...e.gasMethod?{gasMethod:e.gasMethod}:{}}}var Z=3e4;async function Oe(e,t,n,s,r,l,a){let o=null;a&&(o=(await e.handles.open({kind:"op",label:`waiting for ${s} to settle (op ${t})`,ref:{opId:t},expiresAt:new Date(Date.now()+Z).toISOString()})).id);let i=null,c=null;try{let h=await e.ensureSession();i=(await _(C(R(`${e.apiBaseUrl}/v1/operations/stream?ids=${encodeURIComponent(t)}`,h,f=>f),E(()=>e.getUserOp(t),3e3)),{isTerminal:f=>String(f.status??"pending")!=="pending",describe:f=>`Operation status: ${f.status??"pending"}.`,deadline:Date.now()+Z,ctx:a??{signal:new AbortController().signal,progress:()=>{}}})).state}catch(h){c=h instanceof Error?h.message:String(h)}let d=i?String(i.status??"pending"):"unknown";if(!i||d==="pending")return{proposed:!0,settled:!1,status:d,opId:t,userOpHash:n,...o?{handle:o}:{},...c?{followError:c}:{},note:c?`The RELAY SUCCEEDED - the backend accepted the signed op and returned the opId above - and only the follow-up status read failed (${c}). The ${s} may well have landed; this tool simply cannot see it right now. Call botanary_wait to rejoin it. Do NOT resend: the original op is live, and a resend would be a second ${s}.`:`Relayed, but not yet terminal after 120s. This is NOT a failure and NOT a success - call botanary_wait to rejoin it. Do NOT resend: the original op is still live, and a resend would be a second ${s}.`};let u=d==="included";return o&&await e.handles.close(o),{proposed:!0,settled:!0,status:d,opId:t,userOpHash:n,txHash:i.txHash??null,...u?{spent:r}:{spent:null,message:`The action reached a terminal status of "${d}" - it did NOT go through. ${l} Report it as a ${s} that did not happen; do not describe it as sent. Any txHash above is the on-chain record of the failure itself, not of a transfer.`},receipt:i}}async function at(e,t){if(!await e.store.hasIdentity())return{accountId:null,inBounds:!1,reason:"",grant:null};let n;try{n=await e.me()}catch{return{accountId:null,inBounds:!1,reason:"",grant:null}}if(!n.grant)return{accountId:null,inBounds:!1,reason:"",grant:null};let s=n.grant,r=En(s,t);return{accountId:n.accountId,inBounds:r.ok,reason:r.reason,grant:s}}function I(e,t){return t?`${e}?accountId=${encodeURIComponent(t)}`:e}function En(e,t){if(e.status!=="active")return{ok:!1,reason:`grant is "${e.status}", not active`};if(e.chainId!==t.chainId)return{ok:!1,reason:`grant is on chain ${e.chainId} (${e.chain}), not ${t.chainId}`};let n=J(e,t.asset.assetRef);if(!n)return{ok:!1,reason:`grant has no budget for ${t.asset.symbol}`};if(t.amount>n.remaining)return{ok:!1,reason:`only ${n.remaining} ${t.asset.symbol} remaining of the grant's budget`};let s=e.policySet.perActionMax;return s&&s.token.assetRef===t.asset.assetRef&&t.amount>s.amount?{ok:!1,reason:`grant caps a single action at ${s.amount} ${t.asset.symbol}`}:{ok:!0,reason:""}}async function st(e,t,n){try{let s=await Ze(r=>e.api.get(`/v1/userops/${encodeURIComponent(r)}`,n),t,Z,()=>Date.now(),r=>new Promise(l=>setTimeout(l,r)));return typeof s.status=="string"?s.status:null}catch{return null}}async function ot(e,t,n,s){let r=await e.buildDelegatedAction({delegationId:t.id,recipient:n.recipient,amount:n.amount,token:n.asset.assetRef}),l=await e.ensureSession(),a=await e.spendUnderGrant(r.userOp,r.userOpHash,t.permissionId,l,r.intentType),o=typeof a?.id=="string"?a.id:null;if(!o)return{settled:!1,userOpHash:r.userOpHash,relay:a};let i=null;s&&(i=(await e.handles.open({kind:"op",label:`waiting for send to settle (op ${o})`,ref:{opId:o},expiresAt:new Date(Date.now()+Z).toISOString()})).id);let c=null,d=null;try{let g=await e.ensureSession();c=(await _(C(R(`${e.apiBaseUrl}/v1/operations/stream?ids=${encodeURIComponent(o)}`,g,p=>p),E(()=>e.getUserOp(o),3e3)),{isTerminal:p=>String(p.status??"pending")!=="pending",describe:p=>`Send status: ${p.status??"pending"}.`,deadline:Date.now()+Z,ctx:s??{signal:new AbortController().signal,progress:()=>{}}})).state}catch(g){d=g instanceof Error?g.message:String(g)}let u=c?String(c.status??"pending"):"unknown",h=u==="included";return i&&c&&u!=="pending"&&await e.handles.close(i),{settled:!!c&&u!=="pending",status:u,opId:o,userOpHash:r.userOpHash,...i?{handle:i}:{},txHash:c?.txHash??null,...d?{followError:d,note:"The relay succeeded; only the follow-up status read failed. Do NOT resend."}:{},...c?h?{spent:{amount:n.amount,token:n.asset.symbol}}:{spent:null}:{}}}function rt(e,t){return n=>e.api.post("/v1/sign-requests",nt({chainKey:n.chainKey,token:n.asset.assetRef,amountRaw:n.amountRaw,amount:n.amount,recipient:n.recipient,gasMethod:n.gasMethod}),t)}function it(e,t){return async n=>{let s=await e.api.get(`/v1/sign-requests/${n}`,t);return{status:s.status,opId:s.opId??null,txHash:s.txHash??null,declineReason:s.declineReason??null}}}function lt(e,t){return async n=>{try{let[s,r]=await Promise.all([e.api.get("/v1/balance",t),e.api.get("/v1/chains",t)]),l=Array.isArray(r)?r.find(i=>i.chainId===n.chainId):void 0;if(l&&l.chainTier==="watch")return`${l.name??`chain ${n.chainId}`} is watch-tier (read-only) - a send here will not go through.`;let o=(Array.isArray(s.tokens)?s.tokens.find(i=>i.symbol===n.asset.symbol&&i.chainId===n.chainId):void 0)?.amount??0;return o<n.amount?`This account shows ${o} ${n.asset.symbol} on this chain - less than the ${n.amount} you are sending. This is a store-backed read that may lag the chain, so it is a courtesy check, not a refusal.`:null}catch{return null}}}async function q(e,t,n,s){return e.api.get(`/v1/assets/resolve?chainId=${t}&ref=${encodeURIComponent(n)}`,s)}function ct(e,t){let n=String(e).trim();if(!/^\d+(\.\d+)?$/.test(n))throw new Error(`"${e}" is not a decimal amount. Pass a plain number, e.g. 25 or 1.5.`);let[s,r=""]=n.split(".");if(r.length>t)throw new Error(`${n} has ${r.length} decimal places but this token has ${t}. Round it, or pass a smaller amount.`);let l=r.padEnd(t,"0"),a=`${s}${l}`.replace(/^0+(?=\d)/,"");return a===""?"0":a}async function dt(e,t){let{recipient:n,amount:s,token:r,chainId:l}=t,a=await e.me();if(!a.grant)return{proposed:!1,reason:"no_grant",message:`${Y(a)} Nothing was built or sent.`};let o=a.grant;if(o.status!=="active")return{proposed:!1,reason:"grant_not_active",message:`This grant is "${o.status}", not active, so it cannot be spent under. Nothing was built or sent. Use request_approval to ask the owner directly.`};if(o.chainId!==l)return{proposed:!1,reason:"wrong_chain",message:`This grant is on chain ${o.chainId} (${o.chain}), not chain ${l}. Nothing was built or sent. Use request_approval if this payment genuinely needs that chain.`};let i=await q(e,l,r,await e.ensureSession()),c=J(o,i.assetRef);if(!c)return{proposed:!1,reason:"token_not_budgeted",message:`This grant has no budget for ${i.symbol}. Budgeted tokens: ${o.policySet.budgets.map(p=>p.token.symbol).join(", ")||"none"}. Nothing was built or sent. Use request_approval instead.`};if(s>c.remaining)return{proposed:!1,reason:"over_budget",message:`This grant has ${c.remaining} ${i.symbol} remaining (of ${c.limit} total); ${s} ${i.symbol} would exceed it. Nothing was built or sent. Use request_approval to ask the owner for this specific payment.`};let d=o.policySet.perActionMax;if(d&&d.token.assetRef===i.assetRef&&s>d.amount)return{proposed:!1,reason:"over_per_action_max",message:`This grant caps a single action at ${d.amount} ${i.symbol}; ${s} exceeds it. Nothing was built or sent. Use request_approval instead.`};let u;try{u=await e.buildDelegatedAction({delegationId:o.id,recipient:n,amount:s,token:i.assetRef})}catch(p){let w=be(p);if(!w)throw p;return{proposed:!1,reason:"account_setup_required",missingModule:w,setupUrl:O(e.apiBaseUrl,o.chainId),message:`This account is missing ${w} on chain ${o.chainId} (${o.chain}), so a payment under this grant cannot succeed. Nothing was built or sent, and retrying will fail identically - installing a module is an authority change only the owner can sign, and a session key cannot do it. Open the setupUrl above in a browser, sign the one-time setup, then ask me to try this payment again.`}}let h=await e.ensureSession(),g=await e.spendUnderGrant(u.userOp,u.userOpHash,o.permissionId,h,u.intentType),f=typeof g?.id=="string"?g.id:null;return f?Oe(e,f,u.userOpHash,"payment",{amount:s,token:i.symbol},`NOTHING moved: no ${i.symbol} left the account, the recipient received nothing, and the grant budget was not spent.`):{proposed:!0,settled:!1,userOpHash:u.userOpHash,relay:g}}async function ut(e,t){let{assetIn:n,assetOut:s,amountIn:r,chainId:l,maxSlippageBps:a}=t,o=await e.me();if(!o.grant)return{proposed:!1,reason:"no_grant",message:`${Y(o)} Nothing was built or sent.`};let i=o.grant;if(i.status!=="active")return{proposed:!1,reason:"grant_not_active",message:`This grant is "${i.status}", not active, so it cannot be spent under. Nothing was built or sent. Use request_approval to ask the owner directly.`};if(i.chainId!==l)return{proposed:!1,reason:"wrong_chain",message:`This grant is on chain ${i.chainId} (${i.chain}), not chain ${l}. Nothing was built or sent. A grant's allowance, meter and session are per-chain storage on one account, so there is nothing on another chain for it to bound. Use request_approval if this swap genuinely needs that chain.`};let c=i.policySet.swapVenue;if(!c)return{proposed:!1,reason:"no_swap_venue",message:"This grant was given for transfers only - it names no swap venue, so its session carries no allowance action for a swap to validate against, and no amount is small enough to change that. Nothing was built or sent. Ask the owner for a new grant naming the router and token it may swap, or use request_approval for this one swap."};let d=await q(e,l,n,await e.ensureSession());if(c.token.symbol.toUpperCase()!==d.symbol.toUpperCase())return{proposed:!1,reason:"token_not_venue_token",message:`This grant may only swap ${c.token.symbol}, not ${d.symbol} - its session pins the sold token exactly, and any other would be refused in validation. Nothing was built or sent. Use request_approval instead.`};if(r>c.maxAllowance)return{proposed:!1,reason:"over_venue_allowance",message:`This grant allows at most ${c.maxAllowance} ${c.token.symbol} per swap; ${r} ${d.symbol} exceeds it. Nothing was built or sent. Use request_approval to ask the owner for this specific swap.`};let u=J(i,d.assetRef);if(u&&r>u.remaining)return{proposed:!1,reason:"over_budget",message:`This grant has ${u.remaining} ${d.symbol} remaining (of ${u.limit} total); ${r} ${d.symbol} would exceed it. Nothing was built or sent. Use request_approval to ask the owner for this specific swap.`};let h=await q(e,l,s,await e.ensureSession()),g;try{g=await e.buildDelegatedSwap({delegationId:i.id,tokenIn:d.symbol,tokenOut:h.symbol,amountIn:r,...a!=null?{maxSlippageBps:a}:{}})}catch(y){let S=be(y);if(!S)throw y;return{proposed:!1,reason:"account_setup_required",missingModule:S,setupUrl:O(e.apiBaseUrl,i.chainId),message:`This account is missing ${S} on chain ${i.chainId} (${i.chain}), so a swap under this grant cannot succeed. Nothing was built or sent, and retrying will fail identically - installing a module is an authority change only the owner can sign, and a session key cannot do it. Open the setupUrl above in a browser, sign the one-time setup, then ask me to try this swap again.`}}let f=await e.ensureSession(),p=await e.spendUnderGrant(g.userOp,g.userOpHash,i.permissionId,f,g.intentType),w=typeof p?.id=="string"?p.id:null;return w?Oe(e,w,g.userOpHash,"swap",{amount:r,token:d.symbol},`NOTHING moved: no ${d.symbol} left the account, no ${h.symbol} was received, and the grant budget was not spent.`):{proposed:!0,settled:!1,userOpHash:g.userOpHash,relay:p}}import{readFileSync as Rn}from"node:fs";import{dirname as ht,join as _n}from"node:path";import{fileURLToPath as xn}from"node:url";var Pn="0.0.0-unknown";function On(){let e=ht(xn(import.meta.url));for(let t=0;t<5;t++){try{let s=JSON.parse(Rn(_n(e,"package.json"),"utf8"));if(s.name==="botanary-mcp"&&typeof s.version=="string")return s.version}catch{}let n=ht(e);if(n===e)break;e=n}return Pn}var j=On();var Nn=6e4;async function pt(e){let t;try{t=await e.api.post("/v1/auth/cli/start",tt(j,process.env))}catch(w){throw w instanceof N&&w.status===401&&await e.store.clear(),w}let{requestId:n,pollSecret:s,userCode:r,verificationUrl:l,expiresIn:a}=t,o=Math.max(t.pollIntervalMs,500),i=e.now()+a*1e3,c=await e.openBrowser(l);e.onPrompt?.({userCode:r,url:l,browserOpened:c,expiresAt:i}),e.ctx?.progress({message:c?`Waiting for you to approve in your browser. Your code is ${r}.`:`Waiting for you to approve. Open ${l} and enter code ${r}.`});let{withFallback:d}=await Promise.resolve().then(()=>(L(),we)),u={status:"pending"},h="pending",g=o,f=()=>({watch:w=>({async*[Symbol.asyncIterator](){for(;e.now()<i&&!w.aborted;){if(await e.sleep(o),w.aborted)return;try{let y=await e.api.get(`/v1/auth/cli/${n}`,s);g=o,yield y}catch(y){if(y instanceof N&&y.status===401)throw await e.store.clear(),y;if(y instanceof N&&y.status===429){let S=y.retryAfterSeconds!=null?y.retryAfterSeconds*1e3:g*2;if(g=Math.min(S,Nn),e.ctx?.progress({message:"Rate limited by the server - backing off and still waiting."}),await e.sleep(g),w.aborted)return;continue}throw y}}}})}),p;if(e.streamSourceFactory){let w=e.streamSourceFactory(n,s);p=d(w,f()).watch(e.ctx?.signal??new AbortController().signal)}else p=f().watch(e.ctx?.signal??new AbortController().signal);for await(let w of p){if(u=w,u.status!==h&&(h=u.status,e.ctx?.progress({message:`Login ${u.status}.`})),u.status==="authorized"){let y=u;if(y.sessionToken||(e.ctx?.progress({message:"Authorized - claiming the session token."}),y=await e.api.get(`/v1/auth/cli/${n}`,s)),!y.sessionToken)throw await e.store.clear(),new Error("Login was authorized but the backend delivered no session token (the one-time delivery may already have been claimed). Nothing was stored - run wallet_login again.");let S={sessionToken:y.sessionToken,accountId:y.accountId||null,signerAddress:y.signerAddress||"",savedAt:new Date().toISOString()};return await e.store.save(S),{status:"authorized",userCode:r,url:l,session:S,browserOpened:c}}if(u.status==="denied")return{status:"denied",userCode:r,url:l,browserOpened:c}}return{status:"expired",userCode:r,url:l,browserOpened:c}}import{execFile as Cn}from"node:child_process";import{promisify as $n}from"node:util";var Ln=$n(Cn),qn=async(e,t)=>{await Ln(e,t)};function Bn(e){switch(e){case"darwin":return{command:"open",leading:[]};case"linux":return{command:"xdg-open",leading:[]};case"win32":return{command:"rundll32",leading:["url.dll,FileProtocolHandler"]};default:return null}}function Un(e){let t;try{t=new URL(e)}catch{return!1}return t.protocol==="http:"||t.protocol==="https:"}async function ee(e,t=qn,n=process.platform){if(!Un(e))return!1;let s=Bn(n);if(!s)return!1;try{return await t(s.command,[...s.leading,e]),!0}catch{return!1}}var gt=["/account","/account/devices","/account/migration","/account/policies","/account/roster","/account/rules","/account/signers","/accounts","/activity","/activity/anchor","/activity/{eventId}","/adapters","/agent-wallets","/agent-wallets/connect/status","/agent-wallets/connection","/agent-wallets/{agentId}","/agent-wallets/{agentId}/activity","/agent-wallets/{agentId}/caps","/agent-wallets/{agentId}/signer/status","/agent/conversations","/agent/conversations/{conversationId}","/agents","/agents/me","/agents/pairing/{code}/stream","/agents/requests","/agents/requests/stream","/agents/{agentId}/mandates","/apis/approvals","/apis/budget","/apis/calls/relay/{id}","/apis/calls/requirements/{id}","/apis/mandates","/apis/mandates/mine","/apis/mandates/{agentId}","/apis/mandates/{agentId}/spend","/apis/providers","/apis/providers/{providerId}","/apis/spend","/approvals/awaiting-me","/approvals/waiting","/approvals/{digest}","/assets/resolve","/auth/cli/{requestId}/consent","/auth/cli/{requestId}/stream","/balance","/balance/assets/{assetRef}/history","/balance/history","/balance/stream","/balance/tokens/{chainId}/{tokenAddress}/history","/balance/tokens/{chainId}/{tokenAddress}/history/stream","/balance/tokens/{chainId}/{tokenAddress}/market","/chains","/contacts","/delegations","/delegations/{delegationId}","/delegations/{delegationId}/policy-snapshots","/depeg","/farm/pools/{id}/terms","/farm/positions","/farm/solana/pools","/gas/methods","/history","/launchpad/tokens","/launchpad/tokens/{chain}/{address}/history","/mandates","/market/equities","/market/equities/{symbol}/history","/marketplace/agents","/marketplace/agents/evaluator","/marketplace/agents/search","/marketplace/agents/stream","/marketplace/agents/{wallet}","/marketplace/jobs","/marketplace/jobs/{chainId}/{jobId}","/marketplace/managed/connect/status","/marketplace/managed/connection","/markets/holders/{chainId}/{address}","/markets/stream","/markets/tokens","/markets/tokens/{id}","/markets/tokens/{id}/history","/money/receive","/money/swap/status","/money/swap/tokens","/money/swap/tokens/resolve","/notifications","/onramp/methods","/operations/stream","/pay-sh/accounts","/pay-sh/accounts/{accountId}","/pay-sh/accounts/{accountId}/allowlist","/pay-sh/accounts/{accountId}/balance","/pay-sh/accounts/{accountId}/ceiling","/pay-sh/accounts/{accountId}/deposit/qr","/pay-sh/accounts/{accountId}/holdings","/pay-sh/accounts/{accountId}/settings","/recovery/guardians","/sign-kinds","/sign-requests","/sign-requests/{id}","/sign-requests/{id}/stream","/solana/account","/solana/mandates","/solana/transactions/{signature}","/spore/evidence/{id}","/spore/tasks","/spore/tasks/{id}","/spore/tools","/stellar/account","/stellar/transactions/{hash}","/userops/{userOpId}","/yield/facets","/yield/pools","/yield/pools/{id}","/yield/pools/{id}/history","/yield/shortlist","/yield/solana/pools","/yield/solana/pools/{id}"],mt=["/auth/cli/{requestId}","/auth/session","/spore/tasks/{id}/events"];var Dn=gt.map(H),Hn=mt.map(H);function Mn(e){let t=D(e);if(!t)return null;let n=ae(t.path);return{target:n,request:`/v1${n}${t.query}`}}function Fn(e){return Hn.some(t=>t.test(e))?!1:Dn.some(t=>t.test(e))}async function ft(e,t,n="GET"){if(n.toUpperCase()!=="GET")throw new Error(`wallet_api_get only ever sends GET - refusing method "${n}". There is no api_post: every write goes through wallet_send/wallet_swap (a typed intent, reviewed and signed by the owner) or the agent lane\`s own on-chain-bound mandate.`);let s=Mn(t);if(!s)throw new Error(M(t,"wallet_api_get"));if(!Fn(s.target))throw new Error(`"${V(s.target)}" is not a GET route in the frozen OpenAPI contract (openapi/botanary-v1.yaml) - refusing to call an undocumented or write-only path. Re-check the path against the docs, or if the contract genuinely changed, the manifest needs \`pnpm generate:routes\`.`);return e.api.get(s.request,e.token)}var yt=[{path:"/account/migration/commit",method:"POST"},{path:"/account/policies/requirements",method:"POST"},{path:"/account/roster",method:"POST"},{path:"/account/roster/{keyRef}",method:"DELETE"},{path:"/account/signers/google/challenge",method:"POST"},{path:"/accounts/{id}",method:"PATCH"},{path:"/accounts/{id}/tokens",method:"POST"},{path:"/accounts/{id}/tokens/{tokenAddress}",method:"DELETE"},{path:"/agent-wallets",method:"POST"},{path:"/agent-wallets/{agentId}",method:"PUT"},{path:"/agent-wallets/{agentId}/archive",method:"POST"},{path:"/agent-wallets/{agentId}/caps",method:"PUT"},{path:"/agent-wallets/{agentId}/signer/connect",method:"POST"},{path:"/agent-wallets/{agentId}/unarchive",method:"POST"},{path:"/agent-wallets/connect",method:"POST"},{path:"/agent-wallets/connection",method:"DELETE"},{path:"/agent/audit",method:"POST"},{path:"/agent/conversations",method:"POST"},{path:"/agent/conversations/{conversationId}",method:"DELETE"},{path:"/agent/conversations/{conversationId}",method:"PATCH"},{path:"/agent/conversations/{conversationId}/messages",method:"POST"},{path:"/agents/{agentId}/mandates",method:"POST"},{path:"/agents/{agentId}/mandates/{mandateId}/versions",method:"POST"},{path:"/agents/{agentId}/mandates/{mandateId}/versions/{version}",method:"PATCH"},{path:"/agents/{code}/claim",method:"POST"},{path:"/agents/{id}",method:"DELETE"},{path:"/agents/{id}/disable",method:"POST"},{path:"/agents/pair",method:"POST"},{path:"/agents/requests",method:"POST"},{path:"/apis/calls/free",method:"POST"},{path:"/apis/calls/requirements",method:"POST"},{path:"/apis/calls/requirements/{id}/approve",method:"POST"},{path:"/apis/calls/requirements/{id}/decline",method:"POST"},{path:"/apis/mandates/{agentId}/pause",method:"POST"},{path:"/apis/mandates/{agentId}/resume",method:"POST"},{path:"/apis/mandates/{agentId}/revoke",method:"POST"},{path:"/apis/providers/{providerId}/blocked",method:"PUT"},{path:"/apis/providers/{providerId}/endpoints/{endpointId}/blocked",method:"PUT"},{path:"/approvals",method:"POST"},{path:"/approvals/{digest}",method:"POST"},{path:"/mandates/propose",method:"POST"},{path:"/marketplace/managed/connect",method:"POST"},{path:"/money/swap/quote",method:"POST"},{path:"/notifications/{notificationId}/read",method:"POST"},{path:"/notifications/read-all",method:"POST"},{path:"/onramp/session",method:"POST"},{path:"/pay-sh/accounts",method:"POST"},{path:"/pay-sh/accounts/{accountId}",method:"DELETE"},{path:"/pay-sh/accounts/{accountId}/allowlist",method:"POST"},{path:"/pay-sh/accounts/{accountId}/allowlist/{domain}",method:"DELETE"},{path:"/pay-sh/accounts/{accountId}/settings",method:"PUT"},{path:"/pay-sh/topup/confirm",method:"POST"},{path:"/simulation",method:"POST"},{path:"/waitlist",method:"POST"}],wt=["/agent-wallets/partner-provision","/agent-wallets/{agentId}/trade","/agent-wallets/{agentId}/withdraw","/agents/session","/agents/session/nonce","/agents/{id}/enable","/apis/calls/relay","/approvals/{digest}/relay","/auth/cli/start","/auth/cli/{requestId}/claim","/auth/cli/{requestId}/deny","/auth/session","/sign-requests","/sign-requests/{id}/complete","/sign-requests/{id}/reject","/solana/transactions","/spore/conversations/{id}/messages","/spore/tasks/{id}/cancel","/stellar/transactions","/userops","PATCH /agents/{id}"];var Gn=yt.map(({path:e,method:t})=>({method:t,pattern:H(e)})),Wn=wt.map(H);function jn(e){let t=D(e);if(!t)return null;let n=ae(t.path);return{target:n,request:`/v1${n}${t.query}`}}function Kn(e,t){return Wn.some(n=>n.test(e))?!1:Gn.some(({method:n,pattern:s})=>n===t&&s.test(e))}async function bt(e,t,n,s){let r=(n||"").toUpperCase();if(r==="GET")throw new Error('wallet_api_write only ever sends POST/PUT/PATCH/DELETE - refusing "GET". Reads go through wallet_api_get, which is GET-only for the identical reason in reverse.');if(!["POST","PUT","PATCH","DELETE"].includes(r))throw new Error(`wallet_api_write only ever sends POST/PUT/PATCH/DELETE - refusing "${n}".`);let l=jn(t);if(!l)throw new Error(M(t,"wallet_api_write"));if(!Kn(l.target,r))throw new Error(`"${r} ${V(l.target)}" is not a documented write route in WRITE_ROUTES (generated from the frozen OpenAPI contract, openapi/botanary-v1.yaml) - refusing to call an undocumented path, a wrong method for a known path, or a route this manifest excludes by construction (every authority action returns a build for the owner to sign - see write-routes.manifest.ts). Re-check the path and method, or if the contract genuinely changed, the manifest needs \`pnpm generate:write-routes\`.`);let a=l.request;switch(r){case"POST":return e.api.post(a,s,e.token);case"PUT":return e.api.put(a,s,e.token);case"PATCH":return e.api.patch(a,s,e.token);case"DELETE":return e.api.delete(a,e.token);default:throw new Error(`unreachable: unhandled method "${r}"`)}}async function kt(e,t,n){return e.api.post("/v1/sign-requests",{kind:t,...n},e.token)}async function $(e,t,n){let s=await Promise.allSettled(n.map(async a=>{let o=await e.get(a.path,t),i=a.parse?a.parse(o):o;return{key:a.key,value:i}})),r={},l=[];for(let a=0;a<s.length;a++){let o=s[a],i=n[a];if(o.status==="fulfilled")r[o.value.key]=o.value.value;else{let c=o.reason instanceof Error?o.reason.message:typeof o.reason=="string"?o.reason:String(o.reason);l.push({key:i.key,reason:c})}}if(Object.keys(r).length===0&&l.length===n.length&&n.length>0)throw new Error(`Composite read failed: all ${n.length} parts failed - ${l.map(a=>a.key).join(", ")}`);return JSON.parse(k(JSON.stringify({data:r,partial:l}),t))}var Vn={fresh:"Every chain synced successfully - these numbers are current.","last-known":"At least one chain's background sync is unhealthy right now. These are the LAST-KNOWN numbers, not current ones - re-read before reporting them as a settled position.",unknown:"The background sweep has not reached this account yet, so these numbers are UNKNOWN rather than merely old - holdings may be empty and totals may read 0, and that is NOT a confirmed zero balance. Re-read before reporting any figure from this response.",unreported:"This response carried no status field, so freshness could not be derived - no claim is made either way."};function zn(e){return e==="ready"?"fresh":e==="degraded"?"last-known":e==="building"?"unknown":"unreported"}function St(e){let t=typeof e=="object"&&e!==null?e:{},n=typeof t.status=="string"?t.status:null,s=typeof t.asOf=="string"?t.asOf:null,r=zn(n);return{status:n,asOf:s,state:r,stale:r==="last-known"||r==="unknown",note:Vn[r]}}function vt(e,t,n){if(typeof e!="object"||e===null)return null;let s=e;if(!Array.isArray(s.tokens))return null;let r=typeof s.asOf=="string"?s.asOf:null,l=s.tokens.find(a=>{if(typeof a!="object"||a===null)return!1;let o=a;return String(o.symbol).toUpperCase()===n.toUpperCase()&&o.chainId===t&&typeof o.amount=="number"});return l?{amount:l.amount,asOf:r}:null}var Yn=new Set(["relayed","rejected","expired","failed"]);function Jn(e){return e.mandateAccountId!==null&&e.mandateAccountId===e.walletAccountId&&e.mandateInBounds}function Xn(e){return e.mandateAccountId===null?"No paired agent mandate exists on this machine, so this needs your own signature.":e.mandateAccountId!==e.walletAccountId?`This machine's paired agent holds a mandate, but it is bound to a DIFFERENT account (${e.mandateAccountId}) than the one you are using right now (${e.walletAccountId}) - it cannot sign for this account. Opening your browser for your own signature instead.`:`A mandate exists on this account, but it does not cover this action (${e.mandateBoundsReason}). Opening your browser for your own signature instead.`}function Qn(e){switch(e.status){case"relayed":return e.txHash?`Sent - transaction ${e.txHash}.`:"Sent - relayed, awaiting a transaction hash.";case"rejected":return"You rejected the request in the browser - nothing was signed and nothing was sent.";case"expired":return"The request expired before it was signed - nothing was sent. Run wallet_send again.";case"failed":return`Declined on-chain${e.declineReason?`: ${e.declineReason}`:""} - nothing moved.`;default:return"Still waiting on your browser after the local poll window - if you already signed, it may still complete; check Botanary Activity. Otherwise run wallet_send again."}}async function Tt(e,t){if(Jn(e)){e.ctx?.progress({message:`Signing locally under this machine's mandate on account ${e.walletAccountId}.`});let f=await e.signUnderMandate(t);return{lane:"agent",text:`Signed locally under this machine's own mandate on account ${e.walletAccountId} - no browser was opened. The on-chain mandate is what authorized this, not a click.`,relay:f}}let n=Xn(e),s=e.preflight?await e.preflight(t):null,r=await e.createSignRequest(t),l=await e.openBrowser(r.url);e.onHandoff?.({url:r.url,signRequestId:r.id,browserOpened:l}),e.ctx?.progress({message:l?"Opened your browser. Waiting for you to review and sign.":`Waiting for you to sign. Open ${r.url} to approve.`});let a=!1;if(e.ctx?.elicit){let f=await e.ctx.elicit({message:`Botanary needs your signature in the browser to send ${t.amount} ${t.asset?.symbol??""}`.trim()+`. ${l?"A tab should be open":"Open this link"}: ${r.url}
11
- Choose Cancel to stop waiting here - the request stays open in your browser either way.`});a=f?.action==="decline"||f?.action==="cancel"}let o=Math.max(e.now(),new Date(r.expiresAt).getTime()),{pollSource:i,withFallback:c}=await Promise.resolve().then(()=>(L(),we)),d={status:"pending",opId:null,txHash:null},u="pending",h;e.streamSource?h=c(e.streamSource(r.id),i(()=>e.getSignRequest(r.id),2e3,e.sleep)).watch(e.ctx?.signal??new AbortController().signal):h=i(()=>e.getSignRequest(r.id),2e3,e.sleep).watch(e.ctx?.signal??new AbortController().signal);for await(let f of h)if(a||(d=f,d.status!==u&&(u=d.status,e.ctx?.progress({message:`Request ${d.status}.`})),Yn.has(d.status))||e.now()>=o)break;let g=l?`Opened your browser to approve: ${r.url}`:`Could not open a browser automatically - open this URL to approve: ${r.url}`;return a?{lane:"browser",text:`${n} ${g}. You chose to stop waiting here. The request is STILL LIVE in your browser and can still be signed - nothing was cancelled on the Botanary side. Call botanary_wait to rejoin it, or ignore it and it expires on its own. Do NOT call wallet_send again: that would park a SECOND sign request against the same intent, and signing both would send twice.`,signRequestId:r.id,url:r.url,status:d.status,opId:d.opId,txHash:d.txHash,declineReason:d.declineReason??null}:{lane:"browser",text:`${n} ${g}. ${Qn(d)}${s?` Note: ${s}`:""}`,signRequestId:r.id,url:r.url,status:d.status,opId:d.opId,txHash:d.txHash,declineReason:d.declineReason??null}}function m(e){return{content:[{type:"text",text:typeof e=="string"?e:JSON.stringify(e,null,2)}]}}function b(){return{type:"object",properties:{}}}function ea(e,t){return{address:e.address,publicKey:e.publicKey,fingerprint:e.fingerprint,createdAt:e.createdAt,keyStorage:e.backend,...t?{profile:t.key,profileSource:ne(t),reportedClient:t.tool}:{}}}async function Ne(e){try{return{...await e.pair(),registered:!0}}catch{return{...await e.pairingCode(),registered:!1}}}function $e(e,t){return`${z(e)}/agents?pair=${encodeURIComponent(t)}`}function Ce(e,t,n,s=!0,r,l="suppressed"){let a=$e(n,e.code);return{code:e.code,address:t.address,fingerprint:e.fingerprint,issuedAt:e.issuedAt,expiresAt:e.expiresAt,registered:s,pairingUrl:a,browserOpened:l==="opened"||l==="already-opened",...r?{profile:r.key,reportedClient:r.tool}:{},instructions:s?l==="opened"?`Botanary is OPENING IN THE BROWSER now, on Connected agents with this code already filled in - the user only has to name the agent and confirm. Tell them to look for that window; if none appeared, ${a} is the same link.`:l==="already-opened"?`The browser was already opened on this code earlier, and this is the SAME code (it stays valid until it expires), so no second window was launched. Point the user at the tab they already have, or ${a} if they closed it.`:l==="unavailable"?`No browser could be opened automatically on this machine (headless, or no URL opener), so the user has to do it: ${a} goes straight to Connected agents with the code already filled in. Failing that, they can enter the code there by hand.`:`In Botanary, open Connected agents and enter this code, then give the agent a name - or open ${a} to go straight there with the code already filled in.`:'This code could NOT be registered with Botanary just now (the backend was unreachable), so entering it in the app will fail with "Pairing failed" until registration succeeds. Tell the user that, and try again rather than sending them off to type a code that cannot work. No browser was opened, deliberately - a window onto a form that rejects the code is worse than none.'}}function At(e,t){let n=e.accountSetup;return!n||n.ready?"":` HOWEVER, this account is missing ${n.missing.length?n.missing.join(", "):"a required component"} on chain ${n.chainId}, so nothing can actually be spent under this grant yet - every attempt will be refused, and retrying cannot change that. Installing it is an authority change only the owner can sign. Have them open ${O(t,n.chainId)} and complete setup, then this grant works as described.`}function ge(e,t=()=>{}){let n=null,s=300*1e3,r=null;async function l(a,o,i){return a.registered?i?r===a.code?"already-opened":await ee(o)?(r=a.code,"opened"):"unavailable":"suppressed":"unregistered"}return[{name:"diagnose",lane:"starter",docSummary:"Start here when anything is unclear or an action failed: one read-only call that answers who this agent is bound to, whether that account is funded on the grant's own chain, and what, ranked, is blocking the next action.",description:"COMPOSITE tool (several reads plus judgment), AGENT LANE (this machine's own paired identity - never the wallet owner's browser session): START HERE when anything is unclear or an action failed. Answers in one call who this agent is bound to, whether that account is funded on the grant's own chain, whether that chain can do what the grant claims, and what - ranked - is blocking the next action, each with a concrete nextAction. Read-only: never signs, never mutates. Balance figures come from the backend store, which may lag the chain; the response says so in `freshness`. Call this before retrying a failed propose_payment - a retry with the same bounds fails identically. Reports an honest \"no key yet\" when this machine has never acted as an agent - if you are the human owner, use wallet_login instead.",inputSchema:b(),run:async()=>m(await De(e))},{name:"get_identity",lane:"starter",docSummary:"Report this agent's address, public key and fingerprint, generating the key on first call. Never returns the private key, and makes no network call.",description:"LOCAL tool (never contacts the backend), AGENT LANE: Report this agent's Botanary identity: its address, public key, short fingerprint, when its key was created, and which local backend holds the private key (the OS keychain, or the 0600 file fallback if none is available). Generates the key on first call if none exists yet - the key is generated on this machine and never leaves it. Never returns the private key. Having an identity grants nothing by itself: this agent can do nothing until its owner explicitly grants it something inside Botanary. Does NOT say whether the owner has claimed this agent - use whoami for that. This is THIS MACHINE'S OWN identity, acting as a connected agent under a grant - never the wallet owner's own account; the human owner should use wallet_login instead.",inputSchema:b(),run:async()=>m(ea(await e.identity(),e.profile))},{name:"get_pairing_code",lane:"starter",docSummary:"Show the short code the owner types into Connected agents, and register it with the backend so their claim can find it.",description:'COMPOSITE tool (creates the identity locally, then registers the code with the backend), AGENT LANE: Get the short pairing code to show the user so they can connect this agent: in Botanary, open "Connected agents" and enter the code, then name the agent. The SAME code is returned on repeated calls until it expires - call this again after expiresAt for a fresh one. By default this WAITS for the owner to claim the code, reporting progress; pass wait: false for the code alone. It also OPENS THE USER\'S BROWSER on that screen with the code already filled in (once per code, and never for a code the backend could not register); pass open: false to leave the browser alone and just show the code. Read `browserOpened` and `instructions` in the result and tell the user what actually happened - do not assume a window appeared. The code only IDENTIFIES this agent - it is derived from its public key plus a fresh single-use nonce, and is not a credential. Completing a connection additionally requires this agent to sign with its private key, which never leaves this machine, so intercepting the code alone grants nothing (see the package README). Pairing is what lets this machine act as a connected agent under a grant - it is a DIFFERENT thing from the wallet owner logging in themselves (wallet_login).',inputSchema:{type:"object",properties:{wait:{type:"boolean",description:"Wait for the owner to claim the code. Default true. Pass false for the code alone."},open:{type:"boolean",description:"Open the user's browser on the pairing screen with the code filled in. Default true. Pass false only when the user asked you not to, or you know there is no browser here."}}},run:async(a,o)=>{let i=await e.identity(),c=await Ne(e),d=await l(c,$e(e.apiBaseUrl,c.code),a.open!==!1),u=Ce(c,i,e.apiBaseUrl,c.registered,e.profile,d);if(!(a.wait!==!1&&o!==void 0))return m(u);let g=await e.handles.open({kind:"pair",label:`pair this machine as an agent (code ${c.code})`,ref:{code:c.code},url:u.pairingUrl,expiresAt:c.expiresAt});o.progress({message:d==="opened"?`Opened Botanary in your browser with code ${c.code} filled in - name the agent and confirm. Waiting for that claim.`:`Waiting for you to enter code ${c.code} in Botanary under Connected agents (${u.pairingUrl}).`});let f=await _(E(()=>e.me().then(()=>({claimed:!0})).catch(()=>({claimed:!1})),3e3),{isTerminal:p=>p.claimed,describe:p=>p.claimed?"Agent claimed.":`Still waiting for you to enter code ${c.code}.`,deadline:Date.parse(c.expiresAt),ctx:o});return f.terminal&&await e.handles.close(g.id),m({...u,handle:g.id,claimed:f.terminal,message:f.terminal?"This machine is now a connected agent.":`The code has not been claimed yet and this wait has ended. The code is still live until ${c.expiresAt} - call botanary_wait to keep waiting, or regenerate_pairing_code for a fresh one.`})}},{name:"regenerate_pairing_code",lane:"agent",docSummary:"Rotate the pairing code, which invalidates the previous one.",description:`COMPOSITE tool (creates the identity locally, then registers the code with the backend), AGENT LANE: Immediately invalidate the current pairing code and mint a fresh one - e.g. if the user thinks the previous code may have been seen by someone else, or it already expired. Use get_pairing_code for the ordinary "show me the code" case; this is only for forcing a new one before it would otherwise expire on its own. Like get_pairing_code, this OPENS THE USER'S BROWSER on the pairing screen with the new code filled in; pass open: false to suppress that.`,inputSchema:{type:"object",properties:{open:{type:"boolean",description:"Open the user's browser on the pairing screen with the new code filled in. Default true."}}},run:async a=>{let o=await e.identity();await e.regeneratePairingCode();let i=await Ne(e),c=await l(i,$e(e.apiBaseUrl,i.code),a.open!==!1);return m(Ce(i,o,e.apiBaseUrl,i.registered,e.profile,c))}},{name:"pair",lane:"agent",docSummary:"Sign the pairing code and submit the proof, completing this agent's half of a pairing.",description:"COMPOSITE tool, AGENT LANE: Pair this agent with the Botanary backend: sign a proof over the pairing code and timestamp, send it to the backend, and receive confirmation. After this completes, the owner can claim the pairing by entering the code and giving the agent a name in the Botanary app. The agent signs with its private key (never sent to the server), so a captured code alone is worthless. This is what lets THIS MACHINE act as a connected agent under a grant - never a substitute for the wallet owner's own login (wallet_login).",inputSchema:b(),run:async()=>{let a=await e.pair(),o=await e.identity();return m(Ce(a,o,e.apiBaseUrl,!0,e.profile))}},{name:"whoami",lane:"agent",docSummary:"What Botanary says about this agent: its identity, the account it is bound to, and its live grant, or an honest null when it has none.",description:`COMPOSITE tool, AGENT LANE (only when acting as a connected agent under a grant - never the wallet owner's own session): Report this agent to the Botanary backend: calls GET /agents/me to verify this agent is a LIVE connected agent and return its account and (if any) live grant, straight from the backend. If this agent was never claimed, or was disconnected, the call fails honestly - it does not report a fabricated "connected". Does NOT assess whether an action would actually succeed - use diagnose for that.`,inputSchema:b(),run:async()=>{let a=await e.me(),o=a.accountSetup&&!a.accountSetup.ready;return m(o?{...a,setupUrl:O(e.apiBaseUrl,a.accountSetup?.chainId),setupRequired:At(a,e.apiBaseUrl).trim()}:a)}},{name:"get_balance",lane:"agent",docSummary:"Read the bound account's balance under this agent's own session.",description:"THIN tool (one GET, returned unmodified), AGENT LANE (only when acting as a connected agent under a grant): Read this account's balance from the Botanary backend (GET /balance) using this agent's session - requires the owner to have already claimed this agent (see get_pairing_code/pair). Returns the account address and token balances exactly as the backend reports them. For the wallet owner's own view, use the wallet_* tools after wallet_login instead.",inputSchema:b(),run:async()=>m(await e.getBalance())},{name:"list_requests",lane:"agent",docSummary:"Every approval request this agent has filed, and the owner's verdict on each.",description:"THIN tool (one GET, returned unmodified), AGENT LANE: every approval request this agent has filed and the owner's verdict on each - `status`, `declineReason`, `expiresAt` (GET /agents/requests). This is the read half of request_approval: after filing a request, call this to learn whether the owner approved it. Does NOT approve anything - approval is owner-only and happens in Botanary.",inputSchema:b(),run:async()=>m(await e.listRequests())},{name:"list_chains",lane:"agent",docSummary:"Every chain this backend serves, each with the tier that decides what it can do.",description:"THIN tool (one GET, returned unmodified), AGENT LANE: every chain this backend serves, each with the `chainTier` that decides what it can do - `watch` is read-only, `basic` has a bundler but NO AgentGuard (so authority actions decline), `botanary` carries full on-chain authority (GET /chains). Check this before proposing an action on an unfamiliar chain. Reachable only through this agent's own session - the wallet owner's equivalent read is wallet_api_get.",inputSchema:b(),run:async()=>m(await e.listChains())},{name:"get_gas_methods",lane:"agent",docSummary:"The gas methods actually available for this account on a chain. Unavailable ones are filtered out server-side, so there is nothing here to disable.",description:"THIN tool (one GET, returned unmodified), AGENT LANE: the gas methods actually AVAILABLE for this account on a chain - the backend already filters out unavailable and sponsored ones, so anything returned is usable (GET /gas/methods). An empty list means this account cannot currently pay for gas there, which is the usual cause of an AA21 relay failure.",inputSchema:{type:"object",properties:{chainId:{type:"number",description:"EVM chain id, e.g. 5042002. Optional."},accountId:{type:"string",description:"Account id to scope the answer to. Optional."},key:{type:"string",description:"Non-EVM chain key (Solana/Stellar), used INSTEAD of chainId. Optional."}}},run:async a=>m(await e.getGasMethods({chainId:typeof a.chainId=="number"?a.chainId:void 0,accountId:typeof a.accountId=="string"?a.accountId:void 0,key:typeof a.key=="string"?a.key:void 0}))},{name:"get_account",lane:"agent",docSummary:"The one account this agent is bound to, with its address and deployment status.",description:"THIN tool (one GET, returned unmodified), AGENT LANE: the ONE account this agent is bound to - its address and `deploymentStatus`, optionally for a specific chain (GET /account). Singular, not a list: an agent sees only its own bound account, never the owner's others.",inputSchema:{type:"object",properties:{chainId:{type:"number",description:"Return the account row for this chain. Optional."}}},run:async a=>m(await e.getAccount({chainId:typeof a.chainId=="number"?a.chainId:void 0}))},{name:"botanary_wait",docSummary:"Rejoin a Botanary action that is waiting on a human - a browser signature, an approval, a pairing claim, or a relayed operation still settling. Call it with no arguments to resume the most recent one; never resend the original action, because it is still live and a resend would run it twice.",lane:"starter",description:"COMPOSITE tool: Rejoin a Botanary action that is waiting on a human - a browser signature, an owner's approval, a pairing claim, or a relayed operation still settling. Call this with no arguments to resume the most recent unfinished one. THIS IS THE ONLY CORRECT FOLLOW-UP when a wallet_send, wallet_sign_request, get_pairing_code, request_approval, propose_payment or propose_swap call ended without a terminal answer: never resend the original action, because it is still live and a resend would run it twice. The result has the same shape the originating tool would have returned, so a resumed flow reports identically to one that never dropped. Available even when logged out - a handle outlives a logout, and an action already in flight deserves an answer.",inputSchema:{type:"object",properties:{handle:{type:"string",description:"A handle id (hnd_...) from an earlier result. Omit to resume the most recent one."}}},run:async(a,o)=>{let i=await e.handles.list();if(i.length===0)return m({waiting:!1,message:"Nothing is in flight on this machine. No sign request, login, pairing, approval or operation is waiting on anyone right now."});let c=typeof a.handle=="string"?a.handle:null,d=c?await e.handles.get(c):await e.handles.latest();return m(d?await ke(e,d,o??{signal:new AbortController().signal,progress:()=>{}}):{waiting:!1,error:"unknown_handle",message:`No open handle "${c}". These are open right now:`,open:i.map(u=>({id:u.id,kind:u.kind,label:u.label,expiresAt:u.expiresAt,url:u.url??null}))})}},{name:"propose_payment",lane:"agent",docSummary:"Spend under this agent's own grant, unattended. Refuses honestly, citing the backend's own numbers, when there is no grant or the amount is out of bounds; otherwise builds and relays it signed with the grant's own session key.",description:"COMPOSITE tool, AGENT LANE (only when acting as a connected agent under a grant - the human owner's own send is wallet_send, after wallet_login): Build and relay a payment under this agent's OWN grant. Reads the grant's bounds and permissionId from the backend (GET /agents/me) FIRST: when there is no grant, the grant is not active, it is on a different chain, or the amount would exceed its remaining budget or per-action cap, this refuses with the backend's own numbers and points at request_approval instead of attempting anything - it never pretends to send a payment it did not send. Otherwise it builds the delegated action (POST /delegations/{delegationId}/actions - the ONLY build lane a session-key signature can validate; never the owner-lane /money/send/build) against THIS agent's own grant id, then relays it signed with the grant's own session key (POST /userops), returning the backend's real relay result. This client-side bounds check is a convenience, never the check - the chain is what actually enforces the grant. The result keeps three outcomes strictly apart: settled:true WITH `spent` means it landed; settled:true with `spent: null` means it reached a terminal FAILURE and nothing moved (never report that as a payment); settled:false always carries an opId, meaning still pending or the follow-up read failed after a successful relay - call botanary_wait to rejoin it and never resend. If this refuses, or the relay fails, call diagnose before retrying - a repeat with the same bounds fails identically.",inputSchema:{type:"object",properties:{recipient:{type:"string",description:"Recipient address (0x...)"},amount:{type:"number",description:"Amount in DISPLAY units (e.g. 12.5 for 12.5 USDC) - never wei, never a hex string."},token:{type:"string",description:`The token to pay with: its contract address (0x...) or its CAIP-19 asset ref. NEVER a symbol - "USDC" is a label a contract picked for itself and two contracts on one chain can share it, and this grant's budget is matched against the resolved address, not a name. Call resolve_token or list_tokens if you only have a symbol.`},chainId:{type:"number",description:"Chain ID to send on - must match the grant's own chain."}},required:["recipient","amount","token","chainId"]},run:async a=>a.tokenSymbol!==void 0&&a.token===void 0?m({error:"token_is_not_a_symbol",message:`This tool now takes a contract address or a CAIP-19 asset ref as \`token\`, not a symbol as \`tokenSymbol\`. A symbol is a label a contract picked for itself, so Botanary will not guess which "${String(a.tokenSymbol)}" you meant. Call resolve_token or list_tokens to get the address, then call this again with \`token\`.`}):m(await dt(e,{recipient:String(a.recipient),amount:Number(a.amount),token:String(a.token),chainId:Number(a.chainId)}))},{name:"propose_swap",lane:"agent",docSummary:"Swap under this agent's own grant, unattended, through the one venue that grant pinned. A better route through any other venue is declined by name rather than taken.",description:"COMPOSITE tool: Build and relay a SWAP under this agent's OWN grant - sell one token for another, in the account's own name, without the owner signing. Reads the grant's bounds and permissionId from the backend (GET /agents/me) FIRST: when there is no grant, the grant is not active, it is on a different chain, the grant names NO swap venue at all (a transfer-only grant has no allowance action for a swap to validate against), the token being sold is not the one token its venue pins, or the amount exceeds that venue's per-swap allowance ceiling, this refuses with the backend's own numbers and points at request_approval instead of attempting anything - it never pretends to have swapped what it did not. Otherwise it builds the delegated action (POST /delegations/{delegationId}/actions with action: 'swap' - the ONLY build lane a session-key signature can validate; never the owner-lane /money/swap/build) against THIS agent's own grant id, then relays it signed with the grant's own session key (POST /userops), returning the backend's real relay result. The ROUTE is the backend's to choose and the grant pins exactly one router, so a best route through any other router is declined there, by name - this tool never picks a venue. This client-side bounds check is a convenience, never the check - the chain is what actually enforces the grant. The result keeps three outcomes strictly apart: settled:true WITH `spent` means it landed; settled:true with `spent: null` means it reached a terminal FAILURE and nothing moved (never report that as a swap); settled:false always carries an opId, meaning still pending or the follow-up read failed after a successful relay - call botanary_wait to rejoin it and never resend. If this refuses, or the relay fails, call diagnose before retrying - a repeat with the same bounds fails identically.",inputSchema:{type:"object",properties:{assetIn:{type:"string",description:"The token being SOLD: its contract address (0x...) or its CAIP-19 asset ref. NEVER a symbol - must resolve to the one token the grant's swap venue pins. Call resolve_token or list_tokens if you only have a symbol."},assetOut:{type:"string",description:"The token being BOUGHT: its contract address (0x...) or its CAIP-19 asset ref. NEVER a symbol. Unbounded by the grant - what the account receives only increases its holdings."},amountIn:{type:"number",description:"Amount of assetIn to sell, in DISPLAY units (e.g. 25 for 25 USDC) - never wei, never a hex string."},chainId:{type:"number",description:"Chain ID to swap on - must match the grant's own chain."},maxSlippageBps:{type:"number",description:"Optional slippage ceiling in basis points (e.g. 50 for 0.5%). Omitted, the backend uses its own default."}},required:["assetIn","assetOut","amountIn","chainId"]},run:async a=>a.tokenIn!==void 0&&a.assetIn===void 0||a.tokenOut!==void 0&&a.assetOut===void 0?m({error:"token_is_not_a_symbol",message:"This tool now takes a contract address or a CAIP-19 asset ref as `assetIn`/`assetOut`, not a symbol as `tokenIn`/`tokenOut`. A symbol is a label a contract picked for itself, so Botanary will not guess which contract you meant. Call resolve_token or list_tokens to get the address, then call this again with `assetIn`/`assetOut`."}):m(await ut(e,{assetIn:String(a.assetIn),assetOut:String(a.assetOut),amountIn:Number(a.amountIn),chainId:Number(a.chainId),...typeof a.maxSlippageBps=="number"?{maxSlippageBps:a.maxSlippageBps}:{}}))},{name:"get_action_status",lane:"agent",docSummary:"Check on a pending action this agent relayed, by operation id.",description:"THIN tool (one GET, returned unmodified), AGENT LANE: Read the current status of an action THIS agent relayed, by the op id propose_payment returned. Returns the backend's own receipt verbatim: status is pending | included | failed, with txHash once one exists. For a one-shot read this is right; to WAIT for the outcome call botanary_wait instead, which reports progress while it waits rather than returning a status you then have to poll yourself. Never resend the payment to find out what happened: the original op is still live and a resend would move funds a second time. A status that stays pending for a long time means the backend has stopped watching, not that the payment failed - the transaction may still have landed, so report it as unknown rather than guessing either way.",inputSchema:{type:"object",properties:{opId:{type:"string",description:"The op id returned by propose_payment (op_...)."}},required:["opId"]},run:async a=>m(await e.getUserOp(String(a.opId)))},{name:"request_approval",lane:"agent",docSummary:"Ask the owner to approve something this grant cannot cover.",description:"COMPOSITE tool, AGENT LANE: Ask the owner to approve a specific action this agent could not do under its own grant (POST /agents/requests): names the exact calls and why, and returns which bound was crossed and the deadline exactly as the backend computed them - the request lane propose_payment points at when it refuses. The owner approves it as THEIR OWN action, never as this agent spending under a grant (\xA75-43) - approving happens in Botanary, not through this tool. This waits for the owner verdict and reports progress while it does; if the call drops, botanary_wait rejoins it. list_requests remains the one-shot read.",inputSchema:{type:"object",properties:{calls:{type:"array",items:{type:"object",properties:{to:{type:"string",description:"The target contract address."},data:{type:"string",description:"The encoded call data (hex, with 0x prefix)."},value:{type:"string",description:'Native wei to send, as a decimal string. Usually "0".'},chainId:{type:"number",description:"The chain ID where this call should execute."}},required:["to","data","value","chainId"]},description:"The exact calls that were declined - the same shape a build response already carries."},reason:{type:"string",description:'A human-readable reason the owner will see, e.g. "Pay the invoice".'}},required:["calls","reason"]},run:async(a,o)=>{let i=Array.isArray(a.calls)?a.calls:[],c=String(a.reason),d=await e.raiseRequest(i,c);if(!o)return m(d);let u=typeof d?.id=="string"?d.id:null;if(!u)return m(d);let h=await e.handles.open({kind:"approval",label:`Approval request: ${c}`,ref:{requestId:u},expiresAt:typeof d?.expiresAt=="string"?d.expiresAt:new Date(Date.now()+6e5).toISOString()});o.progress({message:`Waiting for owner approval of: ${c}`});let g=(w,y)=>(Array.isArray(w)?w:[]).find(B=>B.id===y),f=await _(E(()=>e.listRequests(),5e3),{isTerminal:w=>{let y=g(w,u);return y!==void 0&&y.status!=="pending"},describe:w=>`Approval request ${g(w,u)?.status??"pending"}.`,deadline:Date.parse(h.expiresAt),ctx:o});f.terminal&&await e.handles.close(h.id);let p=g(f.state,u);return m({...d,handle:h.id,settled:f.terminal,...p?{request:p}:{},message:f.terminal?`Owner responded: ${p?.status??"unknown"}.`:"The owner has not decided yet and this wait has ended. The request is still open - call botanary_wait to keep waiting. Do NOT file it again: a second request is a second thing the owner has to read, not a faster answer."})}},{name:"request_grant",lane:"agent",docSummary:"Ask the owner to grant bounded access under a specific mandate version. Returns a sign-request URL.",description:"COMPOSITE tool, AGENT LANE: Ask the owner to grant this agent bounded access under a specific mandate - (POST /sign-requests with kind: delegation.grant). The owner approves by reviewing and signing at the returned `/sign` URL. Returns the URL and request ID; the agent should then wait for the owner verdict via botanary_wait or by polling the returned URL. Unlike request_approval, which names specific calls the owner must approve directly, this surfaces a pre-drafted mandate version: the owner sees what delegation.grant offers and approves the thing itself, not an ad-hoc request. The mandate ID and version identify which existing, published mandate this grant is unlocking for.",inputSchema:{type:"object",properties:{mandateId:{type:"string",description:"The on-chain address of the mandate version this grant unlocks (as an EVM address, 0x...)."},mandateVersion:{type:"number",description:"The version number of the mandate (a positive integer)."},name:{type:"string",description:'A human-readable name for this grant, e.g., "Claude Code on Base".'},delegateeAddress:{type:"string",description:"The agent address to grant access to (as an EVM address, 0x...)."},chainId:{type:"number",description:"The chain ID where the grant applies (e.g., 421614 for Arbitrum Sepolia)."}},required:["mandateId","mandateVersion","name","delegateeAddress","chainId"]},run:async a=>{let c={kind:"delegation.grant",agentId:(await e.me()).address,mandateId:String(a.mandateId??""),mandateVersion:typeof a.mandateVersion=="number"?a.mandateVersion:void 0,name:String(a.name??""),delegateeAddress:String(a.delegateeAddress??""),chainId:typeof a.chainId=="number"?a.chainId:void 0,budgets:[]},d=await e.ensureSession(),u=await e.api.post("/v1/sign-requests",c,d);return m({message:`Grant request for mandate ${a.mandateId} v${a.mandateVersion} created. The owner must approve at the URL below.`,requestId:u.id,url:u.url,expiresAt:u.expiresAt,next:"The owner opens the URL and signs. Meanwhile, call botanary_wait (with the request ID) to wait for approval, or poll the URL with list_sign_requests."})}},{name:"what_may_i_do",lane:"agent",docSummary:"Render this agent's grant in plain terms, or an honest nothing-yet. A convenience read, never the check.",description:`COMPOSITE tool, AGENT LANE: Read this agent's own bounds in plain terms (GET /agents/me), WITHOUT hitting them: either the live grant's sentence, remaining budget and status, or an honest "nothing yet" when the owner has not granted this agent anything. A convenience read for whoever built this agent, never the check - the chain enforces the real bound regardless of what this reports. Does NOT check whether the account is funded or the chain usable - use diagnose for that.`,inputSchema:b(),run:async()=>{let a=await e.me(),o=a.accountSetup&&!a.accountSetup.ready;return m({agent:{address:a.address,name:a.name,accountId:a.accountId},grant:a.grant,...o?{accountSetup:a.accountSetup,setupUrl:O(e.apiBaseUrl,a.accountSetup?.chainId)}:{},summary:Y(a)+At(a,e.apiBaseUrl)})}},{name:"forget",lane:"agent",docSummary:"Step 1 of 2: preview what deleting the local key would destroy, and get a single-use confirmation token. Deletes nothing on its own.",description:"LOCAL tool (never contacts the backend), AGENT LANE: STEP 1 OF 2 of deleting this agent key from this machine. Deletes nothing by itself - it reports exactly what would be destroyed, what would be LEFT BEHIND (the owner-side connection row and any grant, which only the owner can remove), and returns a single-use confirmationToken. Pass that token to confirm_forget to actually delete. Irreversible once confirmed: the key cannot be recovered and any grant naming its address is orphaned.",inputSchema:b(),run:async()=>{if(!await e.store.hasIdentity())return n=null,m({willDelete:null,message:"No agent identity is stored on this machine - nothing to delete."});let a=await e.identity(),o=Zn(16).toString("hex");return n={token:o,expiresAt:Date.now()+s},m({willDelete:{address:a.address,fingerprint:a.fingerprint,keyStorage:a.backend},willNotDelete:["The ConnectedAgent row on the owner's account stays LIVE - this never calls DELETE /agents/{id}, which is owner-only.","Any grant stays active until the owner revokes it in Botanary.","Both become orphans: they will name an address whose key no longer exists anywhere."],irreversible:!0,expiresInSeconds:s/1e3,confirmationToken:o})}},{name:"confirm_forget",lane:"agent",docSummary:"Step 2 of 2: actually delete the agent key from this machine, given the token from forget.",description:"LOCAL tool (never contacts the backend), AGENT LANE: STEP 2 OF 2 - actually deletes this agent key from this machine. Requires the confirmationToken that forget returned; the token is single-use and expires. Refuses loudly rather than deleting on a missing, wrong, reused, or expired token. After this succeeds the agent has no identity until a new one is created and paired.",inputSchema:{type:"object",properties:{confirmationToken:{type:"string",description:"The single-use token returned by the forget tool."}},required:["confirmationToken"]},run:async a=>{let o=typeof a.confirmationToken=="string"?a.confirmationToken:"",i=n;if(n=null,!i)throw new Error("No confirmation token is outstanding - call forget first to see what would be destroyed, then pass the token it returns.");if(Date.now()>i.expiresAt)throw new Error("That confirmation token has expired - call forget again for a fresh one.");if(o!==i.token)throw new Error("That confirmation token is not the one forget issued - nothing was deleted.");return await e.store.forget(),e.reset(),m({deleted:!0,message:"Deleted the agent key from this machine. It can no longer sign anything. Any grant the owner still has on file for its old address remains until they revoke it in Botanary."})}},{name:"list_apis",lane:"agent",docSummary:"The paid third-party API endpoints this agent may call on a chain, each with its live price and this agent's remaining budget. Reads only, and spends nothing.",description:"THIN tool (one GET, returned unmodified): the paid API endpoints this agent may call on a chain, with each endpoint's live price and this agent's remaining budget. Reachability has two independent layers and an endpoint needs BOTH: it must not be `blocked` account-wide by the owner, and it must be in this agent's own mandate scope. Does NOT call an endpoint or spend anything \u2192 call_api. Prices come from each provider, not from Botanary.",inputSchema:{type:"object",properties:{chainId:{type:"number",description:"EVM chain id, e.g. 421614."}},required:["chainId"]},run:async a=>{let o=typeof a.chainId=="number"?a.chainId:void 0;if(!o)throw new Error("chainId is required");return m(await e.listApis?.(o)??{endpoints:[],budget:null})}},{name:"call_api",lane:"agent",docSummary:"Call one of those paid endpoints and pay for it inside the budget the owner committed on-chain. A response marked simulated is synthetic test data, and says so.",description:`COMPOSITE tool: call a paid third-party API endpoint and pay for it from the owner's wallet, within the budget the owner committed on-chain. Signs an EIP-3009 authorization with THIS agent's own key, then wraps it in the Kernel ERC-1271 envelope the on-chain validator actually verifies - never a bare signature. The owner never signs and no gas is charged to them. A call above this agent's confirmation threshold waits on the owner's approval automatically (polled internally, up to several minutes) before it either proceeds or comes back as a decline - this call may simply take longer, that is not itself a failure. If it declines, the reason says what to change - do not retry the same call unchanged. A response marked simulated:true is SYNTHETIC TEST DATA, not a real result: never report its contents as a finding. PAYMENT HAPPENS BEFORE THE PROVIDER VALIDATES THE REQUEST: if the endpoint's requestSchema is null, there is no way to tell "this provider publishes no schema" from "the schema has not been fetched yet" - either way, you are GUESSING at the body/parameter shape, and a malformed guess still gets paid for before the provider rejects it. A non-null requestSchema is the only way to know the shape in advance; treat a null one as a real signal to double-check the shape elsewhere before calling. Read requestSchema from wallet_api_get on /apis/providers/{providerId}, whose endpoint entries carry it - there is no dedicated tool for it, and knowing it exists is no use without knowing where.`,inputSchema:{type:"object",properties:{chainId:{type:"number",description:"EVM chain id."},providerId:{type:"string",description:"API provider identifier."},endpointId:{type:"string",description:"Endpoint identifier on the provider."},url:{type:"string",description:"Full URL with query parameters."},body:{type:"string",description:"Raw request body for a POST endpoint, as a STRING (usually JSON you serialised yourself). Forwarded to the provider byte for byte and never reshaped. Omit for GET, whose parameters belong in the url. The price is quoted for THIS body, so it cannot change afterwards."}},required:["chainId","providerId","endpointId","url"]},run:async a=>{let o=typeof a.chainId=="number"?a.chainId:void 0,i=typeof a.providerId=="string"?a.providerId:void 0,c=typeof a.endpointId=="string"?a.endpointId:void 0,d=typeof a.url=="string"?a.url:void 0,u=typeof a.body=="string"?a.body:void 0;if(!o||!i||!c||!d)throw new Error("chainId, providerId, endpointId, and url are all required");let h=await e.callApi?.({chainId:o,providerId:i,endpointId:c,url:d,body:u});return m({...h,_simulated_marker:h?.simulated?"This response is SYNTHETIC TEST DATA, not a real API result":void 0})}},{name:"get_api_budget",lane:"agent",docSummary:"Remaining authorizations, per-call maximum, expiry and epoch for this agent on a chain.",description:"THIN tool (one GET, returned unmodified): remaining authorizations, per-call maximum, expiry and epoch for this agent on a chain. Does NOT tell you which endpoints this agent may reach \u2192 list_apis.",inputSchema:{type:"object",properties:{chainId:{type:"number",description:"EVM chain id, e.g. 421614."}},required:["chainId"]},run:async a=>{let o=typeof a.chainId=="number"?a.chainId:void 0;if(!o)throw new Error("chainId is required");return m(await e.getApiBudget?.(o)??{remaining:null,perCallMax:null})}},{name:"wallet_login",lane:"starter",docSummary:"Log the human owner in through their own browser and store the resulting session in the OS keychain. With no browser available, prints the URL and code instead.",description:"COMPOSITE tool, WALLET LANE (the human owner's own session - never this machine acting as an agent): Device-style login for the owner. Initiates a login flow where the owner opens a browser, authorizes this machine, and the tool polls until the owner grants access. The session is stored locally in the OS keychain. Never returns the session token in the response - it is stored and used internally only. Unlocks the wallet_* tools (wallet_send, wallet_api_get, wallet_logout) once it succeeds.",inputSchema:b(),run:async(a,o)=>{let i=await pt({api:e.api,store:e.walletSessionStore,openBrowser:ee,now:()=>Date.now(),sleep:u=>new Promise(h=>setTimeout(h,u)),streamSourceFactory:(u,h)=>R(`${e.apiBaseUrl}/v1/auth/cli/${u}/stream`,h,g=>g),ctx:o});i.status==="authorized"&&t();let c=i.status==="authorized"?`Owner logged in successfully to account ${i.session?.accountId}`:i.status==="denied"?"Owner denied the login request":"Login window expired without authorization",d=i.browserOpened?"":` Could not open a browser automatically - open this URL to authorize: ${i.url}`;return m({status:i.status,userCode:i.userCode,verificationUrl:i.url,browserOpened:i.browserOpened,accountId:i.session?.accountId??null,signerAddress:i.session?.signerAddress??null,message:`${c}.${d}`})}},{name:"wallet_logout",lane:"wallet",docSummary:"Revoke the owner session and clear it locally, even when the network call fails, so a dead network cannot strand a live credential on disk.",description:"COMPOSITE tool, WALLET LANE: Logout the owner. Calls DELETE /auth/session to revoke the session on the backend, then clears the stored session token locally. Even if the network call fails, the local token is cleared - a dead network cannot strand a live credential on disk. Hides the wallet_* tools again until wallet_login is run again.",inputSchema:b(),run:async()=>await e.walletSession()?(await e.walletLogout(),t(),m({loggedOut:!0,message:"Logged out from the wallet session."})):m({loggedOut:!1,message:"No wallet session is currently stored."})},{name:"wallet_status",lane:"starter",docSummary:"The wallet session's account and the agent's bound account side by side, with any mismatch flagged explicitly.",description:"COMPOSITE tool, WALLET LANE (safe to call in either lane or neither - this is the diagnostic tool for the relationship BETWEEN the two): Check the wallet owner status. Reports whether a wallet session is stored, and - critically - compares it with the agent binding. The agent key and the owner session are independent credentials that can point at different accounts - that divergence is a first-class finding. This tool prints both bindings side by side so mismatches are immediately visible. OBSERVES ONLY: unlike whoami/diagnose/propose_payment, it never generates an agent identity as a side effect - on a machine with no agent key yet, it reports that plainly rather than creating one just to answer a status check.",inputSchema:b(),run:async()=>{let a=await e.walletSession(),o=await e.store.hasIdentity(),i=null,c=null;if(o)try{let h=await e.me();i={address:h.address,accountId:h.accountId,accountAddress:h.accountAddress??null}}catch(h){c=h instanceof Error?h.message:String(h)}let d;c?d=void 0:o?a&&i&&"accountId"in i&&(d=a.accountId!==i.accountId?"The wallet owner and agent are bound to different accounts.":null):d=null;let u=(await e.handles.list()).map(h=>({id:h.id,kind:h.kind,label:h.label,expiresAt:h.expiresAt}));return m({walletSession:a?{accountId:a.accountId,signerAddress:a.signerAddress,savedAt:a.savedAt}:null,hasAgentIdentity:o,agentBinding:c?{error:c}:o?i:null,mismatch:d,pending:u,message:o?c?`Agent identity exists locally, but the backend lookup failed: ${c}`:void 0:"No agent identity exists on this machine yet - none was created by checking status. Call get_pairing_code if you want to set one up."})}},{name:"wallet_use_account",lane:"wallet",docSummary:"Switch which of the owner's accounts every subsequent wallet call uses, validated against the account list first.",description:"COMPOSITE tool (one GET to validate, then a local persist - never a network write), WALLET LANE (requires wallet_login first): Switch which of the owner's accounts this MCP process uses for every subsequent wallet_* tool call - including which account wallet_send's lane arbitration (design spec \xA76) compares a paired agent's mandate against, so switching AWAY from the account a mandate is bound to correctly takes the mandate out of consideration, and switching TO it correctly brings it back in. Validates accountId against GET /accounts FIRST: an id that is not one of this owner's real accounts is refused, citing the accounts the backend actually reports, rather than persisting a guess that would only surface as a later, more confusing 404 from a build route. Persists to the SAME OS-keychain item wallet_login writes, so the switch survives this process restarting. Reports both the previous and the new account so the result is legible without a follow-up call - call wallet_status or wallet_portfolio afterwards only if you want to double-check.",inputSchema:{type:"object",properties:{accountId:{type:"string",description:`The account id to switch to - one of the ids GET /accounts (or wallet_api_get's "/accounts") reports for this owner. Never invent one; copy it from wallet_status, wallet_portfolio, or wallet_api_get.`}},required:["accountId"]},run:async a=>{let o=await e.walletSession();if(!o)return m({switched:!1,message:"Not logged in as the wallet owner - run wallet_login first, then try wallet_use_account again."});let i=f=>m(k(JSON.stringify(f,null,2),o.sessionToken)),c=typeof a.accountId=="string"?a.accountId.trim():"";if(!c)return i({switched:!1,message:"accountId is required - pass one of the ids GET /accounts reports."});let d;try{d=await e.api.get("/v1/accounts",o.sessionToken)}catch(f){let p=f instanceof Error?f.message:String(f);return i({switched:!1,message:`Could not verify this owner's accounts with the Botanary backend, so nothing was switched: ${p}`})}let u=d.find(f=>f.id===c);if(!u){let f=d.map(p=>p.id).join(", ")||"none";return i({switched:!1,message:`"${c}" is not one of this owner's accounts - Botanary reports: ${f}. Nothing was changed.`})}let h=o.accountId;return await e.walletSessionStore.switchAccount(c)?i({switched:!0,previousAccountId:h,accountId:c,message:h===c?`Already using account ${c}${u.label?` (${u.label})`:""} - nothing changed.`:`Switched from ${h??"no account"} to ${c}${u.label?` (${u.label})`:""}. Every wallet_* tool, including wallet_send's own same-account check, now uses this account.`}):i({switched:!1,message:"The wallet session was cleared while this was running - run wallet_login again before switching accounts."})}},{name:"wallet_send",lane:"wallet",docSummary:"Send tokens from the owner's own account, resolving either the unattended agent lane or a signature the owner makes in their own browser.",description:'COMPOSITE tool, WALLET LANE (the human owner\'s own send, requires wallet_login first): Send tokens from the OWNER\'S OWN account. Resolves which lane can actually sign THIS action (design spec \xA76): if this machine holds a paired agent identity with a live mandate that covers it, ON THE SAME ACCOUNT this wallet session is using, it signs locally with the agent\'s session key and relays - no browser, no human click. Otherwise it parks a typed intent (POST /sign-requests), opens your browser to approve and sign it there, and polls to a terminal result. The two credentials are INDEPENDENT and can point at different accounts - that divergence is a recorded incident, so a mandate on a DIFFERENT account is refused for the agent lane even though one exists, and the browser lane is used instead, with the result saying why. Every result names which lane it took (`lane: "agent" | "browser"`). A local balance/chain-tier check runs first as a courtesy to avoid wasting a browser trip on a doomed request - it is NEVER the authorization; the real check is the build the browser page does and, beneath that, on-chain enforcement. `gasMethod` applies to the BROWSER lane only - see its own description for why the agent lane always pays native.',inputSchema:{type:"object",properties:{recipient:{type:"string",description:"Recipient address (0x...)."},amount:{type:"number",description:"Amount in DISPLAY units (e.g. 12.5 for 12.5 USDC) - never wei, never a hex string."},token:{type:"string",description:'The token to send: its contract address (0x...) or its CAIP-19 asset ref from wallet_portfolio. NEVER a symbol - "USDC" is a label a contract picked for itself and two contracts on one chain can share it. Call resolve_token if you only have a symbol.'},chainId:{type:"number",description:"EVM chain id to send on - used to check whether a paired agent's mandate covers this chain."},chainKey:{type:"string",description:"The chain key/slug the backend expects for this chain (e.g. \"arbitrum-sepolia\") - see list_chains' or wallet_api_get's `GET /chains` response, field `key`, for the value matching chainId."},gasMethod:{type:"string",enum:["native","usdc","usdt"],description:"Optional. How to pay the network fee. Omit to use the chain default. Call GET /gas/methods via wallet_api_get to see which methods are actually available on this chain - only available ones are returned there. BROWSER LANE ONLY - a KNOWN LIMITATION, stated rather than faked: the agent lane builds through POST /delegations/{id}/actions, which has no gas-method field at all, and a Smart Sessions op is built with FIXED NATIVE GAS because that validator cannot gas-estimate a stub signature. If this call resolves to the agent lane the fee is paid in native no matter what is asked for here. Every result names `lane`; check it before reporting how the fee was paid."}},required:["recipient","amount","token","chainId","chainKey"]},run:async(a,o)=>{if(a.tokenSymbol!==void 0&&a.token===void 0)return m({error:"token_is_not_a_symbol",message:`This tool now takes a contract address or a CAIP-19 asset ref as \`token\`, not a symbol as \`tokenSymbol\`. A symbol is a label a contract picked for itself, so Botanary will not guess which "${String(a.tokenSymbol)}" you meant. Call resolve_token or list_tokens to get the address, then call this again with \`token\`.`});let i=await e.walletSession();if(!i)return m({lane:null,message:"Not logged in as the wallet owner - run wallet_login first, then try wallet_send again."});let c=Number(a.chainId),d=Number(a.amount),u=await q(e,c,String(a.token),i.sessionToken),h={recipient:String(a.recipient),amount:d,asset:u,amountRaw:ct(String(a.amount),u.decimals),chainId:c,chainKey:String(a.chainKey),gasMethod:a.gasMethod===void 0||a.gasMethod===null?void 0:String(a.gasMethod)},g=await at(e,h),f={mandateAccountId:g.accountId,mandateInBounds:g.inBounds,mandateBoundsReason:g.reason,walletAccountId:i.accountId??"",signUnderMandate:()=>ot(e,g.grant,h),createSignRequest:rt(e,i.sessionToken),getSignRequest:it(e,i.sessionToken),openBrowser:ee,now:()=>Date.now(),sleep:K=>new Promise(me=>setTimeout(me,K)),preflight:lt(e,i.sessionToken),streamSource:K=>R(`${e.apiBaseUrl}/v1/sign-requests/${K}/stream`,i.sessionToken,me=>me),ctx:o},p=await Tt(f,h),w=p.relay?.status,y=p.lane==="browser"&&p.status==="relayed"&&typeof p.opId=="string"?p.opId:null,S=y?await st(e,y,i.sessionToken):typeof w=="string"?w:null,B=null;if(S==="included")try{let K=await e.api.get(I("/v1/balance",i.accountId),i.sessionToken);B=vt(K,h.chainId,h.asset.symbol)}catch{B=null}return m({...p,settlementStatus:S,settledBalance:B,settlementConfirmed:B!==null,asset:{assetRef:h.asset.assetRef,symbol:h.asset.symbol,decimals:h.asset.decimals,source:h.asset.source}})}},{name:"resolve_token",docSummary:"Turn a token reference into its full identity - contract address, CAIP-19 asset ref, symbol, decimals, and which source vouches for it. Takes an address or an asset ref and refuses a bare symbol, because a symbol is a label a contract picks for itself and two contracts on one chain can share one.",lane:"wallet",description:'THIN tool (one GET, returned unmodified), WALLET LANE: Turn a token reference into its full identity - contract address, CAIP-19 asset ref, symbol, name, decimals, and which source vouches for it (GET /assets/resolve). Accepts a contract address or an asset ref, NEVER a symbol: a symbol is a label a contract picked for itself and two contracts on one chain can share it, so this refuses one rather than guessing. Call list_tokens when all you have is a symbol. `source: "chain"` means nothing but the contract itself vouches for the name - say so when you report it.',inputSchema:{type:"object",properties:{chainId:{type:"number",description:"EVM chain id the token lives on."},ref:{type:"string",description:"Contract address (0x...) or CAIP-19 asset ref."}},required:["chainId","ref"]},run:async a=>{let o=await e.walletSession();return m(o?await q(e,Number(a.chainId),String(a.ref),o.sessionToken):{message:"Not logged in - run wallet_login first."})}},{name:"list_tokens",docSummary:"Every token this account holds on a chain, with the contract address you need to spend it. This is the discovery step for wallet_send, which takes an address and refuses a symbol.",lane:"wallet",description:"COMPOSITE tool, WALLET LANE: Every token this account HOLDS on a chain, with the contract address and CAIP-19 asset ref you need to spend it (GET /balance, filtered). This is the discovery step for both wallet_send (the owner lane) and propose_payment/propose_swap (the agent lane) - all three take an address or asset ref and refuse a symbol. When two rows share a symbol, that is the ambiguity the address exists to settle - show the user both and let them choose; never pick one.",inputSchema:{type:"object",properties:{chainId:{type:"number",description:"EVM chain id to list holdings for."},query:{type:"string",description:"Optional case-insensitive filter on symbol or name."}},required:["chainId"]},run:async a=>{let o=await e.walletSession();if(!o)return m({message:"Not logged in - run wallet_login first."});let i=Number(a.chainId),c=typeof a.query=="string"?a.query.toLowerCase():null,d=await e.api.get(I("/v1/balance",o.accountId),o.sessionToken),u=(Array.isArray(d.tokens)?d.tokens:[]).filter(h=>h.chainId===i).filter(h=>!c||String(h.symbol??"").toLowerCase().includes(c)||String(h.name??"").toLowerCase().includes(c)).map(h=>({assetRef:h.assetRef??null,address:h.tokenAddress??null,symbol:h.symbol??null,name:h.name??null,decimals:h.decimals??null,amount:h.amount??null,spendable:h.spendable??null,source:h.source??null}));return m({chainId:i,tokens:u,note:u.length===0?"This account holds nothing on this chain.":void 0})}},{name:"wallet_portfolio",lane:"wallet",docSummary:"Balances across every chain, each with its tier. Raw data: it does not itself judge whether a send would succeed.",description:'COMPOSITE tool (two reads: /balance + /chains), WALLET LANE (requires wallet_login first): Read what the owner holds, including which chains are botanary-tier (full authority enforcement). Returns balances across all chains, chain info (names and tier levels - watch, basic, botanary), and flags any read that failed with the server\'s own message. Watch-tier chains are read-only. Basic-tier chains have a bundler but NO on-chain authority guard (authority actions decline). Botanary-tier chains carry full on-chain enforcement. This is raw balance and tier data only - it does not itself evaluate or predict whether any particular send would succeed; a caller can reason about that from the tier and balance returned (e.g. a watch-tier chain refuses every send regardless of balance), but that reasoning is the caller\'s, not a check this tool performs. The result opens with `freshness`: the backend\'s own `status` and `asOf`, plus a derived `state`, `stale` flag and `note`. `state: "fresh"` (status `ready`) means every chain synced and the numbers are current. `state: "last-known"` (status `degraded`) means at least one chain\'s sync is unhealthy and these are the last-known numbers, not current ones. `state: "unknown"` (status `building`) means the sweep has not reached this account yet - the numbers are UNKNOWN, not merely old, and a 0 there is NOT a confirmed zero balance. `state: "unreported"` means the response carried no status. `stale` is true for BOTH `last-known` and `unknown`: in either case do not report these as a settled position - read `state` to see which of the two it is.',inputSchema:b(),run:async()=>{let a=await e.walletSession();if(!a)return m({message:"Not logged in as the wallet owner - run wallet_login first, then try wallet_portfolio again."});let o=await $(e.api,a.sessionToken,[{key:"balance",path:I("/v1/balance",a.accountId)},{key:"chains",path:"/v1/chains"}]);return m({accountId:a.accountId,freshness:St(o.data.balance),...o})}},{name:"wallet_activity",lane:"wallet",docSummary:"The owner's recent sends, swaps and yield transactions, with timestamps, amounts and final status.",description:"COMPOSITE tool (one read: /history), WALLET LANE (requires wallet_login first): Read the owner's recent transaction history. Returns a chronological list of sends, swaps, and yield transactions with timestamps, amounts, and final status (included, pending, failed). Flags any read that failed with the server's own message.",inputSchema:b(),run:async()=>{let a=await e.walletSession();if(!a)return m({message:"Not logged in as the wallet owner - run wallet_login first, then try wallet_activity again."});let o=await $(e.api,a.sessionToken,[{key:"history",path:I("/v1/history",a.accountId)}]);return m({accountId:a.accountId,...o})}},{name:"wallet_markets",lane:"wallet",docSummary:"Public market data, prices and symbols, not scoped to any account.",description:"COMPOSITE tool (one read: /markets/tokens), WALLET LANE (requires wallet_login first): Read market data about tokens. Returns token information including prices, symbols, and market data. Flags any read that failed with the server's own message.",inputSchema:b(),run:async()=>{let a=await e.walletSession();if(!a)return m({message:"Not logged in as the wallet owner - run wallet_login first, then try wallet_markets again."});let o=await $(e.api,a.sessionToken,[{key:"tokens",path:"/v1/markets/tokens"}]);return m({accountId:a.accountId,...o})}},{name:"wallet_yield",lane:"wallet",docSummary:"Available pools, a ranked shortlist, and this account's farming positions. The shortlist is ranked server-side off the caller's own holdings and says so in its scopeCaveats field.",description:"COMPOSITE tool (three reads: /yield/pools, /yield/shortlist, /farm/positions), WALLET LANE (requires wallet_login first): Read available yield opportunities. Returns available pools, a recommended shortlist ranked off the caller's OWN holdings server-side - NOT scoped to whichever account this session is currently using, unlike `positions` below it; see this result's own `scopeCaveats` for why - and this account's current farming positions with balances and APY. Flags any read that failed with the server's own message.",inputSchema:b(),run:async()=>{let a=await e.walletSession();if(!a)return m({message:"Not logged in as the wallet owner - run wallet_login first, then try wallet_yield again."});let o=await $(e.api,a.sessionToken,[{key:"pools",path:"/v1/yield/pools"},{key:"shortlist",path:"/v1/yield/shortlist"},{key:"positions",path:I("/v1/farm/positions",a.accountId)}]);return m({accountId:a.accountId,...o,scopeCaveats:[{key:"shortlist",note:"Unlike `accountId` above and `data.positions`, `data.shortlist` is NOT scoped to this session's active account - the backend ranks it off the caller's own holdings using its own default account resolution, which may be a DIFFERENT account than `accountId` if wallet_use_account has switched this session. There is no way for this tool to name which account shortlist actually reflects."}]})}},{name:"wallet_mandates",lane:"wallet",docSummary:"What the agent lane may spend unattended: active delegations with their budget information, and any outstanding mandates.",description:"COMPOSITE tool (two reads: /delegations, /mandates), WALLET LANE (requires wallet_login first): Read what the agent lane may spend unattended. Returns active delegations with budget information (limit, spent, remaining) and any outstanding mandates, exactly as the backend reports them. Use this to understand what agents connected to this account are authorized to spend. Flags any read that failed with the server's own message.",inputSchema:b(),run:async()=>{let a=await e.walletSession();if(!a)return m({message:"Not logged in as the wallet owner - run wallet_login first, then try wallet_mandates again."});let o=await $(e.api,a.sessionToken,[{key:"delegations",path:I("/v1/delegations",a.accountId)},{key:"mandates",path:I("/v1/mandates",a.accountId)}]);return m({accountId:a.accountId,...o})}},{name:"wallet_agents",lane:"wallet",docSummary:"Connected agents, and any pending approval requests they have filed.",description:"COMPOSITE tool (two reads: /agents, /agents/requests), WALLET LANE (requires wallet_login first): Read connected agents and their requests. Returns the list of agents connected to this account, and any pending approval requests those agents have filed. Use this to understand who can spend and what they are asking for. Flags any read that failed with the server's own message.",inputSchema:b(),run:async()=>{let a=await e.walletSession();if(!a)return m({message:"Not logged in as the wallet owner - run wallet_login first, then try wallet_agents again."});let o=await $(e.api,a.sessionToken,[{key:"agents",path:I("/v1/agents",a.accountId)},{key:"requests",path:I("/v1/agents/requests",a.accountId)}]);return m({accountId:a.accountId,...o})}},{name:"wallet_suggest_mandate",lane:"wallet",docSummary:"Suggest a bounded mandate for each connected agent that has none. Proposes only; it cannot grant.",description:"COMPOSITE tool (two reads: /agents, /delegations), WALLET LANE (requires wallet_login first): Suggest bounded mandates for registered agents. This is a *suggestion the owner may decline* - it reads what the agent lane may spend and proposes reasonable starting mandates for agents that do not yet have grants. Each suggestion includes the agent, chain, and a Grant URL. It never suggests widening an existing grant. It is inert without a registered agent - when none exist, it explains how to pair instead of proposing a grant to nothing.",inputSchema:b(),run:async()=>{let a=await e.walletSession();if(!a)return m({message:"Not logged in as the wallet owner - run wallet_login first, then try wallet_suggest_mandate again."});let o=await $(e.api,a.sessionToken,[{key:"agents",path:I("/v1/agents",a.accountId)},{key:"delegations",path:I("/v1/delegations",a.accountId)}]),i=Array.isArray(o.data.agents)?o.data.agents:[],c=Array.isArray(o.data.delegations)?o.data.delegations:[];if(i.length===0){let g=await Ne(e),p=`${z(e.apiBaseUrl)}/agents?pair=${g.code}`;return m({message:"No agents are registered on this account yet. To register an agent, enter the pairing code in your browser, then this tool can suggest mandates for the agent.",pairingCode:{code:g.code,fingerprint:g.fingerprint,issuedAt:g.issuedAt,expiresAt:g.expiresAt,pairingUrl:p,registered:g.registered,instructions:`In your Botanary browser window, open Connected agents and enter this code, then give the agent a name - or open ${p} to go straight there with the code already filled in.`}})}let d={};for(let g of c){let f=g?.agentId;f&&(d[f]||(d[f]=[]),d[f].push(g))}let u=[],h=z(e.apiBaseUrl);for(let g of i){let f=g?.id,p=g?.name||"Unnamed agent",w=g?.address||"unknown",y=g?.boundChainId||g?.chainId;if(!f)continue;(d[f]||[]).length===0&&u.push({agentId:f,agentName:p,agentAddress:w,chainId:typeof y=="number"?y:null,rationale:`${p} is registered on your account but has no spending mandate yet. `+(typeof y=="number"?`A bounded mandate on chain ${y} would let it act within limits you set. `:"A bounded mandate would let it act within limits you set; you choose the chain in the wizard. ")+"You can decline - nothing here needs a mandate to work.",grantUrl:`${h}/grant?agentId=${encodeURIComponent(f)}`})}return m({accountId:a.accountId,suggestions:u.length>0?u:null,summary:u.length===0?"All registered agents already have mandates.":`Found ${u.length} agent(s) without mandates. Review the suggestions below.`,...o})}},{name:"wallet_api_get",lane:"wallet",docSummary:"Read any documented GET endpoint in the frozen OpenAPI contract as the owner. GET-only, deliberately: this specific tool has no write path - see wallet_api_write and wallet_sign_request for those.",description:"THIN tool, WALLET LANE, GET-ONLY DELIBERATELY (requires wallet_login first): Read any GET endpoint documented in Botanary's frozen OpenAPI contract, authenticated as the wallet owner. Paths are validated against a manifest generated from that contract (`pnpm generate:routes`) - an undocumented or non-GET path is refused before anything reaches the network. THIS tool is GET-only, deliberately, and always will be - a generic write tool would let a model reach any mutation with no typed intent, no review panel, and no lane arbitration. Every fund-moving or authority-granting write goes through wallet_send or wallet_sign_request (a typed intent the owner reviews and signs in their own browser); a small set of genuinely administrative writes (mark a notification read, edit a pay-sh allowlist, and similar) goes through wallet_api_write, never through this one. A small set of documented GETs whose response body carries a live credential (the session route and the CLI login poll route) is deliberately excluded from the manifest and refused here - this tool never hands back the owner's session token.",inputSchema:{type:"object",properties:{path:{type:"string",description:'A GET path from the OpenAPI contract, e.g. "/balance" or "/accounts/acc_1". May include a query string.'},method:{type:"string",description:'Must be "GET" if given at all - anything else is refused. There is no way to perform a write through this tool.'}},required:["path"]},run:async a=>{let o=await e.walletSession();if(!o)return m({message:"Not logged in as the wallet owner - run wallet_login first, then try again."});let i=String(a.path??""),c=typeof a.method=="string"?a.method:"GET",d=await ft({api:e.api,token:o.sessionToken},i,c);return m(k(JSON.stringify(d,null,2),o.sessionToken))}},{name:"wallet_api_write",lane:"wallet",docSummary:"Call a genuinely administrative write endpoint (documented in the frozen OpenAPI contract) as the owner - never a fund-moving or authority-granting one. Every route that returns a build for the owner to sign is excluded by construction.",description:"THIN tool, WALLET LANE (requires wallet_login first): Call a documented, NON-authority write endpoint in Botanary's frozen OpenAPI contract, authenticated as the wallet owner - a PLAIN SESSION WRITE THAT NEEDS NO SIGNATURE, e.g. claim an agent, mark a notification read, rename an account, edit a pay-sh allowlist, manage conversations. Path + method are validated against a manifest generated from that contract (`pnpm generate:write-routes`) BEFORE anything reaches the network. THIS IS NOT A GENERIC api_post. Every route whose OpenAPI response is an unsigned build (UserOpBuild, DelegationBuild, GrantBuild, and every other `*Build`-shaped response, plus anything the contract marks `x-client-signed: true`) is excluded from the manifest by construction, because every fund-moving or authority-granting action in this backend returns exactly one of those for the owner to sign - freeze, signer changes, guardian installs, grant creation, and anything moving funds are ALL unreachable through this tool. An explicit denylist additionally blocks the relay boundary (`/userops` and its chain-specific equivalents), routes that mint or leak session credentials, and routes that duplicate wallet_sign_request's own typed-intent lane. If a route is not in the manifest, it is refused before the network call, never silently attempted. GET is refused here too - use wallet_api_get for reads.",inputSchema:{type:"object",properties:{path:{type:"string",description:'A write path from the OpenAPI contract, e.g. "/notifications/read-all" or "/accounts/acc_1".'},method:{type:"string",enum:["POST","PUT","PATCH","DELETE"],description:"Required. One of POST/PUT/PATCH/DELETE - GET is always refused through this tool."},body:{type:"object",description:"The JSON request body, when the endpoint takes one. Omit for a bodyless DELETE."}},required:["path","method"]},run:async a=>{let o=await e.walletSession();if(!o)return m({message:"Not logged in as the wallet owner - run wallet_login first, then try again."});let i=String(a.path??""),c=String(a.method??""),d=a.body??{},u;try{u=await bt({api:e.api,token:o.sessionToken},i,c,d)}catch(h){return m({message:h instanceof Error?h.message:String(h)})}return m(k(JSON.stringify(u,null,2),o.sessionToken))}},{name:"list_sign_kinds",lane:"wallet",docSummary:"Every sign-request kind this backend currently registers, and whether each is available right now. Call this before wallet_sign_request to learn what a kind takes.",description:"THIN tool (one GET, returned unmodified), WALLET LANE (requires wallet_login first): the registry of every sign-request kind `wallet_sign_request` may park (GET /sign-kinds) - each with a one-line summary, the backend routes it builds and relays through, and whether it is currently `available` (a registered kind with no browser panel behind it yet reports `available: false` with `unavailableReason`, and wallet_sign_request refuses it at park time rather than handing the owner a link to a blank page). Call this FIRST, before wallet_sign_request, to learn which kinds exist and what each one takes.",inputSchema:b(),run:async()=>{let a=await e.walletSession();if(!a)return m({message:"Not logged in as the wallet owner - run wallet_login first, then try list_sign_kinds again."});let o=await e.api.get("/v1/sign-kinds",a.sessionToken);return m(k(JSON.stringify(o,null,2),a.sessionToken))}},{name:"wallet_sign_request",lane:"wallet",docSummary:"Park a typed intent for the owner to review and sign in their own browser - the one write primitive covering every owner-authorized action. Call list_sign_kinds first to learn what a kind takes.",description:"COMPOSITE tool, WALLET LANE (requires wallet_login first): Park a typed, kind-discriminated intent (POST /sign-requests) and hand it to the OWNER to review and sign in their OWN browser. THIS TOOL CANNOT SIGN AND CANNOT RELAY - it only asks. The body is validated server-side against that kind's own DTO before anything is stored, so an unregistered kind or a malformed body is refused before the owner ever sees a link. Call list_sign_kinds FIRST to learn every registered kind and exactly what fields it takes - guessing a shape wastes a round trip this tool refuses before parking. Opens the browser to the returned URL and waits for a terminal result (signed and relayed, rejected, expired, or declined on-chain); if the call drops before that, botanary_wait rejoins the SAME handle. This is NOT wallet_send: a send keeps its own lane arbitration (it may sign unattended under a paired agent mandate) because routing a send between the agent and the owner is load-bearing - this tool has no such lane to arbitrate, it is the browser handoff, always, for every OTHER owner-authorized action.",inputSchema:{type:"object",properties:{kind:{type:"string",description:'A registered sign-request kind, e.g. "swap" or "account.freeze" - see list_sign_kinds for the full, live set. An unregistered kind is refused server-side before anything is stored.'},params:{type:"object",description:"The kind-specific fields, exactly as that kind documents - never a build route, never calldata, never a signature. Validated server-side against the kind's own DTO."}},required:["kind","params"]},run:async(a,o)=>{let i=await e.walletSession();if(!i)return m({message:"Not logged in as the wallet owner - run wallet_login first, then try wallet_sign_request again."});let c=String(a.kind??""),d=a.params&&typeof a.params=="object"?a.params:{},u=await kt({api:e.api,token:i.sessionToken},c,d),h=await ee(u.url),g=await e.handles.open({kind:"send",label:`sign request: ${c}`,ref:{signRequestId:u.id},url:u.url,expiresAt:u.expiresAt}),f=await ke(e,g,o??{signal:new AbortController().signal,progress:()=>{}});return m(k(JSON.stringify({...f,browserOpened:h},null,2),i.sessionToken))}}]}var ta=`botanary-mcp - Botanary's agent connector (local MCP server)
12
-
13
- Usage:
14
- botanary-mcp Start the MCP server (stdio transport). This is what an MCP client
15
- (Claude Code, Codex, Cursor, ...) runs - see the README for the exact
16
- one-line command per client.
17
- botanary-mcp whoami Print this agent's identity (address, public key, fingerprint) without
18
- starting a server. Never prints the private key.
19
- botanary-mcp forget Delete the agent's private key from this machine (OS keychain or file
20
- fallback). Any grant a Botanary account still has on file for this
21
- agent's address is UNCHANGED - revoke that separately, in Botanary. See
22
- the README ("what deleting the key does and doesn't do").
23
- botanary-mcp tools List every tool this server can expose, with its lane. Add --json for
24
- the machine-readable form (this is what generates the tool reference on
25
- docs.botanary.xyz). Reads metadata only: creates no key, contacts
26
- nothing.
27
- botanary-mcp --help Show this message.
28
- `;async function It(e,t){let n=t.stdout??(l=>process.stdout.write(`${l}
29
- `)),s=t.stderr??(l=>process.stderr.write(`${l}
30
- `)),[r]=e;try{switch(r){case void 0:return await na(t,s);case"whoami":return await aa(t,n);case"forget":return await sa(t,n);case"tools":return await oa(t,e.slice(1),n);case"--help":case"-h":case"help":return n(ta),0;default:return s(`Unknown command "${r}". Run "botanary-mcp --help" for usage.`),1}}catch(l){return s(l instanceof Error?l.message:String(l)),1}}async function na(e,t){return process.on("unhandledRejection",s=>t(`unhandledRejection: ${s instanceof Error?s.message:String(s)}`)),process.on("uncaughtException",s=>t(`uncaughtException: ${s.message}`)),await e.createServer(e.runtime).connect(e.createTransport()),0}async function aa(e,t){let n=await e.runtime.identity();return t(JSON.stringify({address:n.address,publicKey:n.publicKey,fingerprint:n.fingerprint,createdAt:n.createdAt,keyStorage:n.backend},null,2)),0}async function sa(e,t){let n=await e.runtime.store.hasIdentity();return await e.runtime.store.forget(),e.runtime.reset(),t(n?"Deleted the agent key from this machine. It can no longer sign anything - including for any grant a Botanary account still has on file for its old address. That grant itself still exists until its owner revokes it in Botanary; this command only removes the key, which is the only thing this machine ever held.":"No agent identity was stored on this machine - nothing to delete."),0}async function oa(e,t,n){let s=ge(e.runtime).map(l=>({name:l.name,lane:l.lane,docSummary:l.docSummary,description:l.description,inputSchema:l.inputSchema}));if(t.includes("--json"))return n(JSON.stringify({version:j,tools:s})),0;let r=Math.max(...s.map(l=>l.name.length));for(let l of s)n(`${l.name.padEnd(r)} ${l.lane.padEnd(7)} ${l.docSummary}`);return 0}import{Server as ra}from"@modelcontextprotocol/sdk/server/index.js";import{CallToolRequestSchema as ia,ListToolsRequestSchema as la,ElicitResultSchema as ca}from"@modelcontextprotocol/sdk/types.js";function Et(e){let t={signal:e.signal,progress:n=>{e.progressToken!==void 0&&e.sendNotification({method:"notifications/progress",params:{progressToken:e.progressToken,message:n.message,...n.progress===void 0?{}:{progress:n.progress},...n.total===void 0?{}:{total:n.total}}}).catch(()=>{})}};return e.elicitationSupported&&(t.elicit=async n=>{try{return await e.sendRequest({method:"elicitation/create",params:{message:n.message,...n.requestedSchema?{requestedSchema:n.requestedSchema}:{}}})??null}catch{return null}}),t}import{existsSync as da}from"node:fs";function Rt(e){return{content:[{type:"text",text:`ERROR: ${e}`}],isError:!0}}async function ua(e){let[t,n]=await Promise.all([e.walletSession(),e.store.hasIdentity()]);return{hasWalletSession:t!==null,hasAgentIdentity:n}}function ha(e,t){switch(e){case"starter":return!0;case"wallet":return t.hasWalletSession;case"agent":return t.hasAgentIdentity}}function _t(e){let t=new ra({name:"botanary-mcp",version:j},{capabilities:{tools:{listChanged:!0}}});t.oninitialized=()=>{let s=t.getClientVersion()?.name;e.adoptProfile(Le({explicit:process.env.BOTANARY_AGENT_PROFILE,...s!==void 0?{clientName:s}:{},hasLegacyIdentity:da(Ge())}))};let n=ge(e,()=>{t.sendToolListChanged().catch(()=>{})});return t.setRequestHandler(la,async()=>{let s=await ua(e);return{tools:n.filter(r=>ha(r.lane,s)).map(r=>({name:r.name,description:r.description,inputSchema:r.inputSchema}))}}),t.setRequestHandler(ia,async(s,r)=>{let l=n.find(o=>o.name===s.params.name);if(!l)return Rt(`unknown tool "${s.params.name}"`);let a=Et({signal:r.signal,progressToken:s.params._meta?.progressToken,sendNotification:o=>r.sendNotification(o),elicitationSupported:!!t.getClientCapabilities()?.elicitation,sendRequest:o=>r.sendRequest(o,ca)});try{return await l.run(s.params.arguments??{},a)}catch(o){return Rt(o instanceof Error?o.message:String(o))}}),t}var ga=await It(process.argv.slice(2),{runtime:Qe(),createServer:_t,createTransport:()=>new pa});process.argv.slice(2).length>0&&process.exit(ga);
2
+ const _0x1fb185=_0x2420;function _0x2420(_0x2986b7,_0x5a530f){const _0x352e61=_0x4e2b();return _0x2420=function(_0x2dd4f7,_0xe50f8d){_0x2dd4f7=_0x2dd4f7-0x17b;let _0x4e2bfb=_0x352e61[_0x2dd4f7];if(_0x2420['slGwKZ']===undefined){var _0x242043=function(_0xf30b54){const _0x2fb34d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x17c5d8='',_0x5b7466='',_0x38c453=_0x17c5d8+_0x242043;for(let _0x317105=0x0,_0x559262,_0xb6d7c6,_0x45e27a=0x0;_0xb6d7c6=_0xf30b54['charAt'](_0x45e27a++);~_0xb6d7c6&&(_0x559262=_0x317105%0x4?_0x559262*0x40+_0xb6d7c6:_0xb6d7c6,_0x317105++%0x4)?_0x17c5d8+=_0x38c453['charCodeAt'](_0x45e27a+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x559262>>(-0x2*_0x317105&0x6)):_0x317105:0x0){_0xb6d7c6=_0x2fb34d['indexOf'](_0xb6d7c6);}for(let _0x25057d=0x0,_0x357656=_0x17c5d8['length'];_0x25057d<_0x357656;_0x25057d++){_0x5b7466+='%'+('00'+_0x17c5d8['charCodeAt'](_0x25057d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5b7466);};_0x2420['BPLvrj']=_0x242043,_0x2986b7=arguments,_0x2420['slGwKZ']=!![];}const _0x4224b3=_0x352e61[0x0],_0x44d713=_0x2dd4f7+_0x4224b3,_0x2764dd=_0x2986b7[_0x44d713];if(!_0x2764dd){const _0x36715f=function(_0xf873e){this['QfbFbd']=_0xf873e,this['HPUGEH']=[0x1,0x0,0x0],this['cJnrdo']=function(){return'newState';},this['uSAgGZ']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['QvfkDe']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x36715f['prototype']['NlOAlO']=function(){const _0x6ce9a3=new RegExp(this['uSAgGZ']+this['QvfkDe']),_0x25f4f6=_0x6ce9a3['test'](this['cJnrdo']['toString']())?--this['HPUGEH'][0x1]:--this['HPUGEH'][0x0];return this['ecfnsF'](_0x25f4f6);},_0x36715f['prototype']['ecfnsF']=function(_0xb2893c){if(!Boolean(~_0xb2893c))return _0xb2893c;return this['SXFwQA'](this['QfbFbd']);},_0x36715f['prototype']['SXFwQA']=function(_0x202500){for(let _0x23df58=0x0,_0x5c425d=this['HPUGEH']['length'];_0x23df58<_0x5c425d;_0x23df58++){this['HPUGEH']['push'](Math['round'](Math['random']())),_0x5c425d=this['HPUGEH']['length'];}return _0x202500(this['HPUGEH'][0x0]);},new _0x36715f(_0x2420)['NlOAlO'](),_0x4e2bfb=_0x2420['BPLvrj'](_0x4e2bfb),_0x2986b7[_0x44d713]=_0x4e2bfb;}else _0x4e2bfb=_0x2764dd;return _0x4e2bfb;},_0x2420(_0x2986b7,_0x5a530f);}(function(_0x49ca5a,_0x113e21){const _0xc29187=_0x2420,_0x46a34=_0x49ca5a();while(!![]){try{const _0x3cd811=-parseInt(_0xc29187(0x192))/0x1*(parseInt(_0xc29187(0x4d6))/0x2)+parseInt(_0xc29187(0x20f))/0x3*(parseInt(_0xc29187(0x41f))/0x4)+parseInt(_0xc29187(0x52e))/0x5+-parseInt(_0xc29187(0x2f0))/0x6*(parseInt(_0xc29187(0x510))/0x7)+parseInt(_0xc29187(0x302))/0x8+parseInt(_0xc29187(0x537))/0x9*(parseInt(_0xc29187(0x40f))/0xa)+-parseInt(_0xc29187(0x27e))/0xb;if(_0x3cd811===_0x113e21)break;else _0x46a34['push'](_0x46a34['shift']());}catch(_0x3804c0){_0x46a34['push'](_0x46a34['shift']());}}}(_0x4e2b,0xb7224));const _0xe50f8d=(function(){let _0x2b7de5=!![];return function(_0x23f84d,_0x1b188d){const _0x4215f1=_0x2b7de5?function(){const _0x30878d=_0x2420;if(_0x1b188d){const _0x1f1f8a=_0x1b188d[_0x30878d(0x328)](_0x23f84d,arguments);return _0x1b188d=null,_0x1f1f8a;}}:function(){};return _0x2b7de5=![],_0x4215f1;};}()),_0x2dd4f7=_0xe50f8d(this,function(){const _0x45b017=_0x2420;return _0x2dd4f7[_0x45b017(0x1cb)]()['search'](_0x45b017(0x546))[_0x45b017(0x1cb)]()['constructor'](_0x2dd4f7)['search'](_0x45b017(0x546));});_0x2dd4f7();var xt=Object[_0x1fb185(0x190)],Pt=(_0x1e6688,_0x14602f)=>()=>(_0x1e6688&&(_0x14602f=_0x1e6688(_0x1e6688=0x0)),_0x14602f),Ot=(_0x55e372,_0x38e2cf)=>{for(var _0xbbdb1b in _0x38e2cf)xt(_0x55e372,_0xbbdb1b,{'get':_0x38e2cf[_0xbbdb1b],'enumerable':!0x0});},we={};Ot(we,{'getFallbackCount':()=>ye,'pollSource':()=>E,'resetFallbackCount':()=>Gt,'sseSource':()=>R,'waitFor':()=>_,'withFallback':()=>C});function ye(){return oe;}function Gt(){oe=0x0;}function E(_0x45494a,_0x365c93,_0x174791=_0x59a9a7=>new Promise(_0x62fa7a=>setTimeout(_0x62fa7a,_0x59a9a7))){return{async *'watch'(_0x1fa7ac){const _0x33204e=_0x2420;for(;!_0x1fa7ac['aborted'];){if(yield await _0x45494a(),_0x1fa7ac[_0x33204e(0x207)])return;await _0x174791(_0x365c93);}}};}function R(_0x31ff40,_0xf037e0,_0x225eea){return{async *'watch'(_0x9e86c4){const _0x39783f=_0x2420;let _0x7758a3=new AbortController(),_0x37b624=()=>_0x7758a3['abort']();_0x9e86c4[_0x39783f(0x1db)](_0x39783f(0x2b7),_0x37b624,{'once':!0x0});let _0x4c0e62=setTimeout(()=>_0x7758a3[_0x39783f(0x2b7)](),jt),_0x14c62d;try{_0x14c62d=await fetch(_0x31ff40,{'headers':{'Authorization':'Bearer\x20'+_0xf037e0,'Accept':_0x39783f(0x3d5)},'signal':_0x7758a3[_0x39783f(0x362)]});}finally{clearTimeout(_0x4c0e62);}if(!_0x14c62d['ok']||!_0x14c62d['body'])throw new Error('stream\x20'+_0x14c62d[_0x39783f(0x1a1)]);let _0x4156cb=_0x14c62d[_0x39783f(0x3df)]['getReader'](),_0x15ef51=new TextDecoder(),_0x295866='';for(;!_0x9e86c4[_0x39783f(0x207)];){let {done:_0x34ecde,value:_0xd6a020}=await _0x4156cb[_0x39783f(0x347)]();if(_0x34ecde)return;_0x295866+=_0x15ef51['decode'](_0xd6a020,{'stream':!0x0});let _0x511dee=_0x295866[_0x39783f(0x3e2)]('\x0a\x0a');for(;_0x511dee!==-0x1;){let _0x38dc3b=_0x295866['slice'](0x0,_0x511dee);_0x295866=_0x295866['slice'](_0x511dee+0x2);let _0x1b3697=_0x38dc3b['split']('\x0a')[_0x39783f(0x3a5)](_0x1f6e7d=>_0x1f6e7d['startsWith']('data:'));if(_0x1b3697)try{yield _0x225eea(JSON[_0x39783f(0x2c4)](_0x1b3697[_0x39783f(0x333)](0x5)[_0x39783f(0x2b2)]()));}catch{}_0x511dee=_0x295866[_0x39783f(0x3e2)]('\x0a\x0a');}}_0x9e86c4[_0x39783f(0x4c8)]('abort',_0x37b624);}};}function C(_0x1cc18f,_0x471422){return{async *'watch'(_0x1543c2){const _0x2e3434=_0x2420;try{let _0xc6ee6a=!0x1;for await(let _0x1344d6 of _0x1cc18f[_0x2e3434(0x22d)](_0x1543c2))_0xc6ee6a=!0x0,yield _0x1344d6;if(_0x1543c2[_0x2e3434(0x207)])return;_0xc6ee6a||(oe++,yield*_0x471422[_0x2e3434(0x22d)](_0x1543c2));}catch{_0x1543c2[_0x2e3434(0x207)]||(oe++,yield*_0x471422['watch'](_0x1543c2));}}};}async function _(_0x19bb1f,_0x423641){const _0x57348b=_0x1fb185;let _0x5bacfd=_0x423641[_0x57348b(0x3d7)]??(()=>Date[_0x57348b(0x3d7)]()),_0x42652a=_0x423641[_0x57348b(0x2bb)]??Wt,_0x2b4999,_0x4fefa0=null,_0x30696a=_0x5bacfd();if(_0x30696a>=_0x423641[_0x57348b(0x4b3)])return{'state':_0x2b4999??{},'terminal':!0x1};for await(let _0x17c9ae of _0x19bb1f[_0x57348b(0x22d)](_0x423641[_0x57348b(0x496)][_0x57348b(0x362)])){_0x2b4999=_0x17c9ae;let _0x27a5ad=_0x423641[_0x57348b(0x492)](_0x17c9ae),_0x95f777=_0x5bacfd();if((_0x27a5ad!==_0x4fefa0||_0x95f777-_0x30696a>=_0x42652a)&&(_0x423641[_0x57348b(0x496)][_0x57348b(0x1bc)]({'message':_0x27a5ad}),_0x4fefa0=_0x27a5ad,_0x30696a=_0x95f777),_0x423641['isTerminal'](_0x17c9ae))return{'state':_0x17c9ae,'terminal':!0x0};if(_0x423641[_0x57348b(0x496)][_0x57348b(0x362)][_0x57348b(0x207)]||_0x95f777>=_0x423641[_0x57348b(0x4b3)])break;}return{'state':_0x2b4999??{},'terminal':!0x1};}var oe,Wt,jt,L=Pt(()=>{'use strict';oe=0x0,Wt=0x1388,jt=0xbb8;});import{StdioServerTransport as _0x5b7466}from'@modelcontextprotocol/sdk/server/stdio.js';import{randomBytes as _0x38c453}from'node:crypto';var T=_0x1fb185(0x2b4),Nt=/[.:/\\]/,U=class extends Error{constructor(_0x554e36){const _0x597410=_0x1fb185;super(_0x554e36),this[_0x597410(0x2a6)]=_0x597410(0x527);}};function Ct(_0x33af23){const _0x5956ff=_0x1fb185;if(typeof _0x33af23!=_0x5956ff(0x424))return null;let _0x5b624c=_0x33af23[_0x5956ff(0x2b2)]()[_0x5956ff(0x233)]()['replace'](/[^a-z0-9]+/g,'-')[_0x5956ff(0x4cc)](/^-+|-+$/g,'');if(_0x5b624c[_0x5956ff(0x186)]===0x0)return null;let _0x5dedb8=_0x5b624c[_0x5956ff(0x333)](0x0,0x30)[_0x5956ff(0x4cc)](/-+$/g,'');return _0x5dedb8[_0x5956ff(0x186)]>0x0?_0x5dedb8:null;}function fe(_0x55877a){const _0x167343=_0x1fb185;let _0xf3c5ca=_0x55877a[_0x167343(0x2b2)]();if(_0xf3c5ca['length']===0x0)throw new U(_0x167343(0x4e4));if(Nt[_0x167343(0x474)](_0xf3c5ca))throw new U(_0x167343(0x420)+JSON['stringify'](_0x55877a)+_0x167343(0x518));if(!/^[a-z0-9][a-z0-9-]*$/[_0x167343(0x474)](_0xf3c5ca))throw new U(_0x167343(0x420)+JSON['stringify'](_0x55877a)+'\x20must\x20be\x20a\x20lowercase\x20slug:\x20a-z,\x200-9\x20and\x20hyphens,\x20starting\x20with\x20a\x20letter\x20or\x20digit.');if(_0xf3c5ca[_0x167343(0x186)]>0x30)throw new U(_0x167343(0x420)+JSON[_0x167343(0x1e7)](_0x55877a)+_0x167343(0x34e));return _0xf3c5ca;}function Le(_0x40a783){const _0x22bc2d=_0x1fb185;let _0x40b13d=Ct(_0x40a783['clientName']);if(_0x40a783[_0x22bc2d(0x30f)]!==void 0x0&&_0x40a783[_0x22bc2d(0x30f)]['trim']()[_0x22bc2d(0x186)]>0x0){let _0x3ebd26=fe(_0x40a783['explicit']);return _0x40b13d===null?{'key':_0x3ebd26,'tool':null,'agent':_0x3ebd26,'source':_0x22bc2d(0x30f)}:{'key':_0x3ebd26===_0x40b13d?_0x40b13d:_0x40b13d+'.'+_0x3ebd26,'tool':_0x40b13d,'agent':_0x3ebd26,'source':_0x22bc2d(0x30f)};}return _0x40a783[_0x22bc2d(0x279)]?{'key':T,'tool':null,'agent':null,'source':_0x22bc2d(0x1bb)}:_0x40b13d!==null?{'key':_0x40b13d,'tool':_0x40b13d,'agent':_0x40b13d,'source':'client-info'}:{'key':T,'tool':null,'agent':null,'source':_0x22bc2d(0x4b6)};}function te(_0xdb2e33){return _0xdb2e33===T;}function ne(_0x3cb976){const _0x41b6b7=_0x1fb185;switch(_0x3cb976[_0x41b6b7(0x447)]){case'explicit':return _0x41b6b7(0x524)+_0x3cb976['agent'];case _0x41b6b7(0x1bb):return _0x41b6b7(0x3c2);case'client-info':return _0x41b6b7(0x24f)+_0x3cb976['tool']+')';case _0x41b6b7(0x4b6):return _0x41b6b7(0x4ce);}}function k(_0x22b124,_0x1d3f6a){const _0x304467=_0x1fb185;return _0x1d3f6a?_0x22b124[_0x304467(0x1aa)](_0x1d3f6a)['join']('«redacted»'):_0x22b124;}var qe=_0x1fb185(0x506),Be='(?:[A-Za-z0-9\x5c-._~!$&\x27()*+,;=:@]|%[0-9A-Fa-f]{2})',$t=Be+'+',Lt=new RegExp('^'+Be+'+$'),qt=new RegExp('^(?:[A-Za-z0-9\x5c-._~!$&\x27()*+,;=:@/?]|%[0-9A-Fa-f]{2})*$'),Bt=/^\.{1,2}$/,Ut=/[/\\#?]/,Dt=/[\u0000-\u001f\u007f]/,Ht=0x6;function Mt(_0x1aee3b){const _0x4c4cf6=_0x1fb185;let _0x2c27bb=_0x1aee3b;for(let _0x306c42=0x0;_0x306c42<Ht;_0x306c42+=0x1){if(Bt[_0x4c4cf6(0x474)](_0x2c27bb)||Ut[_0x4c4cf6(0x474)](_0x2c27bb)||Dt[_0x4c4cf6(0x474)](_0x2c27bb))return!0x0;if(!_0x2c27bb['includes']('%'))return!0x1;let _0x336ba4;try{_0x336ba4=decodeURIComponent(_0x2c27bb);}catch{return!0x0;}if(_0x336ba4===_0x2c27bb)return!0x1;_0x2c27bb=_0x336ba4;}return!0x0;}function D(_0x1d3fb2){const _0x30f6cb=_0x1fb185;if(typeof _0x1d3fb2!=_0x30f6cb(0x424)||_0x1d3fb2[_0x30f6cb(0x186)]===0x0||!_0x1d3fb2['startsWith']('/')||_0x1d3fb2[_0x30f6cb(0x1b9)]('//'))return null;let _0xa31f3a=_0x1d3fb2[_0x30f6cb(0x3e2)]('?'),_0x3bd3e7=_0xa31f3a===-0x1?_0x1d3fb2:_0x1d3fb2['slice'](0x0,_0xa31f3a),_0x277823=_0xa31f3a===-0x1?'':_0x1d3fb2[_0x30f6cb(0x333)](_0xa31f3a),_0x39a773=_0x3bd3e7[_0x30f6cb(0x1aa)]('/');for(let _0x1b26f6=0x1;_0x1b26f6<_0x39a773[_0x30f6cb(0x186)];_0x1b26f6+=0x1){let _0x41fc25=_0x39a773[_0x1b26f6];if(!Lt[_0x30f6cb(0x474)](_0x41fc25)||Mt(_0x41fc25))return null;}if(_0x277823!==''&&!qt[_0x30f6cb(0x474)](_0x277823[_0x30f6cb(0x333)](0x1)))return null;let _0x3b5069;try{_0x3b5069=new URL(_0x3bd3e7+_0x277823,qe);}catch{return null;}return _0x3b5069[_0x30f6cb(0x1f3)]!==qe||_0x3b5069[_0x30f6cb(0x32b)]!==''||_0x3b5069[_0x30f6cb(0x44a)]!==_0x3bd3e7||_0x3b5069[_0x30f6cb(0x440)]!==_0x277823?null:{'path':_0x3bd3e7,'query':_0x277823,'full':_0x3bd3e7+_0x277823};}function ae(_0x3cef50){const _0x37b8f4=_0x1fb185;return _0x3cef50==='/v1'?'':_0x3cef50[_0x37b8f4(0x1b9)](_0x37b8f4(0x21c))?_0x3cef50[_0x37b8f4(0x333)](0x3):_0x3cef50;}function H(_0x5709b2){const _0x134ee3=_0x1fb185;let _0x207639=_0x5709b2['split']('/')['map'](_0x3f3ba8=>_0x3f3ba8['startsWith']('{')&&_0x3f3ba8['endsWith']('}')?$t:_0x3f3ba8[_0x134ee3(0x4cc)](/[.*+?^${}()|[\]\\]/g,_0x134ee3(0x46d)))[_0x134ee3(0x481)]('/');return new RegExp('^'+_0x207639+'$');}function V(_0x4593ba){const _0x3e0be8=_0x1fb185;let _0x52dba0=typeof _0x4593ba=='string'?_0x4593ba:String(_0x4593ba);return _0x52dba0[_0x3e0be8(0x186)]>0xc8?_0x52dba0['slice'](0x0,0xc8)+_0x3e0be8(0x413):_0x52dba0;}function M(_0x329519,_0x15a071){const _0x31b80e=_0x1fb185;return'\x22'+V(_0x329519)+_0x31b80e(0x493)+_0x15a071+_0x31b80e(0x220);}import{BotanaryApiError as _0x317105}from'@botanary/agent';import{BotanaryApiError as _0x559262}from'@botanary/agent';var se=class{constructor(_0x16e432,_0x4f3526=fetch){const _0x53f590=_0x1fb185;this[_0x53f590(0x49e)]=_0x16e432,this['fetchImpl']=_0x4f3526;}async[_0x1fb185(0x3b6)](_0x241361,_0x5d4be6,_0x78440f){return this.#e('POST',_0x241361,_0x5d4be6,_0x78440f);}async[_0x1fb185(0x4d0)](_0x5efe95,_0x410bf9,_0x6e41ff){return this.#e('PUT',_0x5efe95,_0x410bf9,_0x6e41ff);}async['patch'](_0x5de3ce,_0x3b6804,_0x2f603d){return this.#e('PATCH',_0x5de3ce,_0x3b6804,_0x2f603d);}async['get'](_0x6f526c,_0xccf06f){const _0x3118f4=_0x1fb185;return this.#e(_0x3118f4(0x386),_0x6f526c,void 0x0,_0xccf06f);}async[_0x1fb185(0x21e)](_0xf34b39,_0x1b2f65){const _0x4641d2=_0x1fb185;return this.#e(_0x4641d2(0x2e6),_0xf34b39,void 0x0,_0x1b2f65);}async #e(_0x445fe5,_0x364d79,_0x554d38,_0x55968d){const _0x47869d=_0x1fb185;let _0x391e2b=D(_0x364d79);if(!_0x391e2b)throw new Error(M(_0x364d79,_0x47869d(0x339)));let _0x55aab4=await this['fetchImpl'](''+this[_0x47869d(0x49e)]+_0x391e2b[_0x47869d(0x1af)],{'method':_0x445fe5,'headers':{'content-type':_0x47869d(0x419),..._0x55968d?{'authorization':_0x47869d(0x26d)+_0x55968d}:{},..._0x391e2b[_0x47869d(0x3ee)][_0x47869d(0x1b9)](_0x47869d(0x227))?{'x-spore-protocol':'1'}:{}},..._0x554d38!==void 0x0?{'body':JSON[_0x47869d(0x1e7)](_0x554d38)}:{}}),_0x4e3cda;if(_0x55aab4[_0x47869d(0x1a1)]!==0xcc&&_0x55aab4[_0x47869d(0x310)][_0x47869d(0x4f2)](_0x47869d(0x1df))!=='0')try{_0x4e3cda=await _0x55aab4[_0x47869d(0x421)]();}catch{_0x4e3cda=void 0x0;}if(!_0x55aab4['ok']){let _0x328921=_0x55aab4['headers'][_0x47869d(0x4f2)](_0x47869d(0x36d)),_0x4f716a=_0x328921!=null?Number[_0x47869d(0x271)](_0x328921,0xa):Number[_0x47869d(0x512)];throw new _0x317105(_0x4e3cda?.[_0x47869d(0x379)]?.['message']??_0x364d79+_0x47869d(0x3c4)+_0x55aab4[_0x47869d(0x1a1)],_0x55aab4[_0x47869d(0x1a1)],_0x4e3cda?.[_0x47869d(0x379)]?.[_0x47869d(0x375)]??null,Number[_0x47869d(0x180)](_0x4f716a)&&_0x4f716a>=0x0?_0x4f716a:null);}return _0x4e3cda??{};}},Ue=_0x1fb185(0x4bb);function z(_0x392ed2){const _0x4222e1=_0x1fb185;let _0x534158;try{_0x534158=new URL(_0x392ed2);}catch{return Ue;}return _0x534158['hostname']['startsWith']('api.')?_0x534158['protocol']+'//'+_0x534158['hostname'][_0x4222e1(0x333)](0x4):(_0x534158[_0x4222e1(0x239)]===_0x4222e1(0x1e9)||_0x534158['hostname']===_0x4222e1(0x1c7))&&_0x534158['port']==='3000'?_0x534158[_0x4222e1(0x1c2)]+'//'+_0x534158[_0x4222e1(0x239)]+_0x4222e1(0x2c9):Ue;}function O(_0x177f9e,_0x3d9eb5){const _0x115b74=_0x1fb185;let _0x499559=z(_0x177f9e)+_0x115b74(0x438);return Number[_0x115b74(0x180)](_0x3d9eb5)?_0x499559+_0x115b74(0x24d)+Number(_0x3d9eb5):_0x499559;}L();var Kt=_0x1fb185(0x2d4);function A(_0x33c053,_0x6c4845,_0x18d8c7,_0x470b87={},_0x29f81f={}){return{'state':_0x33c053,'summary':_0x6c4845,'blockers':_0x18d8c7,'facts':_0x470b87,'freshness':_0x29f81f};}async function De(_0x462759){const _0x14b631=_0x1fb185;let _0x34ca0b=(await _0x462759[_0x14b631(0x4d1)][_0x14b631(0x40a)]())['map'](_0x3ababf=>({'id':_0x3ababf['id'],'kind':_0x3ababf[_0x14b631(0x326)],'label':_0x3ababf[_0x14b631(0x41d)],'expiresAt':_0x3ababf['expiresAt']})),_0x429ae2=ye()>0x0?_0x14b631(0x381):_0x14b631(0x35a),_0x33562e={'profile':_0x462759[_0x14b631(0x2da)]['key'],'profileSource':ne(_0x462759[_0x14b631(0x2da)]),'reportedClient':_0x462759[_0x14b631(0x2da)][_0x14b631(0x46b)]};if(!await _0x462759['store'][_0x14b631(0x4ca)]())return A(_0x14b631(0x313),_0x14b631(0x4dd),[{'code':_0x14b631(0x313),'severity':_0x14b631(0x3ad),'detail':'Nothing\x20is\x20stored\x20at\x20this\x20machine\x27s\x20identity\x20path\x20for\x20profile\x20\x22'+_0x462759[_0x14b631(0x2da)][_0x14b631(0x268)]+'\x22.','nextAction':_0x14b631(0x469)}],{'pending':_0x34ca0b,'transport':_0x429ae2,..._0x33562e});let _0x299104;try{_0x299104=await _0x462759['me']();}catch(_0x318c7b){return _0x318c7b instanceof _0x559262&&(_0x318c7b[_0x14b631(0x1a1)]===0x191||_0x318c7b[_0x14b631(0x1a1)]===0x194)?A('key_unclaimed',_0x14b631(0x2b8),[{'code':'key_unclaimed','severity':'blocking','detail':_0x14b631(0x4fc)+_0x318c7b[_0x14b631(0x1a1)]+').','nextAction':'Call\x20get_pairing_code\x20and\x20give\x20the\x20code\x20to\x20the\x20owner\x20to\x20enter\x20in\x20Botanary.'}],{'pending':_0x34ca0b,'transport':_0x429ae2,..._0x33562e}):A(_0x14b631(0x2a3),_0x14b631(0x552),[{'code':'backend_unavailable','severity':_0x14b631(0x3ad),'detail':_0x318c7b instanceof Error?_0x318c7b['message']:String(_0x318c7b),'nextAction':_0x14b631(0x24e)}],{'pending':_0x34ca0b,'transport':_0x429ae2,..._0x33562e});}let _0x503962={'agent':{'id':_0x299104['id'],'name':_0x299104[_0x14b631(0x2a6)],'address':_0x299104[_0x14b631(0x4fe)],'fingerprint':_0x299104[_0x14b631(0x48c)]},'account':{'accountId':_0x299104[_0x14b631(0x2cb)],'address':_0x299104[_0x14b631(0x2bc)]??null},'grant':_0x299104[_0x14b631(0x195)],'pending':_0x34ca0b,'transport':_0x429ae2,..._0x33562e},_0x3921e8=_0x299104[_0x14b631(0x2bc)]?_0x14b631(0x263)+_0x299104[_0x14b631(0x2bc)]:'account\x20'+_0x299104[_0x14b631(0x2cb)];if(!_0x299104[_0x14b631(0x195)])return A(_0x14b631(0x258),_0x14b631(0x50f)+_0x3921e8+_0x14b631(0x2fb),[{'code':'no_grant','severity':'blocking','detail':_0x14b631(0x3ce),'nextAction':_0x14b631(0x35d)}],_0x503962);let _0x14d0da=_0x299104[_0x14b631(0x195)];if(_0x14d0da[_0x14b631(0x1a1)]!=='active')return A(_0x14b631(0x461),_0x14b631(0x2c7)+_0x14d0da[_0x14b631(0x1a1)]+_0x14b631(0x1d0),[{'code':_0x14b631(0x461),'severity':_0x14b631(0x3ad),'detail':_0x14b631(0x44b)+_0x14d0da['id']+_0x14b631(0x298)+_0x14d0da[_0x14b631(0x1a1)]+'\x22.','nextAction':_0x14b631(0x234)}],_0x503962);let _0x5d811c={},_0x26801e=[];if(_0x299104[_0x14b631(0x489)]&&!_0x299104[_0x14b631(0x489)][_0x14b631(0x4e3)]){let _0x34f2e4=_0x299104[_0x14b631(0x489)][_0x14b631(0x365)][_0x14b631(0x186)]?_0x299104['accountSetup'][_0x14b631(0x365)][_0x14b631(0x481)](',\x20'):_0x14b631(0x470);return A(_0x14b631(0x191),_0x14b631(0x2f2)+(_0x14d0da[_0x14b631(0x1d4)]??_0x14b631(0x1ac)+_0x14d0da[_0x14b631(0x1c9)])+_0x14b631(0x504)+_0x34f2e4+_0x14b631(0x42d),[{'code':_0x14b631(0x191),'severity':_0x14b631(0x3ad),'detail':_0x14b631(0x291)+_0x34f2e4+_0x14b631(0x3f6)+_0x299104[_0x14b631(0x489)][_0x14b631(0x1c9)]+_0x14b631(0x455),'nextAction':'Ask\x20the\x20owner\x20to\x20open\x20'+O(_0x462759[_0x14b631(0x54f)],_0x299104[_0x14b631(0x489)][_0x14b631(0x1c9)])+_0x14b631(0x25b)}],_0x503962,_0x5d811c);}let _0x4ee044;try{let _0x388b7e=await _0x462759[_0x14b631(0x434)](),_0x31d09f=Array[_0x14b631(0x2b0)](_0x388b7e)?_0x388b7e[_0x14b631(0x3a5)](_0x3339e0=>_0x3339e0[_0x14b631(0x1c9)]===_0x14d0da['chainId']):void 0x0;if(!_0x31d09f)return A('chain_unusable',_0x14b631(0x229)+_0x14d0da['chainId']+_0x14b631(0x37c),[{'code':_0x14b631(0x53a),'severity':_0x14b631(0x3ad),'detail':_0x14b631(0x256)+_0x14d0da[_0x14b631(0x1c9)]+_0x14b631(0x4af),'nextAction':_0x14b631(0x40d)}],_0x503962,_0x5d811c);if(_0x4ee044=_0x31d09f[_0x14b631(0x2a9)],_0x503962[_0x14b631(0x1d4)]=_0x31d09f,_0x4ee044==='watch')return A(_0x14b631(0x3bc),(_0x31d09f[_0x14b631(0x2a6)]??_0x14d0da['chainId'])+_0x14b631(0x2cc),[{'code':_0x14b631(0x425),'severity':'blocking','detail':_0x14b631(0x226)+_0x14d0da[_0x14b631(0x1c9)]+'.','nextAction':_0x14b631(0x4ea)}],_0x503962,_0x5d811c);}catch(_0x4e05ad){_0x5d811c[_0x14b631(0x3bb)]=_0x14b631(0x33c)+(_0x4e05ad instanceof Error?_0x4e05ad[_0x14b631(0x316)]:String(_0x4e05ad)),_0x26801e[_0x14b631(0x349)]({'code':_0x14b631(0x52b),'severity':_0x14b631(0x3aa),'detail':_0x14b631(0x255),'nextAction':_0x14b631(0x385)});}let _0x42ca9d=_0x14d0da[_0x14b631(0x266)]?.[_0x14b631(0x412)]?.[0x0]?.[_0x14b631(0x3f5)]?.[_0x14b631(0x3ec)];try{let _0xdff7b7=await _0x462759[_0x14b631(0x1e5)]();_0x5d811c[_0x14b631(0x3cb)]=Kt;let _0x305e7d=(Array[_0x14b631(0x2b0)](_0xdff7b7[_0x14b631(0x297)])?_0xdff7b7[_0x14b631(0x297)][_0x14b631(0x3a5)](_0xba708d=>_0xba708d['symbol']===_0x42ca9d&&_0xba708d[_0x14b631(0x1c9)]===_0x14d0da[_0x14b631(0x1c9)]):void 0x0)?.[_0x14b631(0x4e1)]??0x0;if(_0x503962[_0x14b631(0x2cd)]={'symbol':_0x42ca9d,'chainId':_0x14d0da[_0x14b631(0x1c9)],'amount':_0x305e7d},_0x305e7d<=0x0)return A(_0x14b631(0x38d),_0x14b631(0x50f)+_0x3921e8+_0x14b631(0x42e)+(_0x42ca9d??_0x14b631(0x368))+'\x20on\x20'+(_0x14d0da[_0x14b631(0x1d4)]??_0x14b631(0x1ac)+_0x14d0da[_0x14b631(0x1c9)])+_0x14b631(0x4e8),[..._0x26801e,{'code':_0x14b631(0x38d),'severity':_0x14b631(0x3ad),'detail':_0x14b631(0x252)+_0x42ca9d+_0x14b631(0x3f6)+_0x14d0da[_0x14b631(0x1c9)]+_0x14b631(0x338)+_0x305e7d+'.','nextAction':_0x14b631(0x452)+(_0x14d0da['chain']??'chain\x20'+_0x14d0da[_0x14b631(0x1c9)])+_0x14b631(0x31f)}],_0x503962,_0x5d811c);}catch(_0x5e09e4){_0x5d811c[_0x14b631(0x3cb)]=_0x14b631(0x33c)+(_0x5e09e4 instanceof Error?_0x5e09e4[_0x14b631(0x316)]:String(_0x5e09e4)),_0x26801e['push']({'code':'funding_unknown','severity':_0x14b631(0x3aa),'detail':_0x14b631(0x508),'nextAction':_0x14b631(0x33d)});}let _0x45ab9c=_0x14d0da['spentToDate']?.[0x0]?.[_0x14b631(0x2de)];return typeof _0x45ab9c==_0x14b631(0x204)&&_0x45ab9c<=0x0?A('budget_exhausted','This\x20agent\x27s\x20grant\x20has\x20no\x20remaining\x20budget.',[..._0x26801e,{'code':_0x14b631(0x37f),'severity':_0x14b631(0x3ad),'detail':_0x14b631(0x2ae)+_0x45ab9c+'.','nextAction':_0x14b631(0x465)}],_0x503962,_0x5d811c):_0x26801e['length']>0x0?A('degraded',_0x14b631(0x1b8),_0x26801e,_0x503962,_0x5d811c):A('ready',_0x14b631(0x50f)+_0x3921e8+_0x14b631(0x1b0)+(_0x14d0da[_0x14b631(0x1d4)]??_0x14b631(0x1ac)+_0x14d0da[_0x14b631(0x1c9)])+_0x14b631(0x257),[],_0x503962,_0x5d811c);}function be(_0x297509){const _0x22ecdd=_0x1fb185;let _0xb2943a=_0x297509?.[_0x22ecdd(0x375)]?.[_0x22ecdd(0x2ab)];return typeof _0xb2943a=='string'&&_0xb2943a['length']>0x0?_0xb2943a:null;}function _0x4e2b(){const _0x3891f3=['DxnKDa','l2fNzw50CY9ZzxnZAw9Ul25VBMnL','DgHLBG','ig9UignOywLUia','yMfZzvvYBa','ChjVDMLKzxjjza','l21HCMTLDhmVDg9Rzw5Z','C2vJCMv0rM9Y','AxnZDwvKqxq','l3yXl2f1DgGVy2XPl3n0yxj0','Agv4','vgHLignOywLUigTLEs9ZBhvNihrOzsbIywnRzw5Kigv4CgvJDhmGzM9YihrOAxmGy2HHAw4GkguUzY4GiMfYyML0CNvTlxnLCg9SAweIksaTihnLzsbSAxn0x2nOywLUCYCGB3iGD2fSBgv0x2fWAv9NzxqNCYbGr0vuic9JAgfPBNnGihjLC3bVBNnLlcbMAwvSzcbGA2v5ycWGzM9YihrOzsb2ywX1zsbTyxrJAgLUzYbJAgfPBKLKlG','rxzLCNKGDg9Rzw4GDgHPCYbHy2nVDw50igHVBgrZig9UigeGy2HHAw4SihDPDgGGDgHLignVBNrYywn0igfKzhjLC3mGEw91ig5LzwqGDg8GC3bLBMqGAxqUifrOAxmGAxmGDgHLigrPC2nVDMvYEsbZDgvWigzVCIb3ywXSzxrFC2vUzcWGD2HPy2GGDgfRzxmGyw4GywrKCMvZCYbHBMqGCMvMDxnLCYbHihn5BwjVBc4','ksb0AgfUihrOzsbVBMuGEw91igfYzsb1C2LUzYbYAwDODcbUB3CGka','BM9Fz3jHBNq','CMvHC29U','l3bHEs1ZAc9Hy2nVDw50CY97ywnJB3vUDeLKFs9IywXHBMnL','vgHLihnPBMDSzs11C2uGDg9Rzw4GCMv0DxjUzwqGyNKGDgHLigzVCMDLDcb0B29SlG','l2fNzw50CY97Awr9l2vUywjSzq','l2fJy291BNq','uMvHzcb0AguGyM91BMqGywnJB3vUDcDZigjHBgfUy2uGDw5KzxiGDgHPCYbHz2vUDcDZig93BIbZzxnZAw9UlG','igLZigfIC2vUDcbMCM9TieDfvcaVy2HHAw5ZlG','zw5ZDxjL','ywDLBNq','l21VBMv5l3n3yxaVDg9Rzw5Z','zgvHzgXPBMu','l3nPBxvSyxrPB24','l2fJy291BNqVCg9SAwnPzxmVCMvXDwLYzw1LBNrZ','zMfSBgjHy2S','igfNzw50khmPihDPDgHVDxqGBwfUzgf0zxmUifjLDMLLDYb0AguGC3vNz2vZDgLVBNmGyMvSB3CU','CMv0CNLbzNrLCLnLy29Uzhm','r3jHBNqGC3rHDhvZoIa','ChjVzMLSzxm','Ahr0Chm6lY9HChaUyM90yw5HCNKUEhL6','l2fJy291BNqVBwLNCMf0Aw9U','p2fJy291BNrjzd0','l3yXl3nPz24TCMvXDwvZDhmV','qvbjihbYB3zPzgvYigLKzw50AwzPzxiU','l2fWAxmVBwfUzgf0zxmVE2fNzw50swr9l3jLDM9Rzq','yNjVD3nLCK9Wzw5Lza','swrLBNrPDhLtDg9YzsbUzwvKCYbHDcbSzwfZDcbVBMuGs2v5qMfJA2vUzcbJyw5KAwrHDgu','qwXSihjLz2LZDgvYzwqGywDLBNrZigfSCMvHzhKGAgf2zsbTyw5KyxrLCY4','vhvYBIbHihrVA2vUihjLzMvYzw5JzsbPBNrVigL0CYbMDwXSigLKzw50Axr5ic0Gy29UDhjHy3qGywrKCMvZCYWGq0fjuc0XosbHC3nLDcbYzwySihn5BwjVBcWGzgvJAw1HBhmSigfUzcb3AgLJAcbZB3vYy2uGDM91y2HLCYbMB3iGAxqUifrHA2vZigfUigfKzhjLC3mGB3iGyw4GyxnZzxqGCMvMigfUzcbYzwz1C2vZigeGyMfYzsbZEw1IB2WSigjLy2f1C2uGysbZEw1IB2WGAxmGysbSywjLBcbHignVBNrYywn0ihbPy2TZigzVCIbPDhnLBgyGyw5Kihr3BYbJB250CMfJDhmGB24GB25LignOywLUignHBIbZAgfYzsbVBMuU','vgHLihDHBgXLDcbZzxnZAw9Uj3mGywnJB3vUDcbHBMqGDgHLigfNzw50j3mGyM91BMqGywnJB3vUDcbZAwrLigj5ihnPzguSihDPDgGGyw55ig1PC21HDgnOigzSywDNzwqGzxHWBgLJAxrSEs4','BM9FC3DHCf92zw51zq','CMvXDwvZDa','CMvTB3zLrxzLBNrmAxn0zw5LCG','q09nue9tsvrfihrVB2W6ignHBgWGysbWywLKihrOAxjKlxbHCNr5iefqssbLBMrWB2LUDcbHBMqGCgf5igzVCIbPDcbMCM9TihrOzsbVD25LCIDZihDHBgXLDcWGD2L0AgLUihrOzsbIDwrNzxqGDgHLig93BMvYignVBw1PDhrLzcbVBI1JAgfPBI4Gu2LNBNmGyw4GruLqltmWmdKGyxv0Ag9YAxPHDgLVBIb3AxrOifrisvmGywDLBNqNCYbVD24GA2v5lcb0AgvUihDYyxbZigL0igLUihrOzsblzxjUzwWGrvjdlteYnZeGzw52zwXVCguGDgHLig9UlwnOywLUihzHBgLKyxrVCIbHy3r1ywXSEsb2zxjPzMLLCYaTig5LDMvYigeGyMfYzsbZAwDUyxr1CMuUifrOzsbVD25LCIbUzxzLCIbZAwDUCYbHBMqGBM8Gz2fZigLZignOyxjNzwqGDg8GDgHLBs4GqsbJywXSigfIB3zLihrOAxmGywDLBNqNCYbJB25MAxjTyxrPB24GDgHYzxnOB2XKihDHAxrZig9UihrOzsbVD25LCIDZigfWChjVDMfSigf1Dg9TyxrPy2fSBhKGkhbVBgXLzcbPBNrLCM5HBgX5lcb1Ccb0BYbZzxzLCMfSig1PBNv0zxmPigjLzM9YzsbPDcbLAxrOzxiGChjVy2vLzhmGB3iGy29TzxmGyMfJAYbHCYbHigrLy2XPBMuGlsb0AgLZignHBgWGBwf5ihnPBxbSEsb0ywTLigXVBMDLCIWGDgHHDcbPCYbUB3qGAxrZzwXMigeGzMfPBhvYzs4GswyGAxqGzgvJBgLUzxmSihrOzsbYzwfZB24GC2f5CYb3Agf0ihrVignOyw5NzsaTigrVig5VDcbYzxrYEsb0AguGC2fTzsbJywXSihvUy2HHBMDLzc4GqsbYzxnWB25ZzsbTyxjRzwqGC2LTDwXHDgvKoNrYDwuGAxmGu1LoveHfveLdifrfu1qGrefuqsWGBM90igeGCMvHBcbYzxn1Bhq6ig5LDMvYihjLCg9YDcbPDhmGy29UDgvUDhmGyxmGysbMAw5KAw5NlIbqqvLnru5uieHbufbftLmGqKvgt1jfifrirsbquK9wsurfuIbwquXjrefurvmGveHfifjfuvvfu1q6igLMihrOzsbLBMrWB2LUDcDZihjLCxvLC3rty2HLBweGAxmGBNvSBcWGDgHLCMuGAxmGBM8GD2f5ihrVihrLBgWGiNrOAxmGChjVDMLKzxiGChvIBgLZAgvZig5VihnJAgvTysiGzNjVBsaIDgHLihnJAgvTysbOyxmGBM90igjLzw4GzMv0y2HLzcb5zxqIic0GzwL0AgvYihDHEsWGEw91igfYzsbhvuvtu0LorYbHDcb0AguGyM9KEs9WyxjHBwv0zxiGC2HHCguSigfUzcbHig1HBgzVCM1LzcbNDwvZCYbZDgLSBcbNzxrZihbHAwqGzM9YigjLzM9Yzsb0AguGChjVDMLKzxiGCMvQzwn0CYbPDc4GqsbUB24TBNvSBcbYzxf1zxn0u2nOzw1HigLZihrOzsbVBMX5ihDHEsb0BYbRBM93ihrOzsbZAgfWzsbPBIbHzhzHBMnLoYb0CMvHDcbHig51BgWGB25LigfZigeGCMvHBcbZAwDUywWGDg8Gzg91yMXLlwnOzwnRihrOzsbZAgfWzsbLBhnLD2HLCMuGyMvMB3jLignHBgXPBMCUifjLywqGCMvXDwvZDfnJAgvTysbMCM9TihDHBgXLDf9HCgLFz2v0ig9Uic9HCgLZl3bYB3zPzgvYCY97ChjVDMLKzxjjzh0SihDOB3nLigvUzhbVAw50igvUDhjPzxmGy2fYCNKGAxqGlsb0AgvYzsbPCYbUBYbKzwrPy2f0zwqGDg9VBcbMB3iGAxqSigfUzcbRBM93Aw5NigL0igv4Axn0CYbPCYbUBYb1C2uGD2L0Ag91DcbRBM93Aw5NihDOzxjLlG','AgfZswrLBNrPDhK','C2vZC2LVBG','CMvWBgfJzq','l3yX','BM90AgLUzYbUyw1LzcbHihbYB2zPBguGyw5KihrOAxmGBwfJAgLUzsbOyxmGBM8GChjPB3iGAwrLBNrPDhK','D2fSBgv0x3n0yxr1CW','Chv0','AgfUzgXLCW','C3rKzxjY','D2fSBgv0x2fWAv9NzxqGB25SEsbLDMvYihnLBMrZieDfvcaTihjLzNvZAw5Nig1LDgHVzcaI','BwfUzgf0zuLK','l2fJy291BNqVC2LNBMvYCY9NB29NBguVy2HHBgXLBMDL','mNbxvLnVrG','igj1DcbOyxmGBM90igjLzw4Gz3jHBNrLzcbHBNL0AgLUzY4GsxqGy2fUihjLywqGyMfSyw5JzxmGyw5KigrYywz0igeGCgf5BwvUDcaOChjVCg9Zzv9WyxLTzw50ihDPBgWGzxHWBgfPBIbLEgfJDgX5ihDOEsbPDcbYzwz1C2vZihrVihjLBgf5ig9UzsKSigj1DcbPDcbJyw5UB3qGC3bLBMqUiefZAYb5B3vYig93BMvYihrVignYzwf0zsbHigDYyw50ig5HBwLUzYb0AgLZigfNzw50j3mGywrKCMvZCYaO','lIbcDwrNzxrLzcb0B2TLBNm6ia','q09nue9tsvrfihrVB2WSiefhru5uieXbtKu6iefZAYb0AguGB3DUzxiGDg8GyxbWCM92zsbHihnWzwnPzMLJigfJDgLVBIb0AgLZigfNzw50ignVDwXKig5VDcbKBYb1BMrLCIbPDhmGB3DUigDYyw50icHqt1nuic9Hz2vUDhmVCMvXDwvZDhmPoIbUyw1LCYb0AguGzxHHy3qGy2fSBhmGyw5KihDOEsWGyw5KihjLDhvYBNmGD2HPy2GGyM91BMqGD2fZignYB3nZzwqGyw5KihrOzsbKzwfKBgLUzsbLEgfJDgX5igfZihrOzsbIywnRzw5KignVBxb1DgvKihrOzw0Glsb0AguGCMvXDwvZDcbSyw5LihbYB3bVC2vFCgf5BwvUDcbWB2LUDhmGyxqGD2HLBIbPDcbYzwz1C2vZlIbuAguGB3DUzxiGyxbWCM92zxmGAxqGyxmGveHfsviGt1DoigfJDgLVBIWGBMv2zxiGyxmGDgHPCYbHz2vUDcbZCgvUzgLUzYb1BMrLCIbHigDYyw50icJcPZuTndmPic0GyxbWCM92Aw5NigHHChbLBNmGAw4GqM90yw5HCNKSig5VDcb0AhjVDwDOihrOAxmGDg9VBc4GvgHPCYb3ywL0CYbMB3iGDgHLig93BMvYihzLCMrPy3qGyw5KihjLCg9YDhmGChjVz3jLC3mGD2HPBguGAxqGzg9LCZSGAwyGDgHLignHBgWGzhjVChmSigjVDgfUyxj5x3DHAxqGCMvQB2LUCYbPDc4GBgLZDf9Yzxf1zxn0CYbYzw1HAw5ZihrOzsbVBMuTC2HVDcbYzwfKlG','Dg9Rzw5pDxq','Dg9vChbLCKnHC2u','C3rHDgu','tM8GywDLBNqGA2v5igv4Axn0CYbVBIb0AgLZig1Hy2HPBMuGEwv0lG','Dg9Rzw5FAxnFBM90x2fFC3LTyM9S','l3nWB3jLl2v2AwrLBMnLl3TPzh0','CgfJA2fNzs5QC29U','yw1VDw50','ihrVia','CMvHzhK','qK9uqu5buLLFquDftLrFufjprKLmrsbPCYbZzxqGyNv0igvTChr5ic0GDw5ZzxqGAxqGB3iGz2L2zsbPDcbHig5HBwuU','zxHPDca','q09nue9tsvrfihrVB2WSifDbteXfvcbmqu5foIbfDMvYEsb0B2TLBIb0AgLZigfJy291BNqGse9mrfmGB24GysbJAgfPBIWGD2L0Acb0AguGy29UDhjHy3qGywrKCMvZCYbHBMqGq0fjuc0XosbHC3nLDcbYzwyGEw91ig5LzwqGDg8GC3bLBMqGAxqGkeDfvcaVyMfSyw5JzsWGzMLSDgvYzwqPlIbuAgLZigLZihrOzsbKAxnJB3zLCNKGC3rLCcbMB3iGyM90Acb3ywXSzxrFC2vUzcaODgHLig93BMvYigXHBMuPigfUzcbWCM9WB3nLx3bHEw1LBNqVChjVCg9Zzv9ZD2fWicH0AguGywDLBNqGBgfUzsKGlsbHBgWGDgHYzwuGDgfRzsbHBIbHzgrYzxnZig9YigfZC2v0ihjLzIbHBMqGCMvMDxnLigeGC3LTyM9SlIbxAgvUihr3BYbYB3DZihnOyxjLigeGC3LTyM9Slcb0Agf0igLZihrOzsbHBwjPz3vPDhKGDgHLigfKzhjLC3mGzxHPC3rZihrVihnLDhrSzsaTihnOB3CGDgHLihvZzxiGyM90AcbHBMqGBgv0ihrOzw0Gy2HVB3nLoYbUzxzLCIbWAwnRig9Uzs4','l2nOywLUCW','ic0GDgHLig9UBhKGy2HHAw4GDgHPCYbNCMfUDcbJB3zLCNmU','l2nVBNrHy3rZ','qxnRihrOzsbVD25LCIb0BYbYzs1NCMfUDcbVBIbHigjHC2LJlsbVCIbIB3rHBMfYEs10AwvYignOywLUlG','l2f1DgGVy2XPl3TYzxf1zxn0swr9l2rLBNK','C2LNBIbYzxf1zxn0oIa','vgHPCYbNCMfUDcbPCYaI','l2fWChjVDMfSCY93ywL0Aw5N','zxHWB3j0rM9YvgvZDa','l3yXl2jHBgfUy2u','Cgf5Bg9Hza','z2v0','C2f2zq','r3jHBNqGCMvXDwvZDcbMB3iGBwfUzgf0zsa','l2jHBgfUy2uVDg9Rzw5Zl3TJAgfPBKLKFs97Dg9Rzw5bzgrYzxnZFs9TyxjRzxq','CMvXDwvZDgvKu2nOzw1H','zxHWB3j0rM9YvgvZDcbPCYbHDMfPBgfIBguGB25SEsb1BMrLCIb0AguGDgvZDcbYDw5UzxiU','y29Kzq','C3bLBMrHyMXL','zMLSDgvY','B25iyw5KB2zM','vgHLigjHy2TLBMqGzg9LCYbUB3qGCMvJB2DUAxnLihrOAxmGywDLBNqGkeHuvfaG','t3bLBMvKiejVDgfUyxj5igLUihLVDxiGyNjVD3nLCIb3AxrOignVzguG','ywrKCMvZCW','l2jHBgfUy2uVC3rYzwfT','iJOGDgHPCYbYDw50Aw1LigHHCYbHBhjLywr5ig1HDgvYAwfSAxPLzcbPzgvUDgL0EsbuAguGChjVzMLSzsbTDxn0igjLigfKB3b0zwqGyMvMB3jLigfUExrOAw5NihjLywrZihrOzsbPzgvUDgL0Es4','Aw5WDxq','l21HCMTLDhbSywnLl2fNzw50CW','AwrLBNrPDhLtDg9YzuzHy3rVCNK','lcbIDxqGDgHLigfJy291BNqGAxmGBwLZC2LUzYa','l21HCMTLDhbSywnLl2fNzw50CY9ZzwfYy2G','Ahr0Chm6lY9IB3rHBMfYEs1Jyw5VBMLJywWTCgf0Ac5PBNzHBgLK','BgLZDefWAxm','r0vuic9IywXHBMnLigzHAwXLzcWGC28GDgHPCYbHz2vUDcbJyw5UB3qGy29UzMLYBsb0AguGywnJB3vUDcbPCYbMDw5KzwqU','ihrVigfWChjVDMuU','q2fSBcbHigDLBNvPBMvSEsbHzg1PBMLZDhjHDgL2zsb3CML0zsbLBMrWB2LUDcaOzg9JDw1LBNrLzcbPBIb0AguGzNjVEMvUie9Wzw5bueKGy29UDhjHy3qPigfZihrOzsbVD25LCIaTig5LDMvYigeGzNvUzc1TB3zPBMCGB3iGyxv0Ag9YAxr5lwDYyw50Aw5Nig9Uzs4GrxzLCNKGCM91DguGDgHHDcbYzxr1CM5ZigeGyNvPBgqGzM9YihrOzsbVD25LCIb0BYbZAwDUigLZigv4y2X1zgvKigj5ignVBNn0CNvJDgLVBI4','D2fSBgv0x2fWAv93CML0zsbVBMX5igv2zxiGC2vUzhmGue9tvc9qvvqVuefuq0GVrevmrvrfic0GCMvMDxnPBMCGiG','CMvNAxn0zxjLza','CMvSyxLLza','B3bjza','q29UBMvJDgvKihrVia','mtG5Agv6Bgru','Aw5JBhvKzwq','tMfo','cKnOB29Zzsbdyw5JzwWGDg8GC3rVCcb3ywL0Aw5NigHLCMuGlsb0AguGCMvXDwvZDcbZDgf5CYbVCgvUigLUihLVDxiGyNjVD3nLCIbLAxrOzxiGD2f5lG','l3bHEs1ZAc9Hy2nVDw50CY97ywnJB3vUDeLKFs9OB2XKAw5NCW','CgvUzgLUzW','Dw5YzwDPC3rLCMvK','qM90yw5HCNKGBMvLzhmGEw91CIbZAwDUyxr1CMuGAw4GDgHLigjYB3DZzxiGDg8GC2vUzca','ig1HEsbUB3qGy29UDgfPBIaNlICSicC6jYWGjY8Nig9YicDCxcCUifrOzsb0B29SigHHBgyGAxmGywrKzwqGyxv0B21HDgLJywXSEsaTihnLDcbQDxn0ihrOzsbHz2vUDcbUyw1LlcbLlMCUicD0CMfKAw5NjY4','ywXSu2v0DgXLza','CgLWzq','l21HCMTLDhmVC3rYzwfT','BM90AwzPy2f0Aw9UCY9WCM9NCMvZCW','l2rLBgvNyxrPB25Zl3TKzwXLz2f0Aw9Uswr9l3bVBgLJEs1ZBMfWC2HVDhm','B3zLCL92zw51zv9HBgXVD2fUy2u','l3nPz24TA2LUzhm','ywrKlwDLBMvYAwmTCgfZC3DVCMq','ru5pru5u','l2fNzw50lxDHBgXLDhmVE2fNzw50swr9l3vUyxjJAgL2zq','D2fSBgv0x2XVz2LU','qK9uqu5buLLFquDftLrFufjprKLmrt0','iIWGBM90igfJDgL2zq','t3DUzxiGBg9Nz2vKigLUihn1y2nLC3nMDwXSEsb0BYbHy2nVDw50ia','uhjVzMLSzuvYCM9Y','vgHLignVzguGAgfZig5VDcbIzwvUignSywLTzwqGEwv0igfUzcb0AgLZihDHAxqGAgfZigvUzgvKlIbuAguGy29KzsbPCYbZDgLSBcbSAxzLihvUDgLSia','DMvYC2LVBG','B3bLBG','y2HHAw5Zx3vUA25VD24','ywDLBNrZ','u3rHCNqGAgvYzsb3AgvUigfUExrOAw5NigLZihvUy2XLyxiGB3iGyw4Gywn0Aw9UigzHAwXLzdOGB25LihjLywqTB25SEsbJywXSihrOyxqGyw5ZD2vYCYb3Ag8GDgHPCYbHz2vUDcbPCYbIB3vUzcb0BYWGD2HLDgHLCIb0Agf0igfJy291BNqGAxmGzNvUzgvKig9UihrOzsbNCMfUDcDZig93BIbJAgfPBIWGyw5KihDOyxqSihjHBMTLzcWGAxmGyMXVy2TPBMCGDgHLig5LEhqGywn0Aw9UlG','mty0mdGWnunorfHmDW','l2fWAxmVyxbWCM92ywXZ','rvjst1i6ia','zxHWAxjLza','q09nue9tsvrfihrVB2WGkgnYzwf0zxmGDgHLigLKzw50Axr5igXVy2fSBhKSihrOzw4GCMvNAxn0zxjZihrOzsbJB2rLihDPDgGGDgHLigjHy2TLBMqPlcbbr0vovcbmqu5foIbjBw1LzgLHDgvSEsbPBNzHBgLKyxrLihrOzsbJDxjYzw50ihbHAxjPBMCGy29KzsbHBMqGBwLUDcbHigzYzxnOig9UzsaTiguUzY4GAwyGDgHLihvZzxiGDgHPBMTZihrOzsbWCMv2Aw91CYbJB2rLig1HEsbOyxzLigjLzw4GC2vLBIbIEsbZB21LB25LigvSC2uSig9YigL0igfSCMvHzhKGzxHWAxjLzc4GvxnLigDLDf9WywLYAw5Nx2nVzguGzM9YihrOzsbVCMrPBMfYEsaIC2HVDYbTzsb0AguGy29KzsiGy2fZztSGDgHPCYbPCYbVBMX5igzVCIbMB3jJAw5NigeGBMv3ig9UzsbIzwzVCMuGAxqGD291BgqGB3rOzxj3AxnLigv4CgLYzsbVBIbPDhmGB3DUlIbmAwTLigDLDf9WywLYAw5Nx2nVzguSihrOAxmGt1bftLmGveHfifvtrviNuYbcuK9xu0vsig9UihrOzsbWywLYAw5NihnJCMvLBIb3AxrOihrOzsbUzxCGy29KzsbMAwXSzwqGAw47ihbHC3mGB3bLBJOGzMfSC2uGDg8GC3vWChjLC3mGDgHHDc4','CgfYyw1Z','lunVBw1HBMq','D2fSBgv0x2fWAv9Nzxq','rxzLCNKGy2HHAw4GC3LUy2vKihn1y2nLC3nMDwXSEsaTihrOzxnLig51BwjLCNmGyxjLign1CNjLBNqU','mJK3Ag9zCK1m','CMvM','l3yXl2zHCM0VCg9ZAxrPB25Z','y2HHAw5FBM90x3nLCNzLza','q291BgqGBM90ig9Wzw4GysbICM93C2vYigf1Dg9TyxrPy2fSBhKGlsbVCgvUihrOAxmGvvjmihrVigfWChjVDMu6ia','zNjLC2G','q09nue9tsvrfihrVB2WGkhr3BYbYzwfKCZOGl2fNzw50CYWGl2rLBgvNyxrPB25ZksWGv0fmtevuieXbtKuGkhjLCxvPCMvZihDHBgXLDf9SB2DPBIbMAxjZDcK6ifn1z2DLC3qGyM91BMrLzcbTyw5KyxrLCYbMB3iGCMvNAxn0zxjLzcbHz2vUDhmUifrOAxmGAxmGysaQC3vNz2vZDgLVBIb0AguGB3DUzxiGBwf5igrLy2XPBMuQic0GAxqGCMvHzhmGD2HHDcb0AguGywDLBNqGBgfUzsbTyxKGC3bLBMqGyw5KihbYB3bVC2vZihjLyxnVBMfIBguGC3rHCNrPBMCGBwfUzgf0zxmGzM9YigfNzw50CYb0Agf0igrVig5VDcb5zxqGAgf2zsbNCMfUDhmUievHy2GGC3vNz2vZDgLVBIbPBMnSDwrLCYb0AguGywDLBNqSignOywLUlcbHBMqGysbhCMfUDcbvuKWUieL0ig5LDMvYihn1z2DLC3rZihDPzgvUAw5NigfUigv4Axn0Aw5NigDYyw50lIbjDcbPCYbPBMvYDcb3AxrOB3v0igeGCMvNAxn0zxjLzcbHz2vUDcaTihDOzw4GBM9UzsbLEgLZDcWGAxqGzxHWBgfPBNmGAg93ihrVihbHAxiGAw5ZDgvHzcbVzIbWCM9WB3nPBMCGysbNCMfUDcb0BYbUB3rOAw5NlG','D2fSBgv0x2fJDgL2Axr5','l2fNzw50lxDHBgXLDhmVCgfYDg5LCI1WCM92AxnPB24','t3b0Aw9UywWGC2XPChbHz2uGy2vPBgLUzYbPBIbIyxnPCYbWB2LUDhmGkguUzY4GntaGzM9YidaUnsuPlIbpBwL0DgvKlcb0AguGyMfJA2vUzcb1C2vZigL0CYbVD24GzgvMyxvSDc4','t3bLBMvKihLVDxiGyNjVD3nLCI4Gv2fPDgLUzYbMB3iGEw91ihrVihjLDMLLDYbHBMqGC2LNBI4','l2fJy291BNrZ','vgHLiePtt04GCMvXDwvZDcbIB2r5lcb3AgvUihrOzsbLBMrWB2LUDcb0ywTLCYbVBMuUie9TAxqGzM9YigeGyM9KEwXLC3mGrevmrvrflG','ywnJB3vUDa','CMvNzw5LCMf0zvbHAxjPBMDdB2rL','kcGOlISPkYKRksSK','qwrKlvr5CguGlufZC2vTyMX5tMfTzsbtExn0zw0Uu2vJDxjPDhK','l2jHBgfUy2u','ksWGC28GysbZD2fWihvUzgvYihrOAxmGz3jHBNqGy2fUBM90ihn1y2nLzwqUie5VDgHPBMCGD2fZigj1AwX0ig9YihnLBNqSigfUzcbYzxrYEwLUzYb3AwXSigzHAwWGAwrLBNrPy2fSBhKGlsbPBNn0ywXSAw5NigeGBw9KDwXLigLZigfUigf1DgHVCML0EsbJAgfUz2uGB25SEsb0AguGB3DUzxiGy2fUihnPz24SigfUzcbHihnLC3nPB24GA2v5ignHBM5VDcbKBYbPDc4Gt3bLBIb0AguGC2v0DxbvCMWGywjVDMuGAw4GysbICM93C2vYlcbZAwDUihrOzsbVBMuTDgLTzsbZzxr1CcWGDgHLBIbHC2SGBwuGDg8GDhj5ihrOAxmGC3DHCcbHz2fPBI4','y2fSBhm','Aw50zw50vhLWzq','z2v0vgLTzq','l3n0CMvHBq','ig9UigfJy291BNqG','yxbPqMfZzvvYBa','D2fPDgLUzYbMB3iGC2vUzcb0BYbZzxr0BguGkg9Wia','DhHiyxnO','q291BgqGBM90ihjLywnOihrOzsbcB3rHBMfYEsbIywnRzw5KihrVigfZAYb3Ag8GDgHPCYbHz2vUDcbPCY4','zMLUzeLUzgv4','BwfJt1mGs2v5y2HHAw4','ihDVDwXKigv4y2vLzcbPDc4GtM90AgLUzYb3yxmGyNvPBhqGB3iGC2vUDc4GvxnLihjLCxvLC3rFyxbWCM92ywWGDg8GyxnRihrOzsbVD25LCIbMB3iGDgHPCYbZCgvJAwzPyYbZD2fWlG','tM90igXVz2DLzcbPBIbHCYb0AguGD2fSBgv0ig93BMvYic0GCNvUihDHBgXLDf9SB2DPBIbMAxjZDcWGDgHLBIb0CNKGD2fSBgv0x2fJDgL2Axr5igfNywLUlG','C2LNBLvUzgvYtwfUzgf0zq','vgHLignOywLUieLeihDOzxjLihrOzsbNCMfUDcbHChbSAwvZicHLlMCUlca0mJe2mtqGzM9YiefYyML0CNvTifnLCg9SAwePlG','AxngAw5PDgu','vgHLigfJy291BNqGAwqGDg8GC3DPDgnOihrVic0GB25Lig9MihrOzsbPzhmGr0vuic9Hy2nVDw50CYaOB3iGD2fSBgv0x2fWAv9NzxqNCYaIl2fJy291BNrZiIKGCMvWB3j0CYbMB3iGDgHPCYbVD25LCI4GtMv2zxiGAw52zw50ig9UztSGy29WEsbPDcbMCM9TihDHBgXLDf9ZDgf0DxmSihDHBgXLDf9WB3j0zM9SAw8Sig9YihDHBgXLDf9HCgLFz2v0lG','ihjLBwfPBMLUzYaOB2yG','C3rHCNrLCG','l2fNzw50lxDHBgXLDhmVE2fNzw50swr9l3rYywrL','vgHLig9UlwnOywLUigfKzhjLC3mGB2yGDgHLig1HBMrHDguGDMvYC2LVBIb0AgLZigDYyw50ihvUBg9JA3mGkgfZigfUievwtsbHzgrYzxnZlcaWEc4UlIKU','BgvUz3rO','C2v0uMvXDwvZDeHHBMrSzxi','igXLzNqGDgHLigfJy291BNqSig5Via','CMvXDwvZDf9HChbYB3zHBa','y29TBwfUza','yxjYyxK','C2v0uhjVDMvUyw5Jzq','tM8GD2fSBgv0ihnLC3nPB24GAxmGy3vYCMvUDgX5ihn0B3jLzc4','BwfUzgf0zvzLCNnPB24','l3yXl3nPz24TCMvXDwvZDhm','zgvMAw5LuhjVCgvYDhK','C2v0DxbFCMvXDwLYzwq','nty3mZKWDfjOAKnn','D3jPDgu','tg9NAw4GD2fZigf1DgHVCML6zwqGyNv0ihrOzsbIywnRzw5KigrLBgL2zxjLzcbUBYbZzxnZAw9UihrVA2vUicH0AguGB25LlxrPBwuGzgvSAxzLCNKGBwf5igfSCMvHzhKGAgf2zsbIzwvUignSywLTzwqPlIboB3rOAw5NihDHCYbZDg9YzwqGlsbYDw4GD2fSBgv0x2XVz2LUigfNywLUlG','z3jHBNq','u3DPDgnOzwqGzNjVBsa','BM9KztPJAgLSzf9WCM9JzxnZ','l2fWAxmVy2fSBhmVCMvXDwLYzw1LBNrZl3TPzh0','v2fPDgLUzYbMB3iGEw91ihrVigfWChjVDMuGAw4GEw91CIbICM93C2vYlIbzB3vYignVzguGAxmG','v2fPDgLUzYbMB3iGEw91ihrVigvUDgvYignVzguG','tM8GywDLBNqGAwrLBNrPDhKGD2fZihn0B3jLzcbVBIb0AgLZig1Hy2HPBMuGlsbUB3rOAw5NihrVigrLBgv0zs4','l2fNzw50CY9Yzxf1zxn0CY9ZDhjLyw0','te9dquWGDg9VBcaOBMv2zxiGy29UDgfJDhmGDgHLigjHy2TLBMqPlcbbr0vovcbmqu5foIbtvevqidiGt0yGmIaTigfJDhvHBgX5igrLBgv0zxmGDgHPCYbHz2vUDcbRzxKGzNjVBsb0AgLZig1Hy2HPBMuUifjLCxvPCMvZihrOzsbJB25MAxjTyxrPB25uB2TLBIb0Agf0igzVCMDLDcbYzxr1CM5LzdSGDgHLihrVA2vUigLZihnPBMDSzs11C2uGyw5Kigv4CgLYzxmUifjLzNvZzxmGBg91zgX5ihjHDgHLCIb0AgfUigrLBgv0Aw5Nig9UigeGBwLZC2LUzYWGD3jVBMCSihjLDxnLzcWGB3iGzxHWAxjLzcb0B2TLBI4Gqwz0zxiGDgHPCYbZDwnJzwvKCYb0AguGywDLBNqGAgfZig5VigLKzw50Axr5ihvUDgLSigeGBMv3ig9UzsbPCYbJCMvHDgvKigfUzcbWywLYzwqU','Cg93zxjZAgvSBa','yxbP','vgHLihrVA2vUihrVihbHEsb3AxrOoIbPDhmGy29UDhjHy3qGywrKCMvZCYaOmhGUlI4Pig9YigL0CYbdquLqlte5igfZC2v0ihjLzI4GtKvwrviGysbZEw1IB2WGlsaIvvneqYiGAxmGysbSywjLBcbHignVBNrYywn0ihbPy2TLzcbMB3iGAxrZzwXMigfUzcb0D28Gy29UDhjHy3rZig9Uig9UzsbJAgfPBIbJyw4GC2HHCMuGAxqSigfUzcb0AgLZigDYyw50j3mGyNvKz2v0igLZig1HDgnOzwqGywDHAw5ZDcb0AguGCMvZB2X2zwqGywrKCMvZCYWGBM90igeGBMfTzs4Gq2fSBcbYzxnVBhzLx3rVA2vUig9YigXPC3rFDg9Rzw5ZigLMihLVDsbVBMX5igHHDMuGysbZEw1IB2WU','C3rHDhvZ','B25qCM9TChq','C2LNBMvYqwrKCMvZCW','C2vUza','tM90igXVz2DLzcbPBIbHCYb0AguGD2fSBgv0ig93BMvYic0GCNvUihDHBgXLDf9SB2DPBIbMAxjZDcWGDgHLBIb0CNKGD2fSBgv0x21HCMTLDhmGywDHAw4U','qwDLBNqGy2XHAw1Lzc4','l2f1DgGVy2XPl3TYzxf1zxn0swr9l2nSywLT','DxjS','vgHPCYbNCMfUDcbJyxbZigeGC2LUz2XLigfJDgLVBIbHDca','C3bSAxq','u3DPDgnOihDOAwnOig9MihrOzsbVD25LCIDZigfJy291BNrZigv2zxj5ihn1yNnLCxvLBNqGD2fSBgv0ignHBgWGDxnLCYWGDMfSAwrHDgvKigfNywLUC3qGDgHLigfJy291BNqGBgLZDcbMAxjZDc4','y2HHAw4G','BMf0AxzL','yNvPBgrezwXLz2f0zwrby3rPB24','zNvSBa','ihDPDgGGyw4Gywn0AxzLigDYyw50ig9Uia','rM91BMqG','l2fNzw50lxDHBgXLDhmVy29UBMvJDgLVBG','yM90yw5HCNKTBwnWic0GqM90yw5HCNKNCYbHz2vUDcbJB25Uzwn0B3iGkgXVy2fSie1ducbZzxj2zxiPcGPvC2fNztOkicbIB3rHBMfYEs1Ty3aGicaGicaGicaGicaGicaGifn0yxj0ihrOzsbnq1aGC2vYDMvYicHZDgrPBYb0CMfUC3bVCNqPlIbuAgLZigLZihDOyxqGyw4GtunqignSAwvUDaOGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicHdBgf1zguGq29KzsWGq29KzxGSien1CNnVCIWGlI4UksbYDw5Zic0GC2vLihrOzsbsrufetuuGzM9YihrOzsbLEgfJDaOGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGig9Uzs1SAw5LignVBw1HBMqGCgvYignSAwvUDc4kicbIB3rHBMfYEs1Ty3aGD2HVyw1PicaGicaGicaGicbqCMLUDcb0AgLZigfNzw50j3mGAwrLBNrPDhKGkgfKzhjLC3mSihb1yMXPyYbRzxKSigzPBMDLCNbYAw50ksb3AxrOB3v0cIaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGC3rHCNrPBMCGysbZzxj2zxiUie5LDMvYihbYAw50CYb0AguGChjPDMf0zsbRzxKUcIaGyM90yw5HCNKTBwnWigzVCMDLDcaGicaGicaGicaGrgvSzxrLihrOzsbHz2vUDcDZihbYAxzHDguGA2v5igzYB20GDgHPCYbTywnOAw5LicHpuYbRzxLJAgfPBIbVCIbMAwXLcIaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGzMfSBgjHy2SPlIbbBNKGz3jHBNqGysbcB3rHBMfYEsbHy2nVDw50ihn0AwXSigHHCYbVBIbMAwXLigzVCIb0AgLZcIaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGywDLBNqNCYbHzgrYzxnZigLZifvoq0HbtKDfrcaTihjLDM9Rzsb0Agf0ihnLCgfYyxrLBhKSigLUiejVDgfUyxj5lIbtzwukicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicb0AguGuKvbre1ficGID2HHDcbKzwXLDgLUzYb0AguGA2v5igrVzxmGyw5KigrVzxnUj3qGzg8Iks4kicbIB3rHBMfYEs1Ty3aGDg9VBhmGicaGicaGicaGicbmAxn0igv2zxj5ihrVB2WGDgHPCYbZzxj2zxiGy2fUigv4Cg9ZzsWGD2L0AcbPDhmGBgfUzs4GqwrKic0TANnVBIbMB3ikicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicb0AguGBwfJAgLUzs1YzwfKywjSzsbMB3jTicH0AgLZigLZihDOyxqGz2vUzxjHDgvZihrOzsb0B29SihjLzMvYzw5JzsbVBGOGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGigrVy3mUyM90yw5HCNKUEhL6ks4GuMvHzhmGBwv0ywrHDgeGB25SEtOGy3jLyxrLCYbUBYbRzxKSignVBNrHy3rZcIaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGBM90AgLUzY4kicbIB3rHBMfYEs1Ty3aGls1OzwXWicaGicaGicaGicbtAg93ihrOAxmGBwvZC2fNzs4k','y3jLyxrLvhjHBNnWB3j0','qxnRihrOzsbVD25LCIb0BYbHChbYB3zLihnVBwv0AgLUzYb0AgLZigDYyw50ignHBM5VDcbJB3zLCI4','D2fSBgv0x3nPz25FCMvXDwvZDa','iIbPCYbUB3qGB25Lig9MihrOAxmGB3DUzxiNCYbHy2nVDw50CYaTiejVDgfUyxj5ihjLCg9YDhm6ia','q29UBMvJDgvKihDPDgGGyw4Gywn0AxzLigDYyw50lcbIDxqGC29TzsbJAgvJA3mGy291BgqGBM90igjLignVBxbSzxrLzc4','C3rHCNrZv2L0Aa','vgHLigv4ywn0ignHBgXZihrOyxqGD2vYzsbKzwnSAw5LzcaTihrOzsbZyw1LihnOyxbLigeGyNvPBgqGCMvZCg9UC2uGywXYzwfKEsbJyxjYAwvZlG','BgvNywn5','ChjVz3jLC3m','zxHWAxjLC0f0','ue9tva','B3bLBMvK','CNvUzgXSmZi','ChvIBgLJs2v5','ChjVDg9JB2W','l2fWChjVDMfSCY9HD2fPDgLUzY1Tzq','l21HCMTLDhbSywnLl2PVyNmVE2nOywLUswr9l3TQB2jjzh0','ihrVigDVihn0CMfPz2H0ihrOzxjLihDPDgGGDgHLignVzguGywXYzwfKEsbMAwXSzwqGAw4U','D2fSBgv0qwnJB3vUDeLK','mti3lJaUmc4X','CMvQzwn0zwq','y2HHAw5jza','C2LNBLjLCxvLC3rjza','Dg9tDhjPBMC','l3n0zwXSyxiVDhjHBNnHy3rPB25Zl3TOyxnOFq','veHjtIb0B29SicHVBMuGr0vulcbYzxr1CM5Lzcb1BM1VzgLMAwvKksWGquDftLqGtefortOGDgHLigDHCYbTzxrOB2rZigfJDhvHBgX5iefwquLmqujmrsbMB3iGDgHPCYbHy2nVDw50ig9UigeGy2HHAw4Glsb0AguGyMfJA2vUzcbHBhjLywr5igzPBhrLCNmGB3v0ihvUyxzHAwXHyMXLigfUzcbZCg9UC29YzwqGB25LCYWGC28Gyw55DgHPBMCGCMv0DxjUzwqGAxmGDxnHyMXLicHhrvqGl2DHCY9TzxrOB2rZks4Gqw4Gzw1WDhKGBgLZDcbTzwfUCYb0AgLZigfJy291BNqGy2fUBM90ign1CNjLBNrSEsbWyxKGzM9YigDHCYb0AgvYzsWGD2HPy2GGAxmGDgHLihvZDwfSignHDxnLig9MigfUiefbmJeGCMvSyxKGzMfPBhvYzs4','vgHLihDHBgXLDcbZzxnZAw9UihDHCYbJBgvHCMvKihDOAwXLihrOAxmGD2fZihj1BM5PBMCGlsbYDw4GD2fSBgv0x2XVz2LUigfNywLUigjLzM9YzsbZD2L0y2HPBMCGywnJB3vUDhmU','DxjSlMrSBcXgAwXLuhjVDg9JB2Xiyw5KBgvY','lcbZBYbUB3rOAw5NignHBIbIzsbZCgvUDcb1BMrLCIbPDc4','l2fZC2v0CY9YzxnVBhzL','z2v0x3bHAxjPBMDFy29Kzq','C3rYzwfTu291CMnLrMfJDg9YEq','y2HHAw4','lMjVDgfUyxj5lw1JCa','Aw5cB3vUzhm','CNvU','uMvJAxbPzw50igfKzhjLC3mGkdb4lI4Ukq','l2fWAxmVBwfUzgf0zxmVE2fNzw50swr9l3bHDxnL','C2LTDwXHDgvK','ywrKrxzLBNrmAxn0zw5LCG','q09nue9tsvrfihrVB2WGkhr3BYbYzwfKCZOGl2fNzw50CYWGl2fNzw50CY9Yzxf1zxn0CYKSifDbteXfvcbmqu5ficHYzxf1AxjLCYb3ywXSzxrFBg9NAw4GzMLYC3qPoIbszwfKignVBM5Ly3rLzcbHz2vUDhmGyw5KihrOzwLYihjLCxvLC3rZlIbszxr1CM5ZihrOzsbSAxn0ig9MigfNzw50CYbJB25Uzwn0zwqGDg8GDgHPCYbHy2nVDw50lcbHBMqGyw55ihbLBMrPBMCGyxbWCM92ywWGCMvXDwvZDhmGDgHVC2uGywDLBNrZigHHDMuGzMLSzwqUifvZzsb0AgLZihrVihvUzgvYC3rHBMqGD2HVignHBIbZCgvUzcbHBMqGD2HHDcb0Agv5igfYzsbHC2TPBMCGzM9YlIbgBgfNCYbHBNKGCMvHzcb0Agf0igzHAwXLzcb3AxrOihrOzsbZzxj2zxiNCYbVD24GBwvZC2fNzs4','C3DHCa','ywDLBNrjza','y29UDgvUDc1Szw5NDgG','yNvPBgrezwXLz2f0zwrtD2fW','l2fNzw50l2nVBNzLCNnHDgLVBNmVE2nVBNzLCNnHDgLVBKLKFq','vgHLig93BMvYigHHCYbUB3qGzgvJAwrLzcb5zxqGyw5KihrOAxmGD2fPDcbOyxmGzw5KzwqUifrOzsbYzxf1zxn0igLZihn0AwXSig9Wzw4GlsbJywXSigjVDgfUyxj5x3DHAxqGDg8GA2vLCcb3ywL0Aw5NlIbeBYbot1qGzMLSzsbPDcbHz2fPBJOGysbZzwnVBMqGCMvXDwvZDcbPCYbHihnLy29Uzcb0AgLUzYb0AguGB3DUzxiGAgfZihrVihjLywqSig5VDcbHigzHC3rLCIbHBNn3zxiU','l2zHCM0VC29Syw5Hl3bVB2XZ','q09nue9tsvrfihrVB2WGkg9UzsbYzwfKoIaVAgLZDg9YEsKSifDbteXfvcbmqu5ficHYzxf1AxjLCYb3ywXSzxrFBg9NAw4GzMLYC3qPoIbszwfKihrOzsbVD25LCIDZihjLy2vUDcb0CMfUC2fJDgLVBIbOAxn0B3j5lIbszxr1CM5ZigeGy2HYB25VBg9NAwnHBcbSAxn0ig9MihnLBMrZlcbZD2fWCYWGyw5KihLPzwXKihrYyw5Zywn0Aw9UCYb3AxrOihrPBwvZDgfTChmSigfTB3vUDhmSigfUzcbMAw5HBcbZDgf0DxmGkgLUy2X1zgvKlcbWzw5KAw5NlcbMywLSzwqPlIbgBgfNCYbHBNKGCMvHzcb0Agf0igzHAwXLzcb3AxrOihrOzsbZzxj2zxiNCYbVD24GBwvZC2fNzs4','z2v0qMfSyw5Jzq','vgHPCYbOyw5KBguGy2fUBM90igjLihjLC3vTzwqGyNKGDgHPCYbIDwLSzc4GsxqGAxmGC3rPBgWGBgL2ztOG','C3rYAw5NAwz5','ihrVihnLDhrSzsaOB3aG','Bg9JywXOB3n0','ChjVz3jLC3nuB2TLBG','Ahr0Chm6','Dw5HDMfPBgfIBgu','ig1HEsb3zwXSigHHDMuGBgfUzgvKoYb0AgLZihrVB2WGC2LTCgX5ignHBM5VDcbZzwuGAxqGCMLNAhqGBM93lIbdywXSigjVDgfUyxj5x3DHAxqGDg8GCMvQB2LUigL0lIbeBYbot1qGCMvZzw5KoIb0AguGB3jPz2LUywWGB3aGAxmGBgL2zsWGyw5KigeGCMvZzw5KihDVDwXKigjLigeGC2vJB25Kia','vgHLig9WigLKihjLDhvYBMvKigj5ihbYB3bVC2vFCgf5BwvUDcaOB3bFlI4Uks4','l2fJy291BNqVzgv2AwnLCW','jgj5DgvZid0Gw0nVBNzLCNrDoJPgCM9TqMfZzty0u3rYAw5NkcrInJqP','CMvSyxK','tM90igXVz2DLzcbPBIbHCYb0AguGD2fSBgv0ig93BMvYic0GCNvUihDHBgXLDf9SB2DPBIbMAxjZDcWGDgHLBIb0CNKGBgLZDf9ZAwDUx2TPBMrZigfNywLUlG','B3jPz2LU','zgfYD2LU','C2LNBK1LC3nHz2u','l21HCMTLDc9LCxvPDgLLCY97C3LTyM9SFs9OAxn0B3j5','yw1VDw50uMf3','zgvSzwDHDgLVBI5NCMfUDa','Bwv0Ag9K','z3jHBNqGAxmGiG','yM9VBgvHBG','vgHPCYbHy2nVDw50igHVBgrZig5VDgHPBMCGB24GDgHPCYbJAgfPBI4','l29WzxjHDgLVBNmVC3rYzwfT','l2fWAxmVy2fSBhmVCMvXDwLYzw1LBNrZl3TPzh0VyxbWCM92zq','B3bLCMf0Aw9U','q09nue9tsvrfihrVB2WSifDbteXfvcbmqu5foIbmB2DVDxqGDgHLig93BMvYlIbdywXSCYberuXfveuGl2f1DgGVC2vZC2LVBIb0BYbYzxzVA2uGDgHLihnLC3nPB24GB24GDgHLigjHy2TLBMqSihrOzw4Gy2XLyxjZihrOzsbZDg9YzwqGC2vZC2LVBIb0B2TLBIbSB2nHBgX5lIbfDMvUigLMihrOzsbUzxr3B3jRignHBgWGzMfPBhmSihrOzsbSB2nHBcb0B2TLBIbPCYbJBgvHCMvKic0GysbKzwfKig5LDhDVCMSGy2fUBM90ihn0CMfUzcbHigXPDMuGy3jLzgvUDgLHBcbVBIbKAxnRlIbiAwrLCYb0AguGD2fSBgv0xYOGDg9VBhmGywDHAw4GDw50AwWGD2fSBgv0x2XVz2LUigLZihj1BIbHz2fPBI4','ChjVCg9Zzv9WyxLTzw50','ie5VDgHPBMCGD2fZigj1AwX0ig9YihnLBNqU','z2v0u2LNBLjLCxvLC3q','BNvTyMvY','t3b0Aw9UywWGy2fZzs1PBNnLBNnPDgL2zsbMAwX0zxiGB24GC3LTyM9Sig9Yig5HBwuU','qsbTyw5KyxrLigv4Axn0CYbVBIb0AgLZigfJy291BNqSigj1DcbPDcbKB2vZig5VDcbJB3zLCIb0AgLZigfJDgLVBIaO','ywjVCNrLza','BwfUzgf0zxm','l2fWChjVDMfSCY97zgLNzxn0Fq','zgvJAw1HBhm','zxHPDa','yM90yw5HCNKTBwnW','w0nVBNnVBgvDoJPpDxqUv3jPDguOw0nVBNzLCNrDoJPuB0jHC2u2nfn0CMLUzYGKChjVDgvJDgvKksK','l3jLy292zxj5l2D1yxjKAwfUCW','ndiWmtm1zvbSweff','y2fUy2vS','ywrVChrqCM9MAwXL','q09nue9tsvrfihrVB2WGkhnLDMvYywWGCMvHzhmGCgX1CYbQDwrNBwvUDcKSiefhru5uieXbtKuGkhrOAxmGBwfJAgLUzsDZig93BIbWywLYzwqGAwrLBNrPDhKGlsbUzxzLCIb0AguGD2fSBgv0ig93BMvYj3mGyNjVD3nLCIbZzxnZAw9UktOGu1rbuLqGsevsrsb3AgvUigfUExrOAw5NigLZihvUy2XLyxiGB3iGyw4Gywn0Aw9UigzHAwXLzc4Gqw5ZD2vYCYbPBIbVBMuGy2fSBcb3Ag8GDgHPCYbHz2vUDcbPCYbIB3vUzcb0BYWGD2HLDgHLCIb0Agf0igfJy291BNqGAxmGzNvUzgvKig9UihrOzsbNCMfUDcDZig93BIbJAgfPBIWGD2HLDgHLCIb0Agf0ignOywLUignHBIbKBYb3Agf0ihrOzsbNCMfUDcbJBgfPBxmSigfUzcb3Agf0ic0GCMfUA2vKic0GAxmGyMXVy2TPBMCGDgHLig5LEhqGywn0Aw9UlcbLywnOihDPDgGGysbJB25JCMv0zsbUzxH0qwn0Aw9UlIbszwfKlw9UBhK6ig5LDMvYihnPz25ZlcbUzxzLCIbTDxrHDgvZlIbcywXHBMnLigzPz3vYzxmGy29TzsbMCM9TihrOzsbIywnRzw5Kihn0B3jLlcb3AgLJAcbTyxKGBgfNihrOzsbJAgfPBJSGDgHLihjLC3bVBNnLihnHExmGC28GAw4GygzYzxnOBMvZC2aUienHBgWGDgHPCYbIzwzVCMuGCMv0CNLPBMCGysbMywLSzwqGChjVCg9Zzv9WyxLTzw50ic0GysbYzxrYEsb3AxrOihrOzsbZyw1LigjVDw5KCYbMywLSCYbPzgvUDgLJywXSEs4GuMvWB3j0CYbHBIbOB25LC3qGiM5VigTLEsb5zxqIihDOzw4GDgHPCYbTywnOAw5LigHHCYbUzxzLCIbHy3rLzcbHCYbHBIbHz2vUDcaTigLMihLVDsbHCMuGDgHLigH1BwfUig93BMvYlcb1C2uGD2fSBgv0x2XVz2LUigLUC3rLywqU','D2fSBgv0u2vZC2LVBLn0B3jL','ks4GvgHLia','veHjtIb0B29SicHVBMuGr0vulcbYzxr1CM5Lzcb1BM1VzgLMAwvKksWGquDftLqGteforsaOB25SEsb3AgvUigfJDgLUzYbHCYbHignVBM5Ly3rLzcbHz2vUDcb1BMrLCIbHigDYyw50ktOGuMvHzcb0AgLZigfJy291BNqNCYbIywXHBMnLigzYB20GDgHLiejVDgfUyxj5igjHy2TLBMqGkeDfvcaVyMfSyw5JzsKGDxnPBMCGDgHPCYbHz2vUDcDZihnLC3nPB24GlsbYzxf1AxjLCYb0AguGB3DUzxiGDg8GAgf2zsbHBhjLywr5ignSywLTzwqGDgHPCYbHz2vUDcaOC2vLigDLDf9WywLYAw5Nx2nVzguVCgfPCIKUifjLDhvYBNmGDgHLigfJy291BNqGywrKCMvZCYbHBMqGDg9Rzw4GyMfSyw5JzxmGzxHHy3rSEsbHCYb0AguGyMfJA2vUzcbYzxbVCNrZihrOzw0UiezVCIb0AguGD2fSBgv0ig93BMvYj3mGB3DUihzPzxCSihvZzsb0AguGD2fSBgv0xYOGDg9VBhmGywz0zxiGD2fSBgv0x2XVz2LUigLUC3rLywqU','ihDVDwXKigXLDcbPDcbHy3qGD2L0AgLUigXPBwL0CYb5B3uGC2v0lIa','C3rVCMu','iIb5B3uGBwvHBNqUienHBgWGCMvZB2X2zv90B2TLBIbVCIbSAxn0x3rVA2vUCYb0BYbNzxqGDgHLigfKzhjLC3mSihrOzw4Gy2fSBcb0AgLZigfNywLUihDPDgGGyhrVA2vUyc4','AwrLBNrPDhKUA2v5','l21VBMv5l3n3yxaVC3rHDhvZ','yM91BMrdAgfPBKLK','l3yXlW','yNvPBgrPBMC','zgvSzxrL','Bg9VA3vW','ihjLzNvZzxmGAxqGyMvMB3jLigfUEsbHBgXVD2XPC3qGAxmGy29UC3vSDgvKlIbbihbHDgGGBxvZDcbIzsbHyNnVBhv0zsWGBxvZDcbUB3qGyMvNAw4GiI8ViIWGBxvZDcbJyxjYEsbUBYbMCMfNBwvUDcWGBM8GCxvLCNKGyw1IAwD1Axr5igfUzcbUBYbLBxb0EsbZzwDTzw50lcbHBMqGzxzLCNKGC2vNBwvUDcbTDxn0ignVBNnPC3qGB25SEsbVzIb1BNjLC2vYDMvKignOyxjHy3rLCNmGB3iGD2vSBc1MB3jTzwqGjvHyigvZy2fWzxmGDgHHDcbKBYbUB3qGzgvJB2rLic0GDgHYB3vNAcbHBNKGBNvTyMvYig9MigXHEwvYCYaTihrVigeGC2vWyxjHDg9YicGIlYiSicjCiIKSigeGzNjHz21LBNqGBwfYA2vYicGIiYiPig9YigeGDhjHDMvYC2fSicGIlIiSiciUlIiPlIbuAguGCNvSzsbPCYb0Agf0ihrOzsbZDhjPBMCGDMfSAwrHDgvKigfUzcb0AguGC3rYAw5NihjLCxvLC3rLzcbTDxn0igjLie9orsbZDhjPBMC6igfUExrOAw5NihrOzsbvuKWGCgfYC2vYihDVDwXKihjLD3jPDguGAxmGCMvMDxnLzcbOzxjLihjHDgHLCIb0AgfUihzHBgLKyxrLzcbHCYbVBMuGCM91DguGyw5KihnLBNqGyxmGyw5VDgHLCI4','Dw5RBM93BG','swrLBNrPDhLnAxnZAw5Ns2v5rxjYB3i','l2fNzw50l2nVBNzLCNnHDgLVBNmVE2nVBNzLCNnHDgLVBKLKFs9TzxnZywDLCW','l3yXl2f1DgGVy2XPlW','vgHPCYbNCMfUDcbTyxKGB25SEsbZD2fWia','y2HHAw5uAwvYigLZicj3yxrJAciGzM9YignOywLUswqG','l3yXl3nWB3jLlW','ywDLBNqTAwrLBNrPDhK','vgHPCYbNCMfUDcbPCYbVBIbJAgfPBIa','y2f0y2G','ywn0Aw9U','D2fSBgv0x2fWAv93CML0zsbVBMX5igv2zxiGC2vUzhmGue9tvc9qvvqVuefuq0GVrevmrvrfic0GCMvMDxnPBMCGiKDfvciUifjLywrZigDVihrOCM91z2GGD2fSBgv0x2fWAv9NzxqSihDOAwnOigLZieDfvc1VBMX5igzVCIb0AguGAwrLBNrPy2fSihjLyxnVBIbPBIbYzxzLCNnLlG','D2f0y2G','q2fSBcbVBMuGB2yGDgHVC2uGCgfPzcbLBMrWB2LUDhmGyw5KihbHEsbMB3iGAxqGAw5ZAwrLihrOzsbIDwrNzxqGDgHLig93BMvYignVBw1PDhrLzcbVBI1JAgfPBI4GqsbYzxnWB25ZzsbTyxjRzwqGC2LTDwXHDgvKigLZihn5BNrOzxrPyYb0zxn0igrHDgeSigfUzcbZyxLZihnVlG','l2f1DgGVy2XPl3n0yxj0','yxnZzxrjBG','vgHLihrVA2vUigjLAw5Nifnpteq6igL0CYbJB250CMfJDcbHzgrYzxnZicGWEc4UlIKGB3iGAxrZienbsvaTmtKGyxnZzxqGCMvMlIborvzfuIbHihn5BwjVBcaTig11C3qGCMvZB2X2zsb0BYb0AguGB25LihrVA2vUihrOzsbNCMfUDcDZihn3yxaGDMvUDwuGCgLUCY4Gq2fSBcbYzxnVBhzLx3rVA2vUig9YigXPC3rFDg9Rzw5ZigLMihLVDsbVBMX5igHHDMuGysbZEw1IB2WU','l3vZzxjVChmVE3vZzxjpCeLKFq','Dg9mB3DLCKnHC2u','qxnRihrOzsbVD25LCIb0BYbYzs1PC3n1zsbVCIb1BMzYzwv6zsb0AguGz3jHBNqGAw4GqM90yw5HCNKU','Dw5RBM93BIb0B29Sici','l2fNzw50CZ9WywLYpq','lcbUB3qG','iIaTigL0igrPzcbot1qGz28GDgHYB3vNAc4G','Ag9ZDg5HBwu','C3DPDgnOqwnJB3vUDa','qsb3CML0zsbWyxrOigzYB20GDgHLie9Wzw5bueKGy29UDhjHy3qSiguUzY4GiI9UB3rPzMLJyxrPB25Zl3jLywqTywXSiIbVCIaIl2fJy291BNrZl2fJy18XiI4','u2vUDcaTihrYyw5Zywn0Aw9Uia','l2fNzw50l2nVBNzLCNnHDgLVBNm','l2fWAxmVy2fSBhmVCMvXDwLYzw1LBNrZl3TPzh0VzgvJBgLUzq','Dw5YzwfJAgfIBgu6ihvUAgfUzgXLzcbTzxrOB2qGiG','AwrLBNrPDhKUzhbHCgK','v2HHDcb0AguGywDLBNqGBgfUzsbTyxKGC3bLBMqGDw5HDhrLBMrLzdOGywn0AxzLigrLBgvNyxrPB25ZihDPDgGGDgHLAxiGyNvKz2v0igLUzM9YBwf0Aw9UlcbHBMqGyw55ig91Dhn0yw5KAw5Nig1HBMrHDgvZlG','l3vZzxjVChm','l2fJDgL2Axr5l3TLDMvUDeLKFq','u3rPBgWGD2fPDgLUzYbMB3iGEw91ihrVigvUDgvYignVzguG','C2f2zwrbDa','lIbzB3uGy2HVC2uGDg8GC3rVCcb3ywL0Aw5NigHLCMuUifrOzsbYzxf1zxn0igLZifnusuXmieXjvKuGAw4GEw91CIbICM93C2vYigfUzcbJyw4GC3rPBgWGyMuGC2LNBMvKic0GBM90AgLUzYb3yxmGy2fUy2vSBgvKig9UihrOzsbcB3rHBMfYEsbZAwrLlIbdywXSigjVDgfUyxj5x3DHAxqGDg8GCMvQB2LUigL0lcbVCIbPz25VCMuGAxqGyw5KigL0igv4CgLYzxmGB24GAxrZig93BI4Grg8GtK9uignHBgWGD2fSBgv0x3nLBMqGywDHAw46ihrOyxqGD291BgqGCgfYAYbHifnfq09orcbZAwDUihjLCxvLC3qGywDHAw5ZDcb0AguGC2fTzsbPBNrLBNqSigfUzcbZAwDUAw5NigjVDgGGD291BgqGC2vUzcb0D2LJzs4','vgHLihbHAwqGDgHPCMqTCgfYDhKGqvbjigvUzhbVAw50CYb0AgLZigfNzw50ig1HEsbJywXSig9UigeGy2HHAw4SigvHy2GGD2L0AcbPDhmGBgL2zsbWCMLJzsbHBMqGDgHPCYbHz2vUDcDZihjLBwfPBMLUzYbIDwrNzxqUifjLywrZig9UBhKSigfUzcbZCgvUzhmGBM90AgLUzY4','l3nVBgfUys9Tyw5KyxrLCW','tM90igXVz2DLzcbPBIaTihj1BIb3ywXSzxrFBg9NAw4GzMLYC3qU','ls1OzwXW','l2fJDgL2Axr5l2fUy2HVCG','zMfPBgvKihrVignSzwfYihrOzsb3ywXSzxqGC2vZC2LVBIbMCM9Tigv2zxj5igjHy2TLBMq','p2nOywLUswq9','uMv0CNKGB25Jzsb0AguGyMfJA2vUzcbPCYbYzwfJAgfIBguUie5VDgHPBMCGBg9JywWGAxmGD3jVBMCU','zgvYAxzLzcbMCM9TihrOzsbJB25Uzwn0Aw5NignSAwvUDcDZihjLCg9YDgvKig5HBwuGka','vgHHDcbJB25MAxjTyxrPB24GDg9Rzw4GAxmGBM90ihrOzsbVBMuGzM9Yz2v0igLZC3vLzcaTig5VDgHPBMCGD2fZigrLBgv0zwqU','D2fSBgv0u2vZC2LVBG','r3jHBNqGyNvKz2v0CYa','Cg9VBhm','igLZihDHDgnOlxrPzxiGkhjLywqTB25SEsKGlsbHihnLBMqGAgvYzsb3AwXSig5VDcbNBYb0AhjVDwDOlG','r0vuic9JAgfPBNmGzMfPBgvKlcbZBYb0AgLZigfNzw50ignHBM5VDcbJB25MAxjTihrOzsbNCMfUDcbJAgfPBIbPCYb1C2fIBguU','y2HHAw5jzca','lcbHBMqGDgHLigfJy291BNqGAxmGzNvUzgvKlG','y29UBMvJDgvKx25Vx2DYyw50','vgHPCYbNCMfUDcbHBgXVD3mGyxqGBw9ZDca','l2fNzw50lxDHBgXLDhm','igfUzcbJB21WBgv0zsbHy2nVDw50ihnLDhvWicHVBMuGC2LNBMf0DxjLksWGDgHLBIbYzxrYEs4','l3LPzwXKl3bVB2XZl3TPzh0VAgLZDg9YEq','l21VBMv5l3n3yxaVCxvVDgu','l3yXl21HBMrHDgvZ','l2fWChjVDMfSCY97zgLNzxn0Fs9YzwXHEq','zw5ZDxjLu2vZC2LVBG','l3nVBgfUys90CMfUC2fJDgLVBNmVE3nPz25HDhvYzx0','C3bLBNruB0rHDgu','ywnJB3vUDca','vgHLihjLCxvLC3qGzxHWAxjLzcbIzwzVCMuGAxqGD2fZihnPz25LzcaTig5VDgHPBMCGD2fZihnLBNqUifj1BIb3ywXSzxrFC2vUzcbHz2fPBI4','CMvXDwvZDeLK','Cg9SAwn5u2v0','l2fWAxmVBwfUzgf0zxmVBwLUzq','A2v5','qsbODw1HBI1YzwfKywjSzsbUyw1LigzVCIb0AgLZigDYyw50lcbLlMCUlcaIq2XHDwrLienVzguGB24GqMfZzsiU','y2XHAw1Lza','BgLZDf9Yzxf1zxn0CW','C2vUzfrVB2XmAxn0q2HHBMDLza','qMvHCMvYia','q09nue9tsvrfihrVB2WSifDbteXfvcbmqu5ficH0AguGAhvTyw4GB3DUzxiNCYbVD24GC2vUzcWGCMvXDwLYzxmGD2fSBgv0x2XVz2LUigzPCNn0ktOGu2vUzcb0B2TLBNmGzNjVBsb0AguGt1DorviNuYbpv04GywnJB3vUDc4GuMvZB2X2zxmGD2HPy2GGBgfUzsbJyw4Gywn0DwfSBhKGC2LNBIbuseLtigfJDgLVBIaOzgvZAwDUihnWzwmGWQC2ktOGAwyGDgHPCYbTywnOAw5LigHVBgrZigeGCgfPCMvKigfNzw50igLKzw50Axr5ihDPDgGGysbSAxzLig1HBMrHDguGDgHHDcbJB3zLCNmGAxqSie9oifrirsbtqu1fiefdq09vtLqGDgHPCYb3ywXSzxqGC2vZC2LVBIbPCYb1C2LUzYWGAxqGC2LNBNmGBg9JywXSEsb3AxrOihrOzsbHz2vUDcDZihnLC3nPB24GA2v5igfUzcbYzwXHExmGlsbUBYbICM93C2vYlcbUBYbODw1HBIbJBgLJAY4Gt3rOzxj3AxnLigL0ihbHCMTZigeGDhLWzwqGAw50zw50icHqt1nuic9ZAwDUlxjLCxvLC3rZksWGB3bLBNmGEw91CIbICM93C2vYihrVigfWChjVDMuGyw5KihnPz24GAxqGDgHLCMuSigfUzcbWB2XSCYb0BYbHihrLCM1PBMfSihjLC3vSDc4GvgHLihr3BYbJCMvKzw50AwfSCYbHCMuGsu5ervbftKrftLqGyw5KignHBIbWB2LUDcbHDcbKAwzMzxjLBNqGywnJB3vUDhmGlsb0Agf0igrPDMvYz2vUy2uGAxmGysbYzwnVCMrLzcbPBMnPzgvUDcWGC28GysbTyw5KyxrLig9UigeGreLgrKvsru5uigfJy291BNqGAxmGCMvMDxnLzcbMB3iGDgHLigfNzw50igXHBMuGzxzLBIb0Ag91z2GGB25Ligv4Axn0CYWGyw5KihrOzsbICM93C2vYigXHBMuGAxmGDxnLzcbPBNn0zwfKlcb3AxrOihrOzsbYzxn1BhqGC2f5Aw5NihDOEs4GrxzLCNKGCMvZDwX0ig5HBwvZihDOAwnOigXHBMuGAxqGDg9VAYaOygXHBMu6icjHz2vUDciGFcaIyNjVD3nLCIjGks4GqsbSB2nHBcbIywXHBMnLl2nOywLUlxrPzxiGy2HLy2SGCNvUCYbMAxjZDcbHCYbHignVDxj0zxn5ihrVigf2B2LKihDHC3rPBMCGysbICM93C2vYihrYAxaGB24GysbKB29TzwqGCMvXDwvZDcaTigL0igLZie5fvKvsihrOzsbHDxrOB3jPEMf0Aw9UoYb0AguGCMvHBcbJAgvJAYbPCYb0AguGyNvPBgqGDgHLigjYB3DZzxiGCgfNzsbKB2vZigfUzcWGyMvUzwf0Acb0Agf0lcbVBI1JAgfPBIbLBMzVCMnLBwvUDc4GygDHC01LDgHVzgaGyxbWBgLLCYb0BYb0AguGqLjpv1nfuIbSyw5Lig9UBhKGlsbZzwuGAxrZig93BIbKzxnJCMLWDgLVBIbMB3iGD2H5ihrOzsbHz2vUDcbSyw5LigfSD2f5CYbWyxLZig5HDgL2zs4','tM90igXVz2DLzcbPBIbHCYb0AguGD2fSBgv0ig93BMvYic0GCNvUihDHBgXLDf9SB2DPBIbMAxjZDcWGDgHLBIb0CNKGD2fSBgv0x3nPz25FCMvXDwvZDcbHz2fPBI4','l2fNzw50lxDHBgXLDhmVE2fNzw50swr9l2nHChm','CgfYC2vjBNq','qM90yw5HCNKGAxmGt1bftKLorYbjtIbuseuGqLjpv1nfuIbUB3CSig9UienVBM5Ly3rLzcbHz2vUDhmGD2L0Acb0AgLZignVzguGywXYzwfKEsbMAwXSzwqGAw4Glsb0AguGDxnLCIbVBMX5igHHCYb0BYbUyw1LihrOzsbHz2vUDcbHBMqGy29UzMLYBs4GvgvSBcb0AgvTihrVigXVB2SGzM9YihrOyxqGD2LUzg93oYbPzIbUB25LigfWCgvHCMvKlca','BgLUDxG','igv4y2vLzhmGAxqUie5VDgHPBMCGD2fZigj1AwX0ig9YihnLBNqUifvZzsbYzxf1zxn0x2fWChjVDMfSigLUC3rLywqU','BwLU','l3bHEs1ZAc90B3b1Cc9JB25MAxjT','vgHLienVBM5Ly3rLzefNzw50ihjVDYbVBIb0AguGB3DUzxiNCYbHy2nVDw50ihn0yxLZieXjvKuGlsb0AgLZig5LDMvYignHBgXZierftevursaVywDLBNrZl3TPzh0SihDOAwnOigLZig93BMvYlw9UBhKU','l2zHCM0VCg9ZAxrPB25Z','AgfZtgvNywn5swrLBNrPDhK','l3yXl2fZC2v0CY9YzxnVBhzLp2nOywLUswq9','qsbODw1HBI1YzwfKywjSzsbYzwfZB24GDgHLig93BMvYihDPBgWGC2vLlcbLlMCUicjqyxKGDgHLigLUDM9Py2uIlG','yxnZzxrszwy','EgrNlw9Wzw4','mZu2ody5n3bAB09fra','u3rPBgWGD2fPDgLUzYbVBIb5B3vYigjYB3DZzxiGywz0zxiGDgHLigXVy2fSihbVBgWGD2LUzg93ic0GAwyGEw91igfSCMvHzhKGC2LNBMvKlcbPDcbTyxKGC3rPBgWGy29TCgXLDgu7ignOzwnRiejVDgfUyxj5iefJDgL2Axr5lIbpDgHLCNDPC2uGCNvUihDHBgXLDf9Zzw5KigfNywLUlG','vgHPCYbNCMfUDcbOyxmGBM8GyNvKz2v0igzVCIa','z2v0x2fJy291BNq','z2v0qwnJB3vUDa','tM8GywDLBNqGAwrLBNrPDhKGzxHPC3rZig9UihrOAxmGBwfJAgLUzsb5zxqGlsbUB25LihDHCYbJCMvHDgvKigj5ignOzwnRAw5Nihn0yxr1CY4Gq2fSBcbNzxrFCgfPCMLUz19JB2rLigLMihLVDsb3yw50ihrVihnLDcbVBMuGDxaU','Bwv0ywrHDgfqyxrO','zgvSzxrLlwDLBMvYAwmTCgfZC3DVCMq','igLZihrOzsbZyw1LigXPBMSU','y2fSBefWAq','Bwf4','D3jVBMDFy2HHAw4','l21VBMv5l3jLy2vPDMu','lcbMB3vUzcbHigTLEsbMB3iG','BgLZDfjLCxvLC3rZ','rxzLCNKGC2LNBI1Yzxf1zxn0igTPBMqGDgHPCYbIywnRzw5Kign1CNjLBNrSEsbYzwDPC3rLCNmSigfUzcb3Agv0AgvYigvHy2GGAxmGyxzHAwXHyMXLihjPz2H0ig5VDY4Gq2fSBcb0AgLZigjLzM9Yzsb3ywXSzxrFC2LNBL9Yzxf1zxn0ihrVigXLyxjUihDOyxqGysbRAw5KihrHA2vZlG','Ag5KxW','ChjVCg9Zzv9ZD2fW','C3rKB3v0','qwnJB3vUDcbPCYbTAxnZAw5Nia','qxnRihrOzsbVD25LCIb0BYbNCMfUDcbIB3vUzgvKigfJy2vZCYb1BMrLCIbHihnWzwnPzMLJig1HBMrHDguGDMvYC2LVBI4GuMv0DxjUCYbHihnPz24TCMvXDwvZDcbvuKWU','BwfJB3mTA2v5y2HHAw4','l2jHBgfUy2uVAgLZDg9YEq','veHjtIb0B29SlcbxquXmrvqGteforsaOCMvXDwLYzxmGD2fSBgv0x2XVz2LUigzPCNn0ktOGq2fSBcbHigrVy3vTzw50zwqSie5ptI1HDxrOB3jPDhKGD3jPDguGzw5KCg9PBNqGAw4GqM90yw5HCNKNCYbMCM96zw4Gt3bLBKfqssbJB250CMfJDcWGyxv0AgvUDgLJyxrLzcbHCYb0AguGD2fSBgv0ig93BMvYic0GysbqtefjtIbtrvntsu9oifDssvrfifriqvqGtKvfrfmGtK8Gu0LhtKfuvvjflcbLlMCUignSywLTigfUigfNzw50lcbTyxjRigeGBM90AwzPy2f0Aw9UihjLywqSihjLBMfTzsbHBIbHy2nVDw50lcbLzgL0igeGCgf5lxnOigfSBg93BgLZDcWGBwfUywDLignVBNzLCNnHDgLVBNmUifbHDgGGkYbTzxrOB2qGyxjLihzHBgLKyxrLzcbHz2fPBNn0igeGBwfUAwzLC3qGz2vUzxjHDgvKigzYB20GDgHHDcbJB250CMfJDcaOyhbUCg0Gz2vUzxjHDgu6D3jPDguTCM91DgvZycKGqKvgt1jfigfUExrOAw5NihjLywnOzxmGDgHLig5LDhDVCMSUifrisvmGsvmGtK9uieeGr0vorvjjqYbHCgLFCg9ZDc4GrxzLCNKGCM91DguGD2HVC2uGt3bLBKfqssbYzxnWB25ZzsbPCYbHBIb1BNnPz25LzcbIDwLSzcaOvxnLCK9WqNvPBgqSierLBgvNyxrPB25cDwLSzcWGr3jHBNrcDwLSzcWGyw5Kigv2zxj5ig90AgvYigaQqNvPBgrGlxnOyxbLzcbYzxnWB25ZzsWGCgX1CYbHBNL0AgLUzYb0AguGy29UDhjHy3qGBwfYA3mGyhGTy2XPzw50lxnPz25LzdOGDhj1zwaPigLZigv4y2X1zgvKigzYB20GDgHLig1HBMLMzxn0igj5ignVBNn0CNvJDgLVBIWGyMvJyxvZzsbLDMvYEsbMDw5Klw1VDMLUzYbVCIbHDxrOB3jPDhKTz3jHBNrPBMCGywn0Aw9UigLUihrOAxmGyMfJA2vUzcbYzxr1CM5Zigv4ywn0BhKGB25Lig9MihrOB3nLigzVCIb0AguGB3DUzxiGDg8GC2LNBIaTigzYzwv6zsWGC2LNBMvYignOyw5NzxmSigD1yxjKAwfUigLUC3rHBgXZlcbNCMfUDcbJCMvHDgLVBIWGyw5KigfUExrOAw5Nig1VDMLUzYbMDw5KCYbHCMuGquXmihvUCMvHy2HHyMXLihrOCM91z2GGDgHPCYb0B29SlIbbBIbLEhbSAwnPDcbKzw55BgLZDcbHzgrPDgLVBMfSBhKGyMXVy2TZihrOzsbYzwXHEsbIB3vUzgfYEsaOyc91C2vYB3bZycbHBMqGAxrZignOywLUlxnWzwnPzMLJigvXDwL2ywXLBNrZksWGCM91DgvZihrOyxqGBwLUDcbVCIbSzwfRihnLC3nPB24Gy3jLzgvUDgLHBhmSigfUzcbYB3v0zxmGDgHHDcbKDxbSAwnHDguGD2fSBgv0x3nPz25FCMvXDwvZDcDZig93BIb0ExbLzc1PBNrLBNqGBgfUzs4GswyGysbYB3v0zsbPCYbUB3qGAw4GDgHLig1HBMLMzxn0lcbPDcbPCYbYzwz1C2vKigjLzM9Yzsb0AguGBMv0D29YAYbJywXSlcbUzxzLCIbZAwXLBNrSEsbHDhrLBxb0zwqUieDfvcbPCYbYzwz1C2vKigHLCMuGDg9Vic0GDxnLihDHBgXLDf9HCgLFz2v0igzVCIbYzwfKCY4','l2fWAxmVyNvKz2v0','Dg9Rzw5Z','igHHCYbZDgf0DxmGiG','yxnZzxrpDxq','l2fJy291BNqVBwLNCMf0Aw9Ul2nVBw1PDa','yxnpzG','l21HCMTLDhmVAg9SzgvYCY97y2HHAw5jzh0VE2fKzhjLC3n9','l2fWAxmVChjVDMLKzxjZl3TWCM92AwrLCKLKFs9LBMrWB2LUDhmVE2vUzhbVAw50swr9l2jSB2nRzwq','ls1SywjLBd1cB3rHBMfYEsbHz2vUDcbPzgvUDgL0Eq','v2fPDcbMB3iGDgHLig93BMvYihrVignSywLTihrOzsbJB2rLlIbezwzHDwX0ihrYDwuUifbHC3mGzMfSC2uGzM9YihrOzsbJB2rLigfSB25LlG','C3rYzwfTu291CMnL','ieLMia','yxjNDG','yMfJA2vUzf91BMf2ywLSywjSzq','sw4GqM90yw5HCNKSig9Wzw4Gq29UBMvJDgvKigfNzw50CYbHBMqGzw50zxiGDgHPCYbJB2rLlcb0AgvUigDPDMuGDgHLigfNzw50igeGBMfTzsaTig9Yig9Wzw4G','ywXYzwfKEs1VCgvUzwq','BMfTzq','rvznignOywLUigLKihrOzsb0B2TLBIbSAxzLCYbVBI4','l3nPz24TCMvXDwvZDhmVE2LKFs9ZDhjLyw0','y2HHAw5uAwvY','lcbZBYbUB3rOAw5NignHBIbHy3r1ywXSEsbIzsbZCgvUDcb1BMrLCIb0AgLZigDYyw50ihLLDcaTigv2zxj5igf0DgvTChqGD2LSBcbIzsbYzwz1C2vKlcbHBMqGCMv0CNLPBMCGy2fUBM90ignOyw5Nzsb0Agf0lIbjBNn0ywXSAw5NigL0igLZigfUigf1DgHVCML0EsbJAgfUz2uGB25SEsb0AguGB3DUzxiGy2fUihnPz24UieHHDMuGDgHLBsbVCgvUia','BwLZC2LUz01VzhvSzq','y2HHAw5jzcbPCYbYzxf1AxjLza','tM8GywDLBNqGAwrLBNrPDhKGAxmGC3rVCMvKig9UihrOAxmGBwfJAgLUzsaTig5VDgHPBMCGDg8GzgvSzxrLlG','C3bLBNruB0rHDguGCMvWB3j0CYbYzw1HAw5PBMCG','l2fWAxmVC3bLBMq','AxnbCNjHEq','qw55igDYyw50ihn0yxLZigfJDgL2zsb1BNrPBcb0AguGB3DUzxiGCMv2B2TLCYbPDcbPBIbcB3rHBMfYEs4','DhjPBq','yxv0Ag9YAxPLza','zgvMyxvSDa','CMvNzw5LCMf0zv9WywLYAw5Nx2nVzgu','Bwf4u2XPChbHz2vcChm','ywjVCNq','vgHPCYbTywnOAw5LigHHCYbHigTLEsWGyNv0ig5ViejVDgfUyxj5igfJy291BNqGAgfZignSywLTzwqGAxqU','Dgv4Da','BgLZDf9JAgfPBNm','AgvHCNrIzwf0txm','ywnJB3vUDefKzhjLC3m','BM9Uzq','ihjLBwfPBMLUzYbVzIb0AguGz3jHBNqNCYbIDwrNzxq','z2v0r2fZtwv0Ag9KCW','igv4y2vLzhmGAxqUie5VDgHPBMCGD2fZigj1AwX0ig9YihnLBNqUifvZzsbYzxf1zxn0x2fWChjVDMfSihrVigfZAYb0AguGB3DUzxiGzM9YihrOAxmGC3bLy2LMAwmGC3DHCc4','l2fNzw50CY97ywDLBNrjzh0VBwfUzgf0zxm','q09nue9tsvrfihrVB2WSiefhru5uieXbtKu6iefZAYb0AguGB3DUzxiGDg8Gz3jHBNqGDgHPCYbHz2vUDcbIB3vUzgvKigfJy2vZCYb1BMrLCIbHihnWzwnPzMLJig1HBMrHDguGlsaOue9tvcaVC2LNBI1Yzxf1zxn0CYb3AxrOigTPBMq6igrLBgvNyxrPB24Uz3jHBNqPlIbuAguGB3DUzxiGyxbWCM92zxmGyNKGCMv2Awv3Aw5NigfUzcbZAwDUAw5Nigf0ihrOzsbYzxr1CM5LzcbGl3nPz25Gifvstc4GuMv0DxjUCYb0AguGvvjmigfUzcbYzxf1zxn0ieLeoYb0AguGywDLBNqGC2HVDwXKihrOzw4GD2fPDcbMB3iGDgHLig93BMvYihzLCMrPy3qGDMLHigjVDgfUyxj5x3DHAxqGB3iGyNKGCg9SBgLUzYb0AguGCMv0DxjUzwqGvvjmlIbvBMXPA2uGCMvXDwvZDf9HChbYB3zHBcWGD2HPy2GGBMfTzxmGC3bLy2LMAwmGy2fSBhmGDgHLig93BMvYig11C3qGyxbWCM92zsbKAxjLy3rSEsWGDgHPCYbZDxjMywnLCYbHihbYzs1KCMfMDgvKig1HBMrHDguGDMvYC2LVBJOGDgHLig93BMvYihnLzxmGD2HHDcbKzwXLz2f0Aw9UlMDYyw50ig9MzMvYCYbHBMqGyxbWCM92zxmGDgHLihrOAw5NigL0C2vSzIWGBM90igfUigfKlwHVyYbYzxf1zxn0lIbuAguGBwfUzgf0zsbjrcbHBMqGDMvYC2LVBIbPzgvUDgLMEsb3AgLJAcbLEgLZDgLUzYWGChvIBgLZAgvKig1HBMrHDguGDgHPCYbNCMfUDcbPCYb1BMXVy2TPBMCGzM9YlG','C3vWChjLC3nLza','CgfYC2u','qsb0ywiGC2HVDwXKigjLig9Wzw4','l2fWAxmVBwfUzgf0zxmVE2fNzw50swr9','vgHPCYbHz2vUDcDZigDYyw50igLZia','vgHLihDHBgXLDcbZzxnZAw9UigHHCYbLBMrLzc4Gq2fSBcb3ywXSzxrFBg9NAw4GDg8GCMvJB25Uzwn0igfUzcbYzxrYEsb3ywXSzxrFC3rHDhvZihrVigXLyxjUihrOzsbVDxrJB21LlG','oJmWmde','ywnJB3vUDeLKigLZihjLCxvPCMvKic0GCgfZCYbVBMuGB2yGDgHLigLKCYbhrvqGl2fJy291BNrZihjLCg9YDhmU','ywnJB3vUDeLK','igLZihDHDgnOlxrPzxi6ihjLywqTB25SEsWGD2L0AcbUBYbIDw5KBgvYigfUzcbUBYbHDxrOB3jPDhKU','zNvUzgLUzW','zw52','AgfUzgXLlq','Dg9Rzw5tEw1IB2W','l3nWB3jLl3rHC2TZl3TPzh0VzxzLBNrZ','ChjPDMf0zuTLEq','BwfW','yMfJA2vUzcbZDg9Yzs1IywnRzwqGkeDfvcaVyMfSyw5JzsbTywTLCYb6zxjVigv4DgvYBMfSignHBgXZksaTig1HEsbSywCGDgHLignOywLUigj5igeGCMvMCMvZAcbJEwnSzq','vw5Uyw1LzcbHz2vUDa','rgvSzxrLzcb0AguGywDLBNqGA2v5igzYB20GDgHPCYbTywnOAw5LlIbjDcbJyw4GBM8GBg9Uz2vYihnPz24Gyw55DgHPBMCUiefUEsbNCMfUDcb0AguGB3DUzxiGC3rPBgWGAgfZig9UigzPBguGzM9YigL0CYbVBgqGywrKCMvZCYbYzw1HAw5ZihvUDgLSihrOzxKGCMv2B2TLigL0igLUiejVDgfUyxj5lG','l2fWAxmVy2fSBhmVzNjLzq','DMfSDwu','zMfPBgvKihrVigrLBgv0zsb0AguGywDLBNqGA2v5igzYB20GzxzLCNKGyMfJA2vUza','ChjVzMLSzq','veHjtIb0B29SicHVBMuGr0vulcbYzxr1CM5Lzcb1BM1VzgLMAwvKksWGquDftLqGtefortOGDgHLie9orsbHy2nVDw50ihrOAxmGywDLBNqGAxmGyM91BMqGDg8GlsbPDhmGywrKCMvZCYbHBMqGygrLCgXVEw1LBNrtDgf0DxnGlcbVChrPB25HBgX5igzVCIbHihnWzwnPzMLJignOywLUicHhrvqGl2fJy291BNqPlIbtAw5NDwXHCIWGBM90igeGBgLZDdOGyw4GywDLBNqGC2vLCYbVBMX5igL0CYbVD24GyM91BMqGywnJB3vUDcWGBMv2zxiGDgHLig93BMvYj3mGB3rOzxjZlG','uMvJAxbPzw50igfKzhjLC3mGkdb4lI4Uks4','tK9useLorYbTB3zLzdOGBM8G','CMvTywLUAw5N','D2fSBgv0x2XVz291Da','BM8GywDLBNqGAwrLBNrPDhKGEwv0ic0Gy2fSBcbLBNn1CMuOksaOB3iGDgHLigDLDf9PzgvUDgL0Esb0B29SksbMAxjZDa','CgXHDgzVCM0','ic0Gy2fSBcbIB3rHBMfYEv93ywL0ihrVigTLzxaGD2fPDgLUzYWGB3iGCMvNzw5LCMf0zv9WywLYAw5Nx2nVzguGzM9YigeGzNjLC2GGB25LlG','q09nue9tsvrfihrVB2WSiefhru5uieXbtKuGkg9UBhKGD2HLBIbHy3rPBMCGyxmGysbJB25Uzwn0zwqGywDLBNqGDw5KzxiGysbNCMfUDcaTihrOzsbODw1HBIbVD25LCIDZig93BIbZzw5KigLZihDHBgXLDf9Zzw5KlcbHzNrLCIb3ywXSzxrFBg9NAw4PoIbcDwLSzcbHBMqGCMvSyxKGysbWyxLTzw50ihvUzgvYihrOAxmGywDLBNqNCYbpv04Gz3jHBNqUifjLywrZihrOzsbNCMfUDcDZigjVDw5KCYbHBMqGCgvYBwLZC2LVBKLKigzYB20GDgHLigjHy2TLBMqGkeDfvcaVywDLBNrZl21LksbgsvjtvdOGD2HLBIb0AgvYzsbPCYbUBYbNCMfUDcWGDgHLigDYyw50igLZig5VDcbHy3rPDMuSigL0igLZig9UigeGzgLMzMvYzw50ignOywLUlcbVCIb0AguGyw1VDw50ihDVDwXKigv4y2vLzcbPDhmGCMvTywLUAw5Nigj1zgDLDcbVCIbWzxiTywn0Aw9UignHCcWGDgHPCYbYzwz1C2vZihDPDgGGDgHLigjHy2TLBMqNCYbVD24GBNvTyMvYCYbHBMqGCg9PBNrZigf0ihjLCxvLC3rFyxbWCM92ywWGAw5ZDgvHzcbVzIbHDhrLBxb0Aw5NigfUExrOAw5Nic0GAxqGBMv2zxiGChjLDgvUzhmGDg8GC2vUzcbHihbHEw1LBNqGAxqGzgLKig5VDcbZzw5KlIbpDgHLCNDPC2uGAxqGyNvPBgrZihrOzsbKzwXLz2f0zwqGywn0Aw9UicHqt1nuic9KzwXLz2f0Aw9UCY97zgvSzwDHDgLVBKLKFs9Hy3rPB25Zic0GDgHLie9otfKGyNvPBgqGBgfUzsbHihnLC3nPB24TA2v5ihnPz25HDhvYzsbJyw4GDMfSAwrHDgu7ig5LDMvYihrOzsbVD25LCI1Syw5Lic9TB25LEs9Zzw5Kl2j1AwXKksbHz2fPBNn0ifrisvmGywDLBNqNCYbVD24Gz3jHBNqGAwqSihrOzw4GCMvSyxLZigL0ihnPz25Lzcb3AxrOihrOzsbNCMfUDcDZig93BIbZzxnZAw9UigTLEsaOue9tvcaVDxnLCM9WCYKSihjLDhvYBMLUzYb0AguGyMfJA2vUzcDZihjLywWGCMvSyxKGCMvZDwX0lIbuAgLZignSAwvUDc1ZAwrLigjVDw5KCYbJAgvJAYbPCYbHignVBNzLBMLLBMnLlcbUzxzLCIb0AguGy2HLy2SGlsb0AguGy2HHAw4GAxmGD2HHDcbHy3r1ywXSEsbLBMzVCMnLCYb0AguGz3jHBNqUifrOzsbYzxn1BhqGA2vLChmGDgHYzwuGB3v0y29TzxmGC3rYAwn0BhKGyxbHCNq6ihnLDhrSzwq6Dhj1zsbxsvriigbZCgvUDgaGBwvHBNmGAxqGBgfUzgvKoYbZzxr0BgvKoNrYDwuGD2L0AcbGC3bLBNq6ig51BgXGig1Lyw5ZigL0ihjLywnOzwqGysb0zxjTAw5HBcbgquLmvvjfigfUzcbUB3rOAw5Nig1VDMvKicHUzxzLCIbYzxbVCNqGDgHHDcbHCYbHihbHEw1LBNqPoYbZzxr0BgvKoMzHBhnLigfSD2f5CYbJyxjYAwvZigfUig9WswqSig1Lyw5PBMCGC3rPBgWGCgvUzgLUzYbVCIb0AguGzM9SBg93lxvWihjLywqGzMfPBgvKigfMDgvYigeGC3vJy2vZC2z1BcbYzwXHEsaTignHBgWGyM90yw5HCNLFD2fPDcb0BYbYzwPVAw4GAxqGyw5Kig5LDMvYihjLC2vUzc4GswyGDgHPCYbYzwz1C2vZlcbVCIb0AguGCMvSyxKGzMfPBhmSignHBgWGzgLHz25VC2uGyMvMB3jLihjLDhj5Aw5Nic0GysbYzxbLyxqGD2L0Acb0AguGC2fTzsbIB3vUzhmGzMfPBhmGAwrLBNrPy2fSBhKU','B2jQzwn0','C2vUzfjLCxvLC3q','revmrvrf','v2HHDcbcB3rHBMfYEsbZyxLZigfIB3v0ihrOAxmGywDLBNq6igL0CYbPzgvUDgL0EsWGDgHLigfJy291BNqGAxqGAxmGyM91BMqGDg8SigfUzcbPDhmGBgL2zsbNCMfUDcWGB3iGyw4GAg9Uzxn0ig51BgWGD2HLBIbPDcbOyxmGBM9Uzs4','tM90igXVz2DLzcbPBIbHCYb0AguGD2fSBgv0ig93BMvYic0GCNvUihDHBgXLDf9SB2DPBIbMAxjZDcWGDgHLBIb0CNKGywDHAw4U','lIboB3rOAw5NihDHCYbIDwLSDcbVCIbZzw50lIbvC2uGCMvXDwvZDf9HChbYB3zHBcbPzIb0AgLZihbHEw1LBNqGz2vUDwLUzwX5ig5LzwrZihrOyxqGy2HHAw4U','zwXPy2L0','BgLZDf9ZAwDUx2TPBMrZ','C2XLzxa','x21LDge','BgfZDc1RBM93BG','jhrLEhqGpsbBq29UC29Szv06oKLUlLjLywruB0vUzcGP','mtaXntq0ufLNzeXq','l21HCMTLDhbSywnLl2PVyNm','q29UBMvJDgvKihDPDgGGyw4Gywn0AxzLigDYyw50ig9Uia','zgf0yq','lIboB3rOAw5NihDHCYbIDwLSDcbVCIbZzw50lIbbigDYyw50j3mGywXSB3DHBMnLlcbTzxrLCIbHBMqGC2vZC2LVBIbHCMuGCgvYlwnOywLUihn0B3jHz2uGB24GB25LigfJy291BNqSihnVihrOzxjLigLZig5VDgHPBMCGB24Gyw5VDgHLCIbJAgfPBIbMB3iGAxqGDg8GyM91BMqUifvZzsbYzxf1zxn0x2fWChjVDMfSigLMihrOAxmGC3DHCcbNzw51Aw5LBhKGBMvLzhmGDgHHDcbJAgfPBI4','qsbhrvqGCgf0AcbMCM9TihrOzsbpCgvUqvbjignVBNrYywn0lcbLlMCUiciVyMfSyw5JzsiGB3iGiI9Hy2nVDw50CY9Hy2nFmsiUie1HEsbPBMnSDwrLigeGCxvLCNKGC3rYAw5NlG','l3LPzwXKl3bVB2XZl3TPzh0','C2HVCNrSAxn0','l2fJy291BNqVCM9ZDgvY','t3bLBIb0AgLZigXPBMS','l3nWB3jLl3rVB2XZ','lcbIDxqGDgHLig93BMvYigHHCYbUB3qGz3jHBNrLzcb0AgLZigfNzw50igfUExrOAw5NihLLDc4','u2vUzcbZDgf0Dxm6ia','rxzLCNKGy2HHAw4GDgHPCYbIywnRzw5KihnLCNzLCYWGzwfJAcb3AxrOihrOzsb0AwvYihrOyxqGzgvJAwrLCYb3Agf0igL0ignHBIbKBY4','ieHpv0vwrviSihrOAxmGywnJB3vUDcbPCYbTAxnZAw5Nia','vgHPCYbYzxnWB25ZzsbPCYbtwu5usevusumGvevtvcbeqvrblcbUB3qGysbYzwfSiefqssbYzxn1Bhq','zgvJBgLUzvjLyxnVBG','l21HCMTLDhbSywnLl21HBMfNzwqVy29UBMvJDgLVBG','ntK5mda1nLLbwhjfvq','l3nWB3jLl3rHC2TZl3TPzh0Vy2fUy2vS','Ahr0CdO','q09nue9tsvrfihrVB2WSiefhru5uieXbtKu6ifbHAxiGDgHPCYbHz2vUDcb3AxrOihrOzsbcB3rHBMfYEsbIywnRzw5KoIbZAwDUigeGChjVB2yGB3zLCIb0AguGCgfPCMLUzYbJB2rLigfUzcb0Aw1LC3rHBxaSihnLBMqGAxqGDg8GDgHLigjHy2TLBMqSigfUzcbYzwnLAxzLignVBMzPCM1HDgLVBI4Gqwz0zxiGDgHPCYbJB21WBgv0zxmSihrOzsbVD25LCIbJyw4Gy2XHAw0GDgHLihbHAxjPBMCGyNKGzw50zxjPBMCGDgHLignVzguGyw5KigDPDMLUzYb0AguGywDLBNqGysbUyw1LigLUihrOzsbcB3rHBMfYEsbHChaUifrOzsbHz2vUDcbZAwDUCYb3AxrOigL0CYbWCML2yxrLigTLEsaOBMv2zxiGC2vUDcb0BYb0AguGC2vYDMvYksWGC28GysbJyxb0DxjLzcbJB2rLigfSB25LigLZihDVCNrOBgvZCY4GvgHPCYbPCYb3Agf0igXLDhmGveHjuYbnqunisu5figfJDcbHCYbHignVBM5Ly3rLzcbHz2vUDcb1BMrLCIbHigDYyw50ic0GBMv2zxiGysbZDwjZDgL0DxrLigzVCIb0AguGD2fSBgv0ig93BMvYj3mGB3DUigXVz2LUicH3ywXSzxrFBg9NAw4PlG','l3yXl2f1DgGVC2vZC2LVBG','q2HHAw4GsuqGDg8GC3DHCcbVBIaTig11C3qGBwf0y2GGDgHLigDYyw50j3mGB3DUignOywLUlG','ywXS','u3vNz2vZDcbHigjVDw5KzwqGBwfUzgf0zsbMB3iGzwfJAcbJB25Uzwn0zwqGywDLBNqGDgHHDcbOyxmGBM9Uzs4GuhjVCg9ZzxmGB25SEtSGAxqGy2fUBM90igDYyw50lG','C29Tzq','qwnJB3vUDcbPzcb0BYbZy29Wzsb0AguGyw5ZD2vYihrVlIbpChrPB25HBc4','CMvZzxq','vgHLihrVA2vUihrVihnLBMq6igL0CYbJB250CMfJDcbHzgrYzxnZicGWEc4UlIKGB3iGAxrZienbsvaTmtKGyxnZzxqGCMvMigzYB20GD2fSBgv0x3bVCNrMB2XPBY4GtKvwrviGysbZEw1IB2WGlsaIvvneqYiGAxmGysbSywjLBcbHignVBNrYywn0ihbPy2TLzcbMB3iGAxrZzwXMigfUzcb0D28Gy29UDhjHy3rZig9Uig9UzsbJAgfPBIbJyw4GC2HHCMuGAxqUienHBgWGCMvZB2X2zv90B2TLBIbPzIb5B3uGB25SEsbOyxzLigeGC3LTyM9SlG','vgHLihzLCNnPB24GBNvTyMvYig9MihrOzsbTyw5KyxrLicHHihbVC2L0AxzLigLUDgvNzxiPlG','zxHWBgLJAxq','AgvHzgvYCW','z2fZtwv0Ag9K','y2XVC2u','BM9FA2v5','AgfUzgXL','Dg9Rzw5FBM90x3zLBNvLx3rVA2vU','BwvZC2fNzq','y2fUBM90igfKB3b0ihbYB2zPBguGiG','zgvUAwvK','l2f1DgGVC2vZC2LVBG','Dg9Rzw5FBM90x2j1zgDLDgvK','tg9JywWGzMLSzsaO','rvznignOywLUigLKlcbLlMCUiduWndiWmdiUie9WDgLVBMfSlG','zMLSzs1MywXSyMfJAW','Dw5RBM93BL9Oyw5KBgu','lcbVCIbHC2SGDgHLig93BMvYihrVihjLlwDYyw50ig9UigeGzNvUzgvKignOywLUlG','y2HHAw5jzcWGChjVDMLKzxjjzcWGzw5KCg9PBNrjzcWGyw5KihvYBcbHCMuGywXSihjLCxvPCMvK','vw5RBM93BIbJB21Tyw5Kici','l3bHEs1ZAc9Hy2nVDw50CY97ywnJB3vUDeLKFs9HBgXVD2XPC3qVE2rVBwfPBN0','q29UDhjHy3qGywrKCMvZCYaOmhGUlI4Pig9YienbsvaTmtKGyxnZzxqGCMvMlG','l2fNzw50CY9Tzq','qM90yw5HCNKGtunq','A2LUza','CgfKrw5K','yxbWBhK','vgHLig9UzsbHy2nVDw50ihrOAxmGywDLBNqGAxmGyM91BMqGDg8SihDPDgGGAxrZigfKzhjLC3mGyw5KigrLCgXVEw1LBNqGC3rHDhvZlG','l2fJy291BNqVCg9SAwnPzxm','AgfZAa','zgLHz25VC2u','yMfJA2vUza','D2HHDf9TyxLFAv9KBW','DxrMoa','D2fSBgv0x21HBMrHDgvZ','C2vUze5VDgLMAwnHDgLVBG','qw1VDw50igLUierju1bmqvKGDw5PDhmGkguUzY4GmtiUnsbMB3iGmtiUnsbvu0rdksaTig5LDMvYihDLAsWGBMv2zxiGysbOzxGGC3rYAw5NlG','C2XPy2u','l3yXl2fJy291BNrZ','u2LNBIb0AguGCgfPCMLUzYbJB2rLigfUzcbZDwjTAxqGDgHLihbYB29MlcbJB21WBgv0Aw5NihrOAxmGywDLBNqNCYbOywXMig9MigeGCgfPCMLUzY4','l2fWAxmVBwfUzgf0zxmVE2fNzw50swr9l3nWzw5K','veHjtIb0B29SicHVBMuGr0vulcbYzxr1CM5Lzcb1BM1VzgLMAwvKktOGDgHLihbHAwqGqvbjigvUzhbVAw50CYb0AgLZigfNzw50ig1HEsbJywXSig9UigeGy2HHAw4SihDPDgGGzwfJAcbLBMrWB2LUDcDZigXPDMuGChjPy2uGyw5KihrOAxmGywDLBNqNCYbYzw1HAw5PBMCGyNvKz2v0lIbszwfJAgfIAwXPDhKGAgfZihr3BYbPBMrLCgvUzgvUDcbSyxLLCNmGyw5KigfUigvUzhbVAw50ig5LzwrZiejpveG6igL0ig11C3qGBM90igjLigbIBg9JA2vKycbHy2nVDw50lxDPzguGyNKGDgHLig93BMvYlcbHBMqGAxqGBxvZDcbIzsbPBIb0AgLZigfNzw50j3mGB3DUig1HBMrHDguGC2nVCguUierVzxmGtK9uignHBgWGyw4Gzw5KCg9PBNqGB3iGC3bLBMqGyw55DgHPBMCG4OAsignHBgXFyxbPlIbqCMLJzxmGy29TzsbMCM9TigvHy2GGChjVDMLKzxiSig5VDcbMCM9TiejVDgfUyxj5lG','oYb0AguGyMfJA2vUzcbYzxbVCNrZia','qM90yw5HCNLbCgLdBgLLBNq','ksbIDxqGBM8GyMfJA2vUzcbOB2XKCYbPDhmGChjPDMf0zsbRzxK','u3rLCcaYig9Midi6igfJDhvHBgX5igrLBgv0zsb0AguGywDLBNqGA2v5igzYB20GDgHPCYbTywnOAw5LlcbNAxzLBIb0AguGDg9Rzw4GzNjVBsbMB3jNzxqU','Dw5HDMfPBgfIBgu6ia','uMv0CNKGzgLHz25VC2uGyMvMB3jLihnWzw5KAw5NlG','l3nWB3jLl3rHC2TZ','l21HCMTLDhbSywnLl2fNzw50CY9LDMfSDwf0B3i','AxnbDMfPBgfIBgu','y2HHAw5lzxK','l2jHBgfUy2uVyxnZzxrZl3THC3nLDfjLzN0VAgLZDg9YEq','zMLUzc1Nzw5LCMLJlxbHC3n3B3jK','t3DUzxiGzgvUAwvKihrOzsbSB2DPBIbYzxf1zxn0','zM9Yz2v0','tM8GB3bLBIbOyw5KBguGiG','CMvHza','A2v5CgfPCKzHy3rVCNK','ChvZAa','vgHPCYbNCMfUDcbOyxmG','l2fWAxmVBwfUzgf0zxmVE2fNzw50swr9l3jLC3vTzq','uMvHzcbHBNKGzg9JDw1LBNrLzcbhrvqGzw5KCg9PBNqGAw4GDgHLigzYB3PLBIbpCgvUqvbjignVBNrYywn0igfZihrOzsbVD25LCI4Gr0vulw9UBhKSigrLBgLIzxjHDgvSEtOGDgHPCYbZCgvJAwzPyYb0B29SigHHCYbUBYb3CML0zsbWyxrOic0GC2vLihDHBgXLDf9HCgLFD3jPDguGyw5KihDHBgXLDf9ZAwDUx3jLCxvLC3qGzM9YihrOB3nLlG','ienVDwXKig5VDcbVCgvUigeGyNjVD3nLCIbHDxrVBwf0AwnHBgX5ic0GB3bLBIb0AgLZifvstcb0BYbHDxrOB3jPEMu6ia','igLZigXVBMDLCIb0AgfUidq4ignOyxjHy3rLCNmU','BgfUzq','CMvJAxbPzw50','DxnLCKnVzgu','l2fNzw50lxDHBgXLDhmVE2fNzw50swr9l2fJDgL2Axr5','l2fWAxmVy2fSBhmVCMvSyxKVE2LKFq','v2fPDgLUzYbMB3iGEw91ihrVigfWChjVDMuUie9Wzw4G','igv4Axn0CYbIDxqGy291BgqGBM90igjLihjLywqGyxmGywDLBNqGAwrLBNrPDhKGBwv0ywrHDgeUiejHy2SGAxqGDxaGyw5KihjLBw92zsbPDcaOB3iGCNvUicjIB3rHBMfYEs1Ty3aGzM9Yz2v0iIKGyMvMB3jLignVBNrPBNvPBMCGlsbYzwz1C2LUzYb0BYbZAwXLBNrSEsbVDMvYD3jPDguGAxqGD2L0AcbHig5LDYbPzgvUDgL0Es4','lIbfDMvYEsb3ywXSzxrFkIb0B29SlcbPBMnSDwrPBMCGD2fSBgv0x3nLBMqNCYbVD24GC2fTzs1Hy2nVDw50ignOzwnRlcbUB3CGDxnLCYb0AgLZigfJy291BNqU','DgvYBwLUywW','vgHLihjLBgf5ihn1y2nLzwrLzdSGB25SEsb0AguGzM9SBg93lxvWihn0yxr1CYbYzwfKigzHAwXLzc4Grg8GtK9uihjLC2vUzc4','DxnLCK9W','C3rYzwfTicHVCIbWB2XSAw5NigfZigzHBgXIywnRkq','zw5KCg9PBNrjza','igLUiejVDgfUyxj5ihvUzgvYienVBM5Ly3rLzcbHz2vUDhmGka','qxnRihrOzsbVD25LCIb0BYbJCMvHDguGysbNCMfUDcbMB3iGDgHPCYbHz2vUDcbPBIbcB3rHBMfYEsWGB3iGDxnLihjLCxvLC3rFyxbWCM92ywWGzM9YigeGB25Llw9MzIbHy3rPB24U','l2f1DgGVy2XPl3TYzxf1zxn0swr9l3n0CMvHBq','rgvSzxrLzcb0AguGywDLBNqGA2v5igzYB20GDgHPCYbTywnOAw5LlIbjDcbJyw4GBM8GBg9Uz2vYihnPz24Gyw55DgHPBMCGlsbPBMnSDwrPBMCGzM9YigfUEsbNCMfUDcbHiejVDgfUyxj5igfJy291BNqGC3rPBgWGAgfZig9UigzPBguGzM9YigL0CYbVBgqGywrKCMvZCY4GvgHHDcbNCMfUDcbPDhnLBgyGC3rPBgWGzxHPC3rZihvUDgLSigL0CYbVD25LCIbYzxzVA2vZigL0igLUiejVDgfUyxj5oYb0AgLZignVBw1HBMqGB25SEsbYzw1VDMvZihrOzsbRzxKSihDOAwnOigLZihrOzsbVBMX5ihrOAw5NihrOAxmGBwfJAgLUzsbLDMvYigHLBgqU','l3bHEs1ZAc9Hy2nVDw50CY97ywnJB3vUDeLKFs9Zzxr0Aw5NCW','z3jHBNqGy2fWCYbHihnPBMDSzsbHy3rPB24GyxqG','C2LNBMfS','Cg9SBeLUDgvYDMfStxm','ic0GAxrZihnLC3nPB24GCgLUCYb0AguGC29Szcb0B2TLBIbLEgfJDgX5lcbHBMqGyw55ig90AgvYihDVDwXKigjLihjLzNvZzwqGAw4GDMfSAwrHDgLVBI4GtM90AgLUzYb3yxmGyNvPBhqGB3iGC2vUDc4GvxnLihjLCxvLC3rFyxbWCM92ywWGAw5ZDgvHzc4','BwLZC2LUzW','l3yXl2nOywLUCW','zNvSzMLSBgvK','B2yGDgHLigj1zgDLDgvKihrVA2vU','ufvu','u2vUzcb0B2TLBNmGzNjVBsb0AguGB3DUzxiNCYbVD24GywnJB3vUDcWGCMvZB2X2Aw5NigvPDgHLCIb0AguGDw5HDhrLBMrLzcbHz2vUDcbSyw5Lig9YigeGC2LNBMf0DxjLihrOzsbVD25LCIbTywTLCYbPBIb0AgvPCIbVD24GyNjVD3nLCI4','t3b0Aw9UywWUieHVDYb0BYbWyxKGDgHLig5LDhDVCMSGzMvLlIbpBwL0ihrVihvZzsb0AguGy2HHAw4GzgvMyxvSDc4Gq2fSBcbhrvqGl2DHCY9TzxrOB2rZihzPysb3ywXSzxrFyxbPx2DLDcb0BYbZzwuGD2HPy2GGBwv0Ag9KCYbHCMuGywn0DwfSBhKGyxzHAwXHyMXLig9UihrOAxmGy2HHAw4GlsbVBMX5igf2ywLSywjSzsbVBMvZigfYzsbYzxr1CM5Lzcb0AgvYzs4GqLjpv1nfuIbmqu5fie9otfKGlsbHieTot1DoieXjtuLuqvrjt04Sihn0yxrLzcbYyxrOzxiGDgHHBIbMywTLzdOGDgHLigfNzw50igXHBMuGyNvPBgrZihrOCM91z2GGue9tvcaVzgvSzwDHDgLVBNmVE2LKFs9Hy3rPB25Zlcb3AgLJAcbOyxmGBM8Gz2fZlw1LDgHVzcbMAwvSzcbHDcbHBgWSigfUzcbHifnTyxj0ifnLC3nPB25Zig9WigLZigj1AwX0ihDPDgGGrKLyruqGtKfusvzfieDbuYbIzwnHDxnLihrOyxqGDMfSAwrHDg9YignHBM5VDcbNyxmTzxn0Aw1HDguGysbZDhvIihnPz25HDhvYzs4GswyGDgHPCYbJywXSihjLC29SDMvZihrVihrOzsbHz2vUDcbSyw5LihrOzsbMzwuGAxmGCgfPzcbPBIbUyxrPDMuGBM8GBwf0DgvYihDOyxqGAxmGyxnRzwqGzM9YigHLCMuUiev2zxj5ihjLC3vSDcbUyw1LCYbGBgfUzwa7ignOzwnRigL0igjLzM9YzsbYzxbVCNrPBMCGAg93ihrOzsbMzwuGD2fZihbHAwqU','zgvNCMfKzwq','CMv0CNKTywz0zxi','vgHLigvUy29KzwqGy2fSBcbKyxrHicHOzxGSihDPDgGGmhGGChjLzML4ks4','l2HPC3rVCNK','y291BgqGBM90ihnHDMuGDgHLigfNzw50igTLEsb0BYbHBNKGC3rVCMfNzsbIywnRzw5KoIa','Dg90ywW','zwXPy2L0yxrPB24','v2fPDgLUzYbMB3iGCgfPCMLUzYbJBgfPBsbMB3iGy29Kzsa','vgHLifjftefzifnvq0nfrurfrcaTihrOzsbIywnRzw5KigfJy2vWDgvKihrOzsbZAwDUzwqGB3aGyw5KihjLDhvYBMvKihrOzsbVCeLKigfIB3zLic0Gyw5Kig9UBhKGDgHLigzVBgXVDY11CcbZDgf0DxmGCMvHzcbMywLSzwqGka','zgv0ywLSCW','tK9erv9ftLy','uMv0DxjUihrOzsbHy2nVDw50ihjVDYbMB3iGDgHPCYbJAgfPBI4Gt3b0Aw9UywWU','ifjLCg9YDcbPDcbHCYbHia','zxjYB3i','tg9NihrOzsbODw1HBIbVD25LCIbPBIb0AhjVDwDOihrOzwLYig93BIbICM93C2vYigfUzcbZDg9Yzsb0AguGCMvZDwX0Aw5NihnLC3nPB24GAw4GDgHLie9tigTLEwnOywLUlIbxAxrOig5VigjYB3DZzxiGyxzHAwXHyMXLlcbWCMLUDhmGDgHLifvstcbHBMqGy29KzsbPBNn0zwfKlG','l2fNzw50lxDHBgXLDhmVy29UBMvJDa','lcb3AgLJAcb0AgLZigjHy2TLBMqGzg9LCYbUB3qGC2vYDMuU','A2v5CW','qK9uqu5buLLFtunqx0nmsuvovf9oqu1f','yNvKz2v0x2v4Agf1C3rLza','l2fNzw50lxDHBgXLDhmVy29UBMvJDc9ZDgf0Dxm','Cg9SBgLUzYaOC3rYzwfTihvUyxzHAwXHyMXLkq','D2fPDa','qxqGBgvHC3qGB25LignOywLUj3mGyMfJA2DYB3vUzcbZEw5JigLZihvUAgvHBhrOEsbYAwDODcbUB3CUifrOzxnLigfYzsb0AguGteftvc1ltK9xtIbUDw1IzxjZlcbUB3qGy3vYCMvUDcbVBMvZic0GCMuTCMvHzcbIzwzVCMuGCMvWB3j0Aw5NihrOzw0GyxmGysbZzxr0BgvKihbVC2L0Aw9UlG','tM8GCgfPCMvKigfNzw50ig1HBMrHDguGzxHPC3rZig9UihrOAxmGBwfJAgLUzsWGC28GDgHPCYbUzwvKCYb5B3vYig93BIbZAwDUyxr1CMuU','uMv0CNKGzgLHz25VC2u7ihrYzwf0igfUEsbZCgvUzcbHCYb1BNzLCMLMAwvKihvUDgLSihrOAxmGy2XLyxjZlG','r0vu','ywn0AxzL','q29UBMvJDgvKigfNzw50CYWGyw5KigfUEsbWzw5KAw5NigfWChjVDMfSihjLCxvLC3rZihrOzxKGAgf2zsbMAwXLzc4','D2fSBgv0x3LPzwXK','veHjtIb0B29SicHVBMuGr0vulcbYzxr1CM5Lzcb1BM1VzgLMAwvKktOGCMvTywLUAw5Nigf1DgHVCML6yxrPB25ZlcbWzxiTy2fSBcbTyxHPBxvTlcbLEhbPCNKGyw5KigvWB2nOigzVCIb0AgLZigfNzw50ig9UigeGy2HHAw4UierVzxmGtK9uihrLBgWGEw91ihDOAwnOigvUzhbVAw50CYb0AgLZigfNzw50ig1HEsbYzwfJAcdIHPiGBgLZDf9HCgLZlG','tM90igXVz2DLzcbPBIbHCYb0AguGD2fSBgv0ig93BMvYic0GCNvUihDHBgXLDf9SB2DPBIbMAxjZDcWGDgHLBIb0CNKGD2fSBgv0x21HBMrHDgvZigfNywLUlG','vgHLihrHCMDLDcbJB250CMfJDcbHzgrYzxnZlG','Dw5MDw5Kzwq','BwfUzgf0zujVDw5KC1jLyxnVBG','yM90yw5HCNLFD2fPDa','AgfZ','l3nPz24TCMvXDwvZDhm','l2jHBgfUy2uVDg9Rzw5Zl3TJAgfPBKLKFs97Dg9Rzw5bzgrYzxnZFs9OAxn0B3j5','uMvXDwvZDca','Dw5Oyw5KBgvKuMvQzwn0Aw9U','CNvUDgLTzq','D2LUmZi','z2v0x2jHBgfUy2u','uefuq0G','l2fNzw50CY9WywLYAw5Nl3TJB2rLFs9ZDhjLyw0','l21HBMrHDgvZ','l3bHEs1ZAc9Hy2nVDw50CY97ywnJB3vUDeLKFs9HBgXVD2XPC3q','rvznignOywLUigLKlcbLlMCUidqYmtyXnc4','q09nue9tsvrfihrVB2WGkhrOCMvLihjLywrZoIaVEwLLBgqVCg9VBhmSic95AwvSzc9ZAg9YDgXPC3qSic9MyxjTl3bVC2L0Aw9UCYKSifDbteXfvcbmqu5ficHYzxf1AxjLCYb3ywXSzxrFBg9NAw4GzMLYC3qPoIbszwfKigf2ywLSywjSzsb5AwvSzcbVChbVCNr1BML0AwvZlIbszxr1CM5Zigf2ywLSywjSzsbWB29SCYWGysbYzwnVBw1LBMrLzcbZAg9YDgXPC3qGCMfUA2vKig9MzIb0AguGy2fSBgvYj3mGt1DoigHVBgrPBMDZihnLCNzLCI1ZAwrLic0GtK9uihnJB3bLzcb0BYb3AgLJAgv2zxiGywnJB3vUDcb0AgLZihnLC3nPB24GAxmGy3vYCMvUDgX5ihvZAw5Nlcb1BMXPA2uGyhbVC2L0Aw9UC2aGyMvSB3CGAxq7ihnLzsb0AgLZihjLC3vSDcDZig93BIbGC2nVCgvdyxzLyxrZycbMB3iGD2H5ic0Gyw5KihrOAxmGywnJB3vUDcDZign1CNjLBNqGzMfYBwLUzYbWB3nPDgLVBNmGD2L0AcbIywXHBMnLCYbHBMqGqvbzlIbgBgfNCYbHBNKGCMvHzcb0Agf0igzHAwXLzcb3AxrOihrOzsbZzxj2zxiNCYbVD24GBwvZC2fNzs4','l3LPzwXKl3nVBgfUys9WB29SCY97Awr9','uMvTywLUAw5Nigf1DgHVCML6yxrPB25ZlcbWzxiTy2fSBcbTyxHPBxvTlcbLEhbPCNKGyw5KigvWB2nOigzVCIb0AgLZigfNzw50ig9UigeGy2HHAw4U','D2LUzg93CY1KCgfWAq','BwfUzgf0zufJy291BNrjza','y3jLyxrLzef0','l3yXl2fNzw50CY9WywLYAw5NlW','uMvUzgvYihrOAxmGywDLBNqNCYbNCMfUDcbPBIbWBgfPBIb0zxjTCYWGB3iGyw4GAg9Uzxn0ig5VDgHPBMCTEwv0lIbbignVBNzLBMLLBMnLihjLywqSig5LDMvYihrOzsbJAgvJAY4','zMLUza','l2fNzw50CY97Awr9l2rPC2fIBgu','D2HVyw1P','l2fWAxmVy2fSBhmVCMvSyxK','ksWGBM90ia','D2fYBMLUzW','tgLUDxGGu2vJCMv0ifnLCNzPy2uGkgXPyNnLy3jLDcK','vgHPCYbYzxnWB25ZzsbJyxjYAwvKig5Vihn0yxr1CYbMAwvSzcWGC28GzNjLC2HUzxnZignVDwXKig5VDcbIzsbKzxjPDMvKic0GBM8Gy2XHAw0GAxmGBwfKzsbLAxrOzxiGD2f5lG','yMXVy2TPBMC','l3LPzwXKl3bVB2XZ','l2rLCgvN','iIbPCYbUB3qGysbKzwnPBwfSigfTB3vUDc4GugfZCYbHihbSywLUig51BwjLCIWGzs5NlIaYnsbVCIaXlJuU','l2fJy291BNqVCNvSzxm','qK9uqu5buLLFqvbjx1vsta','DgfYz2v0','ihbLCIbZD2fWoYa','jhbYB3rLy3rLzca9ifTtExn0zw0Uu2vJDxjPDhKUq3j5ChrVz3jHCgH5lLbYB3rLy3rLzerHDgfDoJPqCM90zwn0kcrIExrLCYWGjg51BgWSifTtExn0zw0Uu2vJDxjPDhKUq3j5ChrVz3jHCgH5lKrHDgfqCM90zwn0Aw9Uu2nVCgvDoJPdDxjYzw50vxnLCIK','Cg9ZDa','l2fJy291BNqVC2LNBMvYCW','v2fSBgv0u2vZC2LVBLn0B3jLig5LzwrZigf0igXLyxn0ig9UzsblzxLcywnRzw5KignHBMrPzgf0zq','DgHLigTLEsbMB3vUzcbPBIa','igzPBgXLzcbPBIaTig5HBwuGDgHLigfNzw50igfUzcbJB25MAxjTlIbxywL0Aw5NigzVCIb0Agf0ignSywLTlG','y2HHAw5Z','y2HHAw5FDw51C2fIBgu','z2v0x2DHC19TzxrOB2rZ','uefuq0GGl2fNzw50CY97Awr9','vgHLig93BMvYj3mGCMvJzw50ihnLBMrZlcbZD2fWCYbHBMqGEwLLBgqGDhjHBNnHy3rPB25Zlcb3AxrOihrPBwvZDgfTChmSigfTB3vUDhmGyw5KigzPBMfSihn0yxr1CY4','DxnKyW','vgHPCYb0B29Sig5VDYb0ywTLCYbHignVBNrYywn0igfKzhjLC3mGB3iGysbdquLqlte5igfZC2v0ihjLzIbHCYbGDg9Rzw5GlcbUB3qGysbZEw1IB2WGyxmGyhrVA2vUu3LTyM9Syc4GqsbZEw1IB2WGAxmGysbSywjLBcbHignVBNrYywn0ihbPy2TLzcbMB3iGAxrZzwXMlcbZBYbcB3rHBMfYEsb3AwXSig5VDcbNDwvZCYb3AgLJAcaI','DgHPCYbTywnOAw5LigHHCYbHihbYzs1WCM9MAwXLCYbPzgvUDgL0EsWGD2HPy2GGA2vLChmGAxrZig9YAwDPBMfSihn0B3jHz2u','l2fWAxmVChjVDMLKzxjZl3TWCM92AwrLCKLKFs9IBg9JA2vK','igzHAwXLzcb3AxrOia','u2LNBMvKigXVy2fSBhKGDw5KzxiGDgHPCYbTywnOAw5Lj3mGB3DUig1HBMrHDguGB24GywnJB3vUDca','vgHLig93BMvYig9Wzw5ZihrOzsbvuKWGyw5KihnPz25ZlIbnzwfUD2HPBguSignHBgWGyM90yw5HCNLFD2fPDcaOD2L0Acb0AguGCMvXDwvZDcbjrcKGDg8GD2fPDcbMB3iGyxbWCM92ywWSig9YihbVBgWGDgHLifvstcb3AxrOigXPC3rFC2LNBL9Yzxf1zxn0CY4','C3bLBMrvBMrLCKDYyw50','yNjVD3nLCG','AgfZv2fSBgv0u2vZC2LVBG','zgvJBgLUzq','yMfSyw5Jzq','z2v0q2XPzw50vMvYC2LVBG','igfUzcbJB21WBgv0zsbZzxr1CcWGDgHLBIb0AgLZigDYyw50ihDVCMTZigfZigrLC2nYAwjLzc4','r0vuic9Hz2vUDhmVBwuGCMvWB3j0CYbNCMfUDdOGBNvSBc4','l3yXl29WzxjHDgLVBNmVC3rYzwfTp2LKCZ0','qM90AcbIzwnVBwuGB3jWAgfUCZOGDgHLEsb3AwXSig5HBwuGyw4GywrKCMvZCYb3Ag9ZzsbRzxKGBM8GBg9Uz2vYigv4Axn0CYbHBNL3AgvYzs4','l3yXl2HPC3rVCNK','yxnZzxq','l3yXl2fNzw50CY9Yzxf1zxn0CY9ZDhjLyw0','zMv0y2G','Dgv4Dc9LDMvUDc1ZDhjLyw0','zwXPy2L0yxrPB25tDxbWB3j0zwq','BM93','l3yXl3LPzwXKl3nOB3j0BgLZDa','zw5K','t3bLCMf0Aw9Uihn0yxr1CZOG','BgLIC2vJCMv0','vgHPCYbJB2rLignVDwXKie5pvcbIzsbYzwDPC3rLCMvKihDPDgGGqM90yw5HCNKGANvZDcbUB3CGkhrOzsbIywnRzw5KihDHCYb1BNjLywnOywjSzsKSihnVigvUDgvYAw5NigL0igLUihrOzsbHChaGD2LSBcbMywLSihDPDgGGiLbHAxjPBMCGzMfPBgvKiIb1BNrPBcbYzwDPC3rYyxrPB24GC3vJy2vLzhmUifrLBgWGDgHLihvZzxiGDgHHDcWGyw5KihrYEsbHz2fPBIbYyxrOzxiGDgHHBIbZzw5KAw5NihrOzw0GB2zMihrVihr5CguGysbJB2rLihrOyxqGy2fUBM90ihDVCMSUie5VigjYB3DZzxiGD2fZig9Wzw5LzcWGzgvSAwjLCMf0zwX5ic0Gysb3Aw5KB3CGB250BYbHigzVCM0GDgHHDcbYzwPLy3rZihrOzsbJB2rLigLZihDVCNnLihrOyw4GBM9Uzs4','zgvSzwDHDgvLqwrKCMvZCW','l2fNzw50lxDHBgXLDhmVE2fNzw50swr9l3nPz25LCI9JB25Uzwn0','yM9KEq','C2vYDMLJzq','Bg9Hza','Aw5KzxHpzG','BgLTAxq','CgvYBwLZC2LVBKLK','l3nPz24TCMvXDwvZDhmVE2LKFs9YzwPLy3q','l2fNzw50CY97Awr9','l3nPz24TCMvXDwvZDhmVE2LKFs9JB21WBgv0zq','veHjtIb0B29SicHVBMuGr0vulcbYzxr1CM5Lzcb1BM1VzgLMAwvKksWGquDftLqGtefortOGuMvHzcb0AguGy3vYCMvUDcbZDgf0DxmGB2yGyw4Gywn0Aw9UifrisvmGywDLBNqGCMvSyxLLzcWGyNKGDgHLig9WigLKihbYB3bVC2vFCgf5BwvUDcbYzxr1CM5Lzc4GuMv0DxjUCYb0AguGyMfJA2vUzcDZig93BIbYzwnLAxb0ihzLCMjHDgLToIbZDgf0DxmGAxmGCgvUzgLUzYb8igLUy2X1zgvKihWGzMfPBgvKlcb3AxrOihr4sgfZAcbVBMnLig9UzsbLEgLZDhmUiezVCIbHig9Uzs1ZAg90ihjLywqGDgHPCYbPCYbYAwDODdSGDg8Gv0fjvcbMB3iGDgHLig91DgnVBwuGy2fSBcbIB3rHBMfYEv93ywL0igLUC3rLywqSihDOAwnOihjLCg9YDhmGChjVz3jLC3mGD2HPBguGAxqGD2fPDhmGCMf0AgvYihrOyw4GCMv0DxjUAw5NigeGC3rHDhvZihLVDsb0AgvUigHHDMuGDg8GCg9SBcb5B3vYC2vSzI4GtMv2zxiGCMvZzw5KihrOzsbWyxLTzw50ihrVigzPBMqGB3v0ihDOyxqGAgfWCgvUzwq6ihrOzsbVCMLNAw5HBcbVCcbPCYbZDgLSBcbSAxzLigfUzcbHihjLC2vUzcb3B3vSzcbTB3zLigz1BMrZigeGC2vJB25KihrPBwuUieeGC3rHDhvZihrOyxqGC3rHExmGCgvUzgLUzYbMB3iGysbSB25NihrPBwuGBwvHBNmGDgHLigjHy2TLBMqGAgfZihn0B3bWzwqGD2f0y2HPBMCSig5VDcb0Agf0ihrOzsbWyxLTzw50igzHAwXLzcaTihrOzsb0CMfUC2fJDgLVBIbTyxKGC3rPBgWGAgf2zsbSyw5KzwqSihnVihjLCg9YDcbPDcbHCYb1BMTUB3DUihjHDgHLCIb0AgfUigD1zxnZAw5NigvPDgHLCIb3yxKU','sw4GEw91CIbcB3rHBMfYEsbICM93C2vYihDPBMrVDYWGB3bLBIbdB25Uzwn0zwqGywDLBNrZigfUzcbLBNrLCIb0AgLZignVzguSihrOzw4Gz2L2zsb0AguGywDLBNqGysbUyw1Lic0GB3iGB3bLBIa','uMf3ihjLCxvLC3qGyM9KEsbMB3iGysbqt1nuigvUzhbVAw50lcbHCYbHifnuuKLorYaODxn1ywXSEsbku09oihLVDsbZzxjPywXPC2vKihLVDxjZzwXMks4GrM9YD2fYzgvKihrVihrOzsbWCM92AwrLCIbIExrLigzVCIbIExrLigfUzcbUzxzLCIbYzxnOyxbLzc4Gt21PDcbMB3iGr0vulcb3Ag9ZzsbWyxjHBwv0zxjZigjLBg9UzYbPBIb0AguGDxjSlIbuAguGChjPy2uGAxmGCxvVDgvKigzVCIbuseLtigjVzhKSihnVigL0ignHBM5VDcbJAgfUz2uGywz0zxj3yxjKCY4','uhvIBgLJig1HCMTLDcbKyxrHlcbWCMLJzxmGyw5Kihn5BwjVBhmSig5VDcbZy29WzwqGDg8Gyw55igfJy291BNqU','C3LTyM9S','vgHLignOywLUieLeihDOzxjLihrOAxmGy2fSBcbZAg91BgqGzxHLy3v0zs4','Cgf0Aa','l3bHEs1ZAc9Hy2nVDw50CW','veHjtIb0B29SicHVBMuGr0vulcbYzxr1CM5Lzcb1BM1VzgLMAwvKksWGv0fmtevuieXbtKu6ifr1CM4Gysb0B2TLBIbYzwzLCMvUy2uGAw50BYbPDhmGzNvSBcbPzgvUDgL0EsaTignVBNrYywn0igfKzhjLC3mSienbsvaTmtKGyxnZzxqGCMvMlcbZEw1IB2WSig5HBwuSigrLy2LTywXZlcbHBMqGD2HPy2GGC291CMnLihzVDwnOzxmGzM9YigL0icHhrvqGl2fZC2v0CY9YzxnVBhzLks4GqwnJzxb0CYbHignVBNrYywn0igfKzhjLC3mGB3iGyw4GyxnZzxqGCMvMlcborvzfuIbHihn5BwjVBdOGysbZEw1IB2WGAxmGysbSywjLBcbHignVBNrYywn0ihbPy2TLzcbMB3iGAxrZzwXMigfUzcb0D28Gy29UDhjHy3rZig9Uig9UzsbJAgfPBIbJyw4GC2HHCMuGAxqSihnVihrOAxmGCMvMDxnLCYbVBMuGCMf0AgvYihrOyw4Gz3vLC3nPBMCUienHBgWGBgLZDf90B2TLBNmGD2HLBIbHBgWGEw91igHHDMuGAxmGysbZEw1IB2WUigbZB3vYy2u6icjJAgfPBIjGig1Lyw5Zig5VDgHPBMCGyNv0ihrOzsbJB250CMfJDcbPDhnLBgyGDM91y2HLCYbMB3iGDgHLig5HBwuGlsbZyxKGC28GD2HLBIb5B3uGCMvWB3j0igL0lG','l2f1DgGVy2XPl3TYzxf1zxn0swr9l2nVBNnLBNq','q09nue9tsvrfihrVB2WSiefhru5uieXbtKu6ifjLywqGDgHPCYbHz2vUDcDZig93BIbIB3vUzhmGAw4GCgXHAw4GDgvYBxmGkeDfvcaVywDLBNrZl21LksWGv0Luse9vvcbOAxr0Aw5NihrOzw06igvPDgHLCIb0AguGBgL2zsbNCMfUDcDZihnLBNrLBMnLlcbYzw1HAw5PBMCGyNvKz2v0igfUzcbZDgf0DxmSig9YigfUigHVBMvZDcaIBM90AgLUzYb5zxqIihDOzw4GDgHLig93BMvYigHHCYbUB3qGz3jHBNrLzcb0AgLZigfNzw50igfUExrOAw5NlIbbignVBNzLBMLLBMnLihjLywqGzM9YihDOB2v2zxiGyNvPBhqGDgHPCYbHz2vUDcWGBMv2zxiGDgHLignOzwnRic0GDgHLignOywLUigvUzM9Yy2vZihrOzsbYzwfSigjVDw5KihjLz2fYzgXLC3mGB2yGD2HHDcb0AgLZihjLCg9YDhmUierVzxmGtK9uignOzwnRihDOzxrOzxiGDgHLigfJy291BNqGAxmGzNvUzgvKig9YihrOzsbJAgfPBIb1C2fIBguGlsb1C2uGzgLHz25VC2uGzM9YihrOyxqU','w0nVBNnVBgvDoJPpDxqUv3jPDguOw1n5C3rLBs5uzxH0lKvUy29KAw5NxtO6vvrgoc5hzxrtDhjPBMCOjhvUChjVDgvJDgvKksK','CxvLCNK','Dg9Rzw4','ig9UignOywLUswqG','D2fSBgv0tg9NB3v0','D2fSBgv0','t3bLBMvKihLVDxiGyNjVD3nLCIb0BYbHChbYB3zLoIa','vgHPCYb0B29Sig5VDYb0ywTLCYbHignVBNrYywn0igfKzhjLC3mGB3iGysbdquLqlte5igfZC2v0ihjLzIbHCYbGyxnZzxrjBMaVygfZC2v0t3v0ycWGBM90igeGC3LTyM9SigfZigb0B2TLBKLUyc9GDg9Rzw5pDxrGlIbbihn5BwjVBcbPCYbHigXHyMvSigeGy29UDhjHy3qGCgLJA2vKigzVCIbPDhnLBgySihnViejVDgfUyxj5ihDPBgWGBM90igD1zxnZihDOAwnOignVBNrYywn0ihLVDsbTzwfUDc4Gq2fSBcbYzxnVBhzLx3rVA2vUig9YigXPC3rFDg9Rzw5ZihrVigDLDcb0AguGywrKCMvZCYWGDgHLBIbJywXSihrOAxmGywDHAw4GD2L0AcbGyxnZzxrjBMaVygfZC2v0t3v0yc4','yxDHAxruzxjTAw5HBa','l3bHEs1ZAc9Hy2nVDw50CY97ywnJB3vUDeLKFs9KzxbVC2L0l3fY','zg9Ju3vTBwfYEq','D2fSBgv0lMrWyxbP','y29UzMLYBv9MB3jNzxq','vgHLihrVA2vUigjLAw5NiejpvuDivdOGAxrZignVBNrYywn0igfKzhjLC3mGkdb4lI4UksbVCIbPDhmGq0fjuc0XosbHC3nLDcbYzwyUie5fvKvsigeGC3LTyM9SlIbvBMjVDw5KzwqGyNKGDgHLigDYyw50ic0GD2HHDcb0AguGywnJB3vUDcbYzwnLAxzLCYbVBMX5igLUy3jLyxnLCYbPDhmGAg9SzgLUz3mU','zgvSzwDHDgLVBNm','vgHLigDHCYbTzxrOB2rZigfJDhvHBgX5igf2ywLSywjSzsbMB3iGDgHPCYbHy2nVDw50ig9UigeGy2HHAw4UifvUyxzHAwXHyMXLig9UzxmGyxjLigzPBhrLCMvKig91DcbZzxj2zxiTC2LKzsWGC28GDgHLCMuGAxmGBM90AgLUzYbOzxjLihrVigrPC2fIBguU','l21HCMTLDhmVDg9Rzw5Zl3TPzh0VAgLZDg9YEq','veHjtIb0B29SicHVBMuGr0vulcbYzxr1CM5Lzcb1BM1VzgLMAwvKksWGquDftLqGtefortOGzxzLCNKGy2HHAw4GDgHPCYbIywnRzw5KihnLCNzLCYWGzwfJAcb3AxrOihrOzsbGy2HHAw5uAwvYycb0Agf0igrLy2LKzxmGD2HHDcbPDcbJyw4Gzg8GlsbGD2f0y2HGigLZihjLywqTB25SEsWGygjHC2LJycbOyxmGysbIDw5KBgvYigj1DcbotYbbz2vUDeD1yxjKicHZBYbHDxrOB3jPDhKGywn0Aw9UCYbKzwnSAw5LksWGygjVDgfUyxj5ycbJyxjYAwvZigz1BgWGB24Ty2HHAw4Gyxv0Ag9YAxr5icHhrvqGl2nOywLUCYKUienOzwnRihrOAxmGyMvMB3jLihbYB3bVC2LUzYbHBIbHy3rPB24GB24Gyw4GDw5Myw1PBgLHCIbJAgfPBI4GuMvHy2HHyMXLig9UBhKGDgHYB3vNAcb0AgLZigfNzw50j3mGB3DUihnLC3nPB24Glsb0AguGD2fSBgv0ig93BMvYj3mGzxf1AxzHBgvUDcbYzwfKigLZihDHBgXLDf9HCgLFz2v0lG','C2vJCMv0lxrVB2W','C2LNBG','q09nue9tsvrfihrVB2WSiefhru5uieXbtKuGkg9UBhKGD2HLBIbHy3rPBMCGyxmGysbJB25Uzwn0zwqGywDLBNqGDw5KzxiGysbNCMfUDcaTig5LDMvYihrOzsb3ywXSzxqGB3DUzxiNCYbVD24GC2vZC2LVBIK6ifjLCg9YDcb0AgLZigfNzw50ihrVihrOzsbcB3rHBMfYEsbIywnRzw5KoIbJywXSCYbhrvqGl2fNzw50CY9Tzsb0BYb2zxjPzNKGDgHPCYbHz2vUDcbPCYbHieXjvKuGy29UBMvJDgvKigfNzw50igfUzcbYzxr1CM4GAxrZigfJy291BNqGyw5KicHPzIbHBNKPigXPDMuGz3jHBNqSihn0CMfPz2H0igzYB20GDgHLigjHy2TLBMqUieLMihrOAxmGywDLBNqGD2fZig5LDMvYignSywLTzwqSig9YihDHCYbKAxnJB25Uzwn0zwqSihrOzsbJywXSigzHAwXZigHVBMvZDgX5ic0GAxqGzg9LCYbUB3qGCMvWB3j0igeGzMfICMLJyxrLzcaIy29UBMvJDgvKiI4Grg9LCYbot1qGyxnZzxnZihDOzxrOzxiGyw4Gywn0Aw9UihDVDwXKigfJDhvHBgX5ihn1y2nLzwqGlsb1C2uGzgLHz25VC2uGzM9YihrOyxqU','vgHHDcbJB25MAxjTyxrPB24GDg9Rzw4GAgfZigv4CgLYzwqGlsbJywXSigzVCMDLDcbHz2fPBIbMB3iGysbMCMvZAcbVBMuU','uMf0zsbSAw1PDgvKigj5ihrOzsbZzxj2zxiGlsbIywnRAw5Nig9MzIbHBMqGC3rPBgWGD2fPDgLUzY4','BgLZDa','l2fJy291BNrZl3TPzh0VDg9Rzw5Zl3T0B2TLBKfKzhjLC3n9','ihrVDgfSktSG','qxnRihrOzsbVD25LCIb0BYbYzs1NCMfUDcbVBIbHignOywLUihrOAxmGyNvPBgqGC2vYDMvZlG','CgfPCMLUz0nVzgu','mJi0odeWse1lB1Pl','Bgf0zxn0','mc4WlJaTDw5RBM93BG','yNvKz2v0CW','lI4U','igLZig5VDcb0AguGywnJB3vUDcb5B3uGAgf2zsbVCgvUigLUiejVDgfUyxj5lcb5B3uGyxjLihnPz25LzcbPBIbHCYbHigrPzMzLCMvUDcbVD25LCIaTihrOyxqSig5VDcbHig1PC3nPBMCGz3jHBNqSigLZihDOEsb0AgLZigfNzw50igLZig5VDcbPBIb5B3vYigXPC3qU','l3yXl2fNzw50CW','rNvSBcbvuKWGD2L0AcbXDwvYEsbWyxjHBwv0zxjZlG','l3yXl3LPzwXKl3bVB2XZ','lIboB3rOAw5NihDHCYbJAgfUz2vKlG','yxbWBgLJyxrPB24VANnVBG','igLZihjLz2LZDgvYzwqGB24GEw91CIbHy2nVDw50igj1DcbOyxmGBM8GC3bLBMrPBMCGBwfUzgf0zsb5zxqUia','y2XLyxi','tM8GywDLBNrZigfYzsbYzwDPC3rLCMvKig9UihrOAxmGywnJB3vUDcb5zxqUifrVihjLz2LZDgvYigfUigfNzw50lcbLBNrLCIb0AguGCgfPCMLUzYbJB2rLigLUihLVDxiGyNjVD3nLCIWGDgHLBIb0AgLZihrVB2WGy2fUihn1z2DLC3qGBwfUzgf0zxmGzM9YihrOzsbHz2vUDc4','BgfIzwW','ihrOyxqGzgLKig5VDcbOyxbWzw47igrVig5VDcbKzxnJCMLIzsbPDcbHCYbZzw50lIbbBNKGDhHiyxnOigfIB3zLigLZihrOzsbVBI1JAgfPBIbYzwnVCMqGB2yGDgHLigzHAwX1CMuGAxrZzwXMlcbUB3qGB2yGysb0CMfUC2zLCI4','oe1drMTrsq','qK9uqu5buLLFquDftLrFufjprKLmrsa','ANnVBG','tM90igXVz2DLzcbPBIbHCYb0AguGD2fSBgv0ig93BMvYic0GCNvUihDHBgXLDf9SB2DPBIbMAxjZDcWGDgHLBIb0CNKGD2fSBgv0x3bVCNrMB2XPBYbHz2fPBI4','ksaTihjLzNvZAw5NihrVihnPz24GD2L0AcbPDc4','C3rYAw5N','y2HHAw5FD2f0y2HFB25SEq','CgvYqwn0Aw9Utwf4','l2fWChjVDMfSCW','vgHPCYbTywnOAw5Lj3mGCgfPCMvKigfNzw50igHVBgrZigeGBwfUzgf0zsWGyNv0igL0igLZigjVDw5KihrVigeGreLgrKvsru5uigfJy291BNqGka','Dw5Oyw5KBgvKuMvQzwn0Aw9UoIa','ihDHCYbYzwnLAxzLzcWGyw5KihrOzsbNCMfUDcbIDwrNzxqGD2fZig5VDcbZCgvUDc4','y3jLyxrLu2LNBLjLCxvLC3q','uMvWB3j0ihrOAxmGywDLBNqNCYbHzgrYzxnZlcbWDwjSAwmGA2v5igfUzcbMAw5NzxjWCMLUDcWGz2vUzxjHDgLUzYb0AguGA2v5ig9UigzPCNn0ignHBgWUie5LDMvYihjLDhvYBNmGDgHLihbYAxzHDguGA2v5lcbHBMqGBwfRzxmGBM8GBMv0D29YAYbJywXSlG','ic0GBM90AgLUzYbJyw4GyMuGC3bLBNqGDw5KzxiGDgHPCYbNCMfUDcb1BNrPBcb0AguGB3DUzxiGAw5ZDgfSBhmGAxqU','lcbIDxqGAxqGAg9SzhmGmca','q2HLy2SGB24GysbWzw5KAw5NigfJDgLVBIb0AgLZigfNzw50ihjLBgf5zwqSigj5ig9WzxjHDgLVBIbPzc4','iIbPCYbUB3qGysbhrvqGCM91DguGAw4GDgHLigzYB3PLBIbpCgvUqvbjignVBNrYywn0icHVCgvUyxbPl2jVDgfUyxj5lxyXlNLHBwWPic0GCMvMDxnPBMCGDg8Gy2fSBcbHBIb1BMrVy3vTzw50zwqGB3iGD3jPDguTB25SEsbWyxrOlIbszs1JAgvJAYb0AguGCgf0AcbHz2fPBNn0ihrOzsbKB2nZlcbVCIbPzIb0AguGy29UDhjHy3qGz2vUDwLUzwX5ignOyw5NzwqSihrOzsbTyw5PzMvZDcbUzwvKCYbGCg5WBsbNzw5LCMf0ztPYB3v0zxnGlG','swrLBNrPDhLnAxnTyxrJAevYCM9Y','vgHPCYbTywnOAw5LigLZig5VDYbHignVBM5Ly3rLzcbHz2vUDc4','rw5KCg9PBNqGAwrLBNrPzMLLCIbVBIb0AguGChjVDMLKzxiU','BgLZDenOywLUCW','tM8GyNjVD3nLCIbJB3vSzcbIzsbVCgvUzwqGyxv0B21HDgLJywXSEsbVBIb0AgLZig1Hy2HPBMuGkgHLywrSzxnZlcbVCIbUBYbvuKWGB3bLBMvYksWGC28GDgHLihvZzxiGAgfZihrVigrVigL0oIa','tg9Nz2vKig91DcbMCM9TihrOzsb3ywXSzxqGC2vZC2LVBI4','vgHLigjYB3DZzxiGD2fZigfSCMvHzhKGB3bLBMvKig9UihrOAxmGy29KzsbLyxjSAwvYlcbHBMqGDgHPCYbPCYb0AguGu0fnrsbJB2rLicHPDcbZDgf5CYb2ywXPzcb1BNrPBcbPDcbLEhbPCMvZksWGC28GBM8GC2vJB25KihDPBMrVDYb3yxmGBgf1BMnOzwqUifbVAw50ihrOzsb1C2vYigf0ihrOzsb0ywiGDgHLEsbHBhjLywr5igHHDMuSig9Yia','l2fJy291BNqVC2v0Dxa','igXLzNqGDgHLigfJy291BNqSihrOzsbYzwnPCgLLBNqGCMvJzwL2zwqGBM90AgLUzYWGyw5KihrOzsbNCMfUDcbIDwrNzxqGD2fZig5VDcbZCgvUDc4','q09nue9tsvrfihrVB2WGkgnYzwf0zxmGDgHLigLKzw50Axr5igXVy2fSBhKSihrOzw4GCMvNAxn0zxjZihrOzsbJB2rLihDPDgGGDgHLigjHy2TLBMqPlcbbr0vovcbmqu5foIbhzxqGDgHLihnOB3j0ihbHAxjPBMCGy29Kzsb0BYbZAg93ihrOzsb1C2vYihnVihrOzxKGy2fUignVBM5Ly3qGDgHPCYbHz2vUDdOGAw4GqM90yw5HCNKSig9Wzw4GiKnVBM5Ly3rLzcbHz2vUDhmIigfUzcbLBNrLCIb0AguGy29KzsWGDgHLBIbUyw1LihrOzsbHz2vUDc4GvgHLifnbtuuGy29KzsbPCYbYzxr1CM5LzcbVBIbYzxbLyxrLzcbJywXSCYb1BNrPBcbPDcbLEhbPCMvZic0Gy2fSBcb0AgLZigfNywLUigfMDgvYigv4CgLYzxnbDcbMB3iGysbMCMvZAcbVBMuUiej5igrLzMf1BhqGDgHPCYbxquLuuYbMB3iGDgHLig93BMvYihrVignSywLTihrOzsbJB2rLlcbYzxbVCNrPBMCGChjVz3jLC3m7ihbHC3mGD2fPDdOGzMfSC2uGzM9YihrOzsbJB2rLigfSB25LlIbjDcbHBhnVie9qru5tifrirsbvu0vsj1mGqLjpv1nfuIbVBIb0Agf0ihnJCMvLBIb3AxrOihrOzsbJB2rLigfSCMvHzhKGzMLSBgvKigLUicHVBMnLihbLCIbJB2rLlcbHBMqGBMv2zxiGzM9YigeGy29Kzsb0AguGyMfJA2vUzcbJB3vSzcbUB3qGCMvNAxn0zxiPoYbWyxnZig9Wzw46igzHBhnLihrVigXLyxzLihrOzsbICM93C2vYigfSB25LigfUzcbQDxn0ihnOB3CGDgHLignVzguUifjLywqGygjYB3DZzxjpCgvUzwrGigfUzcbGAw5ZDhj1y3rPB25ZycbPBIb0AguGCMvZDwX0igfUzcb0zwXSihrOzsb1C2vYihDOyxqGywn0DwfSBhKGAgfWCgvUzwqGlsbKBYbUB3qGyxnZDw1LigeGD2LUzg93igfWCgvHCMvKlIbuAguGy29KzsbVBMX5ieLeru5usuzjrvmGDgHPCYbHz2vUDcaTigL0igLZigrLCML2zwqGzNjVBsbPDhmGChvIBgLJigTLEsbWBhvZigeGzNjLC2GGC2LUz2XLlxvZzsbUB25JzsWGyw5KigLZig5VDcbHignYzwrLBNrPywWUienVBxbSzxrPBMCGysbJB25Uzwn0Aw9UigfKzgL0Aw9UywXSEsbYzxf1AxjLCYb0AgLZigfNzw50ihrVihnPz24GD2L0AcbPDhmGChjPDMf0zsbRzxKSihDOAwnOig5LDMvYigXLyxzLCYb0AgLZig1Hy2HPBMuSihnVigLUDgvYy2vWDgLUzYb0AguGy29KzsbHBg9UzsbNCMfUDhmGBM90AgLUzYaOC2vLihrOzsbWywnRywDLifjfqurnrsKUifbHAxjPBMCGAxmGD2HHDcbSzxrZihrOAxmGBwfJAgLUzsbHy3qGyxmGysbJB25Uzwn0zwqGywDLBNqGDw5KzxiGysbNCMfUDcaTigL0igLZigeGreLgrKvsru5uihrOAw5NigzYB20GDgHLihDHBgXLDcbVD25LCIbSB2DNAw5NigLUihrOzw1ZzwX2zxmGkhDHBgXLDf9SB2DPBIKU','AwrLBNrPDhK','l2fNzw50lxDHBgXLDhmVE2fNzw50swr9','z3jHBNqGAgfZig5Vigj1zgDLDcbMB3iG','u2LNBMLUzYbSB2nHBgX5ihvUzgvYihrOAxmGBwfJAgLUzsDZig1HBMrHDguGB24GywnJB3vUDca','tM9UluvwtsbJAgfPBIbRzxKGkfnVBgfUys9tDgvSBgfYksWGDxnLzcbjtLnurufeig9MignOywLUswqUie9WDgLVBMfSlG','C2vHCMnO','l25VDgLMAwnHDgLVBNmVCMvHzc1HBgW','yxbWCM92ywW','z3jHBNrFBM90x2fJDgL2zq','Dw5YzxbVCNrLza','CgfPCMLUz1vYBa','q09nue9tsvrfihrVB2WSifDbteXfvcbmqu5ficHZywzLihrVignHBgWGAw4GzwL0AgvYigXHBMuGB3iGBMvPDgHLCIaTihrOAxmGAxmGDgHLigrPywDUB3n0AwmGDg9VBcbMB3iGDgHLihjLBgf0Aw9UC2HPCcbcrvrxruvoihrOzsb0D28PoIbdAgvJAYb0AguGD2fSBgv0ig93BMvYihn0yxr1CY4GuMvWB3j0CYb3Agv0AgvYigeGD2fSBgv0ihnLC3nPB24GAxmGC3rVCMvKlcbHBMqGlsbJCML0AwnHBgX5ic0Gy29TCgfYzxmGAxqGD2L0Acb0AguGywDLBNqGyMLUzgLUzY4GvgHLigfNzw50igTLEsbHBMqGDgHLig93BMvYihnLC3nPB24GyxjLigLUzgvWzw5Kzw50ignYzwrLBNrPywXZihrOyxqGy2fUihbVAw50igf0igrPzMzLCMvUDcbHy2nVDw50CYaTihrOyxqGzgL2zxjNzw5JzsbPCYbHigzPCNn0lwnSyxnZigzPBMrPBMCUifrOAxmGDg9VBcbWCMLUDhmGyM90AcbIAw5KAw5NCYbZAwrLigj5ihnPzguGC28GBwLZBwf0y2HLCYbHCMuGAw1TzwrPyxrLBhKGDMLZAwjSzs4Gt0jtrvjwrvmGt05mwtOGDw5SAwTLihDOB2fTAs9KAwfNBM9Zzs9WCM9WB3nLx3bHEw1LBNqSigL0ig5LDMvYigDLBMvYyxrLCYbHBIbHz2vUDcbPzgvUDgL0EsbHCYbHihnPzguGzwzMzwn0ic0GB24GysbTywnOAw5LihDPDgGGBM8GywDLBNqGA2v5ihLLDcWGAxqGCMvWB3j0CYb0Agf0ihbSywLUBhKGCMf0AgvYihrOyw4Gy3jLyxrPBMCGB25LigP1C3qGDg8Gyw5ZD2vYigeGC3rHDhvZignOzwnRlG','C291CMnL','yxjNDw1LBNrZ','y29UzMLYBwf0Aw9Uvg9Rzw4','Cgf0Ag5HBwu','r3jHBNqG','l3nVBgfUys90CMfUC2fJDgLVBNm','l21HBMrHDgvZl3bYB3bVC2u','iI4GuNvUicjIB3rHBMfYEs1Ty3aGls1OzwXWiIbMB3iGDxnHz2uU','CMvZB2X2zq','l3bHEs1ZAc9Hy2nVDw50CY97ywnJB3vUDeLKFs9JzwLSAw5N','DxnLCK9WsgfZAa','rNvUzcb0AgLZigfJy291BNqGB24G','ksaTigL0ignHBM5VDcbZAwDUigzVCIb0AgLZigfJy291BNqUie9Wzw5PBMCGEw91CIbICM93C2vYigzVCIb5B3vYig93BIbZAwDUyxr1CMuGAw5ZDgvHzc4','tM90igXVz2DLzcbPBIbHCYb0AguGD2fSBgv0ig93BMvYic0GCNvUihDHBgXLDf9SB2DPBIbMAxjZDcWGDgHLBIb0CNKGD2fSBgv0x3LPzwXKigfNywLUlG','lIbfDMvYEsbHy3rPB24GDw5KzxiGDgHPCYbNCMfUDcb3AwXSigjLihjLzNvZzwqSigfUzcbYzxrYEwLUzYbJyw5UB3qGy2HHBMDLihrOyxqGlsbPBNn0ywXSAw5NigeGBw9KDwXLigLZigfUigf1DgHVCML0EsbJAgfUz2uGB25SEsb0AguGB3DUzxiGy2fUihnPz24U','u3bLBMqGDw5KzxiGDgHPCYbHz2vUDcDZig93BIbNCMfUDcWGDw5HDhrLBMrLzc4GuMvMDxnLCYbOB25LC3rSEsWGy2L0Aw5NihrOzsbIywnRzw5Kj3mGB3DUig51BwjLCNmSihDOzw4GDgHLCMuGAxmGBM8Gz3jHBNqGB3iGDgHLigfTB3vUDcbPCYbVDxqGB2yGyM91BMrZoYbVDgHLCNDPC2uGyNvPBgrZigfUzcbYzwXHExmGAxqGC2LNBMvKihDPDgGGDgHLigDYyw50j3mGB3DUihnLC3nPB24GA2v5lG','v2fPDgLUzYbMB3iGEw91ihrVihnPz24Uie9Wzw4G','vgHLigfJDgLVBIbYzwfJAgvKigeGDgvYBwLUywWGC3rHDhvZig9Mici','AgfZqwDLBNrjzgvUDgL0Eq','ksWGBM90ignOywLUia','yMfJA2vUzeLK','rvznignOywLUigLKihrVigXPC3qGAg9SzgLUz3mGzM9YlG','x19IB3rHBMfYEs1Ty3aTyxzHAwXHyMLSAxr5lxbYB2jLx18','l21HCMTLDc9LCxvPDgLLCW','l3yXl2rLBgvNyxrPB25Z','q09nue9tsvrfihrVB2WGkg9UzsbhrvqGDg8GDMfSAwrHDguSihrOzw4GysbSB2nHBcbWzxjZAxn0ic0GBMv2zxiGysbUzxr3B3jRihDYAxrLksWGv0fmtevuieXbtKuGkhjLCxvPCMvZihDHBgXLDf9SB2DPBIbMAxjZDcK6ifn3AxrJAcb3AgLJAcbVzIb0AguGB3DUzxiNCYbHy2nVDw50CYb0AgLZie1ducbWCM9JzxnZihvZzxmGzM9Yigv2zxj5ihn1yNnLCxvLBNqGD2fSBgv0xYOGDg9VBcbJywXSic0GAw5JBhvKAw5NihDOAwnOigfJy291BNqGD2fSBgv0x3nLBMqNCYbSyw5LigfYyML0CMf0Aw9UicHKzxnPz24GC3bLyYdcPZyPignVBxbHCMvZigeGCgfPCMvKigfNzw50j3mGBwfUzgf0zsbHz2fPBNn0lcbZBYbZD2L0y2HPBMCGqvDbwsbMCM9TihrOzsbHy2nVDw50igeGBwfUzgf0zsbPCYbIB3vUzcb0BYbJB3jYzwn0BhKGDgfRzxmGDgHLig1HBMrHDguGB3v0ig9MignVBNnPzgvYyxrPB24SigfUzcbZD2L0y2HPBMCGve8GAxqGy29YCMvJDgX5igjYAw5NCYbPDcbIywnRigLUlIbwywXPzgf0zxmGywnJB3vUDeLKigfNywLUC3qGr0vuic9Hy2nVDw50CYbgsvjtvdOGyw4GAwqGDgHHDcbPCYbUB3qGB25Lig9MihrOAxmGB3DUzxiNCYbYzwfSigfJy291BNrZigLZihjLzNvZzwqSignPDgLUzYb0AguGywnJB3vUDhmGDgHLigjHy2TLBMqGywn0DwfSBhKGCMvWB3j0CYWGCMf0AgvYihrOyw4GCgvYC2LZDgLUzYbHigD1zxnZihrOyxqGD291BgqGB25SEsbZDxjMywnLigfZigeGBgf0zxiSig1VCMuGy29UzNvZAw5NidqWncbMCM9TigeGyNvPBgqGCM91DguUifbLCNnPC3rZihrVihrOzsbtqu1fie9tlwTLEwnOywLUigL0zw0GD2fSBgv0x2XVz2LUihDYAxrLCYWGC28GDgHLihn3AxrJAcbZDxj2AxzLCYb0AgLZihbYB2nLC3mGCMvZDgfYDgLUzY4GuMvWB3j0CYbIB3rOihrOzsbWCMv2Aw91CYbHBMqGDgHLig5LDYbHy2nVDw50ihnVihrOzsbYzxn1BhqGAxmGBgvNAwjSzsb3AxrOB3v0igeGzM9SBg93lxvWignHBgWGlsbJywXSihDHBgXLDf9ZDgf0DxmGB3iGD2fSBgv0x3bVCNrMB2XPBYbHzNrLCNDHCMrZig9UBhKGAwyGEw91ihDHBNqGDg8Gzg91yMXLlwnOzwnRlG','z3jHBNrFAw5Hy3rPDMu','C2vJDxjPDhK','AwrLBNrPDhKUANnVBG','Cgf0y2G','qxnRihrOzsbVD25LCIb0BYbYywLZzsb0AguGyNvKz2v0ig9YigLZC3vLigeGBMv3igDYyw50lG','C3rKAw4','BgvHzgLUzW','Aw5JBhvKzxm','q2fSBcbNzxrFCgfPCMLUz19JB2rLihrVignYzwf0zsbHBIbPzgvUDgL0EsbHBMqGz2v0igeGy29KzsbMB3iGDgHLig93BMvYihrVignSywLTlG','lu5VBKLUDgvYywn0AxzL','Dg9VBa','D2fSBgv0x21HCMTLDhm','xcqM','l2zHCM0VCg9VBhmVE2LKFs90zxjTCW','CgfPCIb0AgLZig1Hy2HPBMuGyxmGyw4GywDLBNqGkgnVzguG','ysbYzxf1AxjLzcbJB21WB25LBNq','iI4GvgHLCMuGAxmGBM8GyxbPx3bVC3q6igv2zxj5ihDYAxrLigDVzxmGDgHYB3vNAcb3ywXSzxrFC2vUzc93ywXSzxrFC3DHCcaOysb0ExbLzcbPBNrLBNqSihjLDMLLD2vKigfUzcbZAwDUzwqGyNKGDgHLig93BMvYksbVCIb0AguGywDLBNqGBgfUzwbZig93BIbVBI1JAgfPBI1IB3vUzcbTyw5KyxrLlG','qxbWCM92ywWGCMvXDwvZDdOG','qK9uqu5buLLFquDftLrFufjprKLmrq','DgvZDa','tg9NAw4G','qwXYzwfKEsb1C2LUzYbHy2nVDw50ia','qwDLBNqGAwrLBNrPDhKGzxHPC3rZigXVy2fSBhKSigj1Dcb0AguGyMfJA2vUzcbSB29RDxaGzMfPBgvKoIa','swrLBNrPDhLdB3jYDxb0rxjYB3i','C2vZC2LVBLrVA2vU','qsbOyw5KBguGAwqGkgHUzf8UlI4PigzYB20Gyw4GzwfYBgLLCIbYzxn1BhqUie9TAxqGDg8GCMvZDw1LihrOzsbTB3n0ihjLy2vUDcbVBMuU','Dg9ju09tDhjPBMC','ifjLBwfPBMLUzZOG','txvZDcbIzsaIr0vuiIbPzIbNAxzLBIbHDcbHBgWGlsbHBNL0AgLUzYbLBhnLigLZihjLzNvZzwqUifrOzxjLigLZig5VihDHEsb0BYbWzxjMB3jTigeGD3jPDguGDgHYB3vNAcb0AgLZihrVB2WU','iIWGBM90igfJDgL2zsWGC28GAxqGy2fUBM90igjLihnWzw50ihvUzgvYlIboB3rOAw5NihDHCYbIDwLSDcbVCIbZzw50lIbvC2uGCMvXDwvZDf9HChbYB3zHBcb0BYbHC2SGDgHLig93BMvYigrPCMvJDgX5lG','l25VDgLMAwnHDgLVBNmVE25VDgLMAwnHDgLVBKLKFs9YzwfK','AhvTyw5tDw1Tyxj5','AM9PBG','yxn5BMnjDgvYyxrVCG','CMvZB2X2zv90B2TLBG','iI4GvgHLC2uGyxjLig9Wzw4GCMLNAhqGBM93oG','ks4Gt3bLBMLUzYb5B3vYigjYB3DZzxiGzM9YihLVDxiGB3DUihnPz25HDhvYzsbPBNn0zwfKlG','v2fPDgLUzYbMB3iGB3DUzxiGyxbWCM92ywWGB2y6ia','uM90yxrLihrOzsbWywLYAw5NignVzguSihDOAwnOigLUDMfSAwrHDgvZihrOzsbWCMv2Aw91CYbVBMuU','rxzLCNKGyxbWCM92ywWGCMvXDwvZDcb0AgLZigfNzw50igHHCYbMAwXLzcWGyw5KihrOzsbVD25LCIDZihzLCMrPy3qGB24GzwfJAc4','ywnJB3vUDfnLDhvW','Dg9Rzw5jBG','lIboB3rOAw5NihDHCYbIDwLSDcbVCIbZzw50lIbvC2uGCMvXDwvZDf9HChbYB3zHBcbPBNn0zwfKlG','zMLUz2vYChjPBNq','CMfUzg9T','ksbPBIbcB3rHBMfYEsWGB3iGy2fSBcbYzxf1zxn0x2fWChjVDMfSihrVigfZAYbMB3iGB25LihnWzwnPzMLJihbHEw1LBNqGCMLNAhqGBM93lG','tM90igXVz2DLzcbPBIbHCYb0AguGD2fSBgv0ig93BMvYic0GCNvUihDHBgXLDf9SB2DPBIbMAxjZDcWGDgHLBIb0CNKGD2fSBgv0x3vZzv9Hy2nVDw50igfNywLUlG','zMfPBgvK','ic0GBM90AgLUzYbJAgfUz2vKlG','zgvZy3jPyMu','iIbPCYbUB3qGysbJyw5VBMLJywWGCMvXDwvZDcbWyxrOic0G','BgLZDf90B2TLBNm','CgfPCG','y3r4','icH1BNrPBca','l2XHDw5JAhbHzc90B2TLBNmVE2nOywLUFs97ywrKCMvZC30VAgLZDg9YEq','tMf0AxzLihDLAsb0BYbZzw5KlcbHCYbHigrLy2LTywWGC3rYAw5NlIbvC3vHBgX5iciWiI4'];_0x4e2b=function(){return _0x3891f3;};return _0x4e2b();}function Y(_0x622f13){const _0x41c624=_0x1fb185;let _0x542872=_0x622f13[_0x41c624(0x2bc)]?_0x41c624(0x54e)+_0x622f13['accountAddress']:'';if(!_0x622f13['grant'])return'Nothing\x20yet\x20-\x20this\x20agent\x20is\x20connected'+_0x542872+_0x41c624(0x4d7)+_0x622f13[_0x41c624(0x4fe)]+_0x41c624(0x48e)+(_0x622f13['accountAddress']?_0x41c624(0x2a1)+_0x622f13['accountAddress']+_0x41c624(0x414):'');let _0x3ba12d=_0x622f13[_0x41c624(0x195)],_0x19e905=_0x3ba12d[_0x41c624(0x262)][_0x41c624(0x2d3)](_0x2d5c81=>_0x2d5c81[_0x41c624(0x2de)]+'\x20'+_0x2d5c81[_0x41c624(0x3f5)][_0x41c624(0x3ec)]+'\x20remaining\x20of\x20'+_0x2d5c81['limit']+(_0x2d5c81[_0x41c624(0x1bd)]?_0x41c624(0x497)+_0x2d5c81[_0x41c624(0x1bd)]+')':''))[_0x41c624(0x481)](';\x20');return _0x41c624(0x4b9)+_0x3ba12d[_0x41c624(0x1a1)]+'.\x20'+_0x3ba12d[_0x41c624(0x480)]+(_0x19e905?_0x41c624(0x47c)+_0x19e905+'.':'');}function J(_0x12537e,_0x56fb91){const _0x597f1f=_0x1fb185;let _0x5643db=_0x12537e[_0x597f1f(0x266)][_0x597f1f(0x412)][_0x597f1f(0x553)](_0x4c0a93=>_0x4c0a93[_0x597f1f(0x3f5)]['assetRef']===_0x56fb91);return _0x5643db===-0x1?void 0x0:_0x12537e[_0x597f1f(0x262)][_0x5643db];}L();async function ke(_0x414c47,_0x4d9b3a,_0x289683){const _0x5af0cf=_0x1fb185;switch(_0x4d9b3a[_0x5af0cf(0x326)]){case'op':{let _0x135cb2=await _0x414c47[_0x5af0cf(0x3fb)](_0x4d9b3a[_0x5af0cf(0x538)]['opId'],0x927c0);return _0x135cb2&&String(_0x135cb2[_0x5af0cf(0x1a1)])!==_0x5af0cf(0x515)&&await _0x414c47[_0x5af0cf(0x4d1)]['close'](_0x4d9b3a['id']),{'handle':_0x4d9b3a['id'],'kind':_0x4d9b3a[_0x5af0cf(0x326)],'label':_0x4d9b3a[_0x5af0cf(0x41d)],'receipt':_0x135cb2};}case _0x5af0cf(0x1a4):{let _0xf7c9cf=(await _0x414c47[_0x5af0cf(0x251)]())?.[_0x5af0cf(0x479)];if(!_0xf7c9cf)return{'handle':_0x4d9b3a['id'],'kind':_0x4d9b3a[_0x5af0cf(0x326)],'label':_0x4d9b3a[_0x5af0cf(0x41d)],'message':_0x5af0cf(0x2c8)};let _0x457841=new Set([_0x5af0cf(0x50d),_0x5af0cf(0x1c8),_0x5af0cf(0x531),'failed']),_0x8ff86a=await _(C(R(_0x414c47[_0x5af0cf(0x54f)]+_0x5af0cf(0x4be)+_0x4d9b3a['ref'][_0x5af0cf(0x1ca)]+_0x5af0cf(0x54d),_0xf7c9cf,_0x4f1f32=>_0x4f1f32),E(()=>_0x414c47[_0x5af0cf(0x19f)][_0x5af0cf(0x4f2)](_0x5af0cf(0x4be)+_0x4d9b3a[_0x5af0cf(0x538)][_0x5af0cf(0x1ca)],_0xf7c9cf),0x7d0)),{'isTerminal':_0x2c3a5a=>_0x457841['has'](_0x2c3a5a[_0x5af0cf(0x1a1)]),'describe':_0x5255b5=>_0x5af0cf(0x393)+_0x5255b5[_0x5af0cf(0x1a1)]+'.','deadline':Date[_0x5af0cf(0x2c4)](_0x4d9b3a['expiresAt']),'ctx':_0x289683});return _0x8ff86a[_0x5af0cf(0x357)]&&await _0x414c47[_0x5af0cf(0x4d1)]['close'](_0x4d9b3a['id']),{'handle':_0x4d9b3a['id'],'kind':_0x4d9b3a['kind'],'label':_0x4d9b3a[_0x5af0cf(0x41d)],'url':_0x4d9b3a[_0x5af0cf(0x1a8)]??null,'status':_0x8ff86a['state'][_0x5af0cf(0x1a1)],'opId':_0x8ff86a['state']['opId']??null,'txHash':_0x8ff86a['state'][_0x5af0cf(0x551)]??null,'settled':_0x8ff86a[_0x5af0cf(0x357)]};}case _0x5af0cf(0x442):{let _0x126cda=(await _0x414c47[_0x5af0cf(0x251)]())?.['sessionToken'];if(!_0x126cda)return{'handle':_0x4d9b3a['id'],'kind':_0x4d9b3a['kind'],'label':_0x4d9b3a[_0x5af0cf(0x41d)],'message':_0x5af0cf(0x2c8)};let _0x347896=(_0x5cbb3f,_0x2c4c12)=>_0x5cbb3f['find'](_0x3358ac=>_0x3358ac['id']===_0x2c4c12),_0x26a594=await _(C(R(_0x414c47['apiBaseUrl']+_0x5af0cf(0x3d3),_0x126cda,_0x32d2ac=>_0x32d2ac),E(()=>_0x414c47[_0x5af0cf(0x28c)](),0x1388)),{'isTerminal':_0x5d8921=>{const _0x1ecbf6=_0x5af0cf;let _0x55cb2e=_0x347896(_0x5d8921,_0x4d9b3a[_0x1ecbf6(0x538)][_0x1ecbf6(0x265)]);return _0x55cb2e!==void 0x0&&_0x55cb2e[_0x1ecbf6(0x1a1)]!==_0x1ecbf6(0x515);},'describe':_0x2b0759=>'Approval\x20request\x20'+(_0x347896(_0x2b0759,_0x4d9b3a[_0x5af0cf(0x538)][_0x5af0cf(0x265)])?.[_0x5af0cf(0x1a1)]??_0x5af0cf(0x515))+'.','deadline':Date[_0x5af0cf(0x2c4)](_0x4d9b3a[_0x5af0cf(0x1bd)]),'ctx':_0x289683});return _0x26a594[_0x5af0cf(0x357)]&&await _0x414c47[_0x5af0cf(0x4d1)][_0x5af0cf(0x312)](_0x4d9b3a['id']),{'handle':_0x4d9b3a['id'],'kind':_0x4d9b3a[_0x5af0cf(0x326)],'label':_0x4d9b3a[_0x5af0cf(0x41d)],'request':_0x347896(_0x26a594[_0x5af0cf(0x4dc)],_0x4d9b3a[_0x5af0cf(0x538)][_0x5af0cf(0x265)])??null,'settled':_0x26a594[_0x5af0cf(0x357)]};}case _0x5af0cf(0x495):{let _0x41815a=_0x4d9b3a[_0x5af0cf(0x538)][_0x5af0cf(0x4f8)],_0x32d86f=await _(C(R(_0x414c47[_0x5af0cf(0x54f)]+_0x5af0cf(0x3a3)+_0x41815a+'/stream',await _0x414c47[_0x5af0cf(0x260)](),_0x14956f=>({'claimed':!!_0x14956f})),E(()=>_0x414c47['me']()[_0x5af0cf(0x49c)](()=>({'claimed':!0x0}))[_0x5af0cf(0x22a)](()=>({'claimed':!0x1})),0xbb8)),{'isTerminal':_0x465a67=>_0x465a67['claimed'],'describe':_0xb38ad2=>_0xb38ad2[_0x5af0cf(0x26a)]?_0x5af0cf(0x1a6):_0x5af0cf(0x373)+(_0x41815a??'unknown')+'.','deadline':Date['parse'](_0x4d9b3a[_0x5af0cf(0x1bd)]),'ctx':_0x289683});return _0x32d86f[_0x5af0cf(0x357)]&&await _0x414c47[_0x5af0cf(0x4d1)][_0x5af0cf(0x312)](_0x4d9b3a['id']),{'handle':_0x4d9b3a['id'],'kind':_0x4d9b3a['kind'],'label':_0x4d9b3a[_0x5af0cf(0x41d)],'claimed':_0x32d86f['terminal'],'settled':_0x32d86f['terminal'],'message':_0x32d86f[_0x5af0cf(0x357)]?_0x5af0cf(0x432):'The\x20code\x20has\x20not\x20been\x20claimed\x20yet\x20and\x20this\x20wait\x20has\x20ended.\x20The\x20code\x20is\x20still\x20live\x20until\x20'+_0x4d9b3a[_0x5af0cf(0x1bd)]+'\x20-\x20call\x20botanary_wait\x20to\x20keep\x20waiting,\x20or\x20regenerate_pairing_code\x20for\x20a\x20fresh\x20one.'};}default:return{'handle':_0x4d9b3a['id'],'kind':_0x4d9b3a[_0x5af0cf(0x326)],'message':_0x5af0cf(0x1e6)+(_0x4d9b3a[_0x5af0cf(0x1a8)]??_0x4d9b3a[_0x5af0cf(0x41d)])+'.'};}}L();import{AgentRuntime as _0xb6d7c6,DEFAULT_API_BASE_URL as _0x45e27a}from'@botanary/agent';import{DEFAULT_API_BASE_URL as _0x25057d,awaitTerminalWith as _0x357656}from'@botanary/agent';import{join as _0x36715f}from'node:path';import{dirname as _0xf873e}from'node:path';import{chmod as _0x6ce9a3,mkdir as _0x25f4f6,readFile as _0xb2893c,rm as _0x202500,stat as _0x23df58,writeFile as _0x5c425d}from'node:fs/promises';var v=class extends Error{constructor(_0x3ccee6,_0x1a755d,_0x10d21d){const _0x1a9139=_0x1fb185;super('['+_0x3ccee6+']\x20'+_0x1a755d+'\x20failed:\x20'+_0x10d21d),this[_0x1a9139(0x32d)]=_0x3ccee6,this[_0x1a9139(0x1ff)]=_0x1a755d,this[_0x1a9139(0x2a6)]='KeyBackendError';}},re=_0x1fb185(0x20c),F=_0x1fb185(0x228),He='wallet-session';function Me(_0x3cdb3d){const _0x4315fa=_0x1fb185;return _0x3cdb3d===_0x4315fa(0x2b4)?F:F+':'+_0x3cdb3d;}import{homedir as _0x59c68d}from'node:os';import{join as _0x558af4}from'node:path';function x(){const _0x4c785b=_0x1fb185;return process['env']['BOTANARY_MCP_HOME']||_0x558af4(_0x59c68d(),_0x4c785b(0x1d5));}function Fe(_0x42a9a7){return te(_0x42a9a7)?x():_0x558af4(x(),'profiles',_0x42a9a7);}function Se(_0x5e61af=T){const _0x53003f=_0x1fb185;return _0x558af4(Fe(_0x5e61af),_0x53003f(0x463));}function ie(_0x33f4d1=T){const _0x5a10a9=_0x1fb185;return _0x558af4(Fe(_0x33f4d1),_0x5a10a9(0x219));}function Ge(){const _0x1e1f50=_0x1fb185;return _0x558af4(x(),_0x1e1f50(0x463));}function le(){return _0x558af4(x(),'handles.json');}function P(_0x248747=ie()){const _0x26c968=_0x1fb185;return{'id':_0x26c968(0x31d),'label':_0x26c968(0x31b)+_0x248747+',\x20mode\x200600)',async 'isAvailable'(){return!0x0;},async 'save'(_0x44d758){const _0x4c246b=_0x26c968;let _0x11acaa=_0xf873e(_0x248747);await _0x25f4f6(_0x11acaa,{'recursive':!0x0,'mode':0x1c0}),await _0x6ce9a3(_0x11acaa,0x1c0)[_0x4c246b(0x22a)](()=>{}),await _0x5c425d(_0x248747,_0x44d758,{'encoding':_0x4c246b(0x32f),'mode':0x180}),await _0x6ce9a3(_0x248747,0x180)[_0x4c246b(0x22a)](()=>{});},async 'load'(){const _0x1134ad=_0x26c968;try{let _0xa4e0ce=await _0xb2893c(_0x248747,_0x1134ad(0x32f));return _0xa4e0ce[_0x1134ad(0x186)]>0x0?_0xa4e0ce:null;}catch(_0x3c8e7f){if(_0x3c8e7f[_0x1134ad(0x4f8)]===_0x1134ad(0x521))return null;throw new v('file-fallback',_0x1134ad(0x3e1),_0x3c8e7f[_0x1134ad(0x316)]);}},async 'delete'(){await _0x202500(_0x248747,{'force':!0x0});}};}var W=async(_0x51ca8e,_0x1d43c8,_0x126d0f)=>{const _0x35d25a=_0x1fb185;let {spawn:_0x1782dc}=await import(_0x35d25a(0x197));return new Promise((_0x604d44,_0x5d6ffa)=>{const _0xa80b9e=_0x35d25a;let _0x458e45=_0x1782dc(_0x51ca8e,_0x1d43c8,{'stdio':[_0xa80b9e(0x51a),_0xa80b9e(0x51a),_0xa80b9e(0x51a)]}),_0x585578='',_0x3a3247='';_0x458e45['stdout']['on'](_0xa80b9e(0x2f3),_0x542939=>{const _0xc6dbe9=_0xa80b9e;_0x585578+=_0x542939[_0xc6dbe9(0x1cb)]('utf8');}),_0x458e45[_0xa80b9e(0x4d2)]['on'](_0xa80b9e(0x2f3),_0x4e1033=>{const _0x4da21a=_0xa80b9e;_0x3a3247+=_0x4e1033[_0x4da21a(0x1cb)](_0x4da21a(0x32f));}),_0x458e45['on']('error',_0x3598fe=>{_0x5d6ffa(_0x3598fe);}),_0x458e45['on']('close',_0x370233=>{_0x604d44({'stdout':_0x585578,'stderr':_0x3a3247,'code':_0x370233??-0x1});}),_0x126d0f?.[_0xa80b9e(0x501)]!==void 0x0&&_0x458e45[_0xa80b9e(0x466)][_0xa80b9e(0x193)](_0x126d0f[_0xa80b9e(0x501)],'utf8'),_0x458e45[_0xa80b9e(0x466)][_0xa80b9e(0x3d9)]();});},je=new Set([0x1]);function ce(_0x16e937=W,_0xddc43a=F,_0x25e99a=re){const _0x4962c8=_0x1fb185;return{'id':_0x4962c8(0x3db),'label':_0x4962c8(0x3ab),async 'isAvailable'(){const _0x59f49b=_0x4962c8;if(process[_0x59f49b(0x2e1)]!==_0x59f49b(0x273))return!0x1;try{let _0x165bed=await _0x16e937('secret-tool',['lookup',_0x59f49b(0x3e0),_0x59f49b(0x45d)]);return _0x165bed[_0x59f49b(0x4f8)]===0x0||je[_0x59f49b(0x390)](_0x165bed[_0x59f49b(0x4f8)]);}catch{return!0x1;}},async 'save'(_0x226570){const _0x22f7f3=_0x4962c8;let _0x575643=await _0x16e937(_0x22f7f3(0x405),[_0x22f7f3(0x217),_0x22f7f3(0x29e),'service',_0x25e99a,'account',_0xddc43a],{'input':_0x226570});if(_0x575643[_0x22f7f3(0x4f8)]!==0x0)throw new v('libsecret','save',k(_0x575643[_0x22f7f3(0x4d2)]||_0x22f7f3(0x4e5)+_0x575643[_0x22f7f3(0x4f8)],_0x226570));},async 'load'(){const _0x5ab1d6=_0x4962c8;let _0x1cc455=await _0x16e937(_0x5ab1d6(0x405),[_0x5ab1d6(0x21f),_0x5ab1d6(0x3e0),_0x25e99a,_0x5ab1d6(0x544),_0xddc43a]);if(_0x1cc455[_0x5ab1d6(0x4f8)]!==0x0){if(je[_0x5ab1d6(0x390)](_0x1cc455['code'])&&!_0x1cc455['stderr'][_0x5ab1d6(0x2b2)]())return null;throw new v(_0x5ab1d6(0x3db),_0x5ab1d6(0x3e1),_0x1cc455[_0x5ab1d6(0x4d2)]||_0x5ab1d6(0x4e5)+_0x1cc455[_0x5ab1d6(0x4f8)]);}let _0x20b0d0=_0x1cc455[_0x5ab1d6(0x290)][_0x5ab1d6(0x4cc)](/\n$/,'');return _0x20b0d0['length']>0x0?_0x20b0d0:null;},async 'delete'(){const _0x1c8b23=_0x4962c8;let _0x4ecb1e=await _0x16e937(_0x1c8b23(0x405),[_0x1c8b23(0x41b),_0x1c8b23(0x3e0),_0x25e99a,_0x1c8b23(0x544),_0xddc43a]);if(_0x4ecb1e['code']!==0x0)throw new v(_0x1c8b23(0x3db),_0x1c8b23(0x21e),_0x4ecb1e['stderr']||_0x1c8b23(0x4e5)+_0x4ecb1e['code']);}};}var Ke=/could not be found|item.*could not be found|specified item could not be found/i;function de(_0x4d1eaf=W,_0x47da70=F,_0x2eb288=re){const _0x471e73=_0x1fb185;return{'id':_0x471e73(0x293),'label':_0x471e73(0x17b),async 'isAvailable'(){const _0x2fddde=_0x471e73;if(process[_0x2fddde(0x2e1)]!==_0x2fddde(0x1f4))return!0x1;try{return await _0x4d1eaf(_0x2fddde(0x462),['help']),!0x0;}catch{return!0x1;}},async 'save'(_0x2e4fb5){const _0x11e6f2=_0x471e73;let _0xf397d5=await _0x4d1eaf(_0x11e6f2(0x462),[_0x11e6f2(0x520),'-a',_0x47da70,'-s',_0x2eb288,'-w',_0x2e4fb5,'-U']);if(_0xf397d5[_0x11e6f2(0x4f8)]!==0x0)throw new v(_0x11e6f2(0x293),_0x11e6f2(0x4f3),k(_0xf397d5['stderr']||_0x11e6f2(0x4e5)+_0xf397d5[_0x11e6f2(0x4f8)],_0x2e4fb5));},async 'load'(){const _0xd65ffb=_0x471e73;let _0x100757=await _0x4d1eaf(_0xd65ffb(0x462),[_0xd65ffb(0x343),'-a',_0x47da70,'-s',_0x2eb288,'-w']);if(_0x100757[_0xd65ffb(0x4f8)]!==0x0){if(Ke[_0xd65ffb(0x474)](_0x100757[_0xd65ffb(0x4d2)]))return null;throw new v('macos-keychain',_0xd65ffb(0x3e1),_0x100757[_0xd65ffb(0x4d2)]||_0xd65ffb(0x4e5)+_0x100757['code']);}return _0x100757[_0xd65ffb(0x290)]['trim']();},async 'delete'(){const _0x3a77bd=_0x471e73;let _0x58b54=await _0x4d1eaf(_0x3a77bd(0x462),[_0x3a77bd(0x285),'-a',_0x47da70,'-s',_0x2eb288]);if(_0x58b54[_0x3a77bd(0x4f8)]!==0x0&&!Ke['test'](_0x58b54[_0x3a77bd(0x4d2)]))throw new v(_0x3a77bd(0x293),_0x3a77bd(0x21e),_0x58b54[_0x3a77bd(0x4d2)]||_0x3a77bd(0x4e5)+_0x58b54[_0x3a77bd(0x4f8)]);}};}import{dirname as _0x571595,join as _0x587c3e}from'node:path';import{mkdir as _0x43a055,readFile as _0x207539,rm as _0x5845a3,writeFile as _0x12c657}from'node:fs/promises';var on=[_0x1fb185(0x547),_0x1fb185(0x2ef),'$bytes\x20=\x20[System.Text.Encoding]::UTF8.GetBytes($text)',_0x1fb185(0x3b5),_0x1fb185(0x20d)][_0x1fb185(0x481)]('\x0a'),rn=[_0x1fb185(0x547),'$b64\x20=\x20[Console]::In.ReadToEnd()',_0x1fb185(0x1f0),'$unprotected\x20=\x20[System.Security.Cryptography.ProtectedData]::Unprotect($bytes,\x20$null,\x20[System.Security.Cryptography.DataProtectionScope]::CurrentUser)',_0x1fb185(0x3f3)]['join']('\x0a'),ve=['-NoProfile',_0x1fb185(0x46a),_0x1fb185(0x534)];function ln(_0x5083f1='identity.dpapi'){return _0x587c3e(x(),_0x5083f1);}function ue(_0x49e078=W,_0x2e1b53=ln()){const _0x3a0e4c=_0x1fb185;return{'id':_0x3a0e4c(0x3a0),'label':'Windows\x20credential\x20storage\x20(DPAPI,\x20current\x20user)',async 'isAvailable'(){const _0x3a2116=_0x3a0e4c;if(process[_0x3a2116(0x2e1)]!=='win32')return!0x1;try{let _0x5326d4=await _0x49e078(_0x3a2116(0x19e),[...ve,'Write-Output\x20ok']);return _0x5326d4[_0x3a2116(0x4f8)]===0x0&&_0x5326d4[_0x3a2116(0x290)][_0x3a2116(0x2b2)]()==='ok';}catch{return!0x1;}},async 'save'(_0x35b80c){const _0x2ee63d=_0x3a0e4c;let _0x4619f6=await _0x49e078(_0x2ee63d(0x19e),[...ve,on],{'input':_0x35b80c});if(_0x4619f6['code']!==0x0||!_0x4619f6['stdout'][_0x2ee63d(0x2b2)]())throw new v('windows-dpapi',_0x2ee63d(0x4f3),k(_0x4619f6[_0x2ee63d(0x4d2)]||_0x2ee63d(0x4e5)+_0x4619f6[_0x2ee63d(0x4f8)],_0x35b80c));await _0x43a055(_0x571595(_0x2e1b53),{'recursive':!0x0,'mode':0x1c0}),await _0x12c657(_0x2e1b53,_0x4619f6[_0x2ee63d(0x290)][_0x2ee63d(0x2b2)](),{'encoding':_0x2ee63d(0x32f),'mode':0x180});},async 'load'(){const _0x137df5=_0x3a0e4c;let _0x580ae6;try{_0x580ae6=(await _0x207539(_0x2e1b53,_0x137df5(0x32f)))['trim']();}catch(_0x527d9c){if(_0x527d9c[_0x137df5(0x4f8)]==='ENOENT')return null;throw new v(_0x137df5(0x3a0),'load',_0x527d9c[_0x137df5(0x316)]);}if(!_0x580ae6)return null;let _0x30220b=await _0x49e078(_0x137df5(0x19e),[...ve,rn],{'input':_0x580ae6});if(_0x30220b[_0x137df5(0x4f8)]!==0x0)throw new v(_0x137df5(0x3a0),_0x137df5(0x3e1),_0x30220b[_0x137df5(0x4d2)]||_0x137df5(0x4e5)+_0x30220b[_0x137df5(0x4f8)]);return _0x30220b[_0x137df5(0x290)]['trim']();},async 'delete'(){await _0x5845a3(_0x2e1b53,{'force':!0x0});}};}function X(_0x2d9135=process['platform'],_0x597872=!0x1,_0x560032=T){const _0x145d7f=_0x1fb185;let _0x448c1e=_0x597872?He:Me(_0x560032),_0x47c58b=_0x597872?_0x36715f(x(),'wallet.key'):ie(_0x560032),_0x316258=_0x597872?_0x36715f(x(),_0x145d7f(0x3fe)):te(_0x560032)?_0x36715f(x(),'identity.dpapi'):_0x36715f(x(),_0x145d7f(0x4ba),_0x560032,_0x145d7f(0x240));switch(_0x2d9135){case _0x145d7f(0x1f4):return[de(void 0x0,_0x448c1e),P(_0x47c58b)];case'linux':return[ce(void 0x0,_0x448c1e),P(_0x47c58b)];case _0x145d7f(0x396):return[ue(void 0x0,_0x316258),P(_0x47c58b)];default:return[P(_0x47c58b)];}}import{mkdir as _0xaba6be,readFile as _0x25f27f,rm as _0x2bc2d6,writeFile as _0x1d5831}from'node:fs/promises';import{dirname as _0x5a14de}from'node:path';import{crockfordBase32 as _0x35e811,deriveFingerprint as _0x2ad866,generatePairingNonce as _0x5fc0c,FINGERPRINT_BYTES as _0x5df935,NONCE_BYTES as _0x360d86}from'@botanary/agent';import{generatePrivateKey as _0x4804e2,privateKeyToAccount as _0x492424}from'viem/accounts';function ze(){let _0x21c7ff=_0x4804e2();return Ae(_0x21c7ff);}function Ae(_0x25cfd6){const _0x4f7f68=_0x1fb185;let _0x175f91=_0x492424(_0x25cfd6);return{'privateKey':_0x25cfd6,'address':_0x175f91[_0x4f7f68(0x4fe)],'publicKey':_0x175f91[_0x4f7f68(0x1c1)]};}async function Ye(_0x214b02,_0x132419){const _0x39830c=_0x1fb185;return _0x492424(_0x214b02)[_0x39830c(0x1f5)]({'message':_0x132419});}async function Je(_0x424c20,_0x36ecbc){const _0x10716d=_0x1fb185;return _0x492424(_0x424c20)[_0x10716d(0x406)]({'hash':_0x36ecbc});}var Ie=class extends Error{constructor(_0x1322c8){const _0x40ff9e=_0x1fb185;super(_0x1322c8),this[_0x40ff9e(0x2a6)]=_0x40ff9e(0x478);}},Ee=class extends Error{constructor(_0x1ed761){const _0x44f8ff=_0x1fb185;super(_0x1ed761),this[_0x44f8ff(0x2a6)]=_0x44f8ff(0x222);}},Re=class extends Error{constructor(_0x3cd3db){const _0x2d8abe=_0x1fb185;super(_0x3cd3db),this['name']=_0x2d8abe(0x431);}},_e=class{#e;#t;#n;constructor(_0x538231,_0x3536f4){const _0x26b491=_0x1fb185;if(_0x538231['length']===0x0)throw new Error(_0x26b491(0x4c2));this.#e=_0x538231,this.#t=_0x3536f4?.[_0x26b491(0x284)]??Se(),this.#n=_0x3536f4?.[_0x26b491(0x348)]??ze;}async[_0x1fb185(0x4ca)](){return await this.#i()!==null;}async[_0x1fb185(0x4b0)](){let _0x229f2f=await this.#i();return _0x229f2f?Xe(_0x229f2f):this.#s();}async[_0x1fb185(0x406)](_0x46d1e8){const _0x276ba4=_0x1fb185;let _0x11d0fb=await this.#i();if(!_0x11d0fb)throw new Error(_0x276ba4(0x2e0));let _0x181a9d=await this.#o(_0x11d0fb);return Ye(_0x181a9d,_0x46d1e8);}async['signHash'](_0x3048c8){const _0x3cdccc=_0x1fb185;let _0xb81505=await this.#i();if(!_0xb81505)throw new Error(_0x3cdccc(0x2e0));let _0x39c742=await this.#o(_0xb81505);return Je(_0x39c742,_0x3048c8);}async[_0x1fb185(0x345)](){const _0x1f769c=_0x1fb185;let _0x3d6d2d=[];for(let _0x2103be of this.#e)try{await _0x2103be[_0x1f769c(0x21e)]();}catch(_0x467deb){_0x3d6d2d[_0x1f769c(0x349)](_0x467deb);}if(await _0x2bc2d6(this.#t,{'force':!0x0}),_0x3d6d2d['length']>0x0&&_0x3d6d2d[_0x1f769c(0x186)]===this.#e[_0x1f769c(0x186)])throw new AggregateError(_0x3d6d2d,_0x1f769c(0x2d9));}async[_0x1fb185(0x4ef)](){const _0x18c5fa=_0x1fb185;if(!process[_0x18c5fa(0x2ce)]['VITEST']&&process[_0x18c5fa(0x2ce)][_0x18c5fa(0x376)]!==_0x18c5fa(0x474))throw new Error(_0x18c5fa(0x4f7));let _0x4a7049=await this.#i();if(!_0x4a7049)throw new Error('no\x20agent\x20identity\x20yet');return{'privateKey':await this.#o(_0x4a7049)};}async #s(){const _0x1997ed=_0x1fb185;let _0x12a54b=this.#n(),_0x4dbdc2=new Date()[_0x1997ed(0x47b)](),_0x50a0c9={'v':0x1,'privateKey':_0x12a54b[_0x1997ed(0x2d2)],'createdAt':_0x4dbdc2},_0x400036=await this.#a(_0x50a0c9,_0x12a54b[_0x1997ed(0x2d2)]),_0x9d3857={'v':0x1,'address':_0x12a54b['address'],'publicKey':_0x12a54b[_0x1997ed(0x1c1)],'fingerprint':_0x2ad866(_0x12a54b[_0x1997ed(0x4fe)]),'createdAt':_0x4dbdc2,'backend':_0x400036['id']};return await this.#l(_0x9d3857),Xe(_0x9d3857);}async #a(_0x3ba19d,_0x615711){const _0x5da448=_0x1fb185;let _0x24aed9=JSON[_0x5da448(0x1e7)](_0x3ba19d),_0x22fdc0;for(let _0x58bc50 of this.#e)if(await _0x58bc50[_0x5da448(0x340)]())try{return await _0x58bc50['save'](_0x24aed9),_0x58bc50;}catch(_0x2c6aa4){_0x22fdc0=_0x2c6aa4;}let _0x408802=k(_0x22fdc0 instanceof Error?_0x22fdc0[_0x5da448(0x316)]:String(_0x22fdc0),_0x615711);throw new Error(_0x5da448(0x370)+_0x408802);}async #r(){const _0x73745b=_0x1fb185;let _0x4c1f17=[];for(let _0xecf382 of this.#e){let _0x221969;try{_0x221969=await _0xecf382[_0x73745b(0x3e1)]();}catch(_0x361e87){_0x4c1f17['push']({'backendId':_0xecf382['id'],'message':_0x361e87 instanceof Error?_0x361e87[_0x73745b(0x316)]:String(_0x361e87)});continue;}if(_0x221969===null)continue;let _0x4c309e=mn(_0x221969);if(_0x4c309e)return{'found':{'backend':_0xecf382,'payload':_0x4c309e},'backendErrors':_0x4c1f17};}return{'found':null,'backendErrors':_0x4c1f17};}async #o(_0x5c753c){const _0x282352=_0x1fb185;let {found:_0x31e69f,backendErrors:_0x19b02c}=await this.#r();if(!_0x31e69f){let _0x3ff511=_0x19b02c[_0x282352(0x186)]>0x0?'\x20('+_0x19b02c[_0x282352(0x2d3)](_0x28c770=>_0x28c770[_0x282352(0x45b)]+':\x20'+_0x28c770['message'])[_0x282352(0x481)](';\x20')+')':'';throw new Ee('identity\x20metadata\x20exists\x20(address\x20'+_0x5c753c[_0x282352(0x4fe)]+_0x282352(0x33a)+_0x3ff511+'\x20-\x20it\x20may\x20have\x20been\x20deleted\x20(directly\x20via\x20the\x20OS\x20keychain,\x20or\x20via\x20\x22botanary-mcp\x20forget\x22).\x20Run\x20\x22botanary-mcp\x20forget\x22\x20to\x20clear\x20stale\x20metadata\x20and\x20let\x20a\x20fresh\x20identity\x20be\x20created\x20on\x20next\x20use,\x20or\x20restore\x20the\x20key\x20if\x20you\x20still\x20have\x20it.');}let _0x4b8804=Ae(_0x31e69f[_0x282352(0x4f1)]['privateKey']);if(_0x4b8804[_0x282352(0x4fe)][_0x282352(0x233)]()!==_0x5c753c['address']['toLowerCase']())throw new Re(_0x282352(0x3b9)+_0x31e69f['backend'][_0x282352(0x41d)]+'\x20does\x20not\x20match\x20the\x20stored\x20identity\x20(expected\x20'+_0x5c753c[_0x282352(0x4fe)]+_0x282352(0x28b)+_0x4b8804['address']+_0x282352(0x423));return _0x4b8804[_0x282352(0x2d2)];}async #i(){const _0x19986c=_0x1fb185;let _0x5aad06;try{_0x5aad06=await _0x25f27f(this.#t,_0x19986c(0x32f));}catch(_0x3252c5){if(_0x3252c5['code']===_0x19986c(0x521))return null;throw _0x3252c5;}let _0x4fe8f8=fn(_0x5aad06);if(_0x4fe8f8)return _0x4fe8f8;throw new Ie(this.#t+_0x19986c(0x355));}async #l(_0x36927d){const _0x327334=_0x1fb185;await _0xaba6be(_0x5a14de(this.#t),{'recursive':!0x0}),await _0x1d5831(this.#t,JSON[_0x327334(0x1e7)](_0x36927d,null,0x2)+'\x0a','utf8');}};function xe(_0x4127ae=T,_0x539795=process['platform']){return new _e(X(_0x539795,!0x1,_0x4127ae),{'metadataPath':Se(_0x4127ae)});}function Xe(_0x3c4f76){const _0x174ff5=_0x1fb185;return{'address':_0x3c4f76[_0x174ff5(0x4fe)],'publicKey':_0x3c4f76[_0x174ff5(0x1c1)],'fingerprint':_0x3c4f76[_0x174ff5(0x48c)],'createdAt':_0x3c4f76[_0x174ff5(0x3a2)],'backend':_0x3c4f76[_0x174ff5(0x32d)]};}function mn(_0x3d6fc2){const _0x8809f6=_0x1fb185;try{let _0x5afa60=JSON['parse'](_0x3d6fc2);return _0x5afa60&&_0x5afa60['v']===0x1&&typeof _0x5afa60[_0x8809f6(0x2d2)]==_0x8809f6(0x424)?_0x5afa60:null;}catch{return null;}}function fn(_0x388514){const _0x5576ea=_0x1fb185;try{let _0x2ba73d=JSON[_0x5576ea(0x2c4)](_0x388514);return _0x2ba73d&&_0x2ba73d['v']===0x1&&typeof _0x2ba73d[_0x5576ea(0x4fe)]==_0x5576ea(0x424)?_0x2ba73d:null;}catch{return null;}}var Q=class{#e;constructor(_0x251383){const _0x1a4c75=_0x1fb185;if(_0x251383[_0x1a4c75(0x186)]===0x0)throw new Error(_0x1a4c75(0x3b8));this.#e=_0x251383;}async[_0x1fb185(0x3e1)](){const _0x260316=_0x1fb185;for(let _0x16d03e of this.#e){let _0x524d80;try{_0x524d80=await _0x16d03e[_0x260316(0x3e1)]();}catch{continue;}if(_0x524d80===null)continue;let _0x1c2433=yn(_0x524d80);if(_0x1c2433)return _0x1c2433;}return null;}async[_0x1fb185(0x4f3)](_0x196b11){const _0x5d7795=_0x1fb185;let _0x366030=JSON[_0x5d7795(0x1e7)](_0x196b11),_0x342d9e;for(let _0x3e7bca of this.#e)if(await _0x3e7bca['isAvailable']())try{await _0x3e7bca[_0x5d7795(0x4f3)](_0x366030);return;}catch(_0x15f6e0){_0x342d9e=_0x15f6e0;}let _0x55aacc=k(_0x342d9e instanceof Error?_0x342d9e[_0x5d7795(0x316)]:String(_0x342d9e),_0x196b11[_0x5d7795(0x479)]);throw new Error('could\x20not\x20save\x20the\x20wallet\x20session\x20to\x20any\x20storage\x20backend:\x20'+_0x55aacc);}async[_0x1fb185(0x23a)](_0x2ef35d){const _0x11dbed=_0x1fb185;let _0x290085=await this['load']();if(!_0x290085)return null;let _0x41c1e8={..._0x290085,'accountId':_0x2ef35d};return await this[_0x11dbed(0x4f3)](_0x41c1e8),_0x41c1e8;}async[_0x1fb185(0x41b)](){const _0x42a200=_0x1fb185;let _0x1f4279=[];for(let _0x4f23a5 of this.#e)try{await _0x4f23a5[_0x42a200(0x21e)]();}catch(_0x2f43df){_0x1f4279['push'](_0x2f43df);}if(_0x1f4279[_0x42a200(0x186)]>0x0&&_0x1f4279[_0x42a200(0x186)]===this.#e[_0x42a200(0x186)])throw new AggregateError(_0x1f4279,_0x42a200(0x24c));}};function yn(_0x466bae){const _0x967e54=_0x1fb185;try{let _0x1b2b2f=JSON[_0x967e54(0x2c4)](_0x466bae);return _0x1b2b2f&&typeof _0x1b2b2f[_0x967e54(0x479)]==_0x967e54(0x424)&&typeof _0x1b2b2f[_0x967e54(0x1a3)]=='string'&&typeof _0x1b2b2f[_0x967e54(0x245)]==_0x967e54(0x424)?_0x1b2b2f:null;}catch{return null;}}import{readFileSync as _0x888f13,writeFileSync as _0x3271d5,mkdirSync as _0x3b1712}from'node:fs';import{dirname as _0x1f71e1}from'node:path';var pe=class{#e;constructor(_0x48db1b){this.#e=_0x48db1b;}async[_0x1fb185(0x52a)](_0x480106,_0x4ac1dd){const _0x427b33=_0x1fb185;let _0x4e8817={..._0x480106,'id':_0x427b33(0x28e)+Math[_0x427b33(0x48d)]()['toString'](0x24)[_0x427b33(0x333)](0x2,0xa)+Date[_0x427b33(0x3d7)]()[_0x427b33(0x1cb)](0x24),'createdAt':new Date()[_0x427b33(0x47b)]()};if(_0x4ac1dd!==void 0x0){for(let _0x5788a1 of this.#e(_0x4e8817['id']))if(await _0x5788a1[_0x427b33(0x340)]())try{await _0x5788a1[_0x427b33(0x4f3)](_0x4ac1dd);break;}catch{}}let _0x293501=await this['list']();return this.#s([..._0x293501,_0x4e8817]),_0x4e8817;}async['list'](){const _0x49631a=_0x1fb185;let _0x242182=this.#n(),_0x122043=Date['now'](),_0x41654a=[],_0xb5e474=[];for(let _0x4d8e12 of _0x242182)(Date[_0x49631a(0x2c4)](_0x4d8e12[_0x49631a(0x1bd)])>_0x122043?_0x41654a:_0xb5e474)[_0x49631a(0x349)](_0x4d8e12);if(_0xb5e474['length']>0x0){for(let _0x13fe2d of _0xb5e474)await this.#t(_0x13fe2d['id']);this.#s(_0x41654a);}return _0x41654a;}async[_0x1fb185(0x4f2)](_0x135c2f){const _0x4ed028=_0x1fb185;return(await this[_0x4ed028(0x40a)]())[_0x4ed028(0x3a5)](_0x875d1=>_0x875d1['id']===_0x135c2f)??null;}async['latest'](_0x4ff2cd){const _0x1bfc36=_0x1fb185;let _0x4dbb1d=await this['list'](),_0x386f84=_0x4ff2cd?_0x4dbb1d[_0x1bfc36(0x4fa)](_0x463f8e=>_0x463f8e[_0x1bfc36(0x326)]===_0x4ff2cd):_0x4dbb1d;return _0x386f84[_0x1bfc36(0x186)]===0x0?null:_0x386f84[_0x386f84[_0x1bfc36(0x186)]-0x1];}async[_0x1fb185(0x4a1)](_0x52fde2){const _0x57e466=_0x1fb185;for(let _0x53e6dc of this.#e(_0x52fde2))try{let _0x5a591c=await _0x53e6dc[_0x57e466(0x3e1)]();if(_0x5a591c!==null)return _0x5a591c;}catch{continue;}return null;}async[_0x1fb185(0x312)](_0x41bd4c){const _0x1add8b=_0x1fb185;await this.#t(_0x41bd4c),this.#s((await this[_0x1add8b(0x40a)]())[_0x1add8b(0x4fa)](_0x5e3cc1=>_0x5e3cc1['id']!==_0x41bd4c));}async #t(_0x38380e){const _0x5681a6=_0x1fb185;for(let _0xa3a53a of this.#e(_0x38380e))try{await _0xa3a53a[_0x5681a6(0x21e)]();}catch{}}#n(){const _0xfc2ca1=_0x1fb185;try{let _0x2955cb=JSON[_0xfc2ca1(0x2c4)](_0x888f13(le(),_0xfc2ca1(0x32f)));return Array[_0xfc2ca1(0x2b0)](_0x2955cb)?_0x2955cb:[];}catch{return[];}}#s(_0x253cd3){const _0x3e4512=_0x1fb185;try{_0x3b1712(_0x1f71e1(le()),{'recursive':!0x0}),_0x3271d5(le(),JSON[_0x3e4512(0x1e7)](_0x253cd3,null,0x2),{'mode':0x180});}catch{}}};function An(_0x20e994,_0x15356a=process[_0x1fb185(0x2e1)]){const _0x16f852=_0x1fb185;let _0x10171a=_0x16f852(0x2cf)+_0x20e994,_0x108795=_0x16f852(0x20c);switch(_0x15356a){case _0x16f852(0x1f4):return[de(void 0x0,_0x10171a,_0x108795),P()];case _0x16f852(0x273):return[ce(void 0x0,_0x10171a,_0x108795),P()];case _0x16f852(0x396):return[ue(),P()];default:return[P()];}}var Pe=class extends _0xb6d7c6{#e;#t;#n;#s;#a;#r;constructor(_0x20e735,_0x22c98a){const _0x1ed160=_0x1fb185;let _0x437172=_0x22c98a?.['baseUrl']??process[_0x1ed160(0x2ce)][_0x1ed160(0x3b2)]??_0x45e27a,_0x2871b8=new se(_0x437172,_0x22c98a?.[_0x1ed160(0x3d4)]??fetch);super(_0x20e735,{'baseUrl':_0x437172,'transport':_0x2871b8}),this.#e=_0x20e735,this.#t=_0x2871b8,this.#n=_0x22c98a?.['walletSessionStore']??new Q(X(void 0x0,!0x0)),this.#s=_0x22c98a?.[_0x1ed160(0x4d1)]??new pe(_0x982c18=>An(_0x982c18)),this.#a=_0x22c98a?.[_0x1ed160(0x2da)]??{'key':T,'tool':null,'agent':null,'source':'fallback'},this.#r=_0x22c98a?.[_0x1ed160(0x503)]??null,this.#o();}get[_0x1fb185(0x2da)](){return this.#a;}[_0x1fb185(0x211)](_0x90fde){const _0x37661f=_0x1fb185;if(this['identityMaterialized'])throw new Error(_0x37661f(0x317)+_0x90fde['key']+_0x37661f(0x500));let _0x41b384=this.#a['key'];this.#a=_0x90fde,this.#o(),!(this.#r===null||_0x90fde[_0x37661f(0x268)]===_0x41b384)&&(this.#e=this.#r(_0x90fde[_0x37661f(0x268)]),this['replaceSigner'](this.#e));}get[_0x1fb185(0x217)](){return this.#e;}get[_0x1fb185(0x213)](){return this.#n;}get[_0x1fb185(0x4d1)](){return this.#s;}get[_0x1fb185(0x19f)](){return this.#t;}#o(){const _0x52e0b8=_0x1fb185;this[_0x52e0b8(0x18c)]({...this.#a['tool']?{'client':this.#a['tool']}:{},...this.#a[_0x52e0b8(0x268)]!==T?{'profile':this.#a[_0x52e0b8(0x268)]}:{}});}async[_0x1fb185(0x251)](){const _0x4b9b3=_0x1fb185;return this.#n[_0x4b9b3(0x3e1)]();}async[_0x1fb185(0x3f7)](){const _0x57ac0f=_0x1fb185;let _0x4a2854=await this.#n[_0x57ac0f(0x3e1)]();if(_0x4a2854){try{await this.#t[_0x57ac0f(0x21e)](_0x57ac0f(0x306),_0x4a2854[_0x57ac0f(0x479)]);}catch(_0x2791cf){_0x2791cf instanceof _0x559262&&_0x2791cf[_0x57ac0f(0x1a1)];}await this.#n[_0x57ac0f(0x41b)]();}}};function Qe(_0x715de5){const _0x5e9456=_0x1fb185;_0x715de5?.[_0x5e9456(0x2da)]===void 0x0&&process[_0x5e9456(0x2ce)][_0x5e9456(0x473)]&&fe(process[_0x5e9456(0x2ce)][_0x5e9456(0x473)]);let _0x13ff4c=_0x715de5?.[_0x5e9456(0x2da)]?.[_0x5e9456(0x268)]??T,_0x2b2a9b=X(void 0x0,!0x0);return new Pe(xe(_0x13ff4c),{'identityStoreFactory':xe,'walletSessionStore':new Q(_0x2b2a9b),..._0x715de5?.[_0x5e9456(0x49e)]!==void 0x0?{'baseUrl':_0x715de5['baseUrl']}:{},..._0x715de5?.[_0x5e9456(0x3d4)]!==void 0x0?{'fetch':_0x715de5[_0x5e9456(0x3d4)]}:{},..._0x715de5?.[_0x5e9456(0x2da)]!==void 0x0?{'profile':_0x715de5[_0x5e9456(0x2da)]}:{}});}L();var In=_0x1fb185(0x325);function et(_0x4d0de1){const _0x2b686b=_0x1fb185;let _0x480bc2=(_0x4d0de1[_0x2b686b(0x37e)]??'')[_0x2b686b(0x2b2)]();return(_0x480bc2['length']>0x0?_0x480bc2:In)[_0x2b686b(0x333)](0x0,0x20);}function tt(_0x22a57f,_0x14275c){const _0x32e1ed=_0x1fb185;return{'clientName':et(_0x14275c),'clientVersion':_0x22a57f[_0x32e1ed(0x333)](0x0,0x20)};}function nt(_0x205107){const _0x141eb2=_0x1fb185;return{'kind':_0x141eb2(0x1a4),'chainKey':_0x205107[_0x141eb2(0x341)],'token':_0x205107[_0x141eb2(0x3f5)],'amount':String(_0x205107[_0x141eb2(0x4e1)]),'amountRaw':_0x205107[_0x141eb2(0x1f7)],'to':_0x205107[_0x141eb2(0x350)],..._0x205107[_0x141eb2(0x311)]?{'gasMethod':_0x205107[_0x141eb2(0x311)]}:{}};}var Z=0x7530;async function Oe(_0x256a02,_0x1adead,_0x8b8f13,_0x4f6adf,_0x3027ee,_0x67859c,_0x244308){const _0x519181=_0x1fb185;let _0x45ba0d=null;_0x244308&&(_0x45ba0d=(await _0x256a02[_0x519181(0x4d1)][_0x519181(0x52a)]({'kind':'op','label':'waiting\x20for\x20'+_0x4f6adf+_0x519181(0x1e8)+_0x1adead+')','ref':{'opId':_0x1adead},'expiresAt':new Date(Date[_0x519181(0x3d7)]()+Z)[_0x519181(0x47b)]()}))['id']);let _0x1c9f87=null,_0x4b566e=null;try{let _0x526c5f=await _0x256a02['ensureSession']();_0x1c9f87=(await _(C(R(_0x256a02[_0x519181(0x54f)]+_0x519181(0x3cf)+encodeURIComponent(_0x1adead),_0x526c5f,_0x78df89=>_0x78df89),E(()=>_0x256a02['getUserOp'](_0x1adead),0xbb8)),{'isTerminal':_0x43ab79=>String(_0x43ab79['status']??_0x519181(0x515))!==_0x519181(0x515),'describe':_0x24babb=>_0x519181(0x3da)+(_0x24babb[_0x519181(0x1a1)]??_0x519181(0x515))+'.','deadline':Date[_0x519181(0x3d7)]()+Z,'ctx':_0x244308??{'signal':new AbortController()[_0x519181(0x362)],'progress':()=>{}}}))[_0x519181(0x4dc)];}catch(_0x2b85cb){_0x4b566e=_0x2b85cb instanceof Error?_0x2b85cb['message']:String(_0x2b85cb);}let _0x566e2c=_0x1c9f87?String(_0x1c9f87[_0x519181(0x1a1)]??_0x519181(0x515)):'unknown';if(!_0x1c9f87||_0x566e2c==='pending')return{'proposed':!0x0,'settled':!0x1,'status':_0x566e2c,'opId':_0x1adead,'userOpHash':_0x8b8f13,..._0x45ba0d?{'handle':_0x45ba0d}:{},..._0x4b566e?{'followError':_0x4b566e}:{},'note':_0x4b566e?_0x519181(0x374)+_0x4b566e+_0x519181(0x214)+_0x4f6adf+_0x519181(0x1ed)+_0x4f6adf+'.':'Relayed,\x20but\x20not\x20yet\x20terminal\x20after\x20120s.\x20This\x20is\x20NOT\x20a\x20failure\x20and\x20NOT\x20a\x20success\x20-\x20call\x20botanary_wait\x20to\x20rejoin\x20it.\x20Do\x20NOT\x20resend:\x20the\x20original\x20op\x20is\x20still\x20live,\x20and\x20a\x20resend\x20would\x20be\x20a\x20second\x20'+_0x4f6adf+'.'};let _0xd96132=_0x566e2c===_0x519181(0x511);return _0x45ba0d&&await _0x256a02[_0x519181(0x4d1)][_0x519181(0x312)](_0x45ba0d),{'proposed':!0x0,'settled':!0x0,'status':_0x566e2c,'opId':_0x1adead,'userOpHash':_0x8b8f13,'txHash':_0x1c9f87[_0x519181(0x551)]??null,..._0xd96132?{'spent':_0x3027ee}:{'spent':null,'message':_0x519181(0x458)+_0x566e2c+_0x519181(0x238)+_0x67859c+_0x519181(0x378)+_0x4f6adf+_0x519181(0x41e)},'receipt':_0x1c9f87};}async function at(_0x369b5d,_0x2556f3){const _0x20fc46=_0x1fb185;if(!await _0x369b5d['store'][_0x20fc46(0x4ca)]())return{'accountId':null,'inBounds':!0x1,'reason':'','grant':null};let _0x4466c4;try{_0x4466c4=await _0x369b5d['me']();}catch{return{'accountId':null,'inBounds':!0x1,'reason':'','grant':null};}if(!_0x4466c4[_0x20fc46(0x195)])return{'accountId':null,'inBounds':!0x1,'reason':'','grant':null};let _0x5ddf1d=_0x4466c4[_0x20fc46(0x195)],_0x4b7e9b=En(_0x5ddf1d,_0x2556f3);return{'accountId':_0x4466c4['accountId'],'inBounds':_0x4b7e9b['ok'],'reason':_0x4b7e9b[_0x20fc46(0x4a9)],'grant':_0x5ddf1d};}function I(_0x3518fa,_0x273be5){const _0x3c553b=_0x1fb185;return _0x273be5?_0x3518fa+_0x3c553b(0x4bd)+encodeURIComponent(_0x273be5):_0x3518fa;}function En(_0x3d55d0,_0x4a56e4){const _0x13629a=_0x1fb185;if(_0x3d55d0[_0x13629a(0x1a1)]!==_0x13629a(0x387))return{'ok':!0x1,'reason':_0x13629a(0x1fa)+_0x3d55d0[_0x13629a(0x1a1)]+_0x13629a(0x525)};if(_0x3d55d0[_0x13629a(0x1c9)]!==_0x4a56e4[_0x13629a(0x1c9)])return{'ok':!0x1,'reason':'grant\x20is\x20on\x20chain\x20'+_0x3d55d0[_0x13629a(0x1c9)]+'\x20('+_0x3d55d0[_0x13629a(0x1d4)]+_0x13629a(0x3a9)+_0x4a56e4[_0x13629a(0x1c9)]};let _0x2e214a=J(_0x3d55d0,_0x4a56e4[_0x13629a(0x3d2)][_0x13629a(0x27c)]);if(!_0x2e214a)return{'ok':!0x1,'reason':_0x13629a(0x43d)+_0x4a56e4[_0x13629a(0x3d2)][_0x13629a(0x3ec)]};if(_0x4a56e4[_0x13629a(0x4e1)]>_0x2e214a['remaining'])return{'ok':!0x1,'reason':'only\x20'+_0x2e214a[_0x13629a(0x2de)]+'\x20'+_0x4a56e4[_0x13629a(0x3d2)][_0x13629a(0x3ec)]+_0x13629a(0x2be)};let _0x4169b6=_0x3d55d0[_0x13629a(0x266)][_0x13629a(0x426)];return _0x4169b6&&_0x4169b6[_0x13629a(0x3f5)][_0x13629a(0x27c)]===_0x4a56e4['asset'][_0x13629a(0x27c)]&&_0x4a56e4[_0x13629a(0x4e1)]>_0x4169b6[_0x13629a(0x4e1)]?{'ok':!0x1,'reason':_0x13629a(0x361)+_0x4169b6[_0x13629a(0x4e1)]+'\x20'+_0x4a56e4[_0x13629a(0x3d2)][_0x13629a(0x3ec)]}:{'ok':!0x0,'reason':''};}async function st(_0x42ce3b,_0x5f1bc2,_0x1ee809){const _0x20c141=_0x1fb185;try{let _0x4aaaa7=await _0x357656(_0x53e307=>_0x42ce3b[_0x20c141(0x19f)][_0x20c141(0x4f2)]('/v1/userops/'+encodeURIComponent(_0x53e307),_0x1ee809),_0x5f1bc2,Z,()=>Date[_0x20c141(0x3d7)](),_0x25bd5e=>new Promise(_0x3623ee=>setTimeout(_0x3623ee,_0x25bd5e)));return typeof _0x4aaaa7[_0x20c141(0x1a1)]=='string'?_0x4aaaa7[_0x20c141(0x1a1)]:null;}catch{return null;}}async function ot(_0x1e1a7c,_0x5cccbf,_0x739164,_0x1c8be6){const _0x156518=_0x1fb185;let _0x5a280c=await _0x1e1a7c['buildDelegatedAction']({'delegationId':_0x5cccbf['id'],'recipient':_0x739164[_0x156518(0x350)],'amount':_0x739164[_0x156518(0x4e1)],'token':_0x739164[_0x156518(0x3d2)]['assetRef']}),_0x5b6158=await _0x1e1a7c[_0x156518(0x260)](),_0x249931=await _0x1e1a7c['spendUnderGrant'](_0x5a280c[_0x156518(0x359)],_0x5a280c[_0x156518(0x451)],_0x5cccbf[_0x156518(0x3e4)],_0x5b6158,_0x5a280c[_0x156518(0x54b)]),_0x5e54ab=typeof _0x249931?.['id']==_0x156518(0x424)?_0x249931['id']:null;if(!_0x5e54ab)return{'settled':!0x1,'userOpHash':_0x5a280c['userOpHash'],'relay':_0x249931};let _0x36e8b2=null;_0x1c8be6&&(_0x36e8b2=(await _0x1e1a7c[_0x156518(0x4d1)]['open']({'kind':'op','label':_0x156518(0x550)+_0x5e54ab+')','ref':{'opId':_0x5e54ab},'expiresAt':new Date(Date[_0x156518(0x3d7)]()+Z)[_0x156518(0x47b)]()}))['id']);let _0x4a95ae=null,_0x254ffa=null;try{let _0x5eacd2=await _0x1e1a7c['ensureSession']();_0x4a95ae=(await _(C(R(_0x1e1a7c[_0x156518(0x54f)]+'/v1/operations/stream?ids='+encodeURIComponent(_0x5e54ab),_0x5eacd2,_0x16a8bf=>_0x16a8bf),E(()=>_0x1e1a7c['getUserOp'](_0x5e54ab),0xbb8)),{'isTerminal':_0x1b4d17=>String(_0x1b4d17['status']??_0x156518(0x515))!==_0x156518(0x515),'describe':_0x261602=>_0x156518(0x2fc)+(_0x261602[_0x156518(0x1a1)]??_0x156518(0x515))+'.','deadline':Date[_0x156518(0x3d7)]()+Z,'ctx':_0x1c8be6??{'signal':new AbortController()[_0x156518(0x362)],'progress':()=>{}}}))[_0x156518(0x4dc)];}catch(_0x1053a4){_0x254ffa=_0x1053a4 instanceof Error?_0x1053a4[_0x156518(0x316)]:String(_0x1053a4);}let _0x1c9f82=_0x4a95ae?String(_0x4a95ae[_0x156518(0x1a1)]??_0x156518(0x515)):_0x156518(0x221),_0x24e7e6=_0x1c9f82==='included';return _0x36e8b2&&_0x4a95ae&&_0x1c9f82!==_0x156518(0x515)&&await _0x1e1a7c[_0x156518(0x4d1)][_0x156518(0x312)](_0x36e8b2),{'settled':!!_0x4a95ae&&_0x1c9f82!==_0x156518(0x515),'status':_0x1c9f82,'opId':_0x5e54ab,'userOpHash':_0x5a280c[_0x156518(0x451)],..._0x36e8b2?{'handle':_0x36e8b2}:{},'txHash':_0x4a95ae?.[_0x156518(0x551)]??null,..._0x254ffa?{'followError':_0x254ffa,'note':_0x156518(0x358)}:{},..._0x4a95ae?_0x24e7e6?{'spent':{'amount':_0x739164['amount'],'token':_0x739164[_0x156518(0x3d2)][_0x156518(0x3ec)]}}:{'spent':null}:{}};}function rt(_0xf5aec1,_0x48eabd){const _0x13ab3e=_0x1fb185;return _0x4e9e2f=>_0xf5aec1[_0x13ab3e(0x19f)][_0x13ab3e(0x3b6)](_0x13ab3e(0x18f),nt({'chainKey':_0x4e9e2f['chainKey'],'token':_0x4e9e2f[_0x13ab3e(0x3d2)][_0x13ab3e(0x27c)],'amountRaw':_0x4e9e2f[_0x13ab3e(0x1f7)],'amount':_0x4e9e2f[_0x13ab3e(0x4e1)],'recipient':_0x4e9e2f[_0x13ab3e(0x350)],'gasMethod':_0x4e9e2f[_0x13ab3e(0x311)]}),_0x48eabd);}function it(_0x2d2c47,_0x3da3e8){return async _0xe5dde8=>{const _0x54960b=_0x2420;let _0x2674ef=await _0x2d2c47[_0x54960b(0x19f)]['get']('/v1/sign-requests/'+_0xe5dde8,_0x3da3e8);return{'status':_0x2674ef[_0x54960b(0x1a1)],'opId':_0x2674ef[_0x54960b(0x50e)]??null,'txHash':_0x2674ef[_0x54960b(0x551)]??null,'declineReason':_0x2674ef[_0x54960b(0x300)]??null};};}function lt(_0x2b607a,_0x4bde69){return async _0x4519c1=>{const _0x5dc0c0=_0x2420;try{let [_0x32f1fe,_0x49ec93]=await Promise[_0x5dc0c0(0x308)]([_0x2b607a['api'][_0x5dc0c0(0x4f2)]('/v1/balance',_0x4bde69),_0x2b607a[_0x5dc0c0(0x19f)][_0x5dc0c0(0x4f2)](_0x5dc0c0(0x366),_0x4bde69)]),_0xda0aac=Array['isArray'](_0x49ec93)?_0x49ec93[_0x5dc0c0(0x3a5)](_0x90a9df=>_0x90a9df[_0x5dc0c0(0x1c9)]===_0x4519c1[_0x5dc0c0(0x1c9)]):void 0x0;if(_0xda0aac&&_0xda0aac[_0x5dc0c0(0x2a9)]==='watch')return(_0xda0aac[_0x5dc0c0(0x2a6)]??_0x5dc0c0(0x1ac)+_0x4519c1[_0x5dc0c0(0x1c9)])+_0x5dc0c0(0x254);let _0x40ebd3=(Array[_0x5dc0c0(0x2b0)](_0x32f1fe[_0x5dc0c0(0x297)])?_0x32f1fe['tokens'][_0x5dc0c0(0x3a5)](_0x22fc03=>_0x22fc03[_0x5dc0c0(0x3ec)]===_0x4519c1[_0x5dc0c0(0x3d2)][_0x5dc0c0(0x3ec)]&&_0x22fc03['chainId']===_0x4519c1['chainId']):void 0x0)?.[_0x5dc0c0(0x4e1)]??0x0;return _0x40ebd3<_0x4519c1[_0x5dc0c0(0x4e1)]?'This\x20account\x20shows\x20'+_0x40ebd3+'\x20'+_0x4519c1[_0x5dc0c0(0x3d2)][_0x5dc0c0(0x3ec)]+'\x20on\x20this\x20chain\x20-\x20less\x20than\x20the\x20'+_0x4519c1[_0x5dc0c0(0x4e1)]+'\x20you\x20are\x20sending.\x20This\x20is\x20a\x20store-backed\x20read\x20that\x20may\x20lag\x20the\x20chain,\x20so\x20it\x20is\x20a\x20courtesy\x20check,\x20not\x20a\x20refusal.':null;}catch{return null;}};}async function q(_0x15e2bc,_0x5db7c9,_0xe8390a,_0x518028){const _0x4f5734=_0x1fb185;return _0x15e2bc[_0x4f5734(0x19f)][_0x4f5734(0x4f2)](_0x4f5734(0x27a)+_0x5db7c9+'&ref='+encodeURIComponent(_0xe8390a),_0x518028);}function ct(_0x2ec2f3,_0xabc342){const _0x3e14cd=_0x1fb185;let _0x253c75=String(_0x2ec2f3)[_0x3e14cd(0x2b2)]();if(!/^\d+(\.\d+)?$/[_0x3e14cd(0x474)](_0x253c75))throw new Error('\x22'+_0x2ec2f3+_0x3e14cd(0x3b0));let [_0x338c96,_0x50f0ed='']=_0x253c75[_0x3e14cd(0x1aa)]('.');if(_0x50f0ed[_0x3e14cd(0x186)]>_0xabc342)throw new Error(_0x253c75+'\x20has\x20'+_0x50f0ed['length']+'\x20decimal\x20places\x20but\x20this\x20token\x20has\x20'+_0xabc342+'.\x20Round\x20it,\x20or\x20pass\x20a\x20smaller\x20amount.');let _0x486566=_0x50f0ed[_0x3e14cd(0x327)](_0xabc342,'0'),_0x268bd7=(''+_0x338c96+_0x486566)[_0x3e14cd(0x4cc)](/^0+(?=\d)/,'');return _0x268bd7===''?'0':_0x268bd7;}async function dt(_0x11df67,_0x4689e2){const _0x57f3cf=_0x1fb185;let {recipient:_0x40b883,amount:_0x10689f,token:_0x45531f,chainId:_0x247a09}=_0x4689e2,_0x49dc6c=await _0x11df67['me']();if(!_0x49dc6c[_0x57f3cf(0x195)])return{'proposed':!0x1,'reason':_0x57f3cf(0x4a8),'message':Y(_0x49dc6c)+_0x57f3cf(0x202)};let _0x125471=_0x49dc6c[_0x57f3cf(0x195)];if(_0x125471[_0x57f3cf(0x1a1)]!==_0x57f3cf(0x387))return{'proposed':!0x1,'reason':_0x57f3cf(0x443),'message':_0x57f3cf(0x4ed)+_0x125471[_0x57f3cf(0x1a1)]+'\x22,\x20not\x20active,\x20so\x20it\x20cannot\x20be\x20spent\x20under.\x20Nothing\x20was\x20built\x20or\x20sent.\x20Use\x20request_approval\x20to\x20ask\x20the\x20owner\x20directly.'};if(_0x125471[_0x57f3cf(0x1c9)]!==_0x247a09)return{'proposed':!0x1,'reason':'wrong_chain','message':_0x57f3cf(0x229)+_0x125471[_0x57f3cf(0x1c9)]+'\x20('+_0x125471['chain']+_0x57f3cf(0x45a)+_0x247a09+_0x57f3cf(0x2e9)};let _0x12a258=await q(_0x11df67,_0x247a09,_0x45531f,await _0x11df67[_0x57f3cf(0x260)]()),_0x228c82=J(_0x125471,_0x12a258['assetRef']);if(!_0x228c82)return{'proposed':!0x1,'reason':_0x57f3cf(0x31a),'message':_0x57f3cf(0x280)+_0x12a258[_0x57f3cf(0x3ec)]+_0x57f3cf(0x4d8)+(_0x125471['policySet'][_0x57f3cf(0x412)][_0x57f3cf(0x2d3)](_0x59ba34=>_0x59ba34[_0x57f3cf(0x3f5)][_0x57f3cf(0x3ec)])[_0x57f3cf(0x481)](',\x20')||_0x57f3cf(0x2bd))+_0x57f3cf(0x48b)};if(_0x10689f>_0x228c82[_0x57f3cf(0x2de)])return{'proposed':!0x1,'reason':'over_budget','message':_0x57f3cf(0x34a)+_0x228c82[_0x57f3cf(0x2de)]+'\x20'+_0x12a258[_0x57f3cf(0x3ec)]+_0x57f3cf(0x182)+_0x228c82[_0x57f3cf(0x3e3)]+'\x20total);\x20'+_0x10689f+'\x20'+_0x12a258[_0x57f3cf(0x3ec)]+'\x20would\x20exceed\x20it.\x20Nothing\x20was\x20built\x20or\x20sent.\x20Use\x20request_approval\x20to\x20ask\x20the\x20owner\x20for\x20this\x20specific\x20payment.'};let _0x530570=_0x125471['policySet'][_0x57f3cf(0x426)];if(_0x530570&&_0x530570['token'][_0x57f3cf(0x27c)]===_0x12a258['assetRef']&&_0x10689f>_0x530570[_0x57f3cf(0x4e1)])return{'proposed':!0x1,'reason':'over_per_action_max','message':_0x57f3cf(0x1a9)+_0x530570[_0x57f3cf(0x4e1)]+'\x20'+_0x12a258[_0x57f3cf(0x3ec)]+';\x20'+_0x10689f+_0x57f3cf(0x274)};let _0x40366a;try{_0x40366a=await _0x11df67[_0x57f3cf(0x1ae)]({'delegationId':_0x125471['id'],'recipient':_0x40b883,'amount':_0x10689f,'token':_0x12a258[_0x57f3cf(0x27c)]});}catch(_0x143439){let _0x47690f=be(_0x143439);if(!_0x47690f)throw _0x143439;return{'proposed':!0x1,'reason':'account_setup_required','missingModule':_0x47690f,'setupUrl':O(_0x11df67[_0x57f3cf(0x54f)],_0x125471['chainId']),'message':'This\x20account\x20is\x20missing\x20'+_0x47690f+'\x20on\x20chain\x20'+_0x125471[_0x57f3cf(0x1c9)]+'\x20('+_0x125471['chain']+'),\x20so\x20a\x20payment\x20under\x20this\x20grant\x20cannot\x20succeed.\x20Nothing\x20was\x20built\x20or\x20sent,\x20and\x20retrying\x20will\x20fail\x20identically\x20-\x20installing\x20a\x20module\x20is\x20an\x20authority\x20change\x20only\x20the\x20owner\x20can\x20sign,\x20and\x20a\x20session\x20key\x20cannot\x20do\x20it.\x20Open\x20the\x20setupUrl\x20above\x20in\x20a\x20browser,\x20sign\x20the\x20one-time\x20setup,\x20then\x20ask\x20me\x20to\x20try\x20this\x20payment\x20again.'};}let _0x2d98ef=await _0x11df67[_0x57f3cf(0x260)](),_0x47973f=await _0x11df67[_0x57f3cf(0x3c7)](_0x40366a[_0x57f3cf(0x359)],_0x40366a[_0x57f3cf(0x451)],_0x125471[_0x57f3cf(0x3e4)],_0x2d98ef,_0x40366a[_0x57f3cf(0x54b)]),_0xc4d226=typeof _0x47973f?.['id']==_0x57f3cf(0x424)?_0x47973f['id']:null;return _0xc4d226?Oe(_0x11df67,_0xc4d226,_0x40366a['userOpHash'],'payment',{'amount':_0x10689f,'token':_0x12a258[_0x57f3cf(0x3ec)]},_0x57f3cf(0x2dd)+_0x12a258['symbol']+_0x57f3cf(0x439)):{'proposed':!0x0,'settled':!0x1,'userOpHash':_0x40366a[_0x57f3cf(0x451)],'relay':_0x47973f};}async function ut(_0x1d763b,_0x465991){const _0x1176a0=_0x1fb185;let {assetIn:_0x1dc118,assetOut:_0x1eb137,amountIn:_0x694853,chainId:_0x52e02a,maxSlippageBps:_0x5a9175}=_0x465991,_0x5b89c3=await _0x1d763b['me']();if(!_0x5b89c3[_0x1176a0(0x195)])return{'proposed':!0x1,'reason':_0x1176a0(0x4a8),'message':Y(_0x5b89c3)+_0x1176a0(0x202)};let _0x4da793=_0x5b89c3['grant'];if(_0x4da793[_0x1176a0(0x1a1)]!==_0x1176a0(0x387))return{'proposed':!0x1,'reason':'grant_not_active','message':_0x1176a0(0x4ed)+_0x4da793[_0x1176a0(0x1a1)]+_0x1176a0(0x47e)};if(_0x4da793[_0x1176a0(0x1c9)]!==_0x52e02a)return{'proposed':!0x1,'reason':_0x1176a0(0x289),'message':_0x1176a0(0x229)+_0x4da793['chainId']+'\x20('+_0x4da793['chain']+_0x1176a0(0x45a)+_0x52e02a+_0x1176a0(0x2f4)};let _0x3e508c=_0x4da793['policySet']['swapVenue'];if(!_0x3e508c)return{'proposed':!0x1,'reason':_0x1176a0(0x4c6),'message':'This\x20grant\x20was\x20given\x20for\x20transfers\x20only\x20-\x20it\x20names\x20no\x20swap\x20venue,\x20so\x20its\x20session\x20carries\x20no\x20allowance\x20action\x20for\x20a\x20swap\x20to\x20validate\x20against,\x20and\x20no\x20amount\x20is\x20small\x20enough\x20to\x20change\x20that.\x20Nothing\x20was\x20built\x20or\x20sent.\x20Ask\x20the\x20owner\x20for\x20a\x20new\x20grant\x20naming\x20the\x20router\x20and\x20token\x20it\x20may\x20swap,\x20or\x20use\x20request_approval\x20for\x20this\x20one\x20swap.'};let _0x393d87=await q(_0x1d763b,_0x52e02a,_0x1dc118,await _0x1d763b[_0x1176a0(0x260)]());if(_0x3e508c[_0x1176a0(0x3f5)][_0x1176a0(0x3ec)][_0x1176a0(0x4db)]()!==_0x393d87[_0x1176a0(0x3ec)][_0x1176a0(0x4db)]())return{'proposed':!0x1,'reason':_0x1176a0(0x315),'message':_0x1176a0(0x225)+_0x3e508c['token'][_0x1176a0(0x3ec)]+_0x1176a0(0x237)+_0x393d87[_0x1176a0(0x3ec)]+_0x1176a0(0x364)};if(_0x694853>_0x3e508c['maxAllowance'])return{'proposed':!0x1,'reason':_0x1176a0(0x51e),'message':_0x1176a0(0x259)+_0x3e508c['maxAllowance']+'\x20'+_0x3e508c[_0x1176a0(0x3f5)][_0x1176a0(0x3ec)]+_0x1176a0(0x3b4)+_0x694853+'\x20'+_0x393d87['symbol']+_0x1176a0(0x2c0)};let _0x1d002c=J(_0x4da793,_0x393d87[_0x1176a0(0x27c)]);if(_0x1d002c&&_0x694853>_0x1d002c[_0x1176a0(0x2de)])return{'proposed':!0x1,'reason':'over_budget','message':_0x1176a0(0x34a)+_0x1d002c['remaining']+'\x20'+_0x393d87[_0x1176a0(0x3ec)]+_0x1176a0(0x182)+_0x1d002c[_0x1176a0(0x3e3)]+_0x1176a0(0x40c)+_0x694853+'\x20'+_0x393d87[_0x1176a0(0x3ec)]+_0x1176a0(0x17c)};let _0x2fff18=await q(_0x1d763b,_0x52e02a,_0x1eb137,await _0x1d763b[_0x1176a0(0x260)]()),_0x38e0db;try{_0x38e0db=await _0x1d763b[_0x1176a0(0x1e0)]({'delegationId':_0x4da793['id'],'tokenIn':_0x393d87[_0x1176a0(0x3ec)],'tokenOut':_0x2fff18['symbol'],'amountIn':_0x694853,..._0x5a9175!=null?{'maxSlippageBps':_0x5a9175}:{}});}catch(_0x162b38){let _0x31d909=be(_0x162b38);if(!_0x31d909)throw _0x162b38;return{'proposed':!0x1,'reason':'account_setup_required','missingModule':_0x31d909,'setupUrl':O(_0x1d763b[_0x1176a0(0x54f)],_0x4da793[_0x1176a0(0x1c9)]),'message':'This\x20account\x20is\x20missing\x20'+_0x31d909+_0x1176a0(0x49d)+_0x4da793[_0x1176a0(0x1c9)]+'\x20('+_0x4da793[_0x1176a0(0x1d4)]+_0x1176a0(0x549)};}let _0x91020f=await _0x1d763b['ensureSession'](),_0x1b5377=await _0x1d763b['spendUnderGrant'](_0x38e0db[_0x1176a0(0x359)],_0x38e0db[_0x1176a0(0x451)],_0x4da793[_0x1176a0(0x3e4)],_0x91020f,_0x38e0db[_0x1176a0(0x54b)]),_0x5b6e5d=typeof _0x1b5377?.['id']=='string'?_0x1b5377['id']:null;return _0x5b6e5d?Oe(_0x1d763b,_0x5b6e5d,_0x38e0db['userOpHash'],_0x1176a0(0x1dd),{'amount':_0x694853,'token':_0x393d87[_0x1176a0(0x3ec)]},_0x1176a0(0x2dd)+_0x393d87[_0x1176a0(0x3ec)]+_0x1176a0(0x188)+_0x2fff18[_0x1176a0(0x3ec)]+_0x1176a0(0x42a)):{'proposed':!0x0,'settled':!0x1,'userOpHash':_0x38e0db['userOpHash'],'relay':_0x1b5377};}import{readFileSync as _0xedc91d}from'node:fs';import{dirname as _0x59ce35,join as _0x2c3ce0}from'node:path';import{fileURLToPath as _0x5743dd}from'node:url';var Pn=_0x1fb185(0x411);function On(){const _0x3c1129=_0x1fb185;let _0x59d97c=_0x59ce35(_0x5743dd(import.meta['url']));for(let _0x2c2f7c=0x0;_0x2c2f7c<0x5;_0x2c2f7c++){try{let _0x45ed30=JSON[_0x3c1129(0x2c4)](_0xedc91d(_0x2c3ce0(_0x59d97c,_0x3c1129(0x4e0)),_0x3c1129(0x32f)));if(_0x45ed30[_0x3c1129(0x2a6)]===_0x3c1129(0x20c)&&typeof _0x45ed30[_0x3c1129(0x529)]=='string')return _0x45ed30[_0x3c1129(0x529)];}catch{}let _0x115da3=_0x59ce35(_0x59d97c);if(_0x115da3===_0x59d97c)break;_0x59d97c=_0x115da3;}return Pn;}var j=On(),Nn=0xea60;async function pt(_0x12e746){const _0x9ae31a=_0x1fb185;let _0x1a774d;try{_0x1a774d=await _0x12e746['api']['post'](_0x9ae31a(0x4a3),tt(j,process[_0x9ae31a(0x2ce)]));}catch(_0xec00a1){throw _0xec00a1 instanceof _0x559262&&_0xec00a1[_0x9ae31a(0x1a1)]===0x191&&await _0x12e746[_0x9ae31a(0x217)][_0x9ae31a(0x41b)](),_0xec00a1;}let {requestId:_0x163b2c,pollSecret:_0x45c0e,userCode:_0xb52935,verificationUrl:_0x14338d,expiresIn:_0x566e58}=_0x1a774d,_0x309703=Math[_0x9ae31a(0x288)](_0x1a774d[_0x9ae31a(0x363)],0x1f4),_0x4506b8=_0x12e746[_0x9ae31a(0x3d7)]()+_0x566e58*0x3e8,_0x1bf81d=await _0x12e746['openBrowser'](_0x14338d);_0x12e746[_0x9ae31a(0x1a2)]?.({'userCode':_0xb52935,'url':_0x14338d,'browserOpened':_0x1bf81d,'expiresAt':_0x4506b8}),_0x12e746[_0x9ae31a(0x496)]?.[_0x9ae31a(0x1bc)]({'message':_0x1bf81d?_0x9ae31a(0x199)+_0xb52935+'.':_0x9ae31a(0x354)+_0x14338d+'\x20and\x20enter\x20code\x20'+_0xb52935+'.'});let {withFallback:_0x2875d7}=await Promise[_0x9ae31a(0x44f)]()[_0x9ae31a(0x49c)](()=>(L(),we)),_0x3c6dc8={'status':'pending'},_0x24fe29='pending',_0x45fa46=_0x309703,_0x30fdc0=()=>({'watch':_0x40fbed=>({async*[Symbol[_0x9ae31a(0x482)]](){const _0x54b5e2=_0x9ae31a;for(;_0x12e746['now']()<_0x4506b8&&!_0x40fbed[_0x54b5e2(0x207)];){if(await _0x12e746['sleep'](_0x309703),_0x40fbed[_0x54b5e2(0x207)])return;try{let _0x2a7d36=await _0x12e746['api'][_0x54b5e2(0x4f2)](_0x54b5e2(0x224)+_0x163b2c,_0x45c0e);_0x45fa46=_0x309703,yield _0x2a7d36;}catch(_0x361b09){if(_0x361b09 instanceof _0x559262&&_0x361b09[_0x54b5e2(0x1a1)]===0x191)throw await _0x12e746['store'][_0x54b5e2(0x41b)](),_0x361b09;if(_0x361b09 instanceof _0x559262&&_0x361b09[_0x54b5e2(0x1a1)]===0x1ad){let _0x32c9b3=_0x361b09[_0x54b5e2(0x4b8)]!=null?_0x361b09[_0x54b5e2(0x4b8)]*0x3e8:_0x45fa46*0x2;if(_0x45fa46=Math[_0x54b5e2(0x275)](_0x32c9b3,Nn),_0x12e746[_0x54b5e2(0x496)]?.[_0x54b5e2(0x1bc)]({'message':_0x54b5e2(0x409)}),await _0x12e746['sleep'](_0x45fa46),_0x40fbed[_0x54b5e2(0x207)])return;continue;}throw _0x361b09;}}}})}),_0x48d453;if(_0x12e746[_0x9ae31a(0x1d3)]){let _0x5ab245=_0x12e746[_0x9ae31a(0x1d3)](_0x163b2c,_0x45c0e);_0x48d453=_0x2875d7(_0x5ab245,_0x30fdc0())['watch'](_0x12e746[_0x9ae31a(0x496)]?.[_0x9ae31a(0x362)]??new AbortController()[_0x9ae31a(0x362)]);}else _0x48d453=_0x30fdc0()[_0x9ae31a(0x22d)](_0x12e746['ctx']?.['signal']??new AbortController()['signal']);for await(let _0x5afe37 of _0x48d453){if(_0x3c6dc8=_0x5afe37,_0x3c6dc8[_0x9ae31a(0x1a1)]!==_0x24fe29&&(_0x24fe29=_0x3c6dc8[_0x9ae31a(0x1a1)],_0x12e746[_0x9ae31a(0x496)]?.[_0x9ae31a(0x1bc)]({'message':_0x9ae31a(0x475)+_0x3c6dc8['status']+'.'})),_0x3c6dc8['status']===_0x9ae31a(0x2b3)){let _0x2f95f5=_0x3c6dc8;if(_0x2f95f5['sessionToken']||(_0x12e746[_0x9ae31a(0x496)]?.[_0x9ae31a(0x1bc)]({'message':'Authorized\x20-\x20claiming\x20the\x20session\x20token.'}),_0x2f95f5=await _0x12e746[_0x9ae31a(0x19f)][_0x9ae31a(0x4f2)](_0x9ae31a(0x224)+_0x163b2c,_0x45c0e)),!_0x2f95f5[_0x9ae31a(0x479)])throw await _0x12e746[_0x9ae31a(0x217)][_0x9ae31a(0x41b)](),new Error(_0x9ae31a(0x194));let _0x58c5f8={'sessionToken':_0x2f95f5[_0x9ae31a(0x479)],'accountId':_0x2f95f5[_0x9ae31a(0x2cb)]||null,'signerAddress':_0x2f95f5[_0x9ae31a(0x1a3)]||'','savedAt':new Date()[_0x9ae31a(0x47b)]()};return await _0x12e746[_0x9ae31a(0x217)][_0x9ae31a(0x4f3)](_0x58c5f8),{'status':_0x9ae31a(0x2b3),'userCode':_0xb52935,'url':_0x14338d,'session':_0x58c5f8,'browserOpened':_0x1bf81d};}if(_0x3c6dc8[_0x9ae31a(0x1a1)]==='denied')return{'status':_0x9ae31a(0x318),'userCode':_0xb52935,'url':_0x14338d,'browserOpened':_0x1bf81d};}return{'status':_0x9ae31a(0x531),'userCode':_0xb52935,'url':_0x14338d,'browserOpened':_0x1bf81d};}import{execFile as _0x22ea04}from'node:child_process';import{promisify as _0x5da6b1}from'node:util';var Ln=_0x5da6b1(_0x22ea04),qn=async(_0x14b64e,_0x157ec8)=>{await Ln(_0x14b64e,_0x157ec8);};function Bn(_0x1aa832){const _0x48286e=_0x1fb185;switch(_0x1aa832){case _0x48286e(0x1f4):return{'command':_0x48286e(0x52a),'leading':[]};case _0x48286e(0x273):return{'command':_0x48286e(0x27d),'leading':[]};case _0x48286e(0x396):return{'command':_0x48286e(0x1c0),'leading':[_0x48286e(0x1cf)]};default:return null;}}function Un(_0x5a65ba){const _0x524cc0=_0x1fb185;let _0x196883;try{_0x196883=new URL(_0x5a65ba);}catch{return!0x1;}return _0x196883[_0x524cc0(0x1c2)]===_0x524cc0(0x304)||_0x196883[_0x524cc0(0x1c2)]===_0x524cc0(0x1eb);}async function ee(_0x2b7293,_0x32709d=qn,_0x27c686=process[_0x1fb185(0x2e1)]){const _0x3363d5=_0x1fb185;if(!Un(_0x2b7293))return!0x1;let _0x8d5e7c=Bn(_0x27c686);if(!_0x8d5e7c)return!0x1;try{return await _0x32709d(_0x8d5e7c[_0x3363d5(0x18a)],[..._0x8d5e7c[_0x3363d5(0x467)],_0x2b7293]),!0x0;}catch{return!0x1;}}var gt=[_0x1fb185(0x4ad),_0x1fb185(0x1ef),_0x1fb185(0x4bc),_0x1fb185(0x32a),_0x1fb185(0x2f8),_0x1fb185(0x3b1),_0x1fb185(0x3b7),_0x1fb185(0x542),'/activity',_0x1fb185(0x24b),_0x1fb185(0x243),'/adapters',_0x1fb185(0x25a),_0x1fb185(0x380),'/agent-wallets/connection',_0x1fb185(0x43c),_0x1fb185(0x352),'/agent-wallets/{agentId}/caps','/agent-wallets/{agentId}/signer/status',_0x1fb185(0x23d),_0x1fb185(0x1e1),'/agents',_0x1fb185(0x324),_0x1fb185(0x399),'/agents/requests',_0x1fb185(0x19c),_0x1fb185(0x2c1),_0x1fb185(0x52f),_0x1fb185(0x296),_0x1fb185(0x353),_0x1fb185(0x198),'/apis/mandates',_0x1fb185(0x267),_0x1fb185(0x2c6),_0x1fb185(0x336),'/apis/providers','/apis/providers/{providerId}',_0x1fb185(0x2af),_0x1fb185(0x1c3),_0x1fb185(0x4ee),_0x1fb185(0x209),_0x1fb185(0x1d1),_0x1fb185(0x3f1),_0x1fb185(0x35e),_0x1fb185(0x548),_0x1fb185(0x342),_0x1fb185(0x294),_0x1fb185(0x4ff),_0x1fb185(0x392),'/balance/tokens/{chainId}/{tokenAddress}/history/stream',_0x1fb185(0x4f5),_0x1fb185(0x4e7),_0x1fb185(0x4e9),'/delegations','/delegations/{delegationId}',_0x1fb185(0x51d),_0x1fb185(0x3af),_0x1fb185(0x46e),_0x1fb185(0x278),_0x1fb185(0x1e3),'/gas/methods',_0x1fb185(0x36f),'/launchpad/tokens',_0x1fb185(0x498),_0x1fb185(0x39a),_0x1fb185(0x45e),_0x1fb185(0x1f6),_0x1fb185(0x502),_0x1fb185(0x33f),_0x1fb185(0x505),'/marketplace/agents/stream','/marketplace/agents/{wallet}',_0x1fb185(0x2f1),_0x1fb185(0x1c4),'/marketplace/managed/connect/status',_0x1fb185(0x301),_0x1fb185(0x29c),_0x1fb185(0x51b),_0x1fb185(0x4a0),'/markets/tokens/{id}',_0x1fb185(0x403),_0x1fb185(0x28a),_0x1fb185(0x21a),_0x1fb185(0x4b2),'/money/swap/tokens/resolve','/notifications','/onramp/methods',_0x1fb185(0x1fd),_0x1fb185(0x3ef),'/pay-sh/accounts/{accountId}',_0x1fb185(0x39b),_0x1fb185(0x4aa),_0x1fb185(0x450),_0x1fb185(0x3fc),_0x1fb185(0x514),_0x1fb185(0x360),_0x1fb185(0x20e),_0x1fb185(0x51f),_0x1fb185(0x391),'/sign-requests/{id}',_0x1fb185(0x2a8),'/solana/account',_0x1fb185(0x248),_0x1fb185(0x261),_0x1fb185(0x4df),_0x1fb185(0x33e),'/spore/tasks/{id}',_0x1fb185(0x2fa),'/stellar/account',_0x1fb185(0x1cc),_0x1fb185(0x232),'/yield/facets',_0x1fb185(0x3ae),_0x1fb185(0x2f6),_0x1fb185(0x25c),'/yield/shortlist','/yield/solana/pools',_0x1fb185(0x39e)],mt=['/auth/cli/{requestId}',_0x1fb185(0x319),_0x1fb185(0x2d1)],Dn=gt[_0x1fb185(0x2d3)](H),Hn=mt[_0x1fb185(0x2d3)](H);function Mn(_0x527927){const _0x184640=_0x1fb185;let _0x6e2ad6=D(_0x527927);if(!_0x6e2ad6)return null;let _0x47d7f3=ae(_0x6e2ad6['path']);return{'target':_0x47d7f3,'request':_0x184640(0x4cd)+_0x47d7f3+_0x6e2ad6['query']};}function Fn(_0x15c43d){const _0x5318b7=_0x1fb185;return Hn['some'](_0xde46cd=>_0xde46cd['test'](_0x15c43d))?!0x1:Dn[_0x5318b7(0x30a)](_0x7b6c5d=>_0x7b6c5d[_0x5318b7(0x474)](_0x15c43d));}async function ft(_0x21828d,_0x3b0332,_0x2a26c9=_0x1fb185(0x386)){const _0x6e4075=_0x1fb185;if(_0x2a26c9[_0x6e4075(0x4db)]()!==_0x6e4075(0x386))throw new Error(_0x6e4075(0x4d3)+_0x2a26c9+_0x6e4075(0x471));let _0x56de62=Mn(_0x3b0332);if(!_0x56de62)throw new Error(M(_0x3b0332,'wallet_api_get'));if(!Fn(_0x56de62[_0x6e4075(0x3b3)]))throw new Error('\x22'+V(_0x56de62[_0x6e4075(0x3b3)])+_0x6e4075(0x430));return _0x21828d['api'][_0x6e4075(0x4f2)](_0x56de62[_0x6e4075(0x4c7)],_0x21828d[_0x6e4075(0x3f5)]);}var yt=[{'path':_0x1fb185(0x29a),'method':_0x1fb185(0x1be)},{'path':_0x1fb185(0x4b5),'method':'POST'},{'path':'/account/roster','method':_0x1fb185(0x1be)},{'path':'/account/roster/{keyRef}','method':_0x1fb185(0x2e6)},{'path':_0x1fb185(0x4d5),'method':_0x1fb185(0x1be)},{'path':'/accounts/{id}','method':_0x1fb185(0x398)},{'path':'/accounts/{id}/tokens','method':'POST'},{'path':_0x1fb185(0x40b),'method':'DELETE'},{'path':_0x1fb185(0x25a),'method':_0x1fb185(0x1be)},{'path':'/agent-wallets/{agentId}','method':'PUT'},{'path':'/agent-wallets/{agentId}/archive','method':_0x1fb185(0x1be)},{'path':_0x1fb185(0x270),'method':'PUT'},{'path':_0x1fb185(0x3de),'method':_0x1fb185(0x1be)},{'path':_0x1fb185(0x522),'method':_0x1fb185(0x1be)},{'path':_0x1fb185(0x37b),'method':'POST'},{'path':_0x1fb185(0x1b2),'method':'DELETE'},{'path':'/agent/audit','method':'POST'},{'path':_0x1fb185(0x23d),'method':_0x1fb185(0x1be)},{'path':_0x1fb185(0x1e1),'method':'DELETE'},{'path':_0x1fb185(0x1e1),'method':'PATCH'},{'path':_0x1fb185(0x223),'method':_0x1fb185(0x1be)},{'path':_0x1fb185(0x2c1),'method':'POST'},{'path':'/agents/{agentId}/mandates/{mandateId}/versions','method':_0x1fb185(0x1be)},{'path':'/agents/{agentId}/mandates/{mandateId}/versions/{version}','method':'PATCH'},{'path':'/agents/{code}/claim','method':'POST'},{'path':_0x1fb185(0x3e6),'method':_0x1fb185(0x2e6)},{'path':_0x1fb185(0x3a6),'method':'POST'},{'path':'/agents/pair','method':_0x1fb185(0x1be)},{'path':'/agents/requests','method':_0x1fb185(0x1be)},{'path':_0x1fb185(0x2d7),'method':_0x1fb185(0x1be)},{'path':'/apis/calls/requirements','method':_0x1fb185(0x1be)},{'path':_0x1fb185(0x1fe),'method':_0x1fb185(0x1be)},{'path':_0x1fb185(0x23e),'method':_0x1fb185(0x1be)},{'path':_0x1fb185(0x1d9),'method':'POST'},{'path':_0x1fb185(0x34b),'method':_0x1fb185(0x1be)},{'path':_0x1fb185(0x4c0),'method':'POST'},{'path':_0x1fb185(0x3c3),'method':'PUT'},{'path':_0x1fb185(0x29d),'method':_0x1fb185(0x369)},{'path':_0x1fb185(0x427),'method':_0x1fb185(0x1be)},{'path':'/approvals/{digest}','method':_0x1fb185(0x1be)},{'path':_0x1fb185(0x44d),'method':_0x1fb185(0x1be)},{'path':'/marketplace/managed/connect','method':_0x1fb185(0x1be)},{'path':_0x1fb185(0x25d),'method':_0x1fb185(0x1be)},{'path':_0x1fb185(0x47f),'method':'POST'},{'path':_0x1fb185(0x441),'method':'POST'},{'path':'/onramp/session','method':_0x1fb185(0x1be)},{'path':_0x1fb185(0x3ef),'method':_0x1fb185(0x1be)},{'path':'/pay-sh/accounts/{accountId}','method':_0x1fb185(0x2e6)},{'path':_0x1fb185(0x39b),'method':_0x1fb185(0x1be)},{'path':_0x1fb185(0x322),'method':_0x1fb185(0x2e6)},{'path':_0x1fb185(0x360),'method':_0x1fb185(0x369)},{'path':_0x1fb185(0x276),'method':_0x1fb185(0x1be)},{'path':_0x1fb185(0x4b4),'method':_0x1fb185(0x1be)},{'path':'/waitlist','method':_0x1fb185(0x1be)}],wt=[_0x1fb185(0x53f),_0x1fb185(0x184),'/agent-wallets/{agentId}/withdraw','/agents/session',_0x1fb185(0x49b),_0x1fb185(0x4ac),_0x1fb185(0x3a8),_0x1fb185(0x25f),_0x1fb185(0x22f),_0x1fb185(0x1a7),_0x1fb185(0x4eb),_0x1fb185(0x319),_0x1fb185(0x391),_0x1fb185(0x3e7),_0x1fb185(0x3e5),_0x1fb185(0x44c),'/spore/conversations/{id}/messages',_0x1fb185(0x303),'/stellar/transactions',_0x1fb185(0x242),_0x1fb185(0x3be)],Gn=yt['map'](({path:_0x28c11a,method:_0x151ff7})=>({'method':_0x151ff7,'pattern':H(_0x28c11a)})),Wn=wt[_0x1fb185(0x2d3)](H);function jn(_0x4a6365){const _0x23397b=_0x1fb185;let _0xceb7c2=D(_0x4a6365);if(!_0xceb7c2)return null;let _0x4ee0ab=ae(_0xceb7c2[_0x23397b(0x3ee)]);return{'target':_0x4ee0ab,'request':_0x23397b(0x4cd)+_0x4ee0ab+_0xceb7c2[_0x23397b(0x3f4)]};}function Kn(_0x30faf7,_0x4be6f3){const _0x53facd=_0x1fb185;return Wn[_0x53facd(0x30a)](_0x1163ad=>_0x1163ad[_0x53facd(0x474)](_0x30faf7))?!0x1:Gn[_0x53facd(0x30a)](({method:_0x46cc5d,pattern:_0x4fca95})=>_0x46cc5d===_0x4be6f3&&_0x4fca95[_0x53facd(0x474)](_0x30faf7));}async function bt(_0x2f56c3,_0x5e1c42,_0x3d2014,_0x48f24d){const _0x13cf76=_0x1fb185;let _0x2ce415=(_0x3d2014||'')['toUpperCase']();if(_0x2ce415===_0x13cf76(0x386))throw new Error(_0x13cf76(0x22c));if(!['POST',_0x13cf76(0x369),_0x13cf76(0x398),_0x13cf76(0x2e6)][_0x13cf76(0x468)](_0x2ce415))throw new Error(_0x13cf76(0x50b)+_0x3d2014+'\x22.');let _0xd4e30=jn(_0x5e1c42);if(!_0xd4e30)throw new Error(M(_0x5e1c42,'wallet_api_write'));if(!Kn(_0xd4e30['target'],_0x2ce415))throw new Error('\x22'+_0x2ce415+'\x20'+V(_0xd4e30[_0x13cf76(0x3b3)])+'\x22\x20is\x20not\x20a\x20documented\x20write\x20route\x20in\x20WRITE_ROUTES\x20(generated\x20from\x20the\x20frozen\x20OpenAPI\x20contract,\x20openapi/botanary-v1.yaml)\x20-\x20refusing\x20to\x20call\x20an\x20undocumented\x20path,\x20a\x20wrong\x20method\x20for\x20a\x20known\x20path,\x20or\x20a\x20route\x20this\x20manifest\x20excludes\x20by\x20construction\x20(every\x20authority\x20action\x20returns\x20a\x20build\x20for\x20the\x20owner\x20to\x20sign\x20-\x20see\x20write-routes.manifest.ts).\x20Re-check\x20the\x20path\x20and\x20method,\x20or\x20if\x20the\x20contract\x20genuinely\x20changed,\x20the\x20manifest\x20needs\x20`pnpm\x20generate:write-routes`.');let _0x55cc9f=_0xd4e30[_0x13cf76(0x4c7)];switch(_0x2ce415){case _0x13cf76(0x1be):return _0x2f56c3[_0x13cf76(0x19f)][_0x13cf76(0x3b6)](_0x55cc9f,_0x48f24d,_0x2f56c3[_0x13cf76(0x3f5)]);case _0x13cf76(0x369):return _0x2f56c3[_0x13cf76(0x19f)][_0x13cf76(0x4d0)](_0x55cc9f,_0x48f24d,_0x2f56c3[_0x13cf76(0x3f5)]);case _0x13cf76(0x398):return _0x2f56c3[_0x13cf76(0x19f)][_0x13cf76(0x464)](_0x55cc9f,_0x48f24d,_0x2f56c3[_0x13cf76(0x3f5)]);case'DELETE':return _0x2f56c3[_0x13cf76(0x19f)]['delete'](_0x55cc9f,_0x2f56c3['token']);default:throw new Error(_0x13cf76(0x23f)+_0x2ce415+'\x22');}}async function kt(_0x10da69,_0x43fe75,_0x60ce85){const _0x56a67f=_0x1fb185;return _0x10da69[_0x56a67f(0x19f)][_0x56a67f(0x3b6)](_0x56a67f(0x18f),{'kind':_0x43fe75,..._0x60ce85},_0x10da69[_0x56a67f(0x3f5)]);}async function $(_0x3f72a4,_0x45044f,_0x37e963){const _0x347a80=_0x1fb185;let _0xf8c7c9=await Promise[_0x347a80(0x519)](_0x37e963[_0x347a80(0x2d3)](async _0x148ed3=>{const _0x276859=_0x347a80;let _0x418e82=await _0x3f72a4[_0x276859(0x4f2)](_0x148ed3[_0x276859(0x3ee)],_0x45044f),_0x1f3e07=_0x148ed3[_0x276859(0x2c4)]?_0x148ed3['parse'](_0x418e82):_0x418e82;return{'key':_0x148ed3[_0x276859(0x268)],'value':_0x1f3e07};})),_0x1a5c08={},_0x48f4af=[];for(let _0x52e948=0x0;_0x52e948<_0xf8c7c9[_0x347a80(0x186)];_0x52e948++){let _0xb9ea9f=_0xf8c7c9[_0x52e948],_0x17b72a=_0x37e963[_0x52e948];if(_0xb9ea9f['status']===_0x347a80(0x367))_0x1a5c08[_0xb9ea9f[_0x347a80(0x2d8)][_0x347a80(0x268)]]=_0xb9ea9f['value']['value'];else{let _0x468392=_0xb9ea9f['reason']instanceof Error?_0xb9ea9f[_0x347a80(0x4a9)]['message']:typeof _0xb9ea9f[_0x347a80(0x4a9)]==_0x347a80(0x424)?_0xb9ea9f[_0x347a80(0x4a9)]:String(_0xb9ea9f[_0x347a80(0x4a9)]);_0x48f4af[_0x347a80(0x349)]({'key':_0x17b72a['key'],'reason':_0x468392});}}if(Object[_0x347a80(0x37d)](_0x1a5c08)[_0x347a80(0x186)]===0x0&&_0x48f4af[_0x347a80(0x186)]===_0x37e963[_0x347a80(0x186)]&&_0x37e963['length']>0x0)throw new Error('Composite\x20read\x20failed:\x20all\x20'+_0x37e963[_0x347a80(0x186)]+'\x20parts\x20failed\x20-\x20'+_0x48f4af['map'](_0x1a94dd=>_0x1a94dd[_0x347a80(0x268)])[_0x347a80(0x481)](',\x20'));return JSON['parse'](k(JSON[_0x347a80(0x1e7)]({'data':_0x1a5c08,'partial':_0x48f4af}),_0x45044f));}var Vn={'fresh':_0x1fb185(0x536),'last-known':_0x1fb185(0x383),'unknown':'The\x20background\x20sweep\x20has\x20not\x20reached\x20this\x20account\x20yet,\x20so\x20these\x20numbers\x20are\x20UNKNOWN\x20rather\x20than\x20merely\x20old\x20-\x20holdings\x20may\x20be\x20empty\x20and\x20totals\x20may\x20read\x200,\x20and\x20that\x20is\x20NOT\x20a\x20confirmed\x20zero\x20balance.\x20Re-read\x20before\x20reporting\x20any\x20figure\x20from\x20this\x20response.','unreported':_0x1fb185(0x3ac)};function zn(_0x137962){const _0x3eb74d=_0x1fb185;return _0x137962==='ready'?_0x3eb74d(0x53c):_0x137962===_0x3eb74d(0x36c)?_0x3eb74d(0x2ee):_0x137962===_0x3eb74d(0x21d)?_0x3eb74d(0x221):_0x3eb74d(0x444);}function St(_0x3b0534){const _0x9ad620=_0x1fb185;let _0x259bb8=typeof _0x3b0534==_0x9ad620(0x2e4)&&_0x3b0534!==null?_0x3b0534:{},_0x27e3cc=typeof _0x259bb8['status']==_0x9ad620(0x424)?_0x259bb8['status']:null,_0x3cbbcf=typeof _0x259bb8['asOf']==_0x9ad620(0x424)?_0x259bb8[_0x9ad620(0x29b)]:null,_0x3342da=zn(_0x27e3cc);return{'status':_0x27e3cc,'asOf':_0x3cbbcf,'state':_0x3342da,'stale':_0x3342da===_0x9ad620(0x2ee)||_0x3342da===_0x9ad620(0x221),'note':Vn[_0x3342da]};}function vt(_0x172bf3,_0x3cc994,_0xea7a5b){const _0x2259aa=_0x1fb185;if(typeof _0x172bf3!=_0x2259aa(0x2e4)||_0x172bf3===null)return null;let _0x377a07=_0x172bf3;if(!Array[_0x2259aa(0x2b0)](_0x377a07[_0x2259aa(0x297)]))return null;let _0xf4c305=typeof _0x377a07[_0x2259aa(0x29b)]==_0x2259aa(0x424)?_0x377a07[_0x2259aa(0x29b)]:null,_0x19edd8=_0x377a07[_0x2259aa(0x297)]['find'](_0x27f50a=>{const _0x38aa32=_0x2259aa;if(typeof _0x27f50a!=_0x38aa32(0x2e4)||_0x27f50a===null)return!0x1;let _0x364afa=_0x27f50a;return String(_0x364afa[_0x38aa32(0x3ec)])['toUpperCase']()===_0xea7a5b[_0x38aa32(0x4db)]()&&_0x364afa[_0x38aa32(0x1c9)]===_0x3cc994&&typeof _0x364afa[_0x38aa32(0x4e1)]=='number';});return _0x19edd8?{'amount':_0x19edd8[_0x2259aa(0x4e1)],'asOf':_0xf4c305}:null;}var Yn=new Set([_0x1fb185(0x50d),_0x1fb185(0x1c8),_0x1fb185(0x531),_0x1fb185(0x490)]);function Jn(_0x5b70b3){const _0x48ad6a=_0x1fb185;return _0x5b70b3[_0x48ad6a(0x3a1)]!==null&&_0x5b70b3[_0x48ad6a(0x3a1)]===_0x5b70b3['walletAccountId']&&_0x5b70b3['mandateInBounds'];}function Xn(_0xa5e648){const _0x2721b8=_0x1fb185;return _0xa5e648[_0x2721b8(0x3a1)]===null?_0x2721b8(0x384):_0xa5e648[_0x2721b8(0x3a1)]!==_0xa5e648[_0x2721b8(0x1c6)]?_0x2721b8(0x428)+_0xa5e648[_0x2721b8(0x3a1)]+_0x2721b8(0x4a7)+_0xa5e648['walletAccountId']+_0x2721b8(0x453):_0x2721b8(0x206)+_0xa5e648[_0x2721b8(0x38e)]+_0x2721b8(0x485);}function Qn(_0x40761e){const _0x53eb0d=_0x1fb185;switch(_0x40761e[_0x53eb0d(0x1a1)]){case _0x53eb0d(0x50d):return _0x40761e[_0x53eb0d(0x551)]?_0x53eb0d(0x23c)+_0x40761e['txHash']+'.':'Sent\x20-\x20relayed,\x20awaiting\x20a\x20transaction\x20hash.';case _0x53eb0d(0x1c8):return'You\x20rejected\x20the\x20request\x20in\x20the\x20browser\x20-\x20nothing\x20was\x20signed\x20and\x20nothing\x20was\x20sent.';case _0x53eb0d(0x531):return _0x53eb0d(0x264);case _0x53eb0d(0x490):return'Declined\x20on-chain'+(_0x40761e[_0x53eb0d(0x300)]?':\x20'+_0x40761e[_0x53eb0d(0x300)]:'')+'\x20-\x20nothing\x20moved.';default:return _0x53eb0d(0x27f);}}async function Tt(_0x111789,_0x538dae){const _0x5807d7=_0x1fb185;if(Jn(_0x111789)){_0x111789[_0x5807d7(0x496)]?.[_0x5807d7(0x1bc)]({'message':_0x5807d7(0x43e)+_0x111789[_0x5807d7(0x1c6)]+'.'});let _0xbae3cd=await _0x111789[_0x5807d7(0x17e)](_0x538dae);return{'lane':'agent','text':_0x5807d7(0x3c5)+_0x111789['walletAccountId']+'\x20-\x20no\x20browser\x20was\x20opened.\x20The\x20on-chain\x20mandate\x20is\x20what\x20authorized\x20this,\x20not\x20a\x20click.','relay':_0xbae3cd};}let _0x21d00e=Xn(_0x111789),_0x327592=_0x111789['preflight']?await _0x111789['preflight'](_0x538dae):null,_0x4aed76=await _0x111789[_0x5807d7(0x42b)](_0x538dae),_0x505981=await _0x111789['openBrowser'](_0x4aed76[_0x5807d7(0x1a8)]);_0x111789[_0x5807d7(0x4fb)]?.({'url':_0x4aed76[_0x5807d7(0x1a8)],'signRequestId':_0x4aed76['id'],'browserOpened':_0x505981}),_0x111789[_0x5807d7(0x496)]?.[_0x5807d7(0x1bc)]({'message':_0x505981?_0x5807d7(0x541):_0x5807d7(0x457)+_0x4aed76['url']+_0x5807d7(0x509)});let _0x51fbfc=!0x1;if(_0x111789[_0x5807d7(0x496)]?.[_0x5807d7(0x2ea)]){let _0x43c049=await _0x111789[_0x5807d7(0x496)][_0x5807d7(0x2ea)]({'message':(_0x5807d7(0x517)+_0x538dae[_0x5807d7(0x4e1)]+'\x20'+(_0x538dae[_0x5807d7(0x3d2)]?.[_0x5807d7(0x3ec)]??''))[_0x5807d7(0x2b2)]()+('.\x20'+(_0x505981?_0x5807d7(0x2c5):_0x5807d7(0x2f9))+':\x20'+_0x4aed76[_0x5807d7(0x1a8)]+_0x5807d7(0x513))});_0x51fbfc=_0x43c049?.[_0x5807d7(0x22b)]===_0x5807d7(0x3ca)||_0x43c049?.[_0x5807d7(0x22b)]===_0x5807d7(0x210);}let _0x14e585=Math[_0x5807d7(0x288)](_0x111789[_0x5807d7(0x3d7)](),new Date(_0x4aed76[_0x5807d7(0x1bd)])[_0x5807d7(0x54c)]()),{pollSource:_0x458d19,withFallback:_0x1997ff}=await Promise[_0x5807d7(0x44f)]()['then'](()=>(L(),we)),_0x5b1afa={'status':_0x5807d7(0x515),'opId':null,'txHash':null},_0x1ad3d8=_0x5807d7(0x515),_0x5cfcdc;_0x111789[_0x5807d7(0x2a0)]?_0x5cfcdc=_0x1997ff(_0x111789[_0x5807d7(0x2a0)](_0x4aed76['id']),_0x458d19(()=>_0x111789[_0x5807d7(0x203)](_0x4aed76['id']),0x7d0,_0x111789[_0x5807d7(0x2ec)]))['watch'](_0x111789[_0x5807d7(0x496)]?.[_0x5807d7(0x362)]??new AbortController()[_0x5807d7(0x362)]):_0x5cfcdc=_0x458d19(()=>_0x111789[_0x5807d7(0x203)](_0x4aed76['id']),0x7d0,_0x111789[_0x5807d7(0x2ec)])['watch'](_0x111789[_0x5807d7(0x496)]?.[_0x5807d7(0x362)]??new AbortController()[_0x5807d7(0x362)]);for await(let _0x3e533d of _0x5cfcdc)if(_0x51fbfc||(_0x5b1afa=_0x3e533d,_0x5b1afa[_0x5807d7(0x1a1)]!==_0x1ad3d8&&(_0x1ad3d8=_0x5b1afa['status'],_0x111789['ctx']?.[_0x5807d7(0x1bc)]({'message':'Request\x20'+_0x5b1afa[_0x5807d7(0x1a1)]+'.'})),Yn[_0x5807d7(0x390)](_0x5b1afa[_0x5807d7(0x1a1)]))||_0x111789['now']()>=_0x14e585)break;let _0x389ff1=_0x505981?_0x5807d7(0x3f9)+_0x4aed76['url']:_0x5807d7(0x53b)+_0x4aed76[_0x5807d7(0x1a8)];return _0x51fbfc?{'lane':'browser','text':_0x21d00e+'\x20'+_0x389ff1+_0x5807d7(0x246),'signRequestId':_0x4aed76['id'],'url':_0x4aed76[_0x5807d7(0x1a8)],'status':_0x5b1afa[_0x5807d7(0x1a1)],'opId':_0x5b1afa[_0x5807d7(0x50e)],'txHash':_0x5b1afa[_0x5807d7(0x551)],'declineReason':_0x5b1afa[_0x5807d7(0x300)]??null}:{'lane':_0x5807d7(0x3c8),'text':_0x21d00e+'\x20'+_0x389ff1+'.\x20'+Qn(_0x5b1afa)+(_0x327592?'\x20Note:\x20'+_0x327592:''),'signRequestId':_0x4aed76['id'],'url':_0x4aed76[_0x5807d7(0x1a8)],'status':_0x5b1afa[_0x5807d7(0x1a1)],'opId':_0x5b1afa[_0x5807d7(0x50e)],'txHash':_0x5b1afa[_0x5807d7(0x551)],'declineReason':_0x5b1afa[_0x5807d7(0x300)]??null};}function m(_0x133e46){const _0x55f1a3=_0x1fb185;return{'content':[{'type':_0x55f1a3(0x2b9),'text':typeof _0x133e46=='string'?_0x133e46:JSON[_0x55f1a3(0x1e7)](_0x133e46,null,0x2)}]};}function b(){const _0x4a7498=_0x1fb185;return{'type':_0x4a7498(0x2e4),'properties':{}};}function ea(_0xf99e24,_0x9bec04){const _0x2f556a=_0x1fb185;return{'address':_0xf99e24[_0x2f556a(0x4fe)],'publicKey':_0xf99e24[_0x2f556a(0x1c1)],'fingerprint':_0xf99e24[_0x2f556a(0x48c)],'createdAt':_0xf99e24[_0x2f556a(0x3a2)],'keyStorage':_0xf99e24['backend'],..._0x9bec04?{'profile':_0x9bec04['key'],'profileSource':ne(_0x9bec04),'reportedClient':_0x9bec04[_0x2f556a(0x46b)]}:{}};}async function Ne(_0x4003fe){const _0x51a30e=_0x1fb185;try{return{...await _0x4003fe['pair'](),'registered':!0x0};}catch{return{...await _0x4003fe[_0x51a30e(0x40e)](),'registered':!0x1};}}function $e(_0x5a1fa0,_0x3e4772){const _0x5ef6da=_0x1fb185;return z(_0x5a1fa0)+_0x5ef6da(0x236)+encodeURIComponent(_0x3e4772);}function Ce(_0x547e87,_0x2f8904,_0x370438,_0x2af988=!0x0,_0x106548,_0x17a686='suppressed'){const _0x4932c1=_0x1fb185;let _0xab0d22=$e(_0x370438,_0x547e87['code']);return{'code':_0x547e87[_0x4932c1(0x4f8)],'address':_0x2f8904['address'],'fingerprint':_0x547e87[_0x4932c1(0x48c)],'issuedAt':_0x547e87['issuedAt'],'expiresAt':_0x547e87['expiresAt'],'registered':_0x2af988,'pairingUrl':_0xab0d22,'browserOpened':_0x17a686===_0x4932c1(0x1bf)||_0x17a686===_0x4932c1(0x2a5),..._0x106548?{'profile':_0x106548[_0x4932c1(0x268)],'reportedClient':_0x106548['tool']}:{},'instructions':_0x2af988?_0x17a686===_0x4932c1(0x1bf)?_0x4932c1(0x272)+_0xab0d22+_0x4932c1(0x286):_0x17a686===_0x4932c1(0x2a5)?_0x4932c1(0x437)+_0xab0d22+'\x20if\x20they\x20closed\x20it.':_0x17a686==='unavailable'?_0x4932c1(0x435)+_0xab0d22+'\x20goes\x20straight\x20to\x20Connected\x20agents\x20with\x20the\x20code\x20already\x20filled\x20in.\x20Failing\x20that,\x20they\x20can\x20enter\x20the\x20code\x20there\x20by\x20hand.':_0x4932c1(0x2a4)+_0xab0d22+_0x4932c1(0x1c5):_0x4932c1(0x3dc)};}function At(_0x54ee37,_0xca24f4){const _0x26a77f=_0x1fb185;let _0x4ffd00=_0x54ee37[_0x26a77f(0x489)];return!_0x4ffd00||_0x4ffd00['ready']?'':_0x26a77f(0x2fe)+(_0x4ffd00['missing'][_0x26a77f(0x186)]?_0x4ffd00['missing'][_0x26a77f(0x481)](',\x20'):_0x26a77f(0x470))+_0x26a77f(0x49d)+_0x4ffd00[_0x26a77f(0x1c9)]+_0x26a77f(0x2aa)+O(_0xca24f4,_0x4ffd00['chainId'])+_0x26a77f(0x3cd);}function ge(_0x1e85cd,_0x165dca=()=>{}){const _0x5f36cb=_0x1fb185;let _0x301fcd=null,_0x4bced9=0x12c*0x3e8,_0x55d2a2=null;async function _0x8cba19(_0x4c6bec,_0x6c67b6,_0xf4ab4a){const _0x103f61=_0x2420;return _0x4c6bec['registered']?_0xf4ab4a?_0x55d2a2===_0x4c6bec[_0x103f61(0x4f8)]?_0x103f61(0x2a5):await ee(_0x6c67b6)?(_0x55d2a2=_0x4c6bec['code'],_0x103f61(0x1bf)):_0x103f61(0x1ec):_0x103f61(0x2c3):_0x103f61(0x516);}return[{'name':_0x5f36cb(0x32c),'lane':_0x5f36cb(0x183),'docSummary':_0x5f36cb(0x52d),'description':_0x5f36cb(0x212),'inputSchema':b(),'run':async()=>m(await De(_0x1e85cd))},{'name':'get_identity','lane':_0x5f36cb(0x183),'docSummary':_0x5f36cb(0x42c),'description':'LOCAL\x20tool\x20(never\x20contacts\x20the\x20backend),\x20AGENT\x20LANE:\x20Report\x20this\x20agent\x27s\x20Botanary\x20identity:\x20its\x20address,\x20public\x20key,\x20short\x20fingerprint,\x20when\x20its\x20key\x20was\x20created,\x20and\x20which\x20local\x20backend\x20holds\x20the\x20private\x20key\x20(the\x20OS\x20keychain,\x20or\x20the\x200600\x20file\x20fallback\x20if\x20none\x20is\x20available).\x20Generates\x20the\x20key\x20on\x20first\x20call\x20if\x20none\x20exists\x20yet\x20-\x20the\x20key\x20is\x20generated\x20on\x20this\x20machine\x20and\x20never\x20leaves\x20it.\x20Never\x20returns\x20the\x20private\x20key.\x20Having\x20an\x20identity\x20grants\x20nothing\x20by\x20itself:\x20this\x20agent\x20can\x20do\x20nothing\x20until\x20its\x20owner\x20explicitly\x20grants\x20it\x20something\x20inside\x20Botanary.\x20Does\x20NOT\x20say\x20whether\x20the\x20owner\x20has\x20claimed\x20this\x20agent\x20-\x20use\x20whoami\x20for\x20that.\x20This\x20is\x20THIS\x20MACHINE\x27S\x20OWN\x20identity,\x20acting\x20as\x20a\x20connected\x20agent\x20under\x20a\x20grant\x20-\x20never\x20the\x20wallet\x20owner\x27s\x20own\x20account;\x20the\x20human\x20owner\x20should\x20use\x20wallet_login\x20instead.','inputSchema':b(),'run':async()=>m(ea(await _0x1e85cd[_0x5f36cb(0x43b)](),_0x1e85cd['profile']))},{'name':_0x5f36cb(0x1d2),'lane':_0x5f36cb(0x183),'docSummary':'Show\x20the\x20short\x20code\x20the\x20owner\x20types\x20into\x20Connected\x20agents,\x20and\x20register\x20it\x20with\x20the\x20backend\x20so\x20their\x20claim\x20can\x20find\x20it.','description':_0x5f36cb(0x43a),'inputSchema':{'type':_0x5f36cb(0x2e4),'properties':{'wait':{'type':_0x5f36cb(0x1fb),'description':_0x5f36cb(0x29f)},'open':{'type':_0x5f36cb(0x1fb),'description':'Open\x20the\x20user\x27s\x20browser\x20on\x20the\x20pairing\x20screen\x20with\x20the\x20code\x20filled\x20in.\x20Default\x20true.\x20Pass\x20false\x20only\x20when\x20the\x20user\x20asked\x20you\x20not\x20to,\x20or\x20you\x20know\x20there\x20is\x20no\x20browser\x20here.'}}},'run':async(_0x51e958,_0x5cf210)=>{const _0x492061=_0x5f36cb;let _0xf026b6=await _0x1e85cd[_0x492061(0x43b)](),_0x2ee534=await Ne(_0x1e85cd),_0x33899b=await _0x8cba19(_0x2ee534,$e(_0x1e85cd[_0x492061(0x54f)],_0x2ee534[_0x492061(0x4f8)]),_0x51e958[_0x492061(0x52a)]!==!0x1),_0x41a4fe=Ce(_0x2ee534,_0xf026b6,_0x1e85cd[_0x492061(0x54f)],_0x2ee534['registered'],_0x1e85cd[_0x492061(0x2da)],_0x33899b);if(!(_0x51e958[_0x492061(0x382)]!==!0x1&&_0x5cf210!==void 0x0))return m(_0x41a4fe);let _0x5ed31c=await _0x1e85cd[_0x492061(0x4d1)][_0x492061(0x52a)]({'kind':_0x492061(0x495),'label':_0x492061(0x46f)+_0x2ee534[_0x492061(0x4f8)]+')','ref':{'code':_0x2ee534[_0x492061(0x4f8)]},'url':_0x41a4fe[_0x492061(0x445)],'expiresAt':_0x2ee534[_0x492061(0x1bd)]});_0x5cf210['progress']({'message':_0x33899b==='opened'?_0x492061(0x4fd)+_0x2ee534[_0x492061(0x4f8)]+_0x492061(0x3ba):_0x492061(0x19a)+_0x2ee534[_0x492061(0x4f8)]+_0x492061(0x35c)+_0x41a4fe[_0x492061(0x445)]+').'});let _0x98f5bf=await _(E(()=>_0x1e85cd['me']()[_0x492061(0x49c)](()=>({'claimed':!0x0}))[_0x492061(0x22a)](()=>({'claimed':!0x1})),0xbb8),{'isTerminal':_0x13b473=>_0x13b473['claimed'],'describe':_0x38454f=>_0x38454f['claimed']?_0x492061(0x1a6):_0x492061(0x244)+_0x2ee534[_0x492061(0x4f8)]+'.','deadline':Date[_0x492061(0x2c4)](_0x2ee534[_0x492061(0x1bd)]),'ctx':_0x5cf210});return _0x98f5bf[_0x492061(0x357)]&&await _0x1e85cd[_0x492061(0x4d1)][_0x492061(0x312)](_0x5ed31c['id']),m({..._0x41a4fe,'handle':_0x5ed31c['id'],'claimed':_0x98f5bf['terminal'],'message':_0x98f5bf[_0x492061(0x357)]?_0x492061(0x432):_0x492061(0x528)+_0x2ee534[_0x492061(0x1bd)]+_0x492061(0x2e2)});}},{'name':_0x5f36cb(0x2b5),'lane':_0x5f36cb(0x4b1),'docSummary':_0x5f36cb(0x487),'description':_0x5f36cb(0x532),'inputSchema':{'type':_0x5f36cb(0x2e4),'properties':{'open':{'type':'boolean','description':'Open\x20the\x20user\x27s\x20browser\x20on\x20the\x20pairing\x20screen\x20with\x20the\x20new\x20code\x20filled\x20in.\x20Default\x20true.'}}},'run':async _0x5d64a9=>{const _0x1294a5=_0x5f36cb;let _0x4cafc6=await _0x1e85cd[_0x1294a5(0x43b)]();await _0x1e85cd[_0x1294a5(0x545)]();let _0x14d2ac=await Ne(_0x1e85cd),_0x5259fe=await _0x8cba19(_0x14d2ac,$e(_0x1e85cd['apiBaseUrl'],_0x14d2ac[_0x1294a5(0x4f8)]),_0x5d64a9[_0x1294a5(0x52a)]!==!0x1);return m(Ce(_0x14d2ac,_0x4cafc6,_0x1e85cd[_0x1294a5(0x54f)],_0x14d2ac[_0x1294a5(0x50c)],_0x1e85cd['profile'],_0x5259fe));}},{'name':_0x5f36cb(0x495),'lane':_0x5f36cb(0x4b1),'docSummary':_0x5f36cb(0x335),'description':_0x5f36cb(0x305),'inputSchema':b(),'run':async()=>{const _0x4ec54d=_0x5f36cb;let _0x1c02c6=await _0x1e85cd[_0x4ec54d(0x495)](),_0xe887f2=await _0x1e85cd[_0x4ec54d(0x43b)]();return m(Ce(_0x1c02c6,_0xe887f2,_0x1e85cd['apiBaseUrl'],!0x0,_0x1e85cd[_0x4ec54d(0x2da)]));}},{'name':_0x5f36cb(0x3a7),'lane':_0x5f36cb(0x4b1),'docSummary':_0x5f36cb(0x2e7),'description':_0x5f36cb(0x407),'inputSchema':b(),'run':async()=>{const _0x29114e=_0x5f36cb;let _0x470b41=await _0x1e85cd['me'](),_0x16511a=_0x470b41['accountSetup']&&!_0x470b41[_0x29114e(0x489)][_0x29114e(0x4e3)];return m(_0x16511a?{..._0x470b41,'setupUrl':O(_0x1e85cd[_0x29114e(0x54f)],_0x470b41[_0x29114e(0x489)]?.['chainId']),'setupRequired':At(_0x470b41,_0x1e85cd[_0x29114e(0x54f)])['trim']()}:_0x470b41);}},{'name':_0x5f36cb(0x397),'lane':_0x5f36cb(0x4b1),'docSummary':_0x5f36cb(0x4ae),'description':_0x5f36cb(0x215),'inputSchema':b(),'run':async()=>m(await _0x1e85cd[_0x5f36cb(0x1e5)]())},{'name':_0x5f36cb(0x26b),'lane':'agent','docSummary':_0x5f36cb(0x488),'description':'THIN\x20tool\x20(one\x20GET,\x20returned\x20unmodified),\x20AGENT\x20LANE:\x20every\x20approval\x20request\x20this\x20agent\x20has\x20filed\x20and\x20the\x20owner\x27s\x20verdict\x20on\x20each\x20-\x20`status`,\x20`declineReason`,\x20`expiresAt`\x20(GET\x20/agents/requests).\x20This\x20is\x20the\x20read\x20half\x20of\x20request_approval:\x20after\x20filing\x20a\x20request,\x20call\x20this\x20to\x20learn\x20whether\x20the\x20owner\x20approved\x20it.\x20Does\x20NOT\x20approve\x20anything\x20-\x20approval\x20is\x20owner-only\x20and\x20happens\x20in\x20Botanary.','inputSchema':b(),'run':async()=>m(await _0x1e85cd[_0x5f36cb(0x28c)]())},{'name':_0x5f36cb(0x2ba),'lane':'agent','docSummary':_0x5f36cb(0x2fd),'description':_0x5f36cb(0x404),'inputSchema':b(),'run':async()=>m(await _0x1e85cd['listChains']())},{'name':_0x5f36cb(0x3bd),'lane':_0x5f36cb(0x4b1),'docSummary':_0x5f36cb(0x402),'description':_0x5f36cb(0x1cd),'inputSchema':{'type':_0x5f36cb(0x2e4),'properties':{'chainId':{'type':_0x5f36cb(0x204),'description':_0x5f36cb(0x31c)},'accountId':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x30b)},'key':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x43f)}}},'run':async _0x592254=>m(await _0x1e85cd[_0x5f36cb(0x2bf)]({'chainId':typeof _0x592254[_0x5f36cb(0x1c9)]==_0x5f36cb(0x204)?_0x592254[_0x5f36cb(0x1c9)]:void 0x0,'accountId':typeof _0x592254['accountId']==_0x5f36cb(0x424)?_0x592254[_0x5f36cb(0x2cb)]:void 0x0,'key':typeof _0x592254[_0x5f36cb(0x268)]==_0x5f36cb(0x424)?_0x592254[_0x5f36cb(0x268)]:void 0x0}))},{'name':_0x5f36cb(0x281),'lane':_0x5f36cb(0x4b1),'docSummary':_0x5f36cb(0x329),'description':_0x5f36cb(0x2db),'inputSchema':{'type':_0x5f36cb(0x2e4),'properties':{'chainId':{'type':_0x5f36cb(0x204),'description':_0x5f36cb(0x377)}}},'run':async _0x27095e=>m(await _0x1e85cd[_0x5f36cb(0x282)]({'chainId':typeof _0x27095e[_0x5f36cb(0x1c9)]==_0x5f36cb(0x204)?_0x27095e[_0x5f36cb(0x1c9)]:void 0x0}))},{'name':_0x5f36cb(0x38f),'docSummary':'Rejoin\x20a\x20Botanary\x20action\x20that\x20is\x20waiting\x20on\x20a\x20human\x20-\x20a\x20browser\x20signature,\x20an\x20approval,\x20a\x20pairing\x20claim,\x20or\x20a\x20relayed\x20operation\x20still\x20settling.\x20Call\x20it\x20with\x20no\x20arguments\x20to\x20resume\x20the\x20most\x20recent\x20one;\x20never\x20resend\x20the\x20original\x20action,\x20because\x20it\x20is\x20still\x20live\x20and\x20a\x20resend\x20would\x20run\x20it\x20twice.','lane':_0x5f36cb(0x183),'description':'COMPOSITE\x20tool:\x20Rejoin\x20a\x20Botanary\x20action\x20that\x20is\x20waiting\x20on\x20a\x20human\x20-\x20a\x20browser\x20signature,\x20an\x20owner\x27s\x20approval,\x20a\x20pairing\x20claim,\x20or\x20a\x20relayed\x20operation\x20still\x20settling.\x20Call\x20this\x20with\x20no\x20arguments\x20to\x20resume\x20the\x20most\x20recent\x20unfinished\x20one.\x20THIS\x20IS\x20THE\x20ONLY\x20CORRECT\x20FOLLOW-UP\x20when\x20a\x20wallet_send,\x20wallet_sign_request,\x20get_pairing_code,\x20request_approval,\x20propose_payment\x20or\x20propose_swap\x20call\x20ended\x20without\x20a\x20terminal\x20answer:\x20never\x20resend\x20the\x20original\x20action,\x20because\x20it\x20is\x20still\x20live\x20and\x20a\x20resend\x20would\x20run\x20it\x20twice.\x20The\x20result\x20has\x20the\x20same\x20shape\x20the\x20originating\x20tool\x20would\x20have\x20returned,\x20so\x20a\x20resumed\x20flow\x20reports\x20identically\x20to\x20one\x20that\x20never\x20dropped.\x20Available\x20even\x20when\x20logged\x20out\x20-\x20a\x20handle\x20outlives\x20a\x20logout,\x20and\x20an\x20action\x20already\x20in\x20flight\x20deserves\x20an\x20answer.','inputSchema':{'type':_0x5f36cb(0x2e4),'properties':{'handle':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x47a)}}},'run':async(_0x4675be,_0x115822)=>{const _0x382256=_0x5f36cb;let _0x2a7873=await _0x1e85cd[_0x382256(0x4d1)][_0x382256(0x40a)]();if(_0x2a7873['length']===0x0)return m({'waiting':!0x1,'message':'Nothing\x20is\x20in\x20flight\x20on\x20this\x20machine.\x20No\x20sign\x20request,\x20login,\x20pairing,\x20approval\x20or\x20operation\x20is\x20waiting\x20on\x20anyone\x20right\x20now.'});let _0x2dec08=typeof _0x4675be[_0x382256(0x314)]==_0x382256(0x424)?_0x4675be[_0x382256(0x314)]:null,_0x1561d5=_0x2dec08?await _0x1e85cd[_0x382256(0x4d1)][_0x382256(0x4f2)](_0x2dec08):await _0x1e85cd[_0x382256(0x4d1)][_0x382256(0x410)]();return m(_0x1561d5?await ke(_0x1e85cd,_0x1561d5,_0x115822??{'signal':new AbortController()['signal'],'progress':()=>{}}):{'waiting':!0x1,'error':_0x382256(0x31e),'message':_0x382256(0x346)+_0x2dec08+_0x382256(0x484),'open':_0x2a7873['map'](_0x22d946=>({'id':_0x22d946['id'],'kind':_0x22d946['kind'],'label':_0x22d946['label'],'expiresAt':_0x22d946[_0x382256(0x1bd)],'url':_0x22d946[_0x382256(0x1a8)]??null}))});}},{'name':_0x5f36cb(0x201),'lane':_0x5f36cb(0x4b1),'docSummary':_0x5f36cb(0x456),'description':_0x5f36cb(0x2e3),'inputSchema':{'type':_0x5f36cb(0x2e4),'properties':{'recipient':{'type':'string','description':_0x5f36cb(0x1d8)},'amount':{'type':_0x5f36cb(0x204),'description':_0x5f36cb(0x332)},'token':{'type':'string','description':_0x5f36cb(0x1a0)},'chainId':{'type':_0x5f36cb(0x204),'description':'Chain\x20ID\x20to\x20send\x20on\x20-\x20must\x20match\x20the\x20grant\x27s\x20own\x20chain.'}},'required':[_0x5f36cb(0x350),_0x5f36cb(0x4e1),_0x5f36cb(0x3f5),_0x5f36cb(0x1c9)]},'run':async _0xcbe061=>_0xcbe061[_0x5f36cb(0x2d0)]!==void 0x0&&_0xcbe061[_0x5f36cb(0x3f5)]===void 0x0?m({'error':_0x5f36cb(0x4de),'message':'This\x20tool\x20now\x20takes\x20a\x20contract\x20address\x20or\x20a\x20CAIP-19\x20asset\x20ref\x20as\x20`token`,\x20not\x20a\x20symbol\x20as\x20`tokenSymbol`.\x20A\x20symbol\x20is\x20a\x20label\x20a\x20contract\x20picked\x20for\x20itself,\x20so\x20Botanary\x20will\x20not\x20guess\x20which\x20\x22'+String(_0xcbe061[_0x5f36cb(0x2d0)])+_0x5f36cb(0x218)}):m(await dt(_0x1e85cd,{'recipient':String(_0xcbe061[_0x5f36cb(0x350)]),'amount':Number(_0xcbe061['amount']),'token':String(_0xcbe061['token']),'chainId':Number(_0xcbe061[_0x5f36cb(0x1c9)])}))},{'name':_0x5f36cb(0x28f),'lane':_0x5f36cb(0x4b1),'docSummary':'Swap\x20under\x20this\x20agent\x27s\x20own\x20grant,\x20unattended,\x20through\x20the\x20one\x20venue\x20that\x20grant\x20pinned.\x20A\x20better\x20route\x20through\x20any\x20other\x20venue\x20is\x20declined\x20by\x20name\x20rather\x20than\x20taken.','description':'COMPOSITE\x20tool:\x20Build\x20and\x20relay\x20a\x20SWAP\x20under\x20this\x20agent\x27s\x20OWN\x20grant\x20-\x20sell\x20one\x20token\x20for\x20another,\x20in\x20the\x20account\x27s\x20own\x20name,\x20without\x20the\x20owner\x20signing.\x20Reads\x20the\x20grant\x27s\x20bounds\x20and\x20permissionId\x20from\x20the\x20backend\x20(GET\x20/agents/me)\x20FIRST:\x20when\x20there\x20is\x20no\x20grant,\x20the\x20grant\x20is\x20not\x20active,\x20it\x20is\x20on\x20a\x20different\x20chain,\x20the\x20grant\x20names\x20NO\x20swap\x20venue\x20at\x20all\x20(a\x20transfer-only\x20grant\x20has\x20no\x20allowance\x20action\x20for\x20a\x20swap\x20to\x20validate\x20against),\x20the\x20token\x20being\x20sold\x20is\x20not\x20the\x20one\x20token\x20its\x20venue\x20pins,\x20or\x20the\x20amount\x20exceeds\x20that\x20venue\x27s\x20per-swap\x20allowance\x20ceiling,\x20this\x20refuses\x20with\x20the\x20backend\x27s\x20own\x20numbers\x20and\x20points\x20at\x20request_approval\x20instead\x20of\x20attempting\x20anything\x20-\x20it\x20never\x20pretends\x20to\x20have\x20swapped\x20what\x20it\x20did\x20not.\x20Otherwise\x20it\x20builds\x20the\x20delegated\x20action\x20(POST\x20/delegations/{delegationId}/actions\x20with\x20action:\x20\x27swap\x27\x20-\x20the\x20ONLY\x20build\x20lane\x20a\x20session-key\x20signature\x20can\x20validate;\x20never\x20the\x20owner-lane\x20/money/swap/build)\x20against\x20THIS\x20agent\x27s\x20own\x20grant\x20id,\x20then\x20relays\x20it\x20signed\x20with\x20the\x20grant\x27s\x20own\x20session\x20key\x20(POST\x20/userops),\x20returning\x20the\x20backend\x27s\x20real\x20relay\x20result.\x20The\x20ROUTE\x20is\x20the\x20backend\x27s\x20to\x20choose\x20and\x20the\x20grant\x20pins\x20exactly\x20one\x20router,\x20so\x20a\x20best\x20route\x20through\x20any\x20other\x20router\x20is\x20declined\x20there,\x20by\x20name\x20-\x20this\x20tool\x20never\x20picks\x20a\x20venue.\x20This\x20client-side\x20bounds\x20check\x20is\x20a\x20convenience,\x20never\x20the\x20check\x20-\x20the\x20chain\x20is\x20what\x20actually\x20enforces\x20the\x20grant.\x20The\x20result\x20keeps\x20three\x20outcomes\x20strictly\x20apart:\x20settled:true\x20WITH\x20`spent`\x20means\x20it\x20landed;\x20settled:true\x20with\x20`spent:\x20null`\x20means\x20it\x20reached\x20a\x20terminal\x20FAILURE\x20and\x20nothing\x20moved\x20(never\x20report\x20that\x20as\x20a\x20swap);\x20settled:false\x20always\x20carries\x20an\x20opId,\x20meaning\x20still\x20pending\x20or\x20the\x20follow-up\x20read\x20failed\x20after\x20a\x20successful\x20relay\x20-\x20call\x20botanary_wait\x20to\x20rejoin\x20it\x20and\x20never\x20resend.\x20If\x20this\x20refuses,\x20or\x20the\x20relay\x20fails,\x20call\x20diagnose\x20before\x20retrying\x20-\x20a\x20repeat\x20with\x20the\x20same\x20bounds\x20fails\x20identically.','inputSchema':{'type':_0x5f36cb(0x2e4),'properties':{'assetIn':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x231)},'assetOut':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x400)},'amountIn':{'type':'number','description':'Amount\x20of\x20assetIn\x20to\x20sell,\x20in\x20DISPLAY\x20units\x20(e.g.\x2025\x20for\x2025\x20USDC)\x20-\x20never\x20wei,\x20never\x20a\x20hex\x20string.'},'chainId':{'type':_0x5f36cb(0x204),'description':_0x5f36cb(0x307)},'maxSlippageBps':{'type':_0x5f36cb(0x204),'description':_0x5f36cb(0x540)}},'required':[_0x5f36cb(0x230),_0x5f36cb(0x299),'amountIn','chainId']},'run':async _0x4d06a0=>_0x4d06a0[_0x5f36cb(0x48a)]!==void 0x0&&_0x4d06a0[_0x5f36cb(0x230)]===void 0x0||_0x4d06a0[_0x5f36cb(0x4da)]!==void 0x0&&_0x4d06a0[_0x5f36cb(0x299)]===void 0x0?m({'error':_0x5f36cb(0x4de),'message':_0x5f36cb(0x3fa)}):m(await ut(_0x1e85cd,{'assetIn':String(_0x4d06a0['assetIn']),'assetOut':String(_0x4d06a0[_0x5f36cb(0x299)]),'amountIn':Number(_0x4d06a0['amountIn']),'chainId':Number(_0x4d06a0['chainId']),...typeof _0x4d06a0[_0x5f36cb(0x2b6)]==_0x5f36cb(0x204)?{'maxSlippageBps':_0x4d06a0[_0x5f36cb(0x2b6)]}:{}}))},{'name':'get_action_status','lane':'agent','docSummary':_0x5f36cb(0x42f),'description':_0x5f36cb(0x3e8),'inputSchema':{'type':_0x5f36cb(0x2e4),'properties':{'opId':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x1ee)}},'required':[_0x5f36cb(0x50e)]},'run':async _0x486d01=>m(await _0x1e85cd['getUserOp'](String(_0x486d01[_0x5f36cb(0x50e)])))},{'name':_0x5f36cb(0x189),'lane':_0x5f36cb(0x4b1),'docSummary':_0x5f36cb(0x1b5),'description':_0x5f36cb(0x4d9),'inputSchema':{'type':'object','properties':{'calls':{'type':_0x5f36cb(0x18b),'items':{'type':_0x5f36cb(0x2e4),'properties':{'to':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x38c)},'data':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x36e)},'value':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x499)},'chainId':{'type':_0x5f36cb(0x204),'description':_0x5f36cb(0x3ed)}},'required':['to',_0x5f36cb(0x2f3),_0x5f36cb(0x2d8),'chainId']},'description':_0x5f36cb(0x1ba)},'reason':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x27b)}},'required':[_0x5f36cb(0x54a),'reason']},'run':async(_0x4aba6c,_0x3b1ceb)=>{const _0x48e5f4=_0x5f36cb;let _0x4bb808=Array['isArray'](_0x4aba6c[_0x48e5f4(0x54a)])?_0x4aba6c[_0x48e5f4(0x54a)]:[],_0x2f1306=String(_0x4aba6c['reason']),_0x5d2eb7=await _0x1e85cd['raiseRequest'](_0x4bb808,_0x2f1306);if(!_0x3b1ceb)return m(_0x5d2eb7);let _0x3c2ab7=typeof _0x5d2eb7?.['id']==_0x48e5f4(0x424)?_0x5d2eb7['id']:null;if(!_0x3c2ab7)return m(_0x5d2eb7);let _0x39969b=await _0x1e85cd['handles'][_0x48e5f4(0x52a)]({'kind':_0x48e5f4(0x442),'label':_0x48e5f4(0x472)+_0x2f1306,'ref':{'requestId':_0x3c2ab7},'expiresAt':typeof _0x5d2eb7?.['expiresAt']==_0x48e5f4(0x424)?_0x5d2eb7[_0x48e5f4(0x1bd)]:new Date(Date[_0x48e5f4(0x3d7)]()+0x927c0)['toISOString']()});_0x3b1ceb[_0x48e5f4(0x1bc)]({'message':_0x48e5f4(0x486)+_0x2f1306});let _0x50c2fc=(_0x33bbfb,_0x5780ca)=>(Array[_0x48e5f4(0x2b0)](_0x33bbfb)?_0x33bbfb:[])[_0x48e5f4(0x3a5)](_0x367bee=>_0x367bee['id']===_0x5780ca),_0x40e4a6=await _(E(()=>_0x1e85cd[_0x48e5f4(0x28c)](),0x1388),{'isTerminal':_0x24af48=>{const _0x192959=_0x48e5f4;let _0x52b723=_0x50c2fc(_0x24af48,_0x3c2ab7);return _0x52b723!==void 0x0&&_0x52b723['status']!==_0x192959(0x515);},'describe':_0x4df388=>'Approval\x20request\x20'+(_0x50c2fc(_0x4df388,_0x3c2ab7)?.['status']??_0x48e5f4(0x515))+'.','deadline':Date[_0x48e5f4(0x2c4)](_0x39969b[_0x48e5f4(0x1bd)]),'ctx':_0x3b1ceb});_0x40e4a6[_0x48e5f4(0x357)]&&await _0x1e85cd[_0x48e5f4(0x4d1)][_0x48e5f4(0x312)](_0x39969b['id']);let _0x1f7f7f=_0x50c2fc(_0x40e4a6[_0x48e5f4(0x4dc)],_0x3c2ab7);return m({..._0x5d2eb7,'handle':_0x39969b['id'],'settled':_0x40e4a6[_0x48e5f4(0x357)],..._0x1f7f7f?{'request':_0x1f7f7f}:{},'message':_0x40e4a6[_0x48e5f4(0x357)]?'Owner\x20responded:\x20'+(_0x1f7f7f?.[_0x48e5f4(0x1a1)]??_0x48e5f4(0x221))+'.':_0x48e5f4(0x1e2)});}},{'name':'request_grant','lane':_0x5f36cb(0x4b1),'docSummary':_0x5f36cb(0x292),'description':_0x5f36cb(0x2c2),'inputSchema':{'type':'object','properties':{'mandateId':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x185)},'mandateVersion':{'type':_0x5f36cb(0x204),'description':_0x5f36cb(0x30e)},'name':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x269)},'delegateeAddress':{'type':_0x5f36cb(0x424),'description':'The\x20agent\x20address\x20to\x20grant\x20access\x20to\x20(as\x20an\x20EVM\x20address,\x200x...).'},'chainId':{'type':_0x5f36cb(0x204),'description':_0x5f36cb(0x17f)}},'required':['mandateId',_0x5f36cb(0x18e),'name',_0x5f36cb(0x3dd),_0x5f36cb(0x1c9)]},'run':async _0x29f8a9=>{const _0x1b06d4=_0x5f36cb;let _0x463c31={'kind':_0x1b06d4(0x1f8),'agentId':(await _0x1e85cd['me']())[_0x1b06d4(0x4fe)],'mandateId':String(_0x29f8a9[_0x1b06d4(0x4d4)]??''),'mandateVersion':typeof _0x29f8a9[_0x1b06d4(0x18e)]==_0x1b06d4(0x204)?_0x29f8a9['mandateVersion']:void 0x0,'name':String(_0x29f8a9['name']??''),'delegateeAddress':String(_0x29f8a9['delegateeAddress']??''),'chainId':typeof _0x29f8a9[_0x1b06d4(0x1c9)]==_0x1b06d4(0x204)?_0x29f8a9['chainId']:void 0x0,'budgets':[]},_0x586685=await _0x1e85cd[_0x1b06d4(0x260)](),_0x5d0abc=await _0x1e85cd[_0x1b06d4(0x19f)]['post'](_0x1b06d4(0x18f),_0x463c31,_0x586685);return m({'message':_0x1b06d4(0x4f4)+_0x29f8a9[_0x1b06d4(0x4d4)]+'\x20v'+_0x29f8a9[_0x1b06d4(0x18e)]+'\x20created.\x20The\x20owner\x20must\x20approve\x20at\x20the\x20URL\x20below.','requestId':_0x5d0abc['id'],'url':_0x5d0abc[_0x1b06d4(0x1a8)],'expiresAt':_0x5d0abc[_0x1b06d4(0x1bd)],'next':_0x1b06d4(0x3c6)});}},{'name':_0x5f36cb(0x32e),'lane':'agent','docSummary':_0x5f36cb(0x3a4),'description':_0x5f36cb(0x3f2),'inputSchema':b(),'run':async()=>{const _0x58202c=_0x5f36cb;let _0x2ec235=await _0x1e85cd['me'](),_0x796d89=_0x2ec235['accountSetup']&&!_0x2ec235[_0x58202c(0x489)][_0x58202c(0x4e3)];return m({'agent':{'address':_0x2ec235[_0x58202c(0x4fe)],'name':_0x2ec235[_0x58202c(0x2a6)],'accountId':_0x2ec235[_0x58202c(0x2cb)]},'grant':_0x2ec235[_0x58202c(0x195)],..._0x796d89?{'accountSetup':_0x2ec235[_0x58202c(0x489)],'setupUrl':O(_0x1e85cd[_0x58202c(0x54f)],_0x2ec235[_0x58202c(0x489)]?.[_0x58202c(0x1c9)])}:{},'summary':Y(_0x2ec235)+At(_0x2ec235,_0x1e85cd[_0x58202c(0x54f)])});}},{'name':_0x5f36cb(0x345),'lane':'agent','docSummary':'Step\x201\x20of\x202:\x20preview\x20what\x20deleting\x20the\x20local\x20key\x20would\x20destroy,\x20and\x20get\x20a\x20single-use\x20confirmation\x20token.\x20Deletes\x20nothing\x20on\x20its\x20own.','description':'LOCAL\x20tool\x20(never\x20contacts\x20the\x20backend),\x20AGENT\x20LANE:\x20STEP\x201\x20OF\x202\x20of\x20deleting\x20this\x20agent\x20key\x20from\x20this\x20machine.\x20Deletes\x20nothing\x20by\x20itself\x20-\x20it\x20reports\x20exactly\x20what\x20would\x20be\x20destroyed,\x20what\x20would\x20be\x20LEFT\x20BEHIND\x20(the\x20owner-side\x20connection\x20row\x20and\x20any\x20grant,\x20which\x20only\x20the\x20owner\x20can\x20remove),\x20and\x20returns\x20a\x20single-use\x20confirmationToken.\x20Pass\x20that\x20token\x20to\x20confirm_forget\x20to\x20actually\x20delete.\x20Irreversible\x20once\x20confirmed:\x20the\x20key\x20cannot\x20be\x20recovered\x20and\x20any\x20grant\x20naming\x20its\x20address\x20is\x20orphaned.','inputSchema':b(),'run':async()=>{const _0xc21336=_0x5f36cb;if(!await _0x1e85cd[_0xc21336(0x217)][_0xc21336(0x4ca)]())return _0x301fcd=null,m({'willDelete':null,'message':_0xc21336(0x2ad)});let _0x5b1436=await _0x1e85cd[_0xc21336(0x43b)](),_0x2f7900=_0x38c453(0x10)[_0xc21336(0x1cb)](_0xc21336(0x4a4));return _0x301fcd={'token':_0x2f7900,'expiresAt':Date[_0xc21336(0x3d7)]()+_0x4bced9},m({'willDelete':{'address':_0x5b1436[_0xc21336(0x4fe)],'fingerprint':_0x5b1436['fingerprint'],'keyStorage':_0x5b1436[_0xc21336(0x32d)]},'willNotDelete':[_0xc21336(0x277),_0xc21336(0x2b1),_0xc21336(0x3d0)],'irreversible':!0x0,'expiresInSeconds':_0x4bced9/0x3e8,'confirmationToken':_0x2f7900});}},{'name':_0x5f36cb(0x3ff),'lane':'agent','docSummary':_0x5f36cb(0x33b),'description':_0x5f36cb(0x19d),'inputSchema':{'type':_0x5f36cb(0x2e4),'properties':{'confirmationToken':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x4ab)}},'required':[_0x5f36cb(0x449)]},'run':async _0x123355=>{const _0x445d37=_0x5f36cb;let _0x5bede6=typeof _0x123355[_0x445d37(0x449)]==_0x445d37(0x424)?_0x123355[_0x445d37(0x449)]:'',_0xb4de16=_0x301fcd;if(_0x301fcd=null,!_0xb4de16)throw new Error('No\x20confirmation\x20token\x20is\x20outstanding\x20-\x20call\x20forget\x20first\x20to\x20see\x20what\x20would\x20be\x20destroyed,\x20then\x20pass\x20the\x20token\x20it\x20returns.');if(Date['now']()>_0xb4de16[_0x445d37(0x1bd)])throw new Error(_0x445d37(0x408));if(_0x5bede6!==_0xb4de16[_0x445d37(0x3f5)])throw new Error(_0x445d37(0x250));return await _0x1e85cd[_0x445d37(0x217)][_0x445d37(0x345)](),_0x1e85cd[_0x445d37(0x30c)](),m({'deleted':!0x0,'message':_0x445d37(0x2d6)});}},{'name':'list_apis','lane':'agent','docSummary':_0x5f36cb(0x247),'description':_0x5f36cb(0x337),'inputSchema':{'type':_0x5f36cb(0x2e4),'properties':{'chainId':{'type':_0x5f36cb(0x204),'description':_0x5f36cb(0x39c)}},'required':[_0x5f36cb(0x1c9)]},'run':async _0x13eb66=>{const _0x442aa3=_0x5f36cb;let _0x2133a3=typeof _0x13eb66[_0x442aa3(0x1c9)]=='number'?_0x13eb66[_0x442aa3(0x1c9)]:void 0x0;if(!_0x2133a3)throw new Error(_0x442aa3(0x2ac));return m(await _0x1e85cd[_0x442aa3(0x507)]?.(_0x2133a3)??{'endpoints':[],'budget':null});}},{'name':'call_api','lane':_0x5f36cb(0x4b1),'docSummary':_0x5f36cb(0x22e),'description':_0x5f36cb(0x4c9),'inputSchema':{'type':'object','properties':{'chainId':{'type':_0x5f36cb(0x204),'description':'EVM\x20chain\x20id.'},'providerId':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x4bf)},'endpointId':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x433)},'url':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x416)},'body':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x3ea)}},'required':['chainId',_0x5f36cb(0x49f),'endpointId',_0x5f36cb(0x1a8)]},'run':async _0xad6010=>{const _0x12c123=_0x5f36cb;let _0x450c81=typeof _0xad6010[_0x12c123(0x1c9)]==_0x12c123(0x204)?_0xad6010[_0x12c123(0x1c9)]:void 0x0,_0x4af31b=typeof _0xad6010[_0x12c123(0x49f)]=='string'?_0xad6010['providerId']:void 0x0,_0x592937=typeof _0xad6010[_0x12c123(0x35b)]==_0x12c123(0x424)?_0xad6010['endpointId']:void 0x0,_0x1d583b=typeof _0xad6010['url']==_0x12c123(0x424)?_0xad6010[_0x12c123(0x1a8)]:void 0x0,_0x4a433d=typeof _0xad6010['body']==_0x12c123(0x424)?_0xad6010[_0x12c123(0x3df)]:void 0x0;if(!_0x450c81||!_0x4af31b||!_0x592937||!_0x1d583b)throw new Error(_0x12c123(0x320));let _0xe25e15=await _0x1e85cd[_0x12c123(0x287)]?.({'chainId':_0x450c81,'providerId':_0x4af31b,'endpointId':_0x592937,'url':_0x1d583b,'body':_0x4a433d});return m({..._0xe25e15,'_simulated_marker':_0xe25e15?.[_0x12c123(0x1da)]?_0x12c123(0x2ff):void 0x0});}},{'name':'get_api_budget','lane':_0x5f36cb(0x4b1),'docSummary':_0x5f36cb(0x39f),'description':_0x5f36cb(0x38a),'inputSchema':{'type':_0x5f36cb(0x2e4),'properties':{'chainId':{'type':_0x5f36cb(0x204),'description':_0x5f36cb(0x39c)}},'required':[_0x5f36cb(0x1c9)]},'run':async _0x506566=>{const _0x339d30=_0x5f36cb;let _0x900c43=typeof _0x506566[_0x339d30(0x1c9)]==_0x339d30(0x204)?_0x506566[_0x339d30(0x1c9)]:void 0x0;if(!_0x900c43)throw new Error(_0x339d30(0x2ac));return m(await _0x1e85cd['getApiBudget']?.(_0x900c43)??{'remaining':null,'perCallMax':null});}},{'name':_0x5f36cb(0x523),'lane':_0x5f36cb(0x183),'docSummary':_0x5f36cb(0x37a),'description':'COMPOSITE\x20tool,\x20WALLET\x20LANE\x20(the\x20human\x20owner\x27s\x20own\x20session\x20-\x20never\x20this\x20machine\x20acting\x20as\x20an\x20agent):\x20Device-style\x20login\x20for\x20the\x20owner.\x20Initiates\x20a\x20login\x20flow\x20where\x20the\x20owner\x20opens\x20a\x20browser,\x20authorizes\x20this\x20machine,\x20and\x20the\x20tool\x20polls\x20until\x20the\x20owner\x20grants\x20access.\x20The\x20session\x20is\x20stored\x20locally\x20in\x20the\x20OS\x20keychain.\x20Never\x20returns\x20the\x20session\x20token\x20in\x20the\x20response\x20-\x20it\x20is\x20stored\x20and\x20used\x20internally\x20only.\x20Unlocks\x20the\x20wallet_*\x20tools\x20(wallet_send,\x20wallet_api_get,\x20wallet_logout)\x20once\x20it\x20succeeds.','inputSchema':b(),'run':async(_0x20832f,_0xfb2181)=>{const _0x3efce6=_0x5f36cb;let _0xf597df=await pt({'api':_0x1e85cd[_0x3efce6(0x19f)],'store':_0x1e85cd[_0x3efce6(0x213)],'openBrowser':ee,'now':()=>Date[_0x3efce6(0x3d7)](),'sleep':_0xfa9b68=>new Promise(_0x14539a=>setTimeout(_0x14539a,_0xfa9b68)),'streamSourceFactory':(_0xbff7c9,_0x1dfbc2)=>R(_0x1e85cd['apiBaseUrl']+'/v1/auth/cli/'+_0xbff7c9+'/stream',_0x1dfbc2,_0x4aa749=>_0x4aa749),'ctx':_0xfb2181});_0xf597df[_0x3efce6(0x1a1)]===_0x3efce6(0x2b3)&&_0x165dca();let _0x4161e5=_0xf597df[_0x3efce6(0x1a1)]===_0x3efce6(0x2b3)?_0x3efce6(0x526)+_0xf597df[_0x3efce6(0x4cb)]?.[_0x3efce6(0x2cb)]:_0xf597df[_0x3efce6(0x1a1)]===_0x3efce6(0x318)?_0x3efce6(0x344):'Login\x20window\x20expired\x20without\x20authorization',_0x3c88d4=_0xf597df[_0x3efce6(0x4c1)]?'':_0x3efce6(0x34d)+_0xf597df[_0x3efce6(0x1a8)];return m({'status':_0xf597df[_0x3efce6(0x1a1)],'userCode':_0xf597df[_0x3efce6(0x351)],'verificationUrl':_0xf597df['url'],'browserOpened':_0xf597df[_0x3efce6(0x4c1)],'accountId':_0xf597df[_0x3efce6(0x4cb)]?.['accountId']??null,'signerAddress':_0xf597df[_0x3efce6(0x4cb)]?.[_0x3efce6(0x1a3)]??null,'message':_0x4161e5+'.'+_0x3c88d4});}},{'name':_0x5f36cb(0x2df),'lane':_0x5f36cb(0x3f8),'docSummary':'Revoke\x20the\x20owner\x20session\x20and\x20clear\x20it\x20locally,\x20even\x20when\x20the\x20network\x20call\x20fails,\x20so\x20a\x20dead\x20network\x20cannot\x20strand\x20a\x20live\x20credential\x20on\x20disk.','description':_0x5f36cb(0x200),'inputSchema':b(),'run':async()=>await _0x1e85cd[_0x5f36cb(0x251)]()?(await _0x1e85cd[_0x5f36cb(0x3f7)](),_0x165dca(),m({'loggedOut':!0x0,'message':_0x5f36cb(0x436)})):m({'loggedOut':!0x1,'message':_0x5f36cb(0x18d)})},{'name':_0x5f36cb(0x4cf),'lane':_0x5f36cb(0x183),'docSummary':_0x5f36cb(0x4c5),'description':_0x5f36cb(0x446),'inputSchema':b(),'run':async()=>{const _0x15c5fa=_0x5f36cb;let _0x3071d2=await _0x1e85cd[_0x15c5fa(0x251)](),_0x31607c=await _0x1e85cd['store']['hasIdentity'](),_0x55565e=null,_0x50d3ec=null;if(_0x31607c)try{let _0x49a7e6=await _0x1e85cd['me']();_0x55565e={'address':_0x49a7e6[_0x15c5fa(0x4fe)],'accountId':_0x49a7e6[_0x15c5fa(0x2cb)],'accountAddress':_0x49a7e6['accountAddress']??null};}catch(_0x380400){_0x50d3ec=_0x380400 instanceof Error?_0x380400[_0x15c5fa(0x316)]:String(_0x380400);}let _0x23b753;_0x50d3ec?_0x23b753=void 0x0:_0x31607c?_0x3071d2&&_0x55565e&&'accountId'in _0x55565e&&(_0x23b753=_0x3071d2[_0x15c5fa(0x2cb)]!==_0x55565e[_0x15c5fa(0x2cb)]?'The\x20wallet\x20owner\x20and\x20agent\x20are\x20bound\x20to\x20different\x20accounts.':null):_0x23b753=null;let _0x46eb86=(await _0x1e85cd['handles'][_0x15c5fa(0x40a)]())[_0x15c5fa(0x2d3)](_0x3275ff=>({'id':_0x3275ff['id'],'kind':_0x3275ff[_0x15c5fa(0x326)],'label':_0x3275ff[_0x15c5fa(0x41d)],'expiresAt':_0x3275ff['expiresAt']}));return m({'walletSession':_0x3071d2?{'accountId':_0x3071d2[_0x15c5fa(0x2cb)],'signerAddress':_0x3071d2[_0x15c5fa(0x1a3)],'savedAt':_0x3071d2[_0x15c5fa(0x245)]}:null,'hasAgentIdentity':_0x31607c,'agentBinding':_0x50d3ec?{'error':_0x50d3ec}:_0x31607c?_0x55565e:null,'mismatch':_0x23b753,'pending':_0x46eb86,'message':_0x31607c?_0x50d3ec?_0x15c5fa(0x477)+_0x50d3ec:void 0x0:_0x15c5fa(0x283)});}},{'name':'wallet_use_account','lane':_0x5f36cb(0x3f8),'docSummary':_0x5f36cb(0x1ab),'description':_0x5f36cb(0x460),'inputSchema':{'type':_0x5f36cb(0x2e4),'properties':{'accountId':{'type':'string','description':_0x5f36cb(0x181)}},'required':[_0x5f36cb(0x2cb)]},'run':async _0x2733e1=>{const _0x52cd5e=_0x5f36cb;let _0x479c58=await _0x1e85cd[_0x52cd5e(0x251)]();if(!_0x479c58)return m({'switched':!0x1,'message':_0x52cd5e(0x48f)});let _0x142316=_0x4d1dbb=>m(k(JSON[_0x52cd5e(0x1e7)](_0x4d1dbb,null,0x2),_0x479c58['sessionToken'])),_0x4fb97a=typeof _0x2733e1[_0x52cd5e(0x2cb)]=='string'?_0x2733e1[_0x52cd5e(0x2cb)][_0x52cd5e(0x2b2)]():'';if(!_0x4fb97a)return _0x142316({'switched':!0x1,'message':_0x52cd5e(0x2ca)});let _0x5eccf8;try{_0x5eccf8=await _0x1e85cd[_0x52cd5e(0x19f)][_0x52cd5e(0x4f2)](_0x52cd5e(0x334),_0x479c58['sessionToken']);}catch(_0x3abc96){let _0x13d18b=_0x3abc96 instanceof Error?_0x3abc96[_0x52cd5e(0x316)]:String(_0x3abc96);return _0x142316({'switched':!0x1,'message':'Could\x20not\x20verify\x20this\x20owner\x27s\x20accounts\x20with\x20the\x20Botanary\x20backend,\x20so\x20nothing\x20was\x20switched:\x20'+_0x13d18b});}let _0x557f80=_0x5eccf8[_0x52cd5e(0x3a5)](_0x1572ad=>_0x1572ad['id']===_0x4fb97a);if(!_0x557f80){let _0xf3caee=_0x5eccf8[_0x52cd5e(0x2d3)](_0x1e101e=>_0x1e101e['id'])['join'](',\x20')||'none';return _0x142316({'switched':!0x1,'message':'\x22'+_0x4fb97a+_0x52cd5e(0x1b7)+_0xf3caee+_0x52cd5e(0x418)});}let _0x389b4b=_0x479c58['accountId'];return await _0x1e85cd[_0x52cd5e(0x213)][_0x52cd5e(0x23a)](_0x4fb97a)?_0x142316({'switched':!0x0,'previousAccountId':_0x389b4b,'accountId':_0x4fb97a,'message':_0x389b4b===_0x4fb97a?_0x52cd5e(0x476)+_0x4fb97a+(_0x557f80[_0x52cd5e(0x41d)]?'\x20('+_0x557f80[_0x52cd5e(0x41d)]+')':'')+_0x52cd5e(0x491):_0x52cd5e(0x196)+(_0x389b4b??'no\x20account')+_0x52cd5e(0x4e2)+_0x4fb97a+(_0x557f80[_0x52cd5e(0x41d)]?'\x20('+_0x557f80[_0x52cd5e(0x41d)]+')':'')+_0x52cd5e(0x356)}):_0x142316({'switched':!0x1,'message':_0x52cd5e(0x1ce)});}},{'name':'wallet_send','lane':_0x5f36cb(0x3f8),'docSummary':_0x5f36cb(0x36a),'description':_0x5f36cb(0x26e),'inputSchema':{'type':_0x5f36cb(0x2e4),'properties':{'recipient':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x2dc)},'amount':{'type':_0x5f36cb(0x204),'description':_0x5f36cb(0x332)},'token':{'type':'string','description':_0x5f36cb(0x30d)},'chainId':{'type':_0x5f36cb(0x204),'description':'EVM\x20chain\x20id\x20to\x20send\x20on\x20-\x20used\x20to\x20check\x20whether\x20a\x20paired\x20agent\x27s\x20mandate\x20covers\x20this\x20chain.'},'chainKey':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x4a5)},'gasMethod':{'type':'string','enum':[_0x5f36cb(0x1ad),_0x5f36cb(0x3c0),_0x5f36cb(0x49a)],'description':_0x5f36cb(0x36b)}},'required':[_0x5f36cb(0x350),_0x5f36cb(0x4e1),_0x5f36cb(0x3f5),'chainId','chainKey']},'run':async(_0x5ae4fa,_0x3ccae0)=>{const _0x36c220=_0x5f36cb;if(_0x5ae4fa[_0x36c220(0x2d0)]!==void 0x0&&_0x5ae4fa[_0x36c220(0x3f5)]===void 0x0)return m({'error':_0x36c220(0x4de),'message':_0x36c220(0x3c1)+String(_0x5ae4fa[_0x36c220(0x2d0)])+_0x36c220(0x218)});let _0x3005fc=await _0x1e85cd['walletSession']();if(!_0x3005fc)return m({'lane':null,'message':'Not\x20logged\x20in\x20as\x20the\x20wallet\x20owner\x20-\x20run\x20wallet_login\x20first,\x20then\x20try\x20wallet_send\x20again.'});let _0x1e9cd0=Number(_0x5ae4fa[_0x36c220(0x1c9)]),_0xc633ae=Number(_0x5ae4fa[_0x36c220(0x4e1)]),_0x2a1d9f=await q(_0x1e85cd,_0x1e9cd0,String(_0x5ae4fa[_0x36c220(0x3f5)]),_0x3005fc['sessionToken']),_0x3a7fe9={'recipient':String(_0x5ae4fa[_0x36c220(0x350)]),'amount':_0xc633ae,'asset':_0x2a1d9f,'amountRaw':ct(String(_0x5ae4fa[_0x36c220(0x4e1)]),_0x2a1d9f[_0x36c220(0x20a)]),'chainId':_0x1e9cd0,'chainKey':String(_0x5ae4fa[_0x36c220(0x341)]),'gasMethod':_0x5ae4fa[_0x36c220(0x311)]===void 0x0||_0x5ae4fa[_0x36c220(0x311)]===null?void 0x0:String(_0x5ae4fa['gasMethod'])},_0x4c3630=await at(_0x1e85cd,_0x3a7fe9),_0x5e62c6={'mandateAccountId':_0x4c3630[_0x36c220(0x2cb)],'mandateInBounds':_0x4c3630[_0x36c220(0x1d6)],'mandateBoundsReason':_0x4c3630[_0x36c220(0x4a9)],'walletAccountId':_0x3005fc[_0x36c220(0x2cb)]??'','signUnderMandate':()=>ot(_0x1e85cd,_0x4c3630[_0x36c220(0x195)],_0x3a7fe9),'createSignRequest':rt(_0x1e85cd,_0x3005fc['sessionToken']),'getSignRequest':it(_0x1e85cd,_0x3005fc[_0x36c220(0x479)]),'openBrowser':ee,'now':()=>Date[_0x36c220(0x3d7)](),'sleep':_0x3c6f20=>new Promise(_0x505527=>setTimeout(_0x505527,_0x3c6f20)),'preflight':lt(_0x1e85cd,_0x3005fc[_0x36c220(0x479)]),'streamSource':_0xe4137b=>R(_0x1e85cd['apiBaseUrl']+_0x36c220(0x4be)+_0xe4137b+_0x36c220(0x54d),_0x3005fc[_0x36c220(0x479)],_0x42ad54=>_0x42ad54),'ctx':_0x3ccae0},_0x4ef168=await Tt(_0x5e62c6,_0x3a7fe9),_0x4f2e8a=_0x4ef168[_0x36c220(0x1f1)]?.[_0x36c220(0x1a1)],_0xd7fa06=_0x4ef168[_0x36c220(0x34f)]==='browser'&&_0x4ef168[_0x36c220(0x1a1)]===_0x36c220(0x50d)&&typeof _0x4ef168['opId']==_0x36c220(0x424)?_0x4ef168[_0x36c220(0x50e)]:null,_0x119d32=_0xd7fa06?await st(_0x1e85cd,_0xd7fa06,_0x3005fc[_0x36c220(0x479)]):typeof _0x4f2e8a==_0x36c220(0x424)?_0x4f2e8a:null,_0x4ccbd6=null;if(_0x119d32===_0x36c220(0x511))try{let _0x448012=await _0x1e85cd['api'][_0x36c220(0x4f2)](I(_0x36c220(0x4f0),_0x3005fc[_0x36c220(0x2cb)]),_0x3005fc[_0x36c220(0x479)]);_0x4ccbd6=vt(_0x448012,_0x3a7fe9[_0x36c220(0x1c9)],_0x3a7fe9[_0x36c220(0x3d2)][_0x36c220(0x3ec)]);}catch{_0x4ccbd6=null;}return m({..._0x4ef168,'settlementStatus':_0x119d32,'settledBalance':_0x4ccbd6,'settlementConfirmed':_0x4ccbd6!==null,'asset':{'assetRef':_0x3a7fe9[_0x36c220(0x3d2)][_0x36c220(0x27c)],'symbol':_0x3a7fe9['asset'][_0x36c220(0x3ec)],'decimals':_0x3a7fe9['asset'][_0x36c220(0x20a)],'source':_0x3a7fe9[_0x36c220(0x3d2)][_0x36c220(0x447)]}});}},{'name':_0x5f36cb(0x483),'docSummary':_0x5f36cb(0x4c4),'lane':'wallet','description':_0x5f36cb(0x3f0),'inputSchema':{'type':_0x5f36cb(0x2e4),'properties':{'chainId':{'type':_0x5f36cb(0x204),'description':_0x5f36cb(0x2a7)},'ref':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x323)}},'required':[_0x5f36cb(0x1c9),_0x5f36cb(0x538)]},'run':async _0x3e3c33=>{const _0x2cc92d=_0x5f36cb;let _0x1e0d67=await _0x1e85cd['walletSession']();return m(_0x1e0d67?await q(_0x1e85cd,Number(_0x3e3c33[_0x2cc92d(0x1c9)]),String(_0x3e3c33[_0x2cc92d(0x538)]),_0x1e0d67[_0x2cc92d(0x479)]):{'message':'Not\x20logged\x20in\x20-\x20run\x20wallet_login\x20first.'});}},{'name':_0x5f36cb(0x494),'docSummary':_0x5f36cb(0x4a6),'lane':_0x5f36cb(0x3f8),'description':_0x5f36cb(0x4e6),'inputSchema':{'type':_0x5f36cb(0x2e4),'properties':{'chainId':{'type':_0x5f36cb(0x204),'description':_0x5f36cb(0x45c)},'query':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x205)}},'required':['chainId']},'run':async _0x4bfb2b=>{const _0x310013=_0x5f36cb;let _0x524d42=await _0x1e85cd[_0x310013(0x251)]();if(!_0x524d42)return m({'message':_0x310013(0x249)});let _0x5f14df=Number(_0x4bfb2b[_0x310013(0x1c9)]),_0x1c345e=typeof _0x4bfb2b['query']==_0x310013(0x424)?_0x4bfb2b['query'][_0x310013(0x233)]():null,_0x468860=await _0x1e85cd[_0x310013(0x19f)]['get'](I(_0x310013(0x4f0),_0x524d42[_0x310013(0x2cb)]),_0x524d42[_0x310013(0x479)]),_0x4dcc36=(Array[_0x310013(0x2b0)](_0x468860[_0x310013(0x297)])?_0x468860[_0x310013(0x297)]:[])['filter'](_0x237555=>_0x237555[_0x310013(0x1c9)]===_0x5f14df)[_0x310013(0x4fa)](_0x57acfc=>!_0x1c345e||String(_0x57acfc[_0x310013(0x3ec)]??'')['toLowerCase']()[_0x310013(0x468)](_0x1c345e)||String(_0x57acfc[_0x310013(0x2a6)]??'')[_0x310013(0x233)]()[_0x310013(0x468)](_0x1c345e))['map'](_0x29e3a3=>({'assetRef':_0x29e3a3[_0x310013(0x27c)]??null,'address':_0x29e3a3['tokenAddress']??null,'symbol':_0x29e3a3[_0x310013(0x3ec)]??null,'name':_0x29e3a3[_0x310013(0x2a6)]??null,'decimals':_0x29e3a3[_0x310013(0x20a)]??null,'amount':_0x29e3a3[_0x310013(0x4e1)]??null,'spendable':_0x29e3a3[_0x310013(0x4f9)]??null,'source':_0x29e3a3[_0x310013(0x447)]??null}));return m({'chainId':_0x5f14df,'tokens':_0x4dcc36,'note':_0x4dcc36[_0x310013(0x186)]===0x0?_0x310013(0x1fc):void 0x0});}},{'name':'wallet_portfolio','lane':_0x5f36cb(0x3f8),'docSummary':'Balances\x20across\x20every\x20chain,\x20each\x20with\x20its\x20tier.\x20Raw\x20data:\x20it\x20does\x20not\x20itself\x20judge\x20whether\x20a\x20send\x20would\x20succeed.','description':'COMPOSITE\x20tool\x20(two\x20reads:\x20/balance\x20+\x20/chains),\x20WALLET\x20LANE\x20(requires\x20wallet_login\x20first):\x20Read\x20what\x20the\x20owner\x20holds,\x20including\x20which\x20chains\x20are\x20botanary-tier\x20(full\x20authority\x20enforcement).\x20Returns\x20balances\x20across\x20all\x20chains,\x20chain\x20info\x20(names\x20and\x20tier\x20levels\x20-\x20watch,\x20basic,\x20botanary),\x20and\x20flags\x20any\x20read\x20that\x20failed\x20with\x20the\x20server\x27s\x20own\x20message.\x20Watch-tier\x20chains\x20are\x20read-only.\x20Basic-tier\x20chains\x20have\x20a\x20bundler\x20but\x20NO\x20on-chain\x20authority\x20guard\x20(authority\x20actions\x20decline).\x20Botanary-tier\x20chains\x20carry\x20full\x20on-chain\x20enforcement.\x20This\x20is\x20raw\x20balance\x20and\x20tier\x20data\x20only\x20-\x20it\x20does\x20not\x20itself\x20evaluate\x20or\x20predict\x20whether\x20any\x20particular\x20send\x20would\x20succeed;\x20a\x20caller\x20can\x20reason\x20about\x20that\x20from\x20the\x20tier\x20and\x20balance\x20returned\x20(e.g.\x20a\x20watch-tier\x20chain\x20refuses\x20every\x20send\x20regardless\x20of\x20balance),\x20but\x20that\x20reasoning\x20is\x20the\x20caller\x27s,\x20not\x20a\x20check\x20this\x20tool\x20performs.\x20The\x20result\x20opens\x20with\x20`freshness`:\x20the\x20backend\x27s\x20own\x20`status`\x20and\x20`asOf`,\x20plus\x20a\x20derived\x20`state`,\x20`stale`\x20flag\x20and\x20`note`.\x20`state:\x20\x22fresh\x22`\x20(status\x20`ready`)\x20means\x20every\x20chain\x20synced\x20and\x20the\x20numbers\x20are\x20current.\x20`state:\x20\x22last-known\x22`\x20(status\x20`degraded`)\x20means\x20at\x20least\x20one\x20chain\x27s\x20sync\x20is\x20unhealthy\x20and\x20these\x20are\x20the\x20last-known\x20numbers,\x20not\x20current\x20ones.\x20`state:\x20\x22unknown\x22`\x20(status\x20`building`)\x20means\x20the\x20sweep\x20has\x20not\x20reached\x20this\x20account\x20yet\x20-\x20the\x20numbers\x20are\x20UNKNOWN,\x20not\x20merely\x20old,\x20and\x20a\x200\x20there\x20is\x20NOT\x20a\x20confirmed\x20zero\x20balance.\x20`state:\x20\x22unreported\x22`\x20means\x20the\x20response\x20carried\x20no\x20status.\x20`stale`\x20is\x20true\x20for\x20BOTH\x20`last-known`\x20and\x20`unknown`:\x20in\x20either\x20case\x20do\x20not\x20report\x20these\x20as\x20a\x20settled\x20position\x20-\x20read\x20`state`\x20to\x20see\x20which\x20of\x20the\x20two\x20it\x20is.','inputSchema':b(),'run':async()=>{const _0x2a670f=_0x5f36cb;let _0x210910=await _0x1e85cd[_0x2a670f(0x251)]();if(!_0x210910)return m({'message':_0x2a670f(0x422)});let _0x452700=await $(_0x1e85cd[_0x2a670f(0x19f)],_0x210910[_0x2a670f(0x479)],[{'key':_0x2a670f(0x3cb),'path':I(_0x2a670f(0x4f0),_0x210910[_0x2a670f(0x2cb)])},{'key':_0x2a670f(0x3bb),'path':'/v1/chains'}]);return m({'accountId':_0x210910[_0x2a670f(0x2cb)],'freshness':St(_0x452700[_0x2a670f(0x2f3)][_0x2a670f(0x3cb)]),..._0x452700});}},{'name':_0x5f36cb(0x53e),'lane':_0x5f36cb(0x3f8),'docSummary':_0x5f36cb(0x3bf),'description':_0x5f36cb(0x1e4),'inputSchema':b(),'run':async()=>{const _0x45670a=_0x5f36cb;let _0x1f9de8=await _0x1e85cd[_0x45670a(0x251)]();if(!_0x1f9de8)return m({'message':_0x45670a(0x17d)});let _0x5aec5c=await $(_0x1e85cd[_0x45670a(0x19f)],_0x1f9de8[_0x45670a(0x479)],[{'key':'history','path':I(_0x45670a(0x3d1),_0x1f9de8[_0x45670a(0x2cb)])}]);return m({'accountId':_0x1f9de8[_0x45670a(0x2cb)],..._0x5aec5c});}},{'name':_0x5f36cb(0x46c),'lane':'wallet','docSummary':_0x5f36cb(0x3eb),'description':'COMPOSITE\x20tool\x20(one\x20read:\x20/markets/tokens),\x20WALLET\x20LANE\x20(requires\x20wallet_login\x20first):\x20Read\x20market\x20data\x20about\x20tokens.\x20Returns\x20token\x20information\x20including\x20prices,\x20symbols,\x20and\x20market\x20data.\x20Flags\x20any\x20read\x20that\x20failed\x20with\x20the\x20server\x27s\x20own\x20message.','inputSchema':b(),'run':async()=>{const _0xdf2d81=_0x5f36cb;let _0x5f0192=await _0x1e85cd[_0xdf2d81(0x251)]();if(!_0x5f0192)return m({'message':_0xdf2d81(0x1a5)});let _0x52dce7=await $(_0x1e85cd['api'],_0x5f0192['sessionToken'],[{'key':'tokens','path':'/v1/markets/tokens'}]);return m({'accountId':_0x5f0192[_0xdf2d81(0x2cb)],..._0x52dce7});}},{'name':_0x5f36cb(0x389),'lane':_0x5f36cb(0x3f8),'docSummary':'Available\x20pools,\x20a\x20ranked\x20shortlist,\x20and\x20this\x20account\x27s\x20farming\x20positions.\x20The\x20shortlist\x20is\x20ranked\x20server-side\x20off\x20the\x20caller\x27s\x20own\x20holdings\x20and\x20says\x20so\x20in\x20its\x20scopeCaveats\x20field.','description':_0x5f36cb(0x39d),'inputSchema':b(),'run':async()=>{const _0x19881e=_0x5f36cb;let _0x1b1269=await _0x1e85cd[_0x19881e(0x251)]();if(!_0x1b1269)return m({'message':_0x19881e(0x454)});let _0x4a1d4d=await $(_0x1e85cd[_0x19881e(0x19f)],_0x1b1269['sessionToken'],[{'key':_0x19881e(0x253),'path':_0x19881e(0x417)},{'key':_0x19881e(0x2f7),'path':_0x19881e(0x3d8)},{'key':'positions','path':I(_0x19881e(0x539),_0x1b1269[_0x19881e(0x2cb)])}]);return m({'accountId':_0x1b1269[_0x19881e(0x2cb)],..._0x4a1d4d,'scopeCaveats':[{'key':_0x19881e(0x2f7),'note':'Unlike\x20`accountId`\x20above\x20and\x20`data.positions`,\x20`data.shortlist`\x20is\x20NOT\x20scoped\x20to\x20this\x20session\x27s\x20active\x20account\x20-\x20the\x20backend\x20ranks\x20it\x20off\x20the\x20caller\x27s\x20own\x20holdings\x20using\x20its\x20own\x20default\x20account\x20resolution,\x20which\x20may\x20be\x20a\x20DIFFERENT\x20account\x20than\x20`accountId`\x20if\x20wallet_use_account\x20has\x20switched\x20this\x20session.\x20There\x20is\x20no\x20way\x20for\x20this\x20tool\x20to\x20name\x20which\x20account\x20shortlist\x20actually\x20reflects.'}]});}},{'name':_0x5f36cb(0x330),'lane':_0x5f36cb(0x3f8),'docSummary':_0x5f36cb(0x241),'description':'COMPOSITE\x20tool\x20(two\x20reads:\x20/delegations,\x20/mandates),\x20WALLET\x20LANE\x20(requires\x20wallet_login\x20first):\x20Read\x20what\x20the\x20agent\x20lane\x20may\x20spend\x20unattended.\x20Returns\x20active\x20delegations\x20with\x20budget\x20information\x20(limit,\x20spent,\x20remaining)\x20and\x20any\x20outstanding\x20mandates,\x20exactly\x20as\x20the\x20backend\x20reports\x20them.\x20Use\x20this\x20to\x20understand\x20what\x20agents\x20connected\x20to\x20this\x20account\x20are\x20authorized\x20to\x20spend.\x20Flags\x20any\x20read\x20that\x20failed\x20with\x20the\x20server\x27s\x20own\x20message.','inputSchema':b(),'run':async()=>{const _0x35a57d=_0x5f36cb;let _0x2aa1aa=await _0x1e85cd['walletSession']();if(!_0x2aa1aa)return m({'message':_0x35a57d(0x38b)});let _0x5e619b=await $(_0x1e85cd[_0x35a57d(0x19f)],_0x2aa1aa[_0x35a57d(0x479)],[{'key':'delegations','path':I(_0x35a57d(0x45f),_0x2aa1aa[_0x35a57d(0x2cb)])},{'key':_0x35a57d(0x208),'path':I(_0x35a57d(0x25e),_0x2aa1aa[_0x35a57d(0x2cb)])}]);return m({'accountId':_0x2aa1aa['accountId'],..._0x5e619b});}},{'name':'wallet_agents','lane':_0x5f36cb(0x3f8),'docSummary':_0x5f36cb(0x388),'description':_0x5f36cb(0x1dc),'inputSchema':b(),'run':async()=>{const _0x41b39c=_0x5f36cb;let _0x2b2242=await _0x1e85cd['walletSession']();if(!_0x2b2242)return m({'message':'Not\x20logged\x20in\x20as\x20the\x20wallet\x20owner\x20-\x20run\x20wallet_login\x20first,\x20then\x20try\x20wallet_agents\x20again.'});let _0x3f9c4e=await $(_0x1e85cd[_0x41b39c(0x19f)],_0x2b2242[_0x41b39c(0x479)],[{'key':_0x41b39c(0x52c),'path':I('/v1/agents',_0x2b2242['accountId'])},{'key':'requests','path':I('/v1/agents/requests',_0x2b2242[_0x41b39c(0x2cb)])}]);return m({'accountId':_0x2b2242['accountId'],..._0x3f9c4e});}},{'name':'wallet_suggest_mandate','lane':_0x5f36cb(0x3f8),'docSummary':_0x5f36cb(0x309),'description':_0x5f36cb(0x53d),'inputSchema':b(),'run':async()=>{const _0x5810de=_0x5f36cb;let _0x2df1b8=await _0x1e85cd['walletSession']();if(!_0x2df1b8)return m({'message':'Not\x20logged\x20in\x20as\x20the\x20wallet\x20owner\x20-\x20run\x20wallet_login\x20first,\x20then\x20try\x20wallet_suggest_mandate\x20again.'});let _0x264844=await $(_0x1e85cd['api'],_0x2df1b8[_0x5810de(0x479)],[{'key':_0x5810de(0x52c),'path':I(_0x5810de(0x415),_0x2df1b8['accountId'])},{'key':'delegations','path':I('/v1/delegations',_0x2df1b8['accountId'])}]),_0x2c23de=Array[_0x5810de(0x2b0)](_0x264844[_0x5810de(0x2f3)][_0x5810de(0x52c)])?_0x264844[_0x5810de(0x2f3)]['agents']:[],_0x18c2db=Array[_0x5810de(0x2b0)](_0x264844['data'][_0x5810de(0x401)])?_0x264844[_0x5810de(0x2f3)][_0x5810de(0x401)]:[];if(_0x2c23de[_0x5810de(0x186)]===0x0){let _0x28679e=await Ne(_0x1e85cd),_0x50d650=z(_0x1e85cd['apiBaseUrl'])+'/agents?pair='+_0x28679e['code'];return m({'message':_0x5810de(0x41c),'pairingCode':{'code':_0x28679e['code'],'fingerprint':_0x28679e[_0x5810de(0x48c)],'issuedAt':_0x28679e[_0x5810de(0x4a2)],'expiresAt':_0x28679e[_0x5810de(0x1bd)],'pairingUrl':_0x50d650,'registered':_0x28679e[_0x5810de(0x50c)],'instructions':_0x5810de(0x3e9)+_0x50d650+_0x5810de(0x1c5)}});}let _0x2016ce={};for(let _0x3f7bcf of _0x18c2db){let _0x41da20=_0x3f7bcf?.[_0x5810de(0x1de)];_0x41da20&&(_0x2016ce[_0x41da20]||(_0x2016ce[_0x41da20]=[]),_0x2016ce[_0x41da20][_0x5810de(0x349)](_0x3f7bcf));}let _0x1f789c=[],_0x4b713e=z(_0x1e85cd[_0x5810de(0x54f)]);for(let _0x283003 of _0x2c23de){let _0x1d77b0=_0x283003?.['id'],_0x196936=_0x283003?.[_0x5810de(0x2a6)]||_0x5810de(0x2d5),_0x1828dd=_0x283003?.['address']||_0x5810de(0x221),_0x4e968a=_0x283003?.[_0x5810de(0x21b)]||_0x283003?.['chainId'];if(!_0x1d77b0)continue;(_0x2016ce[_0x1d77b0]||[])['length']===0x0&&_0x1f789c['push']({'agentId':_0x1d77b0,'agentName':_0x196936,'agentAddress':_0x1828dd,'chainId':typeof _0x4e968a==_0x5810de(0x204)?_0x4e968a:null,'rationale':_0x196936+_0x5810de(0x41a)+(typeof _0x4e968a=='number'?'A\x20bounded\x20mandate\x20on\x20chain\x20'+_0x4e968a+_0x5810de(0x216):'A\x20bounded\x20mandate\x20would\x20let\x20it\x20act\x20within\x20limits\x20you\x20set;\x20you\x20choose\x20the\x20chain\x20in\x20the\x20wizard.\x20')+'You\x20can\x20decline\x20-\x20nothing\x20here\x20needs\x20a\x20mandate\x20to\x20work.','grantUrl':_0x4b713e+'/grant?agentId='+encodeURIComponent(_0x1d77b0)});}return m({'accountId':_0x2df1b8[_0x5810de(0x2cb)],'suggestions':_0x1f789c['length']>0x0?_0x1f789c:null,'summary':_0x1f789c[_0x5810de(0x186)]===0x0?_0x5810de(0x4c3):_0x5810de(0x1b1)+_0x1f789c[_0x5810de(0x186)]+_0x5810de(0x4b7),..._0x264844});}},{'name':_0x5f36cb(0x535),'lane':_0x5f36cb(0x3f8),'docSummary':_0x5f36cb(0x34c),'description':'THIN\x20tool,\x20WALLET\x20LANE,\x20GET-ONLY\x20DELIBERATELY\x20(requires\x20wallet_login\x20first):\x20Read\x20any\x20GET\x20endpoint\x20documented\x20in\x20Botanary\x27s\x20frozen\x20OpenAPI\x20contract,\x20authenticated\x20as\x20the\x20wallet\x20owner.\x20Paths\x20are\x20validated\x20against\x20a\x20manifest\x20generated\x20from\x20that\x20contract\x20(`pnpm\x20generate:routes`)\x20-\x20an\x20undocumented\x20or\x20non-GET\x20path\x20is\x20refused\x20before\x20anything\x20reaches\x20the\x20network.\x20THIS\x20tool\x20is\x20GET-only,\x20deliberately,\x20and\x20always\x20will\x20be\x20-\x20a\x20generic\x20write\x20tool\x20would\x20let\x20a\x20model\x20reach\x20any\x20mutation\x20with\x20no\x20typed\x20intent,\x20no\x20review\x20panel,\x20and\x20no\x20lane\x20arbitration.\x20Every\x20fund-moving\x20or\x20authority-granting\x20write\x20goes\x20through\x20wallet_send\x20or\x20wallet_sign_request\x20(a\x20typed\x20intent\x20the\x20owner\x20reviews\x20and\x20signs\x20in\x20their\x20own\x20browser);\x20a\x20small\x20set\x20of\x20genuinely\x20administrative\x20writes\x20(mark\x20a\x20notification\x20read,\x20edit\x20a\x20pay-sh\x20allowlist,\x20and\x20similar)\x20goes\x20through\x20wallet_api_write,\x20never\x20through\x20this\x20one.\x20A\x20small\x20set\x20of\x20documented\x20GETs\x20whose\x20response\x20body\x20carries\x20a\x20live\x20credential\x20(the\x20session\x20route\x20and\x20the\x20CLI\x20login\x20poll\x20route)\x20is\x20deliberately\x20excluded\x20from\x20the\x20manifest\x20and\x20refused\x20here\x20-\x20this\x20tool\x20never\x20hands\x20back\x20the\x20owner\x27s\x20session\x20token.','inputSchema':{'type':_0x5f36cb(0x2e4),'properties':{'path':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x2f5)},'method':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x47d)}},'required':[_0x5f36cb(0x3ee)]},'run':async _0x4f759b=>{const _0x3a00bc=_0x5f36cb;let _0x36dfd9=await _0x1e85cd[_0x3a00bc(0x251)]();if(!_0x36dfd9)return m({'message':_0x3a00bc(0x2e8)});let _0x9c75d8=String(_0x4f759b[_0x3a00bc(0x3ee)]??''),_0x31aa61=typeof _0x4f759b[_0x3a00bc(0x1f9)]==_0x3a00bc(0x424)?_0x4f759b[_0x3a00bc(0x1f9)]:_0x3a00bc(0x386),_0x1ee094=await ft({'api':_0x1e85cd[_0x3a00bc(0x19f)],'token':_0x36dfd9[_0x3a00bc(0x479)]},_0x9c75d8,_0x31aa61);return m(k(JSON[_0x3a00bc(0x1e7)](_0x1ee094,null,0x2),_0x36dfd9['sessionToken']));}},{'name':'wallet_api_write','lane':_0x5f36cb(0x3f8),'docSummary':_0x5f36cb(0x50a),'description':_0x5f36cb(0x295),'inputSchema':{'type':_0x5f36cb(0x2e4),'properties':{'path':{'type':_0x5f36cb(0x424),'description':_0x5f36cb(0x23b)},'method':{'type':'string','enum':[_0x5f36cb(0x1be),_0x5f36cb(0x369),'PATCH',_0x5f36cb(0x2e6)],'description':'Required.\x20One\x20of\x20POST/PUT/PATCH/DELETE\x20-\x20GET\x20is\x20always\x20refused\x20through\x20this\x20tool.'},'body':{'type':_0x5f36cb(0x2e4),'description':_0x5f36cb(0x543)}},'required':[_0x5f36cb(0x3ee),_0x5f36cb(0x1f9)]},'run':async _0x569c77=>{const _0x3d9ca1=_0x5f36cb;let _0x404612=await _0x1e85cd['walletSession']();if(!_0x404612)return m({'message':_0x3d9ca1(0x2e8)});let _0x2cf6f7=String(_0x569c77['path']??''),_0x2cb58d=String(_0x569c77['method']??''),_0x2d1eb2=_0x569c77[_0x3d9ca1(0x3df)]??{},_0x50d33b;try{_0x50d33b=await bt({'api':_0x1e85cd['api'],'token':_0x404612['sessionToken']},_0x2cf6f7,_0x2cb58d,_0x2d1eb2);}catch(_0x302bb1){return m({'message':_0x302bb1 instanceof Error?_0x302bb1[_0x3d9ca1(0x316)]:String(_0x302bb1)});}return m(k(JSON[_0x3d9ca1(0x1e7)](_0x50d33b,null,0x2),_0x404612[_0x3d9ca1(0x479)]));}},{'name':_0x5f36cb(0x2eb),'lane':_0x5f36cb(0x3f8),'docSummary':_0x5f36cb(0x28d),'description':'THIN\x20tool\x20(one\x20GET,\x20returned\x20unmodified),\x20WALLET\x20LANE\x20(requires\x20wallet_login\x20first):\x20the\x20registry\x20of\x20every\x20sign-request\x20kind\x20`wallet_sign_request`\x20may\x20park\x20(GET\x20/sign-kinds)\x20-\x20each\x20with\x20a\x20one-line\x20summary,\x20the\x20backend\x20routes\x20it\x20builds\x20and\x20relays\x20through,\x20and\x20whether\x20it\x20is\x20currently\x20`available`\x20(a\x20registered\x20kind\x20with\x20no\x20browser\x20panel\x20behind\x20it\x20yet\x20reports\x20`available:\x20false`\x20with\x20`unavailableReason`,\x20and\x20wallet_sign_request\x20refuses\x20it\x20at\x20park\x20time\x20rather\x20than\x20handing\x20the\x20owner\x20a\x20link\x20to\x20a\x20blank\x20page).\x20Call\x20this\x20FIRST,\x20before\x20wallet_sign_request,\x20to\x20learn\x20which\x20kinds\x20exist\x20and\x20what\x20each\x20one\x20takes.','inputSchema':b(),'run':async()=>{const _0x116eda=_0x5f36cb;let _0x5902ad=await _0x1e85cd['walletSession']();if(!_0x5902ad)return m({'message':_0x116eda(0x1f2)});let _0x324add=await _0x1e85cd['api'][_0x116eda(0x4f2)]('/v1/sign-kinds',_0x5902ad[_0x116eda(0x479)]);return m(k(JSON[_0x116eda(0x1e7)](_0x324add,null,0x2),_0x5902ad[_0x116eda(0x479)]));}},{'name':_0x5f36cb(0x1b6),'lane':_0x5f36cb(0x3f8),'docSummary':'Park\x20a\x20typed\x20intent\x20for\x20the\x20owner\x20to\x20review\x20and\x20sign\x20in\x20their\x20own\x20browser\x20-\x20the\x20one\x20write\x20primitive\x20covering\x20every\x20owner-authorized\x20action.\x20Call\x20list_sign_kinds\x20first\x20to\x20learn\x20what\x20a\x20kind\x20takes.','description':'COMPOSITE\x20tool,\x20WALLET\x20LANE\x20(requires\x20wallet_login\x20first):\x20Park\x20a\x20typed,\x20kind-discriminated\x20intent\x20(POST\x20/sign-requests)\x20and\x20hand\x20it\x20to\x20the\x20OWNER\x20to\x20review\x20and\x20sign\x20in\x20their\x20OWN\x20browser.\x20THIS\x20TOOL\x20CANNOT\x20SIGN\x20AND\x20CANNOT\x20RELAY\x20-\x20it\x20only\x20asks.\x20The\x20body\x20is\x20validated\x20server-side\x20against\x20that\x20kind\x27s\x20own\x20DTO\x20before\x20anything\x20is\x20stored,\x20so\x20an\x20unregistered\x20kind\x20or\x20a\x20malformed\x20body\x20is\x20refused\x20before\x20the\x20owner\x20ever\x20sees\x20a\x20link.\x20Call\x20list_sign_kinds\x20FIRST\x20to\x20learn\x20every\x20registered\x20kind\x20and\x20exactly\x20what\x20fields\x20it\x20takes\x20-\x20guessing\x20a\x20shape\x20wastes\x20a\x20round\x20trip\x20this\x20tool\x20refuses\x20before\x20parking.\x20Opens\x20the\x20browser\x20to\x20the\x20returned\x20URL\x20and\x20waits\x20for\x20a\x20terminal\x20result\x20(signed\x20and\x20relayed,\x20rejected,\x20expired,\x20or\x20declined\x20on-chain);\x20if\x20the\x20call\x20drops\x20before\x20that,\x20botanary_wait\x20rejoins\x20the\x20SAME\x20handle.\x20This\x20is\x20NOT\x20wallet_send:\x20a\x20send\x20keeps\x20its\x20own\x20lane\x20arbitration\x20(it\x20may\x20sign\x20unattended\x20under\x20a\x20paired\x20agent\x20mandate)\x20because\x20routing\x20a\x20send\x20between\x20the\x20agent\x20and\x20the\x20owner\x20is\x20load-bearing\x20-\x20this\x20tool\x20has\x20no\x20such\x20lane\x20to\x20arbitrate,\x20it\x20is\x20the\x20browser\x20handoff,\x20always,\x20for\x20every\x20OTHER\x20owner-authorized\x20action.','inputSchema':{'type':'object','properties':{'kind':{'type':_0x5f36cb(0x424),'description':'A\x20registered\x20sign-request\x20kind,\x20e.g.\x20\x22swap\x22\x20or\x20\x22account.freeze\x22\x20-\x20see\x20list_sign_kinds\x20for\x20the\x20full,\x20live\x20set.\x20An\x20unregistered\x20kind\x20is\x20refused\x20server-side\x20before\x20anything\x20is\x20stored.'},'params':{'type':_0x5f36cb(0x2e4),'description':'The\x20kind-specific\x20fields,\x20exactly\x20as\x20that\x20kind\x20documents\x20-\x20never\x20a\x20build\x20route,\x20never\x20calldata,\x20never\x20a\x20signature.\x20Validated\x20server-side\x20against\x20the\x20kind\x27s\x20own\x20DTO.'}},'required':[_0x5f36cb(0x326),_0x5f36cb(0x533)]},'run':async(_0x871cf3,_0x1bc37b)=>{const _0x1aa7fa=_0x5f36cb;let _0x25851e=await _0x1e85cd[_0x1aa7fa(0x251)]();if(!_0x25851e)return m({'message':_0x1aa7fa(0x26f)});let _0x344441=String(_0x871cf3[_0x1aa7fa(0x326)]??''),_0x365ad0=_0x871cf3['params']&&typeof _0x871cf3['params']==_0x1aa7fa(0x2e4)?_0x871cf3[_0x1aa7fa(0x533)]:{},_0x5274a9=await kt({'api':_0x1e85cd[_0x1aa7fa(0x19f)],'token':_0x25851e[_0x1aa7fa(0x479)]},_0x344441,_0x365ad0),_0x257f1d=await ee(_0x5274a9[_0x1aa7fa(0x1a8)]),_0x538d51=await _0x1e85cd['handles'][_0x1aa7fa(0x52a)]({'kind':_0x1aa7fa(0x1a4),'label':_0x1aa7fa(0x4ec)+_0x344441,'ref':{'signRequestId':_0x5274a9['id']},'url':_0x5274a9[_0x1aa7fa(0x1a8)],'expiresAt':_0x5274a9['expiresAt']}),_0x43efe1=await ke(_0x1e85cd,_0x538d51,_0x1bc37b??{'signal':new AbortController()[_0x1aa7fa(0x362)],'progress':()=>{}});return m(k(JSON['stringify']({..._0x43efe1,'browserOpened':_0x257f1d},null,0x2),_0x25851e[_0x1aa7fa(0x479)]));}}];}var ta=_0x1fb185(0x1b3);async function It(_0x441941,_0x2a37a7){const _0x4d7e15=_0x1fb185;let _0x1dec9f=_0x2a37a7[_0x4d7e15(0x290)]??(_0x1865f2=>process['stdout'][_0x4d7e15(0x193)](_0x1865f2+'\x0a')),_0x134696=_0x2a37a7['stderr']??(_0x133ec3=>process[_0x4d7e15(0x4d2)][_0x4d7e15(0x193)](_0x133ec3+'\x0a')),[_0x1ebd42]=_0x441941;try{switch(_0x1ebd42){case void 0x0:return await na(_0x2a37a7,_0x134696);case _0x4d7e15(0x3a7):return await aa(_0x2a37a7,_0x1dec9f);case _0x4d7e15(0x345):return await sa(_0x2a37a7,_0x1dec9f);case'tools':return await oa(_0x2a37a7,_0x441941[_0x4d7e15(0x333)](0x1),_0x1dec9f);case _0x4d7e15(0x24a):case'-h':case'help':return _0x1dec9f(ta),0x0;default:return _0x134696(_0x4d7e15(0x321)+_0x1ebd42+_0x4d7e15(0x44e)),0x1;}}catch(_0x517079){return _0x134696(_0x517079 instanceof Error?_0x517079[_0x4d7e15(0x316)]:String(_0x517079)),0x1;}}async function na(_0x3eef28,_0x45529d){const _0x366dfd=_0x1fb185;return process['on'](_0x366dfd(0x394),_0x464dc0=>_0x45529d(_0x366dfd(0x429)+(_0x464dc0 instanceof Error?_0x464dc0['message']:String(_0x464dc0)))),process['on']('uncaughtException',_0x2c5683=>_0x45529d('uncaughtException:\x20'+_0x2c5683['message'])),await _0x3eef28['createServer'](_0x3eef28['runtime'])['connect'](_0x3eef28[_0x366dfd(0x1b4)]()),0x0;}async function aa(_0xe70916,_0x5ccb92){const _0x104df4=_0x1fb185;let _0x4ea8be=await _0xe70916[_0x104df4(0x395)][_0x104df4(0x43b)]();return _0x5ccb92(JSON[_0x104df4(0x1e7)]({'address':_0x4ea8be['address'],'publicKey':_0x4ea8be[_0x104df4(0x1c1)],'fingerprint':_0x4ea8be['fingerprint'],'createdAt':_0x4ea8be[_0x104df4(0x3a2)],'keyStorage':_0x4ea8be[_0x104df4(0x32d)]},null,0x2)),0x0;}async function sa(_0x5a84b7,_0x4fc343){const _0x236e3c=_0x1fb185;let _0x198173=await _0x5a84b7[_0x236e3c(0x395)][_0x236e3c(0x217)][_0x236e3c(0x4ca)]();return await _0x5a84b7[_0x236e3c(0x395)][_0x236e3c(0x217)][_0x236e3c(0x345)](),_0x5a84b7[_0x236e3c(0x395)][_0x236e3c(0x30c)](),_0x4fc343(_0x198173?_0x236e3c(0x35f):_0x236e3c(0x19b)),0x0;}async function oa(_0x11966c,_0x53745d,_0x52264f){const _0x193d32=_0x1fb185;let _0x530c2d=ge(_0x11966c[_0x193d32(0x395)])['map'](_0x1b4864=>({'name':_0x1b4864[_0x193d32(0x2a6)],'lane':_0x1b4864[_0x193d32(0x34f)],'docSummary':_0x1b4864['docSummary'],'description':_0x1b4864['description'],'inputSchema':_0x1b4864['inputSchema']}));if(_0x53745d[_0x193d32(0x468)]('--json'))return _0x52264f(JSON[_0x193d32(0x1e7)]({'version':j,'tools':_0x530c2d})),0x0;let _0x23d1ab=Math[_0x193d32(0x288)](..._0x530c2d[_0x193d32(0x2d3)](_0x294f64=>_0x294f64[_0x193d32(0x2a6)]['length']));for(let _0x117fa3 of _0x530c2d)_0x52264f(_0x117fa3['name']['padEnd'](_0x23d1ab)+'\x20\x20'+_0x117fa3[_0x193d32(0x34f)][_0x193d32(0x327)](0x7)+'\x20\x20'+_0x117fa3[_0x193d32(0x3fd)]);return 0x0;}import{Server as _0x16d747}from'@modelcontextprotocol/sdk/server/index.js';import{CallToolRequestSchema as _0x73ceaa,ListToolsRequestSchema as _0x2e899e,ElicitResultSchema as _0x1dd86e}from'@modelcontextprotocol/sdk/types.js';function Et(_0x4b23e8){const _0x1da618=_0x1fb185;let _0x295f92={'signal':_0x4b23e8[_0x1da618(0x362)],'progress':_0x55a5c4=>{const _0x2027ce=_0x1da618;_0x4b23e8[_0x2027ce(0x1ea)]!==void 0x0&&_0x4b23e8[_0x2027ce(0x331)]({'method':_0x2027ce(0x51c),'params':{'progressToken':_0x4b23e8['progressToken'],'message':_0x55a5c4['message'],..._0x55a5c4[_0x2027ce(0x1bc)]===void 0x0?{}:{'progress':_0x55a5c4['progress']},..._0x55a5c4[_0x2027ce(0x371)]===void 0x0?{}:{'total':_0x55a5c4['total']}}})[_0x2027ce(0x22a)](()=>{});}};return _0x4b23e8[_0x1da618(0x3d6)]&&(_0x295f92[_0x1da618(0x2ea)]=async _0x156210=>{const _0x63235d=_0x1da618;try{return await _0x4b23e8[_0x63235d(0x2e5)]({'method':'elicitation/create','params':{'message':_0x156210[_0x63235d(0x316)],..._0x156210[_0x63235d(0x4f6)]?{'requestedSchema':_0x156210['requestedSchema']}:{}}})??null;}catch{return null;}}),_0x295f92;}import{existsSync as _0x60df11}from'node:fs';function Rt(_0x603f19){const _0x4dfbbf=_0x1fb185;return{'content':[{'type':'text','text':_0x4dfbbf(0x530)+_0x603f19}],'isError':!0x0};}async function ua(_0xe9c4fc){const _0x1be4c6=_0x1fb185;let [_0x1d01fa,_0xac5d01]=await Promise[_0x1be4c6(0x308)]([_0xe9c4fc['walletSession'](),_0xe9c4fc['store']['hasIdentity']()]);return{'hasWalletSession':_0x1d01fa!==null,'hasAgentIdentity':_0xac5d01};}function ha(_0x52feba,_0x317e44){const _0x5e016c=_0x1fb185;switch(_0x52feba){case _0x5e016c(0x183):return!0x0;case _0x5e016c(0x3f8):return _0x317e44[_0x5e016c(0x3c9)];case _0x5e016c(0x4b1):return _0x317e44[_0x5e016c(0x459)];}}function _t(_0x3e43dd){const _0x253ee1=_0x1fb185;let _0x14c1ab=new _0x16d747({'name':_0x253ee1(0x20c),'version':j},{'capabilities':{'tools':{'listChanged':!0x0}}});_0x14c1ab['oninitialized']=()=>{const _0x4dd205=_0x253ee1;let _0x1cc170=_0x14c1ab[_0x4dd205(0x3cc)]()?.[_0x4dd205(0x2a6)];_0x3e43dd['adoptProfile'](Le({'explicit':process[_0x4dd205(0x2ce)]['BOTANARY_AGENT_PROFILE'],..._0x1cc170!==void 0x0?{'clientName':_0x1cc170}:{},'hasLegacyIdentity':_0x60df11(Ge())}));};let _0x9cb42c=ge(_0x3e43dd,()=>{const _0x52875c=_0x253ee1;_0x14c1ab[_0x52875c(0x26c)]()[_0x52875c(0x22a)](()=>{});});return _0x14c1ab[_0x253ee1(0x187)](_0x2e899e,async()=>{const _0x1739ad=_0x253ee1;let _0x3e06bb=await ua(_0x3e43dd);return{'tools':_0x9cb42c[_0x1739ad(0x4fa)](_0x135ad5=>ha(_0x135ad5[_0x1739ad(0x34f)],_0x3e06bb))[_0x1739ad(0x2d3)](_0x17dba2=>({'name':_0x17dba2[_0x1739ad(0x2a6)],'description':_0x17dba2['description'],'inputSchema':_0x17dba2['inputSchema']}))};}),_0x14c1ab['setRequestHandler'](_0x73ceaa,async(_0x58ac55,_0x355c55)=>{const _0x3ef968=_0x253ee1;let _0x553f18=_0x9cb42c[_0x3ef968(0x3a5)](_0x24c1e6=>_0x24c1e6[_0x3ef968(0x2a6)]===_0x58ac55[_0x3ef968(0x533)][_0x3ef968(0x2a6)]);if(!_0x553f18)return Rt(_0x3ef968(0x235)+_0x58ac55['params'][_0x3ef968(0x2a6)]+'\x22');let _0x31e39a=Et({'signal':_0x355c55[_0x3ef968(0x362)],'progressToken':_0x58ac55[_0x3ef968(0x533)][_0x3ef968(0x2ed)]?.['progressToken'],'sendNotification':_0x4dc8c3=>_0x355c55[_0x3ef968(0x331)](_0x4dc8c3),'elicitationSupported':!!_0x14c1ab['getClientCapabilities']()?.[_0x3ef968(0x372)],'sendRequest':_0xd6c8d9=>_0x355c55[_0x3ef968(0x2e5)](_0xd6c8d9,_0x1dd86e)});try{return await _0x553f18[_0x3ef968(0x1d7)](_0x58ac55['params'][_0x3ef968(0x448)]??{},_0x31e39a);}catch(_0x201e69){return Rt(_0x201e69 instanceof Error?_0x201e69[_0x3ef968(0x316)]:String(_0x201e69));}}),_0x14c1ab;}var ga=await It(process[_0x1fb185(0x2a2)]['slice'](0x2),{'runtime':Qe(),'createServer':_t,'createTransport':()=>new _0x5b7466()});process[_0x1fb185(0x2a2)][_0x1fb185(0x333)](0x2)['length']>0x0&&process[_0x1fb185(0x20b)](ga);